Python StatsModels混合LM(混合线性模型)随机效应



我对StatsModels混合LM的输出有些困惑,并希望有人可以解释。

我有一个很大的单个家庭住宅数据集,包括每个物业的前两个销售价格/销售日期。我已经对整个数据集进行了地理编码,并获取了每个属性的高程。我试图了解高程与房地产价格欣赏之间的关系在不同城市之间变化的方式。

我已经使用了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返回系数列表。我可以将此列表解释为每个城市的坡度(即,与销售价格升值相关的单个回归系数)?还是这些结果是每个城市的拦截?

我目前正在尝试使我的头围绕混合物中的随机效果。查看文档,似乎仅使用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.

一些有用的资源可以进一步研究:

  • commula版本的文档comperlm
  • 混合LM的结果的文档
  • 本jupyter笔记本,其中包含用于使用混合LM(Python)的示例
  • Stanford关于混合模型(R)的教程
  • 关于固定和随机效果(R)的教程

除了北莱恩斯答案外,请注意,在statsmodels-0.11.1中调用

mdf.random_effects

给出了组与通用模型系数之间的差异

最新更新