12

我对 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 返回系数列表。我可以将这个列表解释为每个城市的斜率(即,将高程与销售价格升值相关的个体回归系数)吗?或者这些结果是每个城市的截距?

4

2 回答 2

18

我目前也在尝试了解 MixedLM 中的随机效应。查看文档,似乎只使用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.

一些需要进一步研究的有用资源包括:

于 2017-12-01T13:36:14.000 回答
3

除了 North Laines 的回答,请注意在 statsmodels-0.11.1 调用

mdf.random_effects

给出组和一般模型系数之间的差异

于 2020-07-07T10:26:41.087 回答