Tentukan pdf berkelanjutan dan non-analitis dengan python

Oct 30 2020

Saya berencana untuk melakukan beberapa aljabar dasar pada variabel acak non-analitik yang berkelanjutan. Saya ingin mendefinisikan fungsi kepadatan probabilitas mereka sebagai array x dan f (x).

Namun, saya terkejut saat mengetahui bahwa tampaknya tidak ada paket yang melakukan operasi dasar seperti menghitung jumlah- atau distribusi produk dari dua pdf (tolong koreksi saya jika saya salah). Untuk mengimplementasikan operasi itu sendiri, saya kemudian berencana membuat subclass scipy.stats rv_continuous, mengikuti utas ini :

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)

Namun, menimpa metode init mungkin bukanlah cara yang tepat. Apakah ada cara untuk menambahkan parameter tambahan ke rv_continuous, atau cara lain untuk mengatasi masalah, selain membangun semuanya dari awal?

Jawaban

Yann Nov 05 2020 at 21:16

Jadi, jika ada yang tersandung ini lagi, jawabannya di sini :

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)

Tetap saja, saya merasa harus ada paket untuk operasi pada variabel acak semacam ini?