2

我的目标是在主题内跨时间使用多个 IV 运行二次函数。我遇到了一些代码,有点困惑。下面是我正在尝试运行的可重现示例。遵循代码将是我的问题。

set.seed(1234)
obs <- 1:200
IV1<- rnorm(length(obs), mean = 1, sd = mean(obs^2) / 4)
IV2<- rnorm(length(obs), mean = 1.5, sd = mean(obs^2) / 8)
IV3<- rnorm(length(obs), mean = .5, sd = mean(obs^3) / 4)
y <- (obs + obs^2 + obs^3) + rnorm(length(obs), mean = 0, sd = mean(obs^2) / 4)
my.data <- data.frame(obs,IV1,IV2,IV3,y,
                      DV = y/10000, 
                      time= c(1,2,3,4,5),
                      Subj= rep(letters[1:20], each =5),
                      group= rep(letters[1:2], each =5))
my.data$group.factor<-as.factor(my.data$group)
my.data$dx <- as.numeric(ifelse(my.data$group == "a", 1, 0))

Polylmer<- lmer(DV ~ poly(time*IV1, 2) +  poly(time*IV2, 2) + poly(time*IV3, 2) +  poly(time*dx, 2) +  (1|Subj), data = my.data)  

我的问题如下:

  1. 在非 poly() 中,lmer 语句time*IV2将给出时间和 IV2 相互作用的系数以及低阶系数时间和 IV2。我是否正确使用 poly() 语句不会将较低项放入模型中?

  2. 我被教导说,如果你包括较高的术语,你也应该包括较低的术语。这对于 r 中的 poly() 函数仍然正确吗?

如果是这样使用任何一个都有意义

Polylmer2<- lmer(DV ~ poly(time, 2)*poly(IV1, 2) +  poly(time, 2)*poly(IV2, 2) + poly(time, 2)*poly(IV3, 2) +  poly(time*dx, 2) +  (1|Subj), data = my.data)      

Polylmer3<- lmer(DV ~ time + IV1 + IV2 + IV3 + dx + poly(time, 2) + poly(IV1, 2) + poly(IV2, 2) + poly(IV3, 2) + poly(time*IV1, 2) +  poly(time*IV2, 2) + poly(time*IV3, 2) +  poly(time*dx, 2) +  (1|Subj), data = my.data) 

我会假设以上两个是等价的,但是,我错了,因为第二个给了我一个错误:

错误:删除列无法生成完整的列秩设计矩阵

  1. 我删除了哪些列?

感谢您的帮助。我对 r 很陌生,所以我正在尽力了解这些功能的作用,而不是仅仅遵循一个食谱。

4

0 回答 0