假设都是p维正态分布,公共协差阵为\[\Sigma\],第k个样本的均值为\[\mu_k\]是已知的p维列向量,抽取的总样本量为n,自己编写的估计公共协差阵的代码如下:
s<-matrix(rep(0,p*p),p,p);
m<-rep(0,p);
for (i in 1:n){
for(k in 1:K){
if (y[i,]==k){ #y是一个表示x类别的量
m<-mu[,k]; #mu是一个矩阵,第k列存放第k个总体的均值
s<-s+(x[i,]-m)%*%t(x[i,]-m)}}} #x是一个n*p的矩阵,存放着抽取的n个样本
sigma<-s/(n-K);
这样估计对吗?
循环语句算起来在维数比较高的情况下回比较慢,想问问大家有没有更好的处理方法?