如何在Python statsmodels线性混合效果模型中拥有多个组?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在Python statsmodels线性混合效果模型中拥有多个组?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3969字,纯文字阅读大概需要6分钟。
内容图文
![如何在Python statsmodels线性混合效果模型中拥有多个组?](/upload/InfoBanner/zyjiaocheng/757/668e772095f84d44980b5c3417efaf33.jpg)
我正在尝试使用Python statsmodels线性混合效果模型来拟合具有两个随机截距的模型,例如两组.我无法弄清楚如何初始化模型,以便我可以做到这一点.
这是一个例子.我的数据如下所示(取自here):
subject gender scenario attitude frequency
F1 F 1 pol 213.3
F1 F 1 inf 204.5
F1 F 2 pol 285.1
F1 F 2 inf 259.7
F1 F 3 pol 203.9
F1 F 3 inf 286.9
F1 F 4 pol 250.8
F1 F 4 inf 276.8
我想制作一个具有两个随机效果的线性混合效果模型 – 一个用于主题组,一个用于场景组.我想这样做:
import statsmodels.api as sm
model = sm.MixedLM.from_formula("frequency ~ attitude + gender", data, groups=data[['subject', 'scenario']])
result = model.fit()
print result.summary()
我一直收到这个错误:
LinAlgError: Singular matrix
它在R中工作得很好.当我在R中使用lme4时使用基于公式的渲染它很合适:
politeness.model = lmer(frequency ~ attitude + gender +
(1|subject) + (1|scenario), data=politeness)
我不明白为什么会这样.它在我使用任何一个随机效果/组时起作用,例如
model = sm.MixedLM.from_formula("frequency ~ attitude + gender", data, groups=data['subject'])
然后我得到:
Mixed Linear Model Regression Results
===============================================================
Model: MixedLM Dependent Variable: frequency
No. Observations: 83 Method: REML
No. Groups: 6 Scale: 850.9456
Min. group size: 13 Likelihood: -393.3720
Max. group size: 14 Converged: Yes
Mean group size: 13.8
---------------------------------------------------------------
Coef. Std.Err. z P>|z| [0.025 0.975]
---------------------------------------------------------------
Intercept 256.785 15.226 16.864 0.000 226.942 286.629
attitude[T.pol] -19.415 6.407 -3.030 0.002 -31.972 -6.858
gender[T.M] -108.325 21.064 -5.143 0.000 -149.610 -67.041
Intercept RE 603.948 23.995
===============================================================
或者,如果我这样做:
model = sm.MixedLM.from_formula("frequency ~ attitude + gender", data, groups=data['scenario'])
这是我得到的结果:
Mixed Linear Model Regression Results
================================================================
Model: MixedLM Dependent Variable: frequency
No. Observations: 83 Method: REML
No. Groups: 7 Scale: 1110.3788
Min. group size: 11 Likelihood: -402.5003
Max. group size: 12 Converged: Yes
Mean group size: 11.9
----------------------------------------------------------------
Coef. Std.Err. z P>|z| [0.025 0.975]
----------------------------------------------------------------
Intercept 256.892 8.120 31.637 0.000 240.977 272.807
attitude[T.pol] -19.807 7.319 -2.706 0.007 -34.153 -5.462
gender[T.M] -108.603 7.319 -14.838 0.000 -122.948 -94.257
Intercept RE 182.718 5.502
================================================================
我不知道是怎么回事.我觉得我在问题的统计数据中遗漏了一些基本的东西.
解决方法:
您正在尝试拟合具有交叉随机效应的模型,即,您希望允许跨场景的主体之间的一致变化以及跨主题的场景之间的一致变化.您可以在statsmodel中使用多个随机效应项,但它们必须嵌套.拟合交叉(而不是嵌套)随机效应需要更复杂的算法,实际上statsmodels documentation说(截至2016年8月25日,重点增加):
Some limitations of the current implementation are that it does not support structure more complex on the residual errors (they are always homoscedastic), and it does not support crossed random effects. We hope to implement these features for the next release.
据我所知,你的选择是(1)回归到嵌套模型(即适合模型,好像任一场景嵌套在主体内,反之亦然 – 或者尝试两者,看看差异是否重要); (2)在R或rpy2之内回落到lme4.
与往常一样,您有权全额退还您使用statsmodels所支付的款项……
内容总结
以上是互联网集市为您收集整理的如何在Python statsmodels线性混合效果模型中拥有多个组?全部内容,希望文章能够帮你解决如何在Python statsmodels线性混合效果模型中拥有多个组?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。