Zdefiniuj ciągłe, nieanalityczne pliki PDF w Pythonie

Oct 30 2020

Planuję zrobić podstawową algebrę na ciągłych, nieanalitycznych zmiennych losowych. Chcę zdefiniować ich funkcje gęstości prawdopodobieństwa jako tablice x i f (x).

Jednak byłem zaskoczony, gdy dowiedziałem się, że nie ma żadnego pakietu, który wykonuje podstawowe operacje, takie jak obliczanie sumy lub dystrybucje produktów w dwóch plikach PDF (proszę mnie poprawić, jeśli się mylę). Aby zaimplementować te operacje samodzielnie, zaplanowałem następnie utworzenie podklasy scipy.stats rv_continuous, zgodnie z tym wątkiem:

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)

Jednak nadpisywanie metody init prawdopodobnie nie jest właściwą drogą. Czy istnieje sposób na dodanie dodatkowych parametrów do rv_continuous lub inny sposób podejścia do problemu, inny niż budowanie wszystkiego od zera?

Odpowiedzi

Yann Nov 05 2020 at 21:16

Tak więc, jeśli ktoś znowu się o to potknie, odpowiedź otrzymała tutaj :

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)

Mimo to czuję, że powinien istnieć pakiet do operacji na tego rodzaju zmiennych losowych?