在衡量一组数据的离散程度的时候通常计算这组数据的方差(Variance)或者标准差(Standard Deviation)
当分析数据为总体(Population)和样本(Sample)时方差和标准差的计算方式又有不同,简单可以记忆为样本数据(Sample Data)求方差除以n-1
,总体数据(The Population )求方差除以n
,公式如下:
The Population:
Variance: σ 2 = ∑ ( x i − μ ) 2 N \sigma^2=\frac{\sum(x_i-\mu)^2}{N} σ2=N∑(xi−μ)2
Stand Deviation: σ = σ 2 \sigma=\sqrt{\sigma^2} σ=σ2
A Sample
Variance: s 2 = ∑ ( x i − μ ) 2 N − 1 s^2=\frac{\sum(x_i-\mu)^2}{N-1} s2=N−1∑(xi−μ)2
Stand Deviation: s = s 2 s=\sqrt{s^2} s=s2
下面给出MATLAB的var()
和std()
函数的运算结果
test=[4 5 6 3 5 7 2]; %随机给出一组数据
m=mean(test)
var1=sum((test(1,:)-m).^2)/length(test) %用总体数据公式定义的方法求方差
var2=sum((test(1,:)-m).^2)/(length(test)-1) %求样本数据的方差
var3=var(test) %用var函数计算
得到如下结果:
m =
4.571428571428571
var1 =
2.530612244897959
var2 =
2.952380952380953
var3 =
2.952380952380953
由结果知var()函数是以求样本方差的公式计算的,那么怎么求总体方差呢?通过查看帮助文档可以发现var(data,1)
即后面加个参数1就可以求总体方差了,函数var()默认的参数是0,也就是求样本方差
var4=var(test,1)
结果如下:
var4 =
2.530612244897959
同理,对于std()求标准差的也是通过修改参数实现不同的算法
std1=std(test,0) %默认参数就是0来的
std2=sqrt(var(test,0))
std3=std(test,1) %选择参数为1
std4=sqrt(var(test,1))
结果如下:
std1 =
1.718249385968449
std2 =
1.718249385968449
std3 =
1.590789817951435
std4 =
1.590789817951435
如果想用matlab作为个人学习使用,可以微信扫描下面公众号二维码,关注“向芽塔”,后台回复
“MATLAB”,就可以获取丰富的资源啦(支持WIN,MAC,Linux三大系统)