นี่เป็นปัญหาที่ยาก ฉันคิดก่อนเกี่ยวกับการใช้ (ประมาณบางส่วน) ฟังก์ชั่นสร้างช่วงเวลาของการแจกแจงล็อกนอร์มอล ไม่ทำงานอย่างที่ฉันจะอธิบาย แต่ก่อนอื่นบางสัญกรณ์:
ให้เป็นความหนาแน่นปกติมาตรฐานและΦฟังก์ชั่นการแจกแจงสะสมที่สอดคล้องกัน เราจะวิเคราะห์กรณีการกระจาย lognormal ลิตรn N ( 0 , 1 )ซึ่งมีฟังก์ชั่นความหนาแน่น
F ( x ) = 1ϕΦlnN(0,1)
และฟังก์ชันการแจกแจงสะสม
F(x)=Φ(lnx)
สมมติว่าXและYเป็นตัวแปรสุ่มอิสระที่มีการแจกแจงล็อกปกติข้างต้น เราสนใจในการแจกแจงของD=X-Yซึ่งเป็นการกระจายแบบสมมาตรโดยมีค่าเฉลี่ยเป็นศูนย์ ให้M(t)=E∈(-∞,0]
f(x)=12π−−√xe−12(lnx)2
F(x)=Φ(lnx)
XYD=X−Yเป็นฟังก์ชั่นช่วงเวลาที่ก่อให้เกิดของX
มันถูกกำหนดไว้สำหรับ
tM(t)=EetXXt∈(−∞,0]ดังนั้นจึงไม่ได้กำหนดไว้ในช่วงเวลาเปิดที่มีศูนย์ฟังก์ชั่นสร้างช่วงเวลาสำหรับ
คือ
M D ( t ) = E e t ( X - Y ) = E e t X E e - t Y = M ( t ) M ( - t )ดังนั้นฟังก์ชันสร้างโมเมนต์สำหรับ
Dถูกกำหนดเฉพาะสำหรับ
t = 0DMD(t)=Eet(X−Y)=EetXEe−tY=M(t)M(−t)Dt=0จึงไม่ค่อยมีประโยชน์
นั่นหมายความว่าเราจะต้องมีวิธีการโดยตรงมากขึ้นในการหาค่าประมาณสำหรับการกระจายของDสมมติว่าt ≥ 0Dt≥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
(and the case
t<0 is solved by symmetry, we get
P(D≤t)=1−P(D≤|t|)).
This expression can be used for numerical integration or as a basis for simulation. First a test:
integrate(function(y) plnorm(y)*dlnorm(y), lower=0, upper=+Inf)
0.5 with absolute error < 2.3e-06
which is clearly correct. Let us wrap this up inside a function:
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)
which gives:
Then we can find the density function by differentiating under the integral sign, obtaining
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)
}
which we can test:
> integrate(dDIFF, lower=-Inf, upper=+Inf)
0.9999999 with absolute error < 1.3e-05
And plotting the density we get:
plot(dDIFF, from=-5, to=5)
I did also try to get some analytic approximation, but so far didn't succeed, it is not an easy problem. But numerical integration as above, programmed in R is very fast on modern hardware, so is a good alternative which probably should be used much more.