ランダム インターセプト モデルを推定するコードを R から複製しようとしています。Rコードは次のとおりです。
fit=lmer(resid~-1+(1|groupid),data=df)
lme4 パッケージの lmer コマンドを使用して、異なるグループ (groupid で定義) の観測値の変数 resid のランダムな切片を推定しています。「固定効果」部分がないため、(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 は前の例の resid ですが、groupid は同じです。
1) mdf.random_effects が探しているランダムな切片であるかどうかわかりません
2) 変数 B を削除できません。これは固定効果部分であると理解しています。私が試してみると:
md = smf.mixedlm('A~-1',data=df,groups=df['groupid'])
「配列を空にすることはできません」というエラーが表示されます。
Rコードとまったく同じモデルを推定しようとしています。アドバイスをいただければ幸いです。