2017-04-02 151 views
1

我想用这个函数来计算,但是它一直告诉我这个问题。我的意思是1 * 2,“covars”是2 * 2的数组。的“手段”和“covars”的NCOLS长度是same.I不知道为什么......使用“dmvnorm”函数时出现一个奇怪的现象

这是我的代码 .

,这是错误的消息 . 我的输入是

weights<-c(1/3,1/3,1/3) 
means<-matrix(1:6,nrow=3,byrow=FALSE) 
covars<-array(1,dim=c(2,2,3)) 
EM(d,weights,means,covars,300,3,10,0.0001) 

和“d”是

the d is a 300*2 matrix.I capture a little. 我非常抱歉,我没有一个良好的指挥这个网站,我不知道如何把这么多的数据。

非常感谢!

+1

请发布代码和错误文本,请勿使用图片。此外,如果可能的话,提供输入,换句话说[make a reproducible example](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) – digEmAll

+0

@李哲源ZheyuanLi我使用'as.matrix'将输入变为矩阵,但它仍然会出错。是否有可能告诉我如何纠正它? –

回答

1

唯一可能的原因是您的输入数据d。它必须是一个双列矩阵,因为您有一个二元正态分布。下面重现你的错误:

library(mvtnorm) 

# 3 columns 
dmvnorm(matrix(runif(6), 2, 3)), c(0,0), diag(2)) 

但这是好的

# 2 columns 
dmvnorm(matrix(runif(6), 3, 2)), c(0,0), diag(2)) 

我觉得你d有两行,但很多列。

+0

我终于找到这个问题..非常感谢你! –

相关问题