2016-04-10 33 views
2

Dnorm (x) ve dmvnorm (x) (mvtnorm paket v1.0.5'ten itibaren) x'in uzunluk 1 olduğunda aynı sonucu verir. Ancak, tümleştirme işleviyle çalışırken, sonuç dmvnorm (x) oldukça kapalı gibi görünüyor. Burada bir örnek, iki integrali işlevleri tarif:dmvnorm'ın garip davranışı

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)} 

bireysel değerleri, integrand1 (x) = integrand2 (x) en değerlendirilmesi.

Bununla birlikte, bu iki fonksiyon boyunca entegrasyon tamamen farklı sonuçlar üretir:

integrate(integrand1,lower = -10,upper = 10)$value 
[1] 7.567463e-236 

integrate(integrand2,lower = -10,upper = 10)$value 
[1] 0.02275013 

Benzer durum daha önce de eğri fonksiyonu görülmektedir. Sadece bir hata mı, yoksa yanlış mı kullandığını merak ediyorum.

+2

'dmvnorm (matrix (x))' 'd – user20650

+1

'dnorm (1:10)' ve 'dmvnorm (1:10)' yi denediniz mi? Neden farklı olduklarını anlıyor musunuz? Neden dmvnorm (1:10) 'temelde prod'a eşittir (dnorm (1:10))'? – nicola

+1

Teşekkürler, @ kullanıcı20650. dmvnorm (matris (x)) sorunu çözer. – Lamothy

cevap

2

Bu bir hata değil. dmvnorm işlevi, çok değişkenli bir yoğunluk dağılım işlevini değerlendirmeyi beklerken, dnorm tek değişkenli dağıtımları ele alır. Bir örnek bakalım:

dnorm(1:5) 
#[1] 2.419707e-01 5.399097e-02 4.431848e-03 1.338302e-04 1.486720e-06  
dmvnorm(1:5) 
#[1] 1.151999e-14 

Ana fark: uzunluk 5 bir vektör döner dnorm, dmvnorm ise tek bir değer. Ayrıca unutmayın:

prod(dnorm(1:5)) 
#[1] 1.151999e-14 

temelde aynı değeri dmvnorm tarafından döndürülen.

  • dnorm(1:5), 1 bir normal dağılım yoğunluğu değerlendirir daha sonra 2, ortalama 0 ve standart sapma 1 ile 3, 4 ve 5 Bu yüzden 5 değerlerine sahiptir: Kısaca, bu fark vardır.
  • dmvnormçok değişkenli dağıtımları için üretilmiştir. Şimdi, 5 değişkenli bir multinormalin (hangisi 1:5, yani uzunluk 5'in bir vektörünü verdiğimiz için), birinci değişkenin 1 olduğu yerde, ikincide 2'de vb. Araçların tümü sıfırdır ve kovaryans matrisi diag(5), yani 5 boyutlu bir kimlik matrisidir. Her ikisi de varsayılan değerlerdir, çünkü bunları belirtmedik. Bakınız ?dmvnorm. İkinci durumda

beş değişken bağımsız ve böylece yoğunluğu 5 bağımsız (tek varyant) 'nin ürünü, normal 1, dağıtım, 2, 3, 4 ve 5

olduğu Tek değişkenli dağıtımlarla ve aksi takdirde dmvnorm ile uğraşırken dnorm kullanın.

+1

Çok teşekkürler, @nicola. Bu çok yardımcı! – Lamothy

+0

Teşekkürler, @nicola. Ayrıca, çalışma zamanı açısından, ürünün (dnorm (x)) uzunluğu (x)> 1 olduğunda dmvnorm'dan (x) çok daha hızlı olduğu görülmüştür. Performans farkıyla ilgili bazı ışıkları paylaşabilir misiniz? – Lamothy