gpt4 book ai didi

r - 使用 MICE 插补绘制适度回归中的交互项

转载 作者:行者123 更新时间:2023-12-04 07:38:15 24 4
gpt4 key购买 nike

我正在使用估算数据来测试一系列回归模型,包括一些调节模型。

插补

imp_data <- mice(data,m=20,maxit=20,meth='cart',seed=12345)

然后我将其转换为长格式,以便我可以根据需要重新编码/求和变量,然后再转回中间格式

impdatlong_mids<-as.mids(impdat_long)

示例模型:

model1 <- with(impdatlong_mids,
lm(Outcome ~ p1_sex + p2 + p3 + p4
+ p5+ p6+ p7+ p8+ p9+ p10
+ p11+ p1_sex*p12+ p1_sex*p13 + p14)

在非估算数据中,为了创建显着非交互的图形表示,我会使用(例如)

interact_plot (model=model1, pred = p1_sex, modx = p12)

这不适用于估算的数据/中间对象。有没有人使用推算数据绘制交互图,并能够提供帮助或分享示例?

谢谢

编辑:可重现的例子

library(tidyverse)
library(interactions)
library(mice)
# library(reprex) does not work with this
set.seed(42)
options(warn=-1)

#---------------------------------------#
# Data preparations

# loading an editing data
d <- mtcars
d <- d %>% mutate_at(c('cyl','am'),factor)

# create missing data and impute it
mi_d <- d
nr_of_NAs <- 30
for (i in 1:nr_of_NAs) {
mi_d[sample(nrow(mi_d),1),sample(ncol(mi_d),1)] <- NA
}


mi_d <- mice(mi_d, m=2, maxit=2)
#---------------------------------------#
# regressions

#not imputed
lm_d <- lm(qsec ~ cyl*am + mpg*disp, data=d)

#imputed dataset
lm_mi <- with(mi_d,lm(qsec ~ cyl*am + mpg*disp))
lm_mi_pool <- pool(lm_mi)

#---------------------------------------#
# interaction plots
# not imputed

#continuous
interactions::interact_plot(lm_d, pred=mpg,modx=disp, interval=T,int.width=0.3)


#categorical
interactions::cat_plot(lm_d, pred = cyl, modx = am)

Sample continuous and categorical plots

#---------------------------------------#
# interaction plots
# imputed

#continuous
interactions::interact_plot(lm_mi_pool, pred=mpg,modx=disp, interval=T,int.width=0.3)
# Error in model.frame.default(model) : object is not a matrix

#categorical
interactions::cat_plot(lm_mi_pool, pred = cyl, modx = am)
# Error in model.frame.default(model) : object is not a matrix

问题似乎是 interact_plot、cat_plot 或任何其他可用的包都不允许(至少是分类的)与类 mipo 或合并回归输出的对象进行交互绘图。

最佳答案

我以 mice 包中的步行数据为例。获取交互图(一种交互图的良好版本)的一种方法是使用 gtsummary 包。在引擎盖下,它将采用 model1 使用来自小鼠的 pool() 对模型进行平均,然后使用 tbl_regression()plot() 输出模型中的系数图。 tbl_regression() 函数调用了 pool() 函数。

library(mice)
library(dplyr)
library(gtsummary)
imp_data <- mice(mice::walking,m=20,maxit=20,meth='cart',seed=12345)

model1 <- with(imp_data,
lm(age ~ sex*YA))


model1 %>%
tbl_regression() %>%
plot()

plot from mice model

关于r - 使用 MICE 插补绘制适度回归中的交互项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67635243/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com