如题,R语言中如何计算样本方差(不用Var函数)?
- 方法一:(不推荐,因为我用SAS用的多,编程习惯很多都是SAS上的习惯,R里面有更简单的方式。比如下面的for循环获取每个值就很SAS)
test<-rnorm(100)
#循环计算的两种方法
a<-0
b<-0
c<-0
for (i in 1:length(test)) {
a=a+test[i]^2
b=b+test[i]
c=c+(test[i]-mean(test))^2
}
#第一种
(a-b^2/length(test))/(length(test)-1)
#第二种
c/(length(test)-1)
这里其实就是通过for循环获取向量中每个值进行计算。这里面的第一种计算公式是:
![f852384ea9ae822a5460af418420066d.png](https://i-blog.csdnimg.cn/blog_migrate/837892e2c6f6dda59884b4abc0b0f5ed.jpeg)
第二种计算公式是:
![fcae6343a57df3756ade681e5d8a7518.png](https://i-blog.csdnimg.cn/blog_migrate/a05f8e8d168c582bb7b268c4168a0e42.png)
- 方法二:
#不用循环的两种方法
(sum(test^2)-sum(test)^2/length(test))/(length(test)-1)
sum((test-mean(test))^2)/(length(test)-1)
也分别对应上面的计算公式一、二。
- 方法三:
#矩阵计算
test<-as.matrix(test)
variance<-1/(length(test)-1)*t(test-mean(test))%*%(test-mean(test))