如何用贝叶斯模型进行贝叶斯模型的面板数据分析

时间:2015-01-10 01:00:29

标签: bayesian python panel-data mcmc pymc

大家。我有一个关于如何使用pymc在贝叶斯模型中进行面板数据分析的问题。 数据如下:

..........................................................
User    Time     x1          x2         x3           Y
1        1        1          1           3           2      
1        2        2          1           4           1
1        3        2          2           2           1
1        4        1          3           1           3
1        5        1          1           2           3
2        1        1          3           1           3  
2        2        1          1           2           2
2        3        2          3           1           0
2        4        1          2           2           3
2        5        1          1           1           2    
3        1        4          3           1           3  
3        2        3          1           3           2
3        3        2          3           2           2
3        4        2          1           2           3
3        5        1          1           1           2
4        1        1          1           3           2      
4        2        2          2           4           3
4        3        2          2           2           1
4        1        1          3           1           3
4        1        4          5           2           3  
.............   
..........................................................

现在,我在T次样本(N表示)上有N个用户,以及独立变量(x1,x2,x3)和因变量(Y)。

现在,我想分析X在集体层面对Y的影响。以最简单的线性回归为例,按照贝叶斯计量经济学的介绍"(PP.145),一般模型通常写成:

$$ y_ {it} = x_ {it} {\ beta} + w_ {it} {b_i} + {u_ {it}},i = 1,...,n; \; \; t = 1,... ,T $$

其中,$ i $表示用户; $ t $表示时间; $ {\ beta} $在$ i $之间没有差异,称为固定效应; $ {b_i} $在$ i $之间不同,称为随机效应。

在贝叶斯观点中,$ {\ beta} $和$ {b_i} $都被视为随机变量。所以,让$ {\ beta} $〜$ N({\ beta} _0,{\ beta} _1)$和$ {b_i} $〜$ N({\ lambda_0},{\ lambda_1})$

然而,这是理论上的一般思想,但我不知道如何在pymc中建模和拟合它。

感谢任何人给我一些灵感或示例代码。

1 个答案:

答案 0 :(得分:0)

以下博客文章包含使用PyMC3拟合线性回归的一个很好的示例。它还包含一个使用glm模块的快捷方式,这对熟悉R语法的人来说特别有用。

http://twiecki.github.io/blog/2013/09/12/bayesian-glms-1/

对于您的多变量模型,您需要为每个变量设置x_coeff。最简单的方法是在调用Normal()时传递'size = 4'。这将生成4个随机变量,一个用于数据中的每个变量,并将其作为数组返回。