Ini masalah yang sulit. Saya pertama kali berpikir tentang menggunakan (perkiraan) fungsi penghasil momen dari distribusi lognormal. Itu tidak berhasil, seperti yang akan saya jelaskan. Tetapi pertama-tama beberapa notasi:
Biarkan menjadi kepadatan normal standar dan Φ fungsi distribusi kumulatif yang sesuai. Kami hanya akan menganalisis distribusi kasus lognormal l n N ( 0 , 1 ) , yang memiliki fungsi kepadatan
f ( x ) = 1ϕΦl n N( 0 , 1 )
dan fungsi distribusi kumulatif
F(x)=Φ(lnx)
MisalkanXdanYadalah variabel acak independen dengan distribusi lognormal di atas. Kami tertarik pada distribusiD=X-Y, yang merupakan distribusi simetris dengan rata-rata nol. MariM(t)=EetXmenjadi fungsi pembangkit momenX. Ini didefinisikan hanya untukt
f( x ) = 12 π--√xe- 12( lnx )2
F( x ) = Φ ( lnx )
XYD = X- YM.( t ) = Eet XX , jadi tidak didefinisikan dalam interval terbuka yang berisi nol. Fungsi pembangkit momen untuk
D adalah
M D ( t ) = E e t ( X - Y ) = E e t X E e - t Y = M ( t ) M ( - t ) Jadi, fungsi menghasilkan momen untuk
D hanya didefinisikan untuk
t = 0t ∈ ( - ∞ , 0 ]DM.D( t ) = Eet ( X- Y)= Eet XEe- t Y= M( t ) M( - t )Dt = 0, jadi tidak terlalu berguna.
Dt ≥ 0
P( D ≤ t )= P( X- Y≤ t )= ∫∞0P( X- y≤ t | Y= y) f( y)dy= ∫∞0P( X≤ t + y) f( y)dy= ∫∞0F( t + y) f( y)dy
t < 0P( D ≤ t ) = 1 - P( D ≤ | t | )
Ungkapan ini dapat digunakan untuk integrasi numerik atau sebagai dasar untuk simulasi. Tes pertama:
integrate(function(y) plnorm(y)*dlnorm(y), lower=0, upper=+Inf)
0.5 with absolute error < 2.3e-06
yang jelas benar. Mari kita selesaikan ini di dalam suatu fungsi:
pDIFF <- function(t) {
d <- t
for (tt in seq(along=t)) {
if (t[tt] >= 0.0) d[tt] <- integrate(function(y) plnorm(y+t[tt])*dlnorm(y),
lower=0.0, upper=+Inf)$value else
d[tt] <- 1-integrate(function(y) plnorm(y+abs(t[tt]))*dlnorm(y),
lower=0.0, upper=+Inf)$value
}
return(d)
}
> plot(pDIFF, from=-5, to=5)
pemberian yang mana:
Kemudian kita dapat menemukan fungsi kerapatan dengan membedakan di bawah tanda integral, memperoleh
dDIFF <- function(t) {
d <- t; t<- abs(t)
for (tt in seq(along=t)) {
d[tt] <- integrate(function(y) dlnorm(y+t[tt])*dlnorm(y),
lower=0.0, upper=+Inf)$value
}
return(d)
}
yang dapat kami uji:
> integrate(dDIFF, lower=-Inf, upper=+Inf)
0.9999999 with absolute error < 1.3e-05
Dan memplot kepadatan yang kita dapatkan:
plot(dDIFF, from=-5, to=5)
Saya juga mencoba untuk mendapatkan beberapa perkiraan analitik, tetapi sejauh ini tidak berhasil, ini bukan masalah yang mudah. Tetapi integrasi numerik seperti di atas, diprogram dalam R sangat cepat pada perangkat keras modern, sehingga merupakan alternatif yang baik yang mungkin harus digunakan lebih banyak.