Загальна сума випадкових величин Gamma


35

Я читав, що сума випадкових змінних Gamma з тим же параметром масштабу є ще однією випадковою змінною Gamma. Я також бачив статтю Москопулоса, що описує метод підсумовування загального набору випадкових змінних Гамма. Я спробував застосувати метод Мосхопулоса, але ще не мав успіху.

Як виглядає підсумовування загального набору випадкових величин Gamma? Щоб зробити це питання конкретним, як це виглядає:

Gamma(3,1)+Gamma(4,2)+Gamma(5,1)

Якщо наведені вище параметри не особливо показові, запропонуйте іншим.


4
Явне рішення суми будь-яких двох дистрибутивів Gamma було розміщено на сайті stats.stackexchange.com/a/252192 .
whuber

Особливий приклад цього, коли всі розподіли Gamma мають параметр форми 1 (тобто вони експоненціальні), називають гіпоекспоненціальним розподілом (сімейством) . У випадку лише двох експоненціальних розподілів також існує чітка формула, наведена на сайті stats.stackexchange.com/questions/412849 .
whuber

Відповіді:


37

По-перше, об’єднайте будь-які суми, що мають однаковий масштабний коефіцієнт : плюс змінний утворюють змінну .Γ(n,β)Γ(m,β)Γ(n+m,β)

Далі зауважте, що характерна функція (cf) для є , звідки cf суми цих розподілів добутокΓ(n,β)(1iβt)n

j1(1iβjt)nj.

Коли все інтеграл, цей продукт розширюється по мірі часткова часткою в лінійну комбінацію з , де цілих чисел від і . У прикладі з (із суми та ) та знаходимо ( 1 - i β jnj ν 1 n j β 1 = 1 , n 1 = 8 Γ ( 3 , 1 ) Γ ( 5 , 1 ) β 2 = 2 , n 2 = 4(1iβjt)νν1njβ1=1,n1=8Γ(3,1)Γ(5,1)β2=2,n2=4

1(1it)81(12it)4=1(x+i)88i(x+i)740(x+i)6+160i(x+i)5+560(x+i)41792i(x+i)35376(x+i)2+15360ix+i+256(2x+i)4+2048i(2x+i)39216(2x+i)230720i2x+i.

Зворотне прийняття cf - це зворотне перетворення Фур'є, яке є лінійним : це означає, що ми можемо застосовувати його термін за терміном. Кожен термін можна розпізнати як кратне cf дистрибутива Gamma і тому легко інвертується, щоб отримати PDF . У отриманому прикладі

ett75040+190ett6+13ett5+203ett4+83et2t3+2803ett3128et2t2+896ett2+2304et2t+5376ett15360et2+15360et

для PDF суми.

Це кінцева суміш розподілів гамми, що мають коефіцієнти масштабу, рівні коефіцієнтів, що знаходяться в межах суми та коефіцієнтів форми, менших або рівних коефіцієнтам в межах суми. За винятком спеціальних випадків (де можливе скасування), кількість термінів задається загальним параметром форми (якщо всі різні).n jn1+n2+nj


Як тест, ось гістограма з результатами, отриманими додаванням незалежних малюнків з розподілів та . На нього накладається графік у рази попередньої функції. Підгонка дуже хороша. Γ ( 8 , 1 ) Γ ( 4 , 2 ) 10 4104Γ(8,1)Γ(4,2)104

Малюнок


Москопулос переносить цю ідею на крок далі, розширюючи cf суму на нескінченний ряд характерних функцій Гамми, коли один або кілька є , а потім припиняє нескінченний ряд у точці, де воно досить добре наближене.ni


2
Незначне коментар: Як правило, кінцеве суміш означає PDF виду , де і , тобто, є ймовірності та pdf можна інтерпретувати як (закон загальної ймовірності) зваженої суми умовних pdfs з урахуванням різних умов, що трапляються з ймовірностями . Однак у вищенаведеній сумі деякі коефіцієнти від’ємні, і тому стандартне тлумачення суміші не застосовується. a i > 0 i a i = 1 a i a i
f(x)=i=1naifi(x)
ai>0iai=1aiai
Діліп Сарват

@Dilip Це хороший момент. Цією справою є те, що хоча деякі коефіцієнти можуть бути негативними, однак це поєднання все ще є дійсним розподілом (за своєю конструкцією).
whuber

Чи можна розширити цей підхід для врахування додавання залежних змінних? Зокрема, я хочу додати 6 дистрибутивів, кожен з яких має певну кореляцію з іншими.
masher

11

Я покажу ще одне можливе рішення, яке досить широко застосовується, а з сучасним програмним забезпеченням R, досить простим у виконанні. Це наближення щільності сідлових точок, яке повинно бути більш відомим!

Для термінології розподілу гами я дотримуюся https://en.wikipedia.org/wiki/Gamma_distribution з параметризацією форми / масштабу, - параметр форми, а - масштаб. Для наближення сідлоподібної точки я дотримуюся Рональда У Батлера: "Наближення сідлових точок з додатками" (Cambridge UP). Наближення сідлових точок пояснюється тут: Як працює наближення сідлових точок? тут я покажу, як це використовується в цій програмі.θkθ

Нехай - випадкова величина з існуючою функцією, що генерує момент яка повинна існувати для в деякому відкритому інтервалі, який містить нуль. Тоді визначте функцію генерації накопичувача через Відомо, що . Рівняння сідлової точки - що неявно визначає як функцію (яка повинна знаходитися в діапазоні ). Запишемо цю неявно визначену функцію як . Зауважимо, що рівняння сідлових точок завжди має рівно одне рішення, оскільки кумулятивна функція опукла. M ( s ) = E e s X s K ( s ) = log M ( s ) E X =X

M(s)=EesX
s
K(s)=logM(s)
KEX=K(0),Var(X)=K(0)и х X сек ( х )
K(s^)=x
sxXs^(x)

Тоді перевалу наближення до щільності з задається Ця приблизна функція густини не гарантується інтегруванням до 1, так само ненормоване наближення сідлових точок. Ми могли б її інтегрувати чисельно і перенормувати, щоб отримати краще наближення. Але це наближення гарантовано є негативним.Х е ( х ) = 1fX

f^(x)=12πK(s^)exp(K(s^)s^x)

Тепер нехай є незалежними гамма-випадковими змінними, де має розподіл з параметрами . Тоді сукупною функцією генерації є визначена для . Перша похідна - а друга похідна - Далі я наведу деякий код, що обчислює це, і буду використовувати значення параметрів , ,X i ( kX1,X2,,XnXi(ki,θi)

K(s)=i=1nkiln(1θis)
s<1/max(θ1,θ2,,θn)
K(s)=i=1nkiθi1θis
n=3k=(1,2,3)θ=(1,2,3)
K(s)=i=1nkiθi2(1θis)2.
Rn=3k=(1,2,3)θ=(1,2,3). Зауважте, що наступний Rкод використовує новий аргумент у функції uniroot, введеній в R 3.1, тому не буде працювати у старих R.
shape <- 1:3 #ki
scale <- 1:3 # thetai
# For this case,  we get expectation=14,  variance=36
make_cumgenfun  <-  function(shape, scale) {
      # we return list(shape, scale, K, K', K'')
      n  <-  length(shape)
      m <-   length(scale)
      stopifnot( n == m, shape > 0, scale > 0 )
      return( list( shape=shape,  scale=scale, 
                    Vectorize(function(s) {-sum(shape * log(1-scale * s) ) }),
                    Vectorize(function(s) {sum((shape*scale)/(1-s*scale))}) ,
                    Vectorize(function(s) { sum(shape*scale*scale/(1-s*scale)) }))    )
}

solve_speq  <-  function(x, cumgenfun) {
          # Returns saddle point!
          shape <- cumgenfun[[1]]
          scale <- cumgenfun[[2]]
          Kd  <-   cumgenfun[[4]]
          uniroot(function(s) Kd(s)-x,lower=-100,
                  upper = 0.3333, 
                  extendInt = "upX")$root
}

make_fhat <-  function(shape,  scale) {
    cgf1  <-  make_cumgenfun(shape, scale)
    K  <-  cgf1[[3]]
    Kd <-  cgf1[[4]]
    Kdd <- cgf1[[5]]
    # Function finding fhat for one specific x:
    fhat0  <- function(x) {
        # Solve saddlepoint equation:
        s  <-  solve_speq(x, cgf1)
        # Calculating saddlepoint density value:
        (1/sqrt(2*pi*Kdd(s)))*exp(K(s)-s*x)
    }
    # Returning a vectorized version:
    return(Vectorize(fhat0))
} #end make_fhat

 fhat  <-  make_fhat(shape, scale)
plot(fhat, from=0.01,  to=40, col="red", main="unnormalized saddlepoint approximation\nto sum of three gamma variables")

в результаті виходить наступний сюжет: введіть тут опис зображення

Я залишу нормоване наближення сідлових точок як вправу.


1
Це цікаво, але я не можу змусити ваш Rкод працювати, щоб порівняти наближення до точної відповіді. Будь-яка спроба викликати fhatпороджує помилки, очевидно, у використанні uniroot.
whuber

3
Яка ваша R-версія? Коди використовують новий аргумент для uniroot, exteInt, який був представлений у версії R 3.1. Якщо ваш R старший, ви можете спробувати його видалити (та продовжити інтервал, наданий uniroot). Але це зробить код менш надійним!
kjetil b halvorsen

10

Рівняння Вельча-Саттерватвайта можна було б використовувати для отримання приблизної відповіді у вигляді розподілу гамми. Це чудова властивість дозволяти нам розглядати розподіли гами як (приблизно) закриті додатково. Це наближення у поширеному t-тесті Вельча.

(Гамма-розподіл можна розглядати як масштабований розподіл chi-квадрата та допускає параметр форми не цілого числа.)

Я адаптував наближення до параметризації гамма-дистрибуції:k,θ

ksum=(iθiki)2iθi2ki

θsum=θikiksum

Нехай ,к=(3,4,5)θ=(1,2,1)

Таким чином, ми отримуємо приблизно Гамму (10,666 ..., 1,5)

Ми бачимо, що параметр форми був більш-менш загальним, але трохи меншим, оскільки параметри масштабу входу відрізняються. така, що сума має правильне середнє значення.θ i θкθiθ


6

Точне рішення згортку (тобто, сума) гамма - розподілів дається як рівняння. (1) у пов'язаному форматі PDF від DiSalvo . Оскільки це небагато часу, копіювання сюди знадобиться певний час. Для лише двох гамма-розподілів їх точна сума у ​​закритому вигляді визначається рівнянням. (2) DiSalvo і без ваг по рівнянню. (5) Wesolowski та ін. , яка також з’являється на сайті резюме як відповідь на це питання. Це є,нGamma(a,b)Γ(a,1/b)bβ

ГDС(а,б,α,β;τ)={баβαΓ(а+α)е-бττа+α-11Ж1[α,а+α,(б-β)τ],τ>00,τ0,
де позначення у вищезазначених питаннях; , тут. Тобто, і - константи швидкості, а не шкали часу.Гамма(а,б)Γ(а,1/б)бβ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.