正實數上的負二項式

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))

定義_pdf 或_cdf 至關重要,因為 scipy 會根據你的定義推斷其他函式(你未定義)的引數,以及你所做的任何函式呼叫中這些引數的順序。在這種情況下,只有一個分佈引數 lambda。表示隨機變數值的變數首先出現在_pdf 或_cdf 的定義中。

當你定義其中一個函式時,scipy 將以數字方式計算另一個函式。為了提高效率,請同時定義兩者。同樣,根據已知引數定義_stats 以獲得最佳效率; 否則 scipy 使用數值方法。

請注意,在例項化類時定義了分佈的支援(變數 a 設定為零,預設情況下 b 設定為無窮大),而不是在子類化時。另請注意,僅在呼叫其中一個類例項時才設定分佈的引數,如最後五行程式碼中所示。