2013-11-23 114 views
-1

我一直在嘗試應用這個函數,但我遇到了一些問題。 對於一個變量(X)我有使用rmvnorm和dmvnorm兩個變量

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.感謝

回答

1

mu對象沒有定義(也不是K,或x,所以我會假設你的大腦跳了一拍,並且你真的想要一個mu是你叫什麼。那你早定義一行mean我走得更遠讓他們兩個命名mu因爲由創建它們是一個壞主意的函數命名對象您的循環是完全不必要的,因爲dnorm被矢量:

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。列,你可以這樣做:

apply(T, 2, dnorm, mean=mu, sd=sigma2) 

你的問題的標題說dmvnorm但你的代碼表示dnorm,所以如果你wnat使用多變量密度,那麼你需要指定要使用哪個方案,並提供相當多的更詳細一點目標是什麼。

+0

謝謝@DWin我想要的是生成一個函數dmvnorm(mvtnorm包)的二元正態pdf。 – user2974841

+0

然後,您將需要兩個mu和一個協方差矩陣,並從多個支持多變量密度的包中進行選擇。如果你想構造一個網格來覆蓋一組「dmvtnorm」,你可能想使用'expand.grid'或'outer'。 SO檔案中必須有幾個可行的例子。 –