matlab中方差计算的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab中方差计算的问题相关的知识,希望对你有一定的参考价值。
matlab中:
>> x=[4,6,4,3,5,7]
>>var(x)
结果:ans = 2.1667
如果用方差定义进行计算:则
>>vr=sum((x(1,:)-mean(x)).^2)/length(x)
结果:vr=1.8056
如果要得到matlab中函数var所得到的结果,运算式必须为:
>> vr=sum((x(1,:)-mean(x)).^2)/(length(x)-1)
结果:vr = 2.1667
后者又与方差定义矛盾,请问所有元素减1为什么呢?
PS.方差:是各个数据与平均数之差的平方的平均数,即 s^2=1/n[(x1-x_)^2+(x2-x_)^2+...+(xn-x_)^2]
VAR(X) normalizes by N-1 where N is the sequence length. This makes VAR(X) the best unbiased estimate of the variance if X is a sample from a normal distribution.
也就是说matlab这样设置是考虑到现实中误差理论的应用。
查阅了一些相关的书籍,不知道能不能给你一个正确的解释。
严格意义上的方差公式的却如你所说。matlab中var实际上求的并不是方差,而是误差理论中“有限次测量数据的标准偏差的估计值”。
测量值的总体偏差是在测量次数n趋于无穷大的情况下的“真误差”[dirta(i)=x(i)-E(x(i))]来定义的,即a=根号下1/n[dirta1^2+dirta2^2+...],注意n是趋于无穷大的。
实际中n是有限次,只能求出真值的估计值x',不能得到真值E(x)和真误差。通常以算术平均值代替真值,以测量值与算术平均值的差--残差v来代替真误差,即v(i)=x(i)-x'。显然残差的代数和为0。
用有限次测量数据来计算标准偏差的最佳估计值时,可以采用贝塞尔公式法计算,计算的公式就是matlab采用的方法了,分母成了n-1.这个是测量值标准偏差的估计值,通常称为实验偏差.可以证明,它的平方是方差的无偏估计,但它本身并不是标准差的无偏估计.
------------------------------
总之,这种计算方法来自与贝塞尔公式法对"标准偏差的最佳估计值的计算",而不是由数学期望得到的描述离散程度的变量.
参考资料:原创...累死
参考技术A 其实,用matlab中Var(‘你的数据’)指令求出的是样本方差,而样本方差的期望是总体方差,也就是说样本方差是总体方差的无偏估计。若是按方差的标准计算公式求不是这样子的。所以要看你具体要什么,是要样本方差还是样本方差的(n-1)/n倍,一切随你。如果纯粹是求样本方差的话,用matlab算出的就是你想要的。如果求按方差公式求,可以利用EXCEL计算。具体计算方法相信你懂得~
以上是关于matlab中方差计算的问题的主要内容,如果未能解决你的问题,请参考以下文章