大家。我有一个关于如何使用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中建模和拟合它。
感谢任何人给我一些灵感或示例代码。
答案 0 :(得分:0)
以下博客文章包含使用PyMC3拟合线性回归的一个很好的示例。它还包含一个使用glm模块的快捷方式,这对熟悉R语法的人来说特别有用。
http://twiecki.github.io/blog/2013/09/12/bayesian-glms-1/
对于您的多变量模型,您需要为每个变量设置x_coeff。最简单的方法是在调用Normal()时传递'size = 4'。这将生成4个随机变量,一个用于数据中的每个变量,并将其作为数组返回。