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. Любой совет будет оценен.

0 ответов

Другие вопросы по тегам