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

2024-05-08 00:15:40 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 数据列表randomsfmd地理mdfeffects
1条回答
网友
1楼 · 发布于 2024-05-08 00:15:40

我现在也在试着让我的头在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的结果
  • ThisJupyter笔记本,附带使用MixedML(Python)的示例
  • Stanford tutorial关于混合模型(R)
  • Tutorial关于固定和随机效应(R)

相关问题 更多 >