scipy
rv_continuous per la distribuzione con parametri
Ricerca…
Binomio negativo su reali positivi
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))
È essenziale definire _pdf o _cdf perché scipy fornisce i parametri dell'altra funzione (che non si definisce) e l'ordine di questi parametri in tutte le chiamate chiamate che si fanno, dalla definizione. In questo caso c'è solo un parametro di distribuzione, lambda. La variabile che rappresenta il valore variabile casuale compare per prima nella definizione di _pdf o _cdf.
Quando si definisce solo una di queste funzioni, scipy calcolerà l'altro numericamente. Per una possibile maggiore efficienza, definire entrambi. Allo stesso modo, definire _stats in termini di parametri noti per la migliore efficienza; altrimenti scipy usa metodi numerici.
Si noti che il supporto della distribuzione viene definito quando la classe è istanziata (la variabile a è impostata a zero e b è impostata su infinito per impostazione predefinita), piuttosto che quando è sottoclasse. Si noti inoltre che i parametri della distribuzione sono impostati solo quando viene chiamata una delle istanze di classe, come nelle ultime cinque righe di codice.