对于我的手稿,我用两个连续变量的交互绘制了一个 lme:
创建数据
mydata <- data.frame( SID=sample(1:150,400,replace=TRUE),age=sample(50:70,400,replace=TRUE), sex=sample(c("Male","Female"),200, replace=TRUE),time= seq(0.7, 6.2, length.out=400), Vol =rnorm(400),HCD =rnorm(400))
mydata$time <- as.numeric(mydata$time)
运行模型:
model <- lme(HCD ~ age*time+sex*time+Vol*time, random=~time|SID, data=mydata)
制作情节:
sjp.int(model, swap.pred=T, show.ci=T, mdrt.values="meansd")
审阅者现在希望我将原始数据点添加到该图中。我怎样才能做到这一点?我尝试添加引用 mydata 的 geom_point(),但这是不可能的。有任何想法吗?
更新:我认为也许我可以提取 HCD 的随机斜率,然后提取协变量的残差 HCD 以及协变量的残差 Vol 并绘制这两者以使事情变得更容易(然后我可以在 2D 图中绘制点)。因此,我尝试提取斜率并使用它们来拟合线性回归,但结果不同(在可重现的示例中不太显着,但在我的数据中:交互变得不显着(并且在 lme 中显着)) . 不知道这意味着什么,或者这是否只是表明我不应该尝试以这种方式绘制它。
得到斜坡:
model <- lme(HCD ~ time, random=~time|SID, data=mydata)
slopes <- rbind(row.names(model$coefficients$random$SID), model$coef$random$SID[,2])
slopes2 <- data.frame(matrix(unlist(slopes), nrow=144, byrow=T))
names(slopes2)[1] <- "SID"
names(slopes2)[2] <- "slopes"
(保存斜坡2并重新打开,因为不知何故R将其视为一个因素)
然后创建一个横截面数据框并合并斜率:
mydata$time2 <- round(mydata$time)
new <- reshape(mydata,idvar = "SID", timevar="time2", direction="wide")
newdata <- dplyr::left_join(new, slop, by="SID")
lm:
modelw <- lm(slop$slopes ~ age.1+sex.1+Vol.1, data=newdata)
Vol 现在的 p 值为 0.8(以前是 0.14)