Defina pdfs contínuos e não analíticos em python
Estou planejando fazer alguma álgebra básica em variáveis aleatórias contínuas e não analíticas. Quero definir suas funções de densidade de probabilidade como matrizes x e f (x).
Ainda assim, fiquei surpreso ao descobrir que não parece haver nenhum pacote que faça operações básicas, como calcular a soma ou distribuições de produtos de dois PDFs (corrija-me se estiver errado). Para implementar essas operações sozinho, planejei criar uma subclasse de scipy.stats rv_continuous, seguindo este thread:
import scipy as sp
import numpy as np
class my_pdf(sp.stats.rv_continuous):
def __init__(self,x,p):
self.x = x
self.p = p
def _pdf(self,x):
return sp.interpolate.interp1d(self.x,self.p)(x)
x = np.linspace(0,1,101)
f = 3*x**2
my_cv = my_pdf(x,f)
my_cv.pdf(0)
No entanto, sobrescrever o método init provavelmente não é o caminho a percorrer. Existe uma maneira de adicionar parâmetros adicionais ao rv_continuous ou outra maneira de abordar o problema, além de construir tudo do zero?
Respostas
Então, se alguém tropeçar nisso novamente, foi respondido aqui :
import scipy as sp
import scipy.stats
import numpy as np
class my_pdf(sp.stats.rv_continuous):
def __init__(self,x,p):
super().__init__(a=x.min(), b=x.max())
self.x = x
self.p = p
def _pdf(self,x):
return sp.interpolate.interp1d(self.x,self.p)(x)
x = np.linspace(0,1,101)
f = 3*x**2
my_cv = my_pdf(x,f)
my_cv.pdf(0)
my_cv.cdf(0.5)
Ainda assim, acho que deveria haver um pacote para operações neste tipo de variáveis aleatórias.