Python PyMC3中的加权回归

Python PyMC3中的加权回归,python,regression,bayesian,pymc3,Python,Regression,Bayesian,Pymc3,我试图找到适合二项调查数据的函数的参数。每个数据点实际上是一个大小为n的样本。如果我使用带有贝叶斯预测的动态模型(如West&Harrison的贝叶斯预测和动态模型第14.4章),我可以使用β-二项式共轭先验方案来解释不同的样本量。然而,我也希望在PyMC3中以一种合并data.n列的方式来实现这一点。我已按如下方式建立了模型: import pymc3 as pm import pandas as pd import theano.tensor as T data = pd.DataFram

我试图找到适合二项调查数据的函数的参数。每个数据点实际上是一个大小为n的样本。如果我使用带有贝叶斯预测的动态模型(如West&Harrison的贝叶斯预测和动态模型第14.4章),我可以使用β-二项式共轭先验方案来解释不同的样本量。然而,我也希望在PyMC3中以一种合并
data.n
列的方式来实现这一点。我已按如下方式建立了模型:

import pymc3 as pm
import pandas as pd
import theano.tensor as T

data = pd.DataFrame({'P':[0.98, 0.98, 0.94, 0.91, 0.82],
't' : [1, 2, 3, 4, 5], 'n':[50, 10, 40, 30, 50]})

with pm.Model() as model:
    gamma = pm.Uniform('gamma', 0.9, 1.1, testval=1.)
    zeta = pm.Uniform('zeta', 0, 0.05, testval=0.001)
    beta = pm.Uniform('beta', 0, 5, testval = 0.5)
    likelihood = pm.Normal('P_obs', mu=1/(gamma + zeta*T.exp(beta*data.t)), sd=0.005, observed=data.P)
    start = pm.find_MAP()    
    trace = pm.sample(5000, step=pm.NUTS(scaling=start), start=start)

(我也不确定似然函数中的方差项。我必须使它非常小才能起作用。我尝试了半柯西法,但效果不太好。但这不是我的主要问题。)

只是为了澄清。您的数据是不同组的0和1的集合吗?或者类似于您的数据帧的东西?您解决了这个问题吗?我为延迟回复道歉!我无法用与上面提到的使用贝叶斯预测的DGLM不同的方法来解决这个问题。数据以上面显示的数据框的形式出现(人口比例和样本大小),但是如果需要的话,可以很容易地再次转换为1和0。哦,关于不同的群体。这是同一个群体,在不同的年份。只是为了澄清。您的数据是不同组的0和1的集合吗?或者类似于您的数据帧的东西?您解决了这个问题吗?我为延迟回复道歉!我无法用与上面提到的使用贝叶斯预测的DGLM不同的方法来解决这个问题。数据以上面显示的数据框的形式出现(人口比例和样本大小),但是如果需要的话,可以很容易地再次转换为1和0。哦,关于不同的群体。这是同一组,在不同的年份。