scipy
rv_continuous pour la distribution avec les paramètres
Recherche…
Binôme négatif sur les réels positifs
from scipy.stats import rv_continuous
import numpy
class Neg_exp(rv_continuous):
def _cdf(self, x, lamda):
return 1-numpy.exp(-lamda*x)
neg_exp = Neg_exp(name="Negative exponential", a=0)
print (neg_exp.pdf(0,.5))
print (neg_exp.pdf(5,.5))
print (neg_exp.cdf(5,.5))
print (neg_exp.stats(0.5))
print (neg_exp.rvs(0.5))
Il est essentiel de définir _pdf ou _cdf car scipy déduit les paramètres de l’autre fonction (que vous ne définissez pas) et l’ordre de ces paramètres dans tous les appels de fonctions que vous effectuez, à partir de votre définition. Dans ce cas, il n'y a qu'un seul paramètre de distribution, lambda. La variable représentant la valeur de la variable aléatoire apparaît en premier dans la définition de _pdf ou _cdf.
Lorsque vous définissez une seule de ces fonctions, scipy calculera l'autre numériquement. Pour une plus grande efficacité, définissez les deux. De même, définissez _stats en termes de paramètres connus pour une meilleure efficacité; sinon scipy utilise des méthodes numériques.
Notez que le support de la distribution est défini lorsque la classe est instanciée (la variable a est définie sur zéro et b est définie sur l'infini par défaut), plutôt que lorsqu'elle est sous-classée. Notez également que les paramètres de la distribution sont définis uniquement lorsque l'une des instances de classe est appelée, comme dans les cinq dernières lignes de code.