【发布时间】:2021-08-10 14:02:27
【问题描述】:
我正在使用估算数据来测试一系列回归模型,包括一些调节模型。
插补
imp_data <- mice(data,m=20,maxit=20,meth='cart',seed=12345)
然后我将其转换为长格式,以便我可以根据需要重新编码/求和变量,而不是返回到 mids 格式
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)
#---------------------------------------#
# 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 类或汇集回归输出的对象进行交互绘图。
【问题讨论】:
-
您能否使用一些数据使您的示例更具重现性?什么是
impdat_long/ 你是怎么创建的? -
添加了一个可重现的示例。在编辑被批准或不被接受之前,代码也可以在此处获得:gist.github.com/samuelsaari/a3be910f57469c7a001ceab9ffef6d6c
标签: r plot regression linear-regression r-mice