如何解决比较pymer4中的模型
在 pymer4
(或用于线性混合效应回归模型的类似 python 模块)中有没有办法比较两个不同的模型?
在 R 中,包 anova
的命令 lme4
执行如下操作:
model1 = lmer(DV ~ IV1 + (1|RV),data = data)
model2 = lmer(DV ~ IV1*IV2 + (1|RV),data = data)
anova(model1,model2)
pymer4
的 API 页面似乎没有提到这一点。 (我可以在 R 中执行此操作,但我更愿意在 python 中执行此操作,因为我必须通过 for
循环在不同组中运行此测试,python 为此提供了灵活性。)
解决方法
您可以使用 rpy2 / rmagic 来实现这一点。
这是一个 for
循环示例,您可以在其中循环不同的 IV,创建和拟合新模型,并使用 anova
与基本模型进行比较。
# set base formula
base_formula = 'Weight ~ 1 + (1+Time|Pig)' # base model
%R -i base_formula -i data m0 <- lmer(base_formula,data=data)
# loop over variables and compare models.
for iv in ["Time","Start"]:
m_formula = f'Weight ~ {iv} + (1+Time|Pig)'
%R -i m_formula -i data m1 <- lmer(m_formula,data=data); print(anova(m0,m1))
要运行上面的示例,您需要导入 data
并设置您的 r 环境,您可以使用下面的代码或与我编写的与此 tutorial 相关联的笔记本来完成比较在 Python 中运行 LMER 的不同方式。
# Load dataset
import statsmodels.api as sm
data = sm.datasets.get_rdataset('dietox','geepack').data
# Install Rbase and rpy2
# Install R and Rpy2
!apt-get install r-base
!pip install -q rpy2
# Install LMER packages (THIS TAKES ABOUT 3~5 minutes)
packnames = ('lme4','lmerTest','emmeans',"geepack")
from rpy2.robjects.packages import importr
from rpy2.robjects.vectors import StrVector
utils = importr("utils")
utils.chooseCRANmirror(ind=1)
utils.install_packages(StrVector(packnames))
## Load modules.
%R library(lme4); library(lmerTest)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。