2016-03-02 33 views
1

我是新來的貝葉斯統計數據,我試圖在Python中估計泊松(可能性)和伽瑪分佈(之前)的後驗。我試圖估計的參數是泊松分佈中的lambda變量。我認爲後驗會採用伽馬分佈的形式(共軛之前?),但我不想利用這一點。我唯一給出的是數據(名爲「my_data」)。這裏是我的代碼:在Python中估計後驗?

import numpy as np 
import matplotlib 
import matplotlib.pyplot as plt 
%matplotlib inline 
import scipy.stats 

x=np.linspace(1,len(my_data),len(my_data)) 
lambda_estimate=np.mean(my_data) 

prior= scipy.stats.gamma.pdf(x,alpha,beta) #the parameters dont matter for now 

likelihood_temp = lambda yi, a: scipy.stats.poisson.pmf(yi, a) 
likelihood = lambda y, a: np.log(np.prod([likelihood_temp(data, a) for data in my_data])) 

posterior=likelihood(my_data,lambda_estimate) * prior 

當我試圖繪製後面我得到一個空的情節。我繪製了先前的圖,看起來很好,所以我認爲這個問題是可能的。我拿了日誌,因爲數據相當大,我不想讓事情變得不穩定。任何人都可以指出我的代碼中的問題?任何幫助,將不勝感激。

回答

3

在貝葉斯統計中,一個目標是計算給定數據的參數(lambda)的後驗分佈和lambda可能值範圍內的先驗分佈。在你的代碼中,你計算數組x的先驗值,但是你正在爲lambda計算一個單一的值來計算可能性。後部和可能性應該是在X爲好,這樣的:

posterior = [likelihood(my_data, lambda_i) for lambda_i in x] * prior 

(假設你不採取的日誌事先和可能性)

你可能想看看PyMC3庫。

+0

哦,我認爲你是對的,對此感謝。不幸的是我不能使用PyMC3庫。我的可能性看起來合適嗎?我認爲這是另一個問題。 –