如何用Python的statsmodels mixedlm提取组间与组内方差?
提取混合线性模型的组间与组内方差
针对你用statsmodels.formula.api.mixedlm拟合的模型,组间和组内方差可以直接从拟合后的模型对象中提取,对应关系如下:
核心对应关系
- 组间方差:对应随机效应(这里是不同受试者的截距变异)的方差,存储在
mdf.cov_re中。由于你的模型仅包含随机截距(按subject_id分组),cov_re是一个1×1的矩阵,取其唯一元素即可得到组间方差。 - 组内方差:对应残差的方差,也就是同一受试者不同访视间的变异,直接取
mdf.scale即可,这个值对应SAS中Var_wt代表的组内方差。
代码示例
# 提取组间方差(随机截距的方差) between_subject_var = mdf.cov_re[0, 0] # 提取组内方差(残差方差) within_subject_var = mdf.scale
补充说明
你之前尝试的ICC计算逻辑是正确的(组间方差/(组间方差+组内方差)),但既然你只需要两个方差值,直接提取上述变量即可。如果后续模型扩展到包含随机斜率(比如加入visit的随机效应),cov_re会变成对应维度的协方差矩阵,你需要根据随机效应的位置提取对应方差项。
内容的提问来源于stack exchange,提问作者Lord exec
相关产品推荐
相关产品推荐

