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

Tom*_*hay 4 python random-effects mixed-models statsmodels

我对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
Run Code Online (Sandbox Code Playgroud)

输入mdf.random_effects将返回系数列表。我能否将此列表解释为实质上每个城市的斜率(即,将高程与销售价格升值相关的单个回归系数)?还是这些结果是每个城市的截距?

Nor*_*ine 8

我目前正在尝试同时了解MixedLM中的随机效果。看一下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()
Run Code Online (Sandbox Code Playgroud)

因此,random_effects在这种情况下,您希望该方法返回城市的截距,而不是系数/坡度。

要针对您的其他功能之一添加随机斜率,您可以通过statsmodels的Jupyter教程执行与此示例类似的操作,并使用斜率和截距:

model = sm.MixedLM.from_formula(
    "Y ~ X", data, re_formula="X", groups=data["C"])
Run Code Online (Sandbox Code Playgroud)

或仅带有坡度:

model = sm.MixedLM.from_formula(
    "Y ~ X", data, re_formula="0 + X", groups=data["C"])
Run Code Online (Sandbox Code Playgroud)

查看的文档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.
Run Code Online (Sandbox Code Playgroud)

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