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.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow