Я пытаюсь обернуть голову вокруг GLMM в statsmodels
.
В моем наборе данных есть несколько категориальных переменных. Два из них являются «иерархическими», поэтому моя матрица дизайна выглядит следующим образом:
import patsy
df = patsy.demo_data('a', 'b', 'c', 'x')
_, exog = patsy.dmatrices("x ~ 0 + a:b + c", data=df)
exog
>>> DesignMatrix with shape (8, 5)
>>> c[c1] c[c2] b[T.b2] a[T.a2]:b[b1] a[T.a2]:b[b2]
>>> 1 0 0 0 0
>>> 0 1 0 0 0
>>> 1 0 1 0 0
>>> 0 1 1 0 0
>>> 1 0 0 1 0
>>> 0 1 0 1 0
>>> 1 0 1 0 1
>>> 0 1 1 0 1
>>> Terms:
>>> 'c' (columns 0:2)
>>> 'a:b' (columns 2:5)
Я бы хотел, чтобы четыре a:b
случая были закодированы как «базовые перехваты» (если это правильнословом), а не в случае c
. Т.е. я хотел бы, чтобы это было закодировано следующим образом, но с c
:
DesignMatrix with shape (8, 4)
a[a1]:b[b1] a[a2]:b[b1] a[a1]:b[b2] a[a2]:b[b2]
1 0 0 0
1 0 0 0
0 0 1 0
0 0 1 0
0 1 0 0
0 1 0 0
0 0 0 1
0 0 0 1
Terms:
'a:b' (columns 0:4)
Вопрос 1: Имеет ли это смысл? Моя идея состоит в том, что это облегчает рассуждение, поскольку a:b
соответствует четырем различным условиям эксперимента. (c
соответствует полу).
Вопрос 2: Как мне убедить statsmodels
/ patsy
в «однобортный» a:b
, а не c
?