scipy
rv_continuous för distribution med parametrar
Sök…
Negativ binomial på positiva realer
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))
Det är viktigt att definiera antingen _pdf eller _cdf eftersom scipy tillhandahåller parametrarna för den andra funktionen (som du inte definierar) och ordningen på dessa parametrar i alla funktionssamtal som du gör från din definition. I detta fall finns det bara en distributionsparameter, lambda. Variabeln som representerar det slumpmässiga variabelvärdet visas först i definitionen av _pdf eller _cdf.
När du definierar bara en av dessa funktioner beräknar scipy den andra numeriskt. Definiera båda för möjlig större effektivitet. På samma sätt definiera _statistik i termer av kända parametrar för bästa effektivitet; annars använder scipy numeriska metoder.
Lägg märke till att distributionsstödet definieras när klassen instanseras (variabel a är inställd på noll och b är inställd till oändlighet som standard), snarare än när den underklassas. Lägg också märke till att distributionens parametrar endast ställs in när ett av klassinstansen anropas, som i de fem sista kodraderna.