具体来说,x和mu之差的乘积,精度矩阵,x和mu之差的转置,你是怎么编码的,我下面的代码正确吗?提前感谢。
(colSums(dat-mu_mat)%*%solve(sigma)%*%colSums(dat-mu_mat))
其中mu_mat是向下重复n次的均值的行向量。
完整代码如下:
dat<-rmvnorm(100,mean=c(200,0.1),sigma=matrix(c(5,0,0,0.02),nrow=2))
n<-nrow(dat)
mu<-matrix(c(200,0.1),nrow=1)
mu_mat<-matrix(rep(c(200,0.1),100),nrow=100,ncol=2,byrow=TRUE)
loglik_mvn<-function(n,d,x,mu_mat,sigma){
(-n*d/2)*log(2*pi)-(n/2)*det(sigma,log=TRUE)-0.5*(colSums(x-mu_mat)%*%solve(sigma)%*%colSums(x-mu_mat))
loglik_mvn(nrow(dat),ncol(dat),dat,mu_mat,sigma)
dmvnorm(dat,mean=mu,sigma=sigma,log=TRUE)
}
1条答案
按热度按时间qoefvg9y1#
如果您有数据集、均值向量和sigma,则可以计算指数部分:
因此,您可能会看起来像:
创建于2023年2月16日,使用reprex v2.0.2
您还可以使用以下命令:
把所有的东西放在一起,利用R的循环: