Я пытаюсь изобразить взаимодействие между двумя непрерывными переменными в R. Однако мои данные многоуровневые (люди вложены в течение нескольких дней), поэтому мне нужно учитывать вложенную структуру моих данных, когда я строю ее график. Я анализирую свои данные с помощью библиотеки lme4, чтобы учесть вложенную структуру, но мне трудно понять, как ее построить.
## example data
spin = runif(600, 1, 24)
reg = runif(600, 1, 15)
ID = rep(c("1","2","3","4","5", "6", "7", "8", "9", "10"))
day = rep(1:30, each = 10)
testdata <- data.frame(
spin, reg, ID, day)
testdata$fatigue <- testdata$spin*testdata$reg/10*rnorm(30, mean=3, sd=2)
Здесь у меня есть независимые переменные вращения и регенерации, зависимая переменная усталости и люди (ID), вложенные в пределах нескольких дней. Я запускаю свою модель ниже.
## running my multilevel model with lme4
library(lme4)
m1 <- lmer(fatigue ~ spin * reg + ( 1 | ID), data = testdata, REML = T)
(m1)
confint(m1, test = "Chisq")
Предположим, у меня есть взаимодействие между spin и reg. Мне нужно поместить мою непрерывную переменную в категориальную переменную, чтобы построить ее.
Поэтому я создаю категориальную переменную на основе одной из моих непрерывных переменных. Здесь я выбираю спин. Примечание: не уверен, что приведенный ниже код подходит для того, что я хочу. Может, придется делать стандартную ошибку? Также не учитывает мою вложенную структуру данных, но не уверен, что делать в противном случае.
x <- mean(testdata$spin, na.rm = T)
print(x)
y <- sd(testdata$spin, na.rm = T)
print(y)
testdata$SpinLevel[testdata$spin > x+y] <- "High"
testdata$SpinLevel[testdata$spin > x-y & testdata$spin <= x+y] <- "Mean"
testdata$SpinLevel[testdata$spin <= x-y] <- "Low"
rm(x,y)
На основе того, что я нашел в Интернете, я могу создать базовый сюжет для демонстрации эффектов. НО не учитывает вложенную структуру (люди - идентификаторы переменных - вкладываются в течение нескольких дней).
library(ggplot2)
ggplot(testdata,aes(reg,fatigue,linetype=SpinLevel))+
geom_smooth(method="lm",se=FALSE)
Этот график ggplot хорош для интерпретации основного эффекта, но линии, вероятно, искажены, потому что они не принимают во внимание мою вложенную структуру моих данных (людей в течение нескольких дней).
Я также могу построить график своей модели с помощью библиотеки эффектов. При этом учитывается вложенная структура. Только вот график некрасивый, состоит из квартилей, и его очень трудно интерпретировать. Я бы хотел, чтобы он был высоким, средним и низким и все на одном графике. Но я не знаю, как это сделать.
library(effects)
plot(effect("spin*reg", m1), grid=TRUE, labels = T,
xlevels=list(spin=quantile(testdata$spin, seq(0, 1, 0.25))))
Любые идеи? Был бы очень признателен.
day
. - person IRTFM   schedule 10.07.2016broom
в качестве заменыcoefplot2
... но я думаю, что OP хочет график эффектов, а не график коэффициентов ... - person Ben Bolker   schedule 10.07.2016day
в свой код, чтобы просто показать, что я использую несколько человек в течение нескольких дней, потому что именно так форматируются мои данные. @ BenBolker - вы правы, мне нужны графики эффектов. - person sk17   schedule 11.07.2016ID
. Я мог бы запустить модель и учестьday
, если я считаю, что это имеет значение для моих гипотез, но меня здесь нет. - person sk17   schedule 13.07.2016