dnorm(x)とdmvnorm(x)(mvtnormパッケージv1.0.5)は、xが長さ1のときと同じ結果を生成します。しかし、積分関数を使って作業するときは、dmvnorm x)はかなり離れているようです。ここでの例であり、Iは、2つの被積分関数を定義:dmvnormの奇妙な振る舞い
integrand1 <- function(x)
{ pnorm((-2-sqrt(0.2)*x)/sqrt(0.8))*dmvnorm(x)}
integrand2 <- function(x)
{ pnorm((-2-sqrt(0.2)*x)/sqrt(0.8))*dnorm(x)}
個々の値、integrand1(X)= integrand2(X)で評価します。
しかし、これら二つの機能に沿って統合は全く異なる結果を生成する:
integrate(integrand1,lower = -10,upper = 10)$value
[1] 7.567463e-236
integrate(integrand2,lower = -10,upper = 10)$value
[1] 0.02275013
同様の現象はまた、曲線機能について観察されます。それがバグかどうか不思議に思うだけです。
'dmvnorm(matrix(x))'を使用する – user20650
'dnorm(1:10)'と 'dmvnorm(1:10)'を試しましたか?彼らがなぜ違うのか理解していますか? 'dmvnorm(1:10)'が基本的に 'prod(dnorm(1:10))'に等しいのはなぜですか? – nicola
ありがとう、@ user20650。 dmvnorm(matrix(x))は問題を解決します。 – Lamothy