我对Statsmodels Mixedlm的输出感到有点困惑,我希望有人可以解释一下。
我有一个大型的单户住宅数据集,包括每个房产的前两个销售价格/销售日期。我对整个数据集进行了地理编码,并获取了每个属性的高程。我试图了解不同城市之间提升与房地产价格升值之间关系的变化方式。
我使用statsmodels混合线性模型来降低海拔的价格升值,保持一些其他因素不变,将城市作为我的群体类别。
md = smf.mixedlm('price_relative_ind~Elevation+YearBuilt+Sale_Amount_1+LivingSqFt',data=Miami_SF,groups=Miami_SF['City'])
mdf = md.fit()
mdf.random_effects
输入mdf.random_effects会返回系数列表。我能否将此列表解释为每个城市的斜率(即,与销售价格升值相关的个别回归系数)?或者这些结果是每个城市的拦截?
答案 0 :(得分:4)
我目前正试图了解MixedLM中的随机效果。查看the docs,似乎只使用groups
参数,没有exog_re
或re_formula
只会向每个组添加随机拦截。文档中的一个例子:
# A basic mixed model with fixed effects for the columns of exog and a random intercept for each distinct value of group:
model = sm.MixedLM(endog, exog, groups)
result = model.fit()
因此,在这种情况下,您会期望random_effects
方法返回城市的截距,而不是系数/斜率。
要为您的其他功能添加一个随机斜率,您可以从statsmodels的Jupyter教程中执行类似于此示例的操作,可以使用斜率和截距:
model = sm.MixedLM.from_formula(
"Y ~ X", data, re_formula="X", groups=data["C"])
或只有斜率:
model = sm.MixedLM.from_formula(
"Y ~ X", data, re_formula="0 + X", groups=data["C"])
查看random_effects
的文档,它表示它返回每个组的随机效果的均值。然而,由于随机效应仅仅是由于截距,这应该等于截距本身。
MixedLMResults.random_effects()[source]
The conditional means of random effects given the data.
Returns:
random_effects : dict
A dictionary mapping the distinct group values to the means of the random effects for the group.
要进一步了解的一些有用资源包括:
答案 1 :(得分:1)
除了North Laines的答案外,还要注意在statsmodels-0.11.1调用中
mdf.random_effects
赋予组和一般模型系数之间的差异