Somme générique de variables aléatoires Gamma


35

J'ai lu que la somme des variables aléatoires Gamma ayant le même paramètre d'échelle est une autre variable aléatoire Gamma. J'ai également vu le document de Moschopoulos décrivant une méthode de sommation d'un ensemble général de variables aléatoires Gamma. J'ai essayé d'implémenter la méthode de Moschopoulos mais je n'ai pas encore réussi.

À quoi ressemble la somme d'un ensemble général de variables aléatoires Gamma? Pour concrétiser cette question, à quoi ça ressemble:

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

Si les paramètres ci-dessus ne sont pas particulièrement révélateurs, veuillez en suggérer d'autres.


4
Une solution explicite pour la somme de deux distributions Gamma quelconques a été publiée à l' adresse stats.stackexchange.com/a/252192 .
whuber

Un exemple particulier, où toutes les distributions Gamma ont le paramètre de forme 1 (c'est-à-dire qu'elles sont exponentielles), est appelé distribution hypoexponentielle (famille) . Pour le cas de deux distributions exponentielles uniquement, une formule explicite est également donnée à l' adresse stats.stackexchange.com/questions/412849 .
whuber

Réponses:


37

Commencez par combiner les sommes ayant le même facteur d'échelle : a plus une variable sous une forme .Γ ( m , β ) Γ ( n + m , β )Γ(n,β)Γ(m,β)Γ(n+m,β)

Ensuite, observons que la fonction caractéristique (cf) de est , d’où le cf d’une somme de ces distributions est le produit( 1 - i β t ) - nΓ(n,β)(1-jeβt)-n

Πj1(1-jeβjt)nj.

Lorsque les sont tous , ce produit se transforme en fraction partielle en une combinaison linéaire de où les sont des entiers compris entre et . Dans l'exemple avec (de la somme de et de ) et de on trouve ( 1 - i β j t ) - v v 1 n j β 1 = 1 , n 1 = 8 Γ ( 3 , 1 ) Γ ( 5 , 1 ) β 2 = 2 , n 2 = 4nj (1-jeβjt)-νν1njβ1=1,n1=8Γ(3,1)Γ(5,1)β2=2,n2=4

1(1it)81(1-2jet)4=1(X+je)8-8je(X+je)7-40(X+je)6+160je(X+je)5+560(X+je)4-1792je(X+je)3-5376(X+je)2+15360jeX+je+256(2X+je)4+2048je(2X+je)3-9216(2X+je)2-30720je2X+je.

L'inverse de prendre le cf est l'inverse de la transformée de Fourier, qui est linéaire : cela signifie que nous pouvons l'appliquer terme à terme. Chaque terme est reconnaissable comme un multiple du cf d'une distribution gamma et est donc facilement inversé pour produire le PDF . Dans l'exemple on obtient

e-tt75040+190e-tt6+13e-tt5+203e-tt4+83e-t2t3+2803e-tt3-128e-t2t2+896e-tt2+2304e-t2t+5376e-tt-15360e-t2+15360e-t

pour le PDF de la somme.

Il s'agit d'un mélange fini de distributions gamma ayant des facteurs d'échelle égaux à ceux de la somme et des facteurs de forme inférieurs ou égaux à ceux de la somme. Sauf dans des cas particuliers (où une certaine annulation peut survenir), le nombre de termes est donné par le paramètre de forme totale (en supposant que tous les sont différents).n jn1+n2+nj


À titre de test, voici un histogramme de résultats obtenus en ajoutant des tirages indépendants à partir des distributions et . Sur elle se superpose le graphe de fois la fonction précédente. La coupe est très bonne. Γ ( 8 , 1 ) Γ ( 4 , 2 ) 10 4dix4Γ(8,1)Γ(4,2)104

Figure


Moschopoulos va encore plus loin dans cette idée en élargissant le cf de la somme en une série infinie de fonctions caractéristiques gamma chaque fois qu'un ou plusieurs des sont pas entiers, puis termine la série infinie en un point où elle est raisonnablement approximée.nje


2
Commentaire Minor: En règle générale, un mélange fini signifie un pdf de la forme où et , qui est, les sont les probabilités et le pdf peuvent être interprétés comme la somme pondérée (loi de la probabilité totale) des fichiers PDF conditionnels, compte tenu de diverses conditions qui se produisent avec des probabilités . Cependant, dans la somme ci-dessus, certains des coefficients sont négatifs et l'interprétation standard du mélange ne s'applique donc pas. un i > 0 Σ i a i = 1 a i a i
f(x)=i=1naifi(x)
ai>0iai=1aiaje
Dilip Sarwate

@Dilip C'est un bon point. Ce qui rend ce cas intéressant est que, bien que certains des coefficients puissent être négatifs, cette combinaison reste néanmoins une distribution valide (de par sa construction même).
whuber

Cette approche peut-elle être étendue pour tenir compte de l'ajout de variables dépendantes? En particulier, je veux additionner 6 distributions, chacune ayant une corrélation avec les autres.
Masher

11

Je vais montrer une autre solution possible, qui est assez largement applicable, et avec le logiciel actuel R, assez facile à mettre en œuvre. C’est l’approximation de la densité de la pointe de la selle, qui devrait être plus largement connue!

Pour la terminologie relative à la distribution gamma, je suivrai https://en.wikipedia.org/wiki/Gamma_distribution avec la paramétrisation shape / scale, est le paramètre de forme et est scale. Pour l’approximation du point à cheval, je vais suivre Ronald W Butler: "Approximations à l’aide des applications" (Cambridge UP). L’approximation du point de selle est expliquée ici: Comment fonctionne l’approximation du point de selle? Ici, je vais montrer comment il est utilisé dans cette application.θkθ

Soit une variable aléatoire avec une fonction génératrice de moment existante qui doit exister pour dans un intervalle ouvert contenant zéro. Puis définissez la fonction génératrice du cumulant par On sait que . L'équation du point de selle est qui définit implicitement en fonction de (qui doit être compris dans la plage de ). Nous écrivons cette fonction définie implicitement comme . Notez que l'équation du point d'équilibre a toujours exactement une solution, car la fonction de cumulant est convexe. M ( s ) = E e de X s K ( s ) = log M ( s ) E X = K ' ( 0 ) , Var ( X ) = K " ( 0 ) K ' ( s ) = x s x X de ( la x )X

M(s)=EesX
s
K(s)=bûcheM(s)
EX=K(0),Var(X)=K"(0)
K(s^)=X
sXXs^(X)

Ensuite, l’approximation du point-selle de la densité de est donnée par L'intégration de la fonction de densité approximative à 1 n'est pas garantie, pas plus que l'approximation du point de selle non normalisée. Nous pourrions l’intégrer numériquement et le renormaliser pour obtenir une meilleure approximation. Mais cette approximation est garantie non négative.X f ( x ) = 1FX

F^(X)=12πK"(s^)exp(K(s^)-s^X)

Soit maintenant des variables aléatoires gamma indépendantes, où a la distribution avec les paramètres . La fonction génératrice du cumulant est alors défini pour . La première dérivée est et la dérivée seconde est Dans ce qui suit, je donnerai du code le calculant et utiliserai les valeurs de paramètre , ,X1,X2,,XnXje(kje,θje)

K(s)=-Σje=1nkjedans(1-θjes)
s<1/max(θ1,θ2,,θn)
K(s)=Σje=1nkjeθje1-θjes
K"(s)=Σje=1nkjeθje2(1-θjes)2.
Rn=3k=(1,2,3)θ=(1,2,3). Notez que le Rcode suivant utilise un nouvel argument dans la fonction uniroot introduite dans R 3.1 et ne s'exécutera donc pas dans les anciens 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")

résultant en l'intrigue suivante: entrez la description de l'image ici

Je laisserai l'approximation du point de selle normalisée comme un exercice.


1
C'est intéressant, mais je ne peux pas faire fonctionner votre Rcode pour comparer l'approximation à la réponse exacte. Toute tentative d' fhatappel génère des erreurs, apparemment dans l'utilisation de uniroot.
whuber

3
Quelle est votre version R? Les codes utilisent un nouvel argument pour uniroot, extendInt, qui a été introduit dans la version 3.1 de R Si votre R est plus ancien, vous pouvez essayer de le supprimer (et d'étendre l'intervalle donné à uniroot). Mais cela rendra le code moins robuste!
kjetil b halvorsen

10

L' équation de Welch – Satterthwaite pourrait être utilisée pour donner une réponse approximative sous la forme d'une distribution gamma. Ceci a la belle propriété de nous permettre de traiter les distributions gamma comme étant (approximativement) fermées sous addition. C'est l'approximation du test t de Welch couramment utilisé.

(La distribution gamma peut être vue comme une distribution chi-carré mise à l'échelle, et permettant un paramètre de forme non entier.)

J'ai adapté l'approximation à la paramétrisation de la distribution gamma:k,θ

ksvousm=(Σjeθjekje)2Σjeθje2kje

θsvousm=Σθjekjeksvousm

Soit ,k=(3,4,5)θ=(1,2,1)

Nous obtenons donc environ Gamma (10.666 ..., 1.5)

Nous voyons que le paramètre de forme a été plus ou moins totalisé, mais un peu moins parce que les paramètres d’échelle en entrée diffèrent. est tel que la somme a la valeur moyenne correcte.kθjeθ


6

Une solution exacte à la convolution (c'est-à-dire la somme) de distributions gamma est donnée par Eq. (1) dans le pdf lié par DiSalvo . Comme c'est un peu long, il faudra du temps pour le copier ici. Pour seulement deux distributions gamma, leur somme exacte sous forme fermée est spécifiée par Eq. (2) de DiSalvo et sans poids par Eq. (5) de Wesolowski et al. , qui figure également sur le site du CV en réponse à cette question. C'est,n

gC(une,b,α,β;τ)={buneβαΓ(une+α)e-bττune+α-11F1[α,une+α,(b-β)τ],τ>00,τ0,
où la notation dans les questions ci-dessus; , ici. C'est-à-dire que et sont des constantes de vitesse ici et non des scalaires temporels.gunemmune(une,b)Γ(une,1/b)bβ
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.