Python: модель случайного перехвата (необходимо повторить код R)
Я пытаюсь повторить код из R, который оценивает модель случайного перехвата. Код R:
fit=lmer(resid~-1+(1|groupid),data=df)
Я использую команду lmer пакета lme4 для оценки случайных перехватов для переменного остатка для наблюдений в разных группах (определяется groupid). Там нет части с фиксированными эффектами, поэтому нет переменной перед (1|groupid). Более того, мне не нужна постоянная оценка, чтобы я получал перехват для каждой группы.
Не уверен, как сделать аналогичную оценку в Python. Я попробовал что-то вроде:
import pandas as pd
import numpy as np
import statsmodels.formula.api as smf
np.random.seed(12345)
df = pd.DataFrame(np.random.randn(25, 4), columns=list('ABCD'))
df['groupid'] = [1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5]
df['groupid'] = df['groupid'].astype('category')
###Random intercepts models
md = smf.mixedlm('A~B-1',data=df,groups=df['groupid'])
mdf = md.fit()
print(mdf.random_effects)
A является остатком из предыдущего примера, в то время как groupid такой же.
1) Я не уверен, являются ли mdf.random_effects случайными перехватами, которые я ищу
2) Я не могу удалить переменную B, которая, как я понимаю, является частью с фиксированными эффектами. Если я попробую:
md = smf.mixedlm('A~-1',data=df,groups=df['groupid'])
Я получаю сообщение об ошибке "Массивы не могут быть пустыми".
Просто пытаюсь оценить ту же модель, что и в коде R. Любой совет будет оценен.