Je veux tracer une distribution gamma avec alpha = 29 (l'échelle) et beta = 3 (la taille). En d'autres termes, je veux tracer le pdf pour Gamma (29,3). Comment puis-je faire cela si selon la documentation , la fonction python gamma n'a que les paramètres a et x et le paramètre de taille n'existe pas?
Je pensais que loc
était bêta, mais je pense que c'est en fait compensé, donc le code ci-dessous est incorrect ...
import numpy as np
import scipy.stats as stats
from matplotlib import pyplot as plt
x = np.linspace (0, 100, 200)
y1 = stats.gamma.pdf(x, a=29, loc=3) #a is alpha, loc is beta???
plt.plot(x, y1, "y-", label=(r'$\alpha=29, \beta=3$'))
plt.ylim([0,0.08])
plt.xlim([0,150])
plt.show()
Selon la documentation, vous souhaitez utiliser le paramètre d'échelle (thêta), mais comme vous définissez la bêta, qui est l'inverse de thêta, vous passez ensuite l'échelle avec la valeur 1/bêta, qui dans votre exemple serait 1/3 ou 0,33333.
Par conséquent, essayez:
y1 = stats.gamma.pdf(x, a=29, scale=0.33333)
Comme @Hielke a répondu, pour autant que expliqué dans scipy.stats 1.4.1 documentation il semble que le paramètre scalaire soit égal à beta. En effet, la fonction initialement développée est:
gamma.pdf(x, a) = x^(a-1) * exp(-x) / gamma(a)
Si l'on remplace x par une combinaison des deux paramètres facultatifs loc et scale as:
x = (y - loc) / scale
Il faut avoir:
gamma.pdf(x, a) = (y - loc)^(a-1) * exp( -(y - loc)/scale ) / (scale^(a-1) * gamma(a))
Si vous prenez loc = 0 alors vous avez reconnu l'expression de la distribution Gamma telle qu'elle est habituellement définie. Vous multipliez par l'inverse de scale et vous pouvez conclure que scale = beta dans cette fonction et loc est un décalage .
En fait, j'ai essayé de détailler l'explication de la documentation:
Plus précisément, gamma.pdf (x, a, loc, scale) est identique à gamma.pdf (y, a)/scale avec y = (x - loc)/scale.