Bu zor bir problem. İlk önce lognormal dağılımın moment oluşturucu fonksiyonunu kullanma (bazılarına yaklaşımlar) hakkında düşündüm. Açıklayacağım gibi, bu işe yaramıyor. Ama önce bazı notasyonlar:
Let standart normal yoğunluğu ve gelen kümülatif dağılım fonksiyonu. Yalnızca yoğunluk işlevine sahip
lognormal dağılım durumunu analiz
ve kümülatif dağılım fonksiyonu
ve yukarıdaki lognormal dağılım ile bağımsız rastgele değişkenler
olduğunu varsayalım . Ortalama sıfıra sahip simetrik bir dağılım olan dağılımı ile ilgileniyoruz . Let olması ve moment kavramıcp l N , N ( 0 , 1 ) f ( x ) = 1ϕΦlnN(0,1)F(x)=Φ(lnx)X,Y,D=X-Y,M(t)=EEtXXt∈(-∞,0]DMD(t)=E, et(X-Y)=EetX
f(x)=12π−−√xe−12(lnx)2
F(x)=Φ(lnx)
XYD=X−YM(t)=EetXX. Sadece için tanımlandığı . Çok açık bir aralık sıfır ihtiva tanımlanmayan, moment üreten fonksiyonu olan Yani, için moment oluşturma işlevi sadece için tanımlanmıştır , bu nedenle çok kullanışlı değildir.
t∈(−∞,0]DMD(t)=Eet(X−Y)=EetXEe−tY=M(t)M(−t)Dt=0
Bu, nin dağılımı için yaklaşıkları bulmak için daha doğrudan bir yaklaşıma ihtiyacımız olacağı anlamına gelir . Diyelim ki , hesapla
(ve ise simetri ile çözülürse ) elde edilir. Dt≥0 t<
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|)
Bu ifade, sayısal entegrasyon için veya simülasyon için bir temel olarak kullanılabilir. İlk önce bir test:
integrate(function(y) plnorm(y)*dlnorm(y), lower=0, upper=+Inf)
0.5 with absolute error < 2.3e-06
hangi açıkça doğrudur. Bunu bir fonksiyonun içine saralım:
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)
hangi verir:
Daha sonra integral işareti altında farklılaşarak yoğunluk işlevini bulabiliriz,
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)
}
hangi test edebiliriz:
> integrate(dDIFF, lower=-Inf, upper=+Inf)
0.9999999 with absolute error < 1.3e-05
Ve aldığımız yoğunluğu çizeriz:
plot(dDIFF, from=-5, to=5)
Ayrıca bazı analitik yaklaşımlar elde etmeye çalıştım, ancak şu ana kadar başarılı olamadım, kolay bir problem değil. Ancak, R'de programlanan yukarıdaki gibi sayısal entegrasyon modern donanımda çok hızlıdır, bu yüzden muhtemelen daha fazla kullanılması gereken iyi bir alternatif.