2

ランダム インターセプト モデルを推定するコードを 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コードとまったく同じモデルを推定しようとしています。アドバイスをいただければ幸いです。

4

0 に答える 0