Python Statsmodels Mixedlm(混合线性模型)随机效应

时间:2017-11-27 00:12:26

标签: python statsmodels mixed-models random-effects

我对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会返回系数列表。我能否将此列表解释为每个城市的斜率(即,与销售价格升值相关的个别回归系数)?或者这些结果是每个城市的拦截?

2 个答案:

答案 0 :(得分:4)

我目前正试图了解MixedLM中的随机效果。查看the docs,似乎只使用groups参数,没有exog_rere_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.

要进一步了解的一些有用资源包括:

  • Docs,用于MixedML的公式版本
  • Docs了解MixedML的结果
  • This Jupyter笔记本,其中包含使用MixedML(Python)的示例
  • Stanford tutorial关于混合模型(R)
  • Tutorial关于固定和随机效果(R)

答案 1 :(得分:1)

除了North Laines的答案外,还要注意在statsmodels-0.11.1调用中

mdf.random_effects

赋予组和一般模型系数之间的差异