请教matlab里面方差计算问题?

oskycar 2008-12-18 05:57:56
偶然需要计算方差,但是用matlab和自己计算的结果缺不一样?

如x=[1,2,3,4] 手动计算结果为:1.25
但是用matlab的var(x)计算结果是1.667 ???

因为已知cov(x,x)=d(x)
在matlab里面用cov(x,x)后结果如下:
1.667 1.667
1.667 1.667

为什么是一个2*2的矩阵呢???按照定义应该就是d(x).虽然结果一样..


问题很简单.可是我不知道问题在哪?希望大家不吝赐教
...全文
3247 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
shalou111 2011-03-20
  • 打赏
  • 举报
回复
说粗话的兄弟,你的解决方案不错,要是语言再文明些就效果更好了。
shalou111 2011-03-20
  • 打赏
  • 举报
回复
不错,谢谢,受益了
ph042 2010-08-01
  • 打赏
  • 举报
回复
楼主人不错,找到错误的原因还跟我们分享了,我赞一个!
CrazyDak 2010-06-21
  • 打赏
  • 举报
回复
悲剧 骂贴的才是SB
bianhaohui 2010-06-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dovechen 的回复:]
楼主傻B,手动计算明明得1.6667.方差的计算应除以(n-1)而非n,因此S=5/3=1.6667,var(x)计算结果正确。如果用var(x,1)计算,则结果为1.2500.此结果是以n-1为分母。楼主傻B
[/Quote]

确实啊,这个lz。。。
dovechen 2009-07-18
  • 打赏
  • 举报
回复
错了,得1.2500结果的应该以n为分母
dovechen 2009-07-18
  • 打赏
  • 举报
回复
楼主傻B,手动计算明明得1.6667.方差的计算应除以(n-1)而非n,因此S=5/3=1.6667,var(x)计算结果正确。如果用var(x,1)计算,则结果为1.2500.此结果是以n-1为分母。楼主傻B
xylzj123 2009-02-19
  • 打赏
  • 举报
回复
顶一个
oskycar 2008-12-19
  • 打赏
  • 举报
回复
没有人回应....不过我自己找到答案了.
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.这个是测量值标准偏差的估计值,通常称为实验偏差.可以证明,它的平方是方差的无偏估计,但它本身并不是标准差的无偏估计.
------------------------------
总之,这种计算方法来自与贝塞尔公式法对"标准偏差的最佳估计值的计算",而不是由数学期望得到的描述离散程度的变量.
oskycar 2008-12-18
  • 打赏
  • 举报
回复
补充:但是如果计算cov(x')结果是:2.9167
x'是x的转置

感谢大家抽空帮我看看.

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧