scipy
rv_continua para distribución con parámetros
Buscar..
Binomio negativo en reales positivos
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))
Es esencial definir _pdf o _cdf porque scipy infiere los parámetros de la otra función (que no define), y el orden de estos parámetros en cualquier función que realice, desde su definición. En este caso solo hay un parámetro de distribución, lambda. La variable que representa el valor de la variable aleatoria aparece primero en la definición de _pdf o _cdf.
Cuando defina solo una de estas funciones, scipy calculará la otra numéricamente. Para posible mayor eficiencia, defina ambos. De manera similar, defina _stats en términos de parámetros conocidos para la mejor eficiencia; De lo contrario scipy utiliza métodos numéricos.
Observe que la compatibilidad de la distribución se define cuando se crea una instancia de la clase (la variable a se establece en cero yb se establece en infinito de forma predeterminada), en lugar de cuando se subclasifica. Tenga en cuenta también que los parámetros de la distribución se establecen solo cuando se llama a una de las instancias de la clase, como en las últimas cinco líneas de código.