我一直试图应用这些功能,但我遇到了一些问题。 对于一个变量(x),我有
mean <- rnorm(K,mean=mean(x),sd=sd(x))
sigma2 <- rep(sd(x),K)
for (k in 1:K)
{
f[,k] <- dnorm(x,mu[k],sigma2[k]) ##pdf ##
}
我想做同样的事情,但现在我有一个矩阵(T),有两个变量x和y 请有人帮助我。我是R.的新人。谢谢
答案 0 :(得分:1)
mu
对象未定义(K
或x
都没有定义,所以我假设你的大脑跳过了一个节拍并且你真的想要那个mu
1}}是你之前定义过一行的mean
。我进一步将它们命名为mu
,因为通过创建它们的函数命名对象是一个坏主意。因为dnorm
被矢量化,所以完全不需要for循环:
K= 100; x <- rnorm(10)
mu <- rnorm(K,mean=mean(x),sd=sd(x))
sigma2 <-sd(x)
f <- dnorm(x,mean=mu, sd=sigma2) ##pdf ##
str(f)
# num [1:100] 0.39342 0.42177 0.00906 0.38493 0.29362 ...
所以现在你知道如何使用dnorm了。 Tp使它可以按列使用矩阵,你可以这样做:
apply(T, 2, dnorm, mean=mu, sd=sigma2)
你的问题标题说dmvnorm,但你编码说dnorm,所以如果你想使用多变量密度,那么你需要指定你正在使用哪个包,并提供更多关于目标的详细信息。