Я пытаюсь построить взаимодействие между двумя непрерывными переменными в R. Однако мои данные многоуровневые (люди вложены в течение нескольких дней), поэтому мне нужно учитывать вложенную структуру моих данных когда я его рисую. Я анализирую свои данные с помощью библиотеки lme4 для учета вложенной структуры, но мне сложно определить, как ее графа.Плотное взаимодействие двух непрерывных переменных с данными 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")
Предположим, что у меня есть взаимодействие между спином и регистром. Мне нужно включить переменную непрерывную в категориальную переменную для ее построения.
Поэтому я создаю категориальную переменную, основанную на одной из моих переменных. Здесь я выбираю спин. Примечание: не уверен, что этот код ниже подходит для того, что я хочу. Должна ли быть стандартная ошибка? Также не учитывает мою вложенную структуру данных, но не уверен, что делать иначе.
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))))
Любые идеи? Было бы очень признательно.
Я не вижу ничего в спецификации модели, чтобы указать на вложенность в течение дня. –
http://stackoverflow.com/questions/9447329/how-to-plot-the-results-of-a-mixed-model –
Я бы порекомендовал пакет 'broom' в качестве замены' coefplot2' ... но Я думаю, что OP хочет создать сюжет эффектов, а не график коэффициентов ... –