Как выполнить анализ панельных данных в байесовской модели с помощью 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  
.............   
..........................................................

Теперь у меня есть N пользователей на выборках T раз (N ≫ T), а также независимые переменные (x1, x2, x3) и зависимая переменная (Y).

Теперь я хочу проанализировать влияние X на Y на коллективном уровне. Возьмите в качестве примера самую простую линейную регрессию, следуйте книге «Введение в байесовскую эконометрику» (стр. 145), общая модель часто записывается как:

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

В котором $i$ указывает пользователя; $t$ представляет время; ${\beta}$ не различаются между $i$, что называется фиксированными эффектами; ${b_i}$ отличается для $i$, что называется случайными эффектами.

По байесовскому мнению, и ${\beta}$, и ${b_i}$ считаются случайными величинами. Итак, пусть ${\beta} $~$ N({\beta}_0,{\beta}_1)$, а ${b_i} $~$ N({\lambda_0},{\lambda_1})$

Тем не менее, это общая мысль в теории, но я понятия не имею, как смоделировать и подогнать ее в pymc.

Спасибо, кто даст мне вдохновение или пример кода.


person Runner    schedule 10.01.2015    source источник


Ответы (1)


Следующая запись в блоге содержит хороший пример подбора линейной регрессии с использованием PyMC3. Он также содержит ярлык с использованием модуля glm, что особенно полезно для тех, кто знаком с синтаксисом R.

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

Для вашей модели, которая является многомерной, вам понадобится x_coeff для каждой переменной. Самый простой способ сделать это — передать 'size = 4' при вызове Normal(). Это сгенерирует 4 стохастические переменные, по одной для каждой переменной в ваших данных, и вернет их в виде массива.

person Chris Noyes    schedule 25.01.2015
comment
вы должны скопировать соответствующие части ответа здесь на случай, если ссылка когда-либо умрет - person Scriptable; 25.01.2015