求平均数问题一系列数据,其中有几个异常数据干扰,影响平均数大小,怎么剔除该数据?下列数据中需要 剔除 3.4
求平均数问题
一系列数据,其中有几个异常数据干扰,影响平均数大小,怎么剔除该数据?
下列数据中需要 剔除 3.42 3.82 4.6
1.4
3.42
1.46
1.46
1.48
1.45
1.45
3.82
1.48
1.46
4.6
1.45
1.49
1.49
1.5
[解决办法]
要根据你的业务规则选地一个过滤规则,比如:
A)假定数据有效范围 [0.0, 3.0],直接排除 >3.0 的数。
B)假定异常数据不会连续出现,如果 A(i) > A(i-1)*2 则排除 n(i)。
C)将数组排序,取中间一个数 M=A(n\2),排除 > M*2 的数。
[解决办法]
这个问题就得看你的异常数据的的“异常度”了,如果偏差比较大,你可以先求出所有数据的平均值,在将每个数据和这个平均值比较,如果该数据和平均值之差大于“异常度”,那么就是异常数据。
还有一个思路,就是排序。再排序后,求相邻两个数据之差,如果这个差值大于“异常度”,那么就表示之前的数据(从大到小排序)是异常数据。
[解决办法]
- VB code
Option ExplicitDim dblP(0 To 14) As DoubleDim dblA As Double '偏差判断值Private Sub Command1_Click() Dim intP As Integer Dim dblSum As Double For intP = 0 To 14 dblSum = dblSum + dblP(intP) Next intP dblSum = dblSum / 15 For intP = 0 To 14 If Abs(dblP(intP) - dblSum) > dblA Then Print "dblP(" & CStr(intP) & ")=" & dblP(intP) & " 是异常数据!" End If Next intPEnd SubPrivate Sub Form_Load() dblP(0) = 1.4 dblP(1) = 3.42 dblP(2) = 1.46 dblP(3) = 1.46 dblP(4) = 1.48 dblP(5) = 1.45 dblP(6) = 1.45 dblP(7) = 3.82 dblP(8) = 1.48 dblP(9) = 1.46 dblP(10) = 4.6 dblP(11) = 1.45 dblP(12) = 1.49 dblP(13) = 1.49 dblP(14) = 1.5 dblA = 1#End Sub
[解决办法]
18楼正解。可使用中误差理论,见http://wenku.baidu.com/view/3663fa43a8956bec0975e399.html。先剔除真误差是2倍以上中误差的数值(粗差),再计算剩下的数值,再剔除之
数值平均值真误差真误差的平方中误差ABS(真误差/中误差)
3.043.2591-0.21910.048004810.477760.458598459
2.98-0.27910.077896810.477760.584184528
3.07-0.18910.035758810.477760.395805425
3.22-0.03910.001528810.477760.081840255
3.440.18090.032724810.477760.378641996
3.14-0.11910.014184810.477760.249288346
3.06-0.19910.039640810.477760.416736437
4.030.77090.594286810.477761.613571668
3.06-0.19910.039640810.477760.416736437
3.14-0.11910.014184810.477760.249288346
2.96-0.29910.089460810.477760.626046551
4.030.77090.594286810.477761.613571668
3.09-0.16910.028594810.477760.353943403
3.06-0.19910.039640810.477760.416736437
2.98-0.27910.077896810.477760.584184528
3.05-0.20910.043722810.477760.437667448
3.04-0.21910.048004810.477760.458598459
3.03-0.22910.052486810.477760.479529471
4.941.68092.825424810.477763.518293704
3.04-0.21910.048004810.477760.458598459
3.04-0.21910.048004810.477760.458598459
[解决办法]
中误差计算方法:1、例如有n个数字,先计算平均值
2、求每个数字与平均值的差值
3、所有差值的平方相加,再除以n,然后开方 