比较pymer4中的模型



是否有一种方法在pymer4(或类似的python模块线性混合效应回归模型)比较两个不同的模型?

在R中,lme4包的anova命令执行如下操作:

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循环的例子,您正在循环不同的IVs,创建和拟合新模型,并使用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环境,您可以使用下面的代码或与本教程相关的笔记本来完成,该笔记本是我编写的,用于比较在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)

相关内容

  • 没有找到相关文章

最新更新