VB MSHFlexGrid内求标准偏差(错误)问题,求高手解答。
VB求标准偏差的代码如下:Dim i As Long, j As Long, nn As Long, STD As Double, SUM As Double, AVE As Double, AVE1 As Double, SUM1 As Double
With MSHFlexGrid
For i = 1 To 15
For j = 1 To 15
If IsNumeric(.TextMatrix(i, j)) Then
nn = nn + 1 '数字统计,()
SUM = SUM + .TextMatrix(i, j) '求和
AVE = SUM / nn '平均值
SUM1 = SUM1 + (.TextMatrix(i, j) - AVE) ^ 2 '(x-μ) ^ 2
AVE1 = SUM1 / nn
STD = Sqr(AVE1)'标准偏差
End If
Next
Next
End With
为了验证是否正确,我再使用完全相同方法及样本数据在EXCEL中计算STD(标准偏差),结果出现不相同结果,如下
nn(数字统计)结果相同
SUM(求和)结果相同
AVE(平均值)结果相同
SUM1(偏差平方)结果不同(此处比如EXCEL计算结果270,VB计算的结果却是240,差异非常大)
(AVE1 、STD结果肯定不同了)
请高手帮忙找出问题原因。 --------------------编程问答-------------------- EXCEL计算的是与vb java等计算出来的有偏差,EXCEL中可能是精度问题 --------------------编程问答--------------------
那也差异太大了吧,我把两种方法的数据精度都设置为0.0001,计算出来的还是偏差很大。 --------------------编程问答-------------------- 不知道是不是EXCEL与vb计算的逻辑顺序不一样,请高手解答。 --------------------编程问答-------------------- 可能是你的平均值也在循环不停的变的原因 --------------------编程问答-------------------- 难道没发觉每次计算 (.TextMatrix(i, j) - AVE) 时用到的 AVE 都是不同的吗?
写出这样的平均值真是败给你了! --------------------编程问答-------------------- 你的算法有问题,汇总还没求完(循环未完成),怎么就能求平均值?怎么能进行统计
平均值的循环和统计必须分开循环
补充:VB , 基础类