Matlab var

来源:互联网 发布:文华财经随身行mac 编辑:程序博客网 时间:2024/06/11 03:33

一(http://blog.sina.com.cn/s/blog_67c13ccf0100ppt1.html)

Matlab中输入help var 可以得到var函数的有关帮助,其中有一句非常重要的话:

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.这个是测量值标准偏差的估计值,通常称为实验偏差.可以证明,它的平方是方差的无偏估计,但它本身并不是标准差的无偏估计.
------------------------------

总之,这种计算方法来自与贝塞尔公式法对"标准偏差的最佳估计值的计算",而不是由数学期望得到的描述离散程度的变量.

二、(http://blog.163.com/wanglei2146073@126/blog/static/90689607201132294156177/)

按求取方差公式的不同,方差有两种biased(有效估计的方差)和unbiased(无偏估计的方差),前者除以n;后者除以n-1,叫做Bessel's correction,可以修正样本的variance,更精确描述样本空间。matlab默认采用的是后者。

下面例举matlab求方差的操作,在MATLAB中,默认为无偏估计。

b1 = var(a); % 按默认来求
b2 = var(a, 0); % 默认的公式(用N-1)
c1 = var(a, 1); % 另外的公式(用N)
d1 = var(a, 0, 1); % 对每列操作(用N-1)
d2 = var(a, 0, 2); % 对每行操作(用N-1)

d3 = var(a, 1, 1); % 对每列操作(用N)
d4 = var(a, 1, 2); % 对每行操作(用N)
e = var(a'); % 求转置矩阵

f = var(a(:)); % 通过直接访问矩阵的存储,来对矩阵进行操作

另外,如果觉得对矩阵操作不方便的话,可先将矩阵化为向量再求方差。

a=reshape(a,M*N,1);

Vr=var(a);

即可求得。


0 0