To trudny problem. Najpierw pomyślałem o użyciu (jakieś przybliżenie) funkcji generowania momentu w rozkładzie logarytmicznym. To nie działa, jak wyjaśnię. Ale najpierw trochę notacji:
Niech będzie standardową gęstością normalną, a odpowiednią funkcją rozkładu skumulowanego. Przeanalizujemy tylko rozkład logarytmiczny przypadku , który ma funkcję gęstości
oraz funkcja skumulowanego rozkładu
Załóżmy, że i są niezależnymi zmiennymi losowymi o powyższym rozkładzie logarytmicznym. Interesuje nas rozkład , który jest rozkładem symetrycznym ze średnią zero. Niech będzie funkcją generującą momentΦ l n N ( 0 , 1 ) f ( x ) = 1ϕΦl n N.( 0 , 1 )F(x)=Φ(lnx)XYD=X-YM(t)=EetXXt∈(-∞,0]DMD(t)=Eet(X-Y)=EetX
fa( x ) = 12 π--√xmi- 12)( lnx )2)
fa( x ) = Φ ( lnx )
XYD = X- YM.( t ) = Emit XX. Jest on zdefiniowany tylko dla , więc nie jest zdefiniowany w przedziale otwartym zawierającym zero. Funkcja generowania momentu dla to . Zatem funkcja generowania momentu dla jest zdefiniowana tylko dla , więc nie jest bardzo przydatna.
t ∈ ( - ∞ , 0 ]reM.re( t ) = Emit ( X- Y)= Emit Xmimi- t Y= M.( t ) M.( - t )ret = 0
Oznacza to, że będziemy potrzebować trochę bardziej bezpośrednie podejście do znajdowania przybliżeń dla podziału . Załóżmy, że , oblicz
(a przypadek rozwiązany jest symetrycznie, otrzymujemy ). ret ≥ 0
P.( D ≤ t )= P( X- Y≤ t )= ∫∞0P.( X- y≤ t | Y= y) f( y)rey= ∫∞0P.( X≤ t + y) f( y)rey= ∫∞0fa( t + y) f( y)rey
t < 0P.( D ≤ t ) = 1 - P( D ≤ | t | )
To wyrażenie może być użyte do integracji numerycznej lub jako podstawa symulacji. Najpierw test:
integrate(function(y) plnorm(y)*dlnorm(y), lower=0, upper=+Inf)
0.5 with absolute error < 2.3e-06
co jest wyraźnie poprawne. Podsumujmy to w funkcji:
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)
co daje:
Następnie możemy znaleźć funkcję gęstości, różnicując pod znakiem całki, uzyskując
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)
}
który możemy przetestować:
> integrate(dDIFF, lower=-Inf, upper=+Inf)
0.9999999 with absolute error < 1.3e-05
I wykreślając gęstość otrzymujemy:
plot(dDIFF, from=-5, to=5)
Próbowałem też uzyskać jakieś przybliżenie analityczne, ale jak dotąd nie udało się, nie jest to łatwy problem. Ale integracja numeryczna, jak wyżej, zaprogramowana w R jest bardzo szybka na nowoczesnym sprzęcie, więc jest dobrą alternatywą, która prawdopodobnie powinna być używana znacznie więcej.