model.frame.default(formula, data = data, ...) 中的 emmeans 警告:变量 'Group' 不是一个因素
emmeans Warning in model.frame.default(formula, data = data, ...) : variable 'Group' is not a factor
本题数据如下
example<-structure(structure(list(Group = structure(c(3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("1",
"2", "3"), class = "factor"), Subject = c(300L, 300L, 300L, 300L,
300L, 300L, 300L, 300L, 300L, 300L, 301L, 301L, 301L, 301L, 301L,
301L, 301L, 301L, 301L, 301L, 302L, 302L, 302L, 302L, 302L, 302L,
302L, 302L, 302L, 302L, 303L, 303L, 303L, 303L, 303L, 303L, 303L,
303L, 304L, 304L, 304L, 304L, 304L, 304L, 304L, 304L, 304L, 304L,
305L, 305L, 305L, 305L, 305L, 305L, 305L, 305L, 305L, 305L, 306L,
306L, 306L, 306L, 306L, 306L, 306L, 306L, 306L, 306L, 306L, 307L,
307L, 307L, 307L, 307L, 307L, 307L, 307L, 307L, 307L, 307L, 308L,
308L, 308L, 308L, 308L, 308L, 308L, 308L, 308L, 308L, 308L, 309L,
309L, 309L, 309L, 309L, 309L, 309L, 309L, 309L, 309L, 309L, 310L,
310L, 310L, 310L, 310L, 310L, 310L, 310L, 310L, 310L, 310L, 311L,
311L, 311L, 311L, 311L, 311L, 311L, 311L, 311L, 311L, 311L, 312L,
312L, 312L, 312L, 312L, 312L, 312L, 312L, 312L, 312L, 312L, 313L,
313L, 313L, 313L, 313L, 313L, 313L, 313L, 313L, 313L, 313L, 314L,
314L, 314L, 314L, 314L, 314L, 314L, 314L, 314L, 314L, 315L, 315L,
315L, 315L, 315L, 315L, 315L, 315L, 315L, 315L, 316L, 316L, 316L,
316L, 316L, 316L, 316L, 316L, 316L, 316L, 317L, 317L, 317L, 317L,
317L, 317L, 317L, 317L, 317L, 317L, 318L, 318L, 318L, 318L, 318L,
318L, 318L, 318L, 318L, 318L, 319L, 319L, 319L, 319L, 319L, 319L,
319L, 319L, 319L, 319L, 319L, 320L, 320L, 320L, 320L, 320L, 320L,
320L, 320L, 320L, 320L, 320L, 321L, 321L, 321L, 321L, 321L, 321L,
321L, 321L, 321L, 321L, 321L, 322L, 322L, 322L, 322L, 322L, 322L,
322L, 322L, 322L, 322L, 322L, 323L, 323L, 323L, 323L, 323L, 323L,
323L, 323L, 323L, 323L, 324L, 324L, 324L, 324L, 324L, 324L, 324L,
324L, 324L, 324L, 325L, 325L, 325L, 325L, 325L, 325L, 325L, 325L,
325L, 325L, 326L, 326L, 326L, 326L, 326L, 326L, 326L, 326L, 326L,
326L, 327L, 327L, 327L, 327L, 327L, 327L, 327L, 327L, 327L, 327L
), Day = structure(c(1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L,
1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 1L, 2L, 4L, 5L, 6L,
7L, 8L, 9L, 10L, 11L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 1L, 2L,
4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 1L, 2L, 4L, 5L, 6L, 7L, 8L,
9L, 10L, 11L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 3L, 1L,
2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 3L, 1L, 2L, 4L, 5L, 6L,
7L, 8L, 9L, 10L, 11L, 3L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L,
11L, 3L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 3L, 1L, 2L,
4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 3L, 1L, 2L, 4L, 5L, 6L, 7L,
8L, 9L, 10L, 11L, 3L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L,
3L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 1L, 2L, 4L, 5L,
6L, 7L, 8L, 9L, 10L, 11L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L,
11L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 1L, 2L, 4L, 5L,
6L, 7L, 8L, 9L, 10L, 11L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L,
11L, 3L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 3L, 1L, 2L,
4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 3L, 1L, 2L, 4L, 5L, 6L, 7L,
8L, 9L, 10L, 11L, 3L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L,
1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 1L, 2L, 4L, 5L, 6L,
7L, 8L, 9L, 10L, 11L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L,
1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L), .Label = c("0", "1",
"10", "2", "3", "4", "5", "6", "7", "8", "9"), class = "factor"),
Pel = c(0L, 0L, 0L, 0L, 182L, 347L, 185L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 259L,
387L, 400L, 400L, 365L, 0L, 0L, 0L, 62L, 382L, 400L, 400L,
400L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 69L, 90L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 167L,
378L, 252L, 382L, 216L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 12L, 300L, 385L, 278L, 0L,
38L, 0L, 0L, 0L, 0L, 0L, 180L, 389L, 400L, 397L, 398L, 362L,
206L, 0L, 0L, 0L, 0L, 303L, 382L, 400L, 399L, 391L, 296L,
359L, 165L, 0L, 0L, 0L, 112L, 400L, 389L, 350L, 228L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 104L, 380L, 360L, 330L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 218L, 373L, 340L,
352L, 135L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 248L, 400L,
352L, 400L, 0L, 0L, 0L, 0L, 101L, 236L, 250L, 166L, 0L, 0L,
0L, 0L, 94L, 167L, 323L, 329L, 400L, 374L, 371L, 240L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
196L, 395L, 398L, 374L, 261L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
390L, 397L, 400L, 389L, 373L, 342L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 296L, 393L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 43L,
194L, 174L, 0L, 0L, 0L)), row.names = c(NA, -290L), class = c("tbl_df",
"tbl", "data.frame")))
当我运行下面的代码
lmm <- lmer(Pel ~ as.factor(Group)*as.factor(Day) + (1 |Subject), data=example)
summary(lmm)
broom.mixed::tidy(lmm,conf.int=T)
emmeans(lmm, pairwise ~ Group | Day, adjust = "bonferroni") # | Day performs pairwise comparisons by day
我收到以下错误消息
Warning in model.frame.default(formula, data = data, ...) : variable
'Group' is not a factor Warning in model.frame.default(formula, data =
data, ...) : variable 'Day' is not a factor
各组的成对比较提供了置信区间和 p 值。
我想知道为什么会出现此错误,如何避免以及成对比较的结果是否有效。
谢谢
我做到了:
# lmm = ... (as in OP)
rg = ref_grid(lmm) # (same warning messages)
lmm2 = lmer(Pel ~ Group*Day + (1 |Subject), data=example)
rg2 = ref_grid(lmm2) # (no warnings)
summary(as.numeric(rg@linfct - rg2@linfct))
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0 0 0 0 0 0
我相信 lmm2
的结果,上面显示 lmm
的参考网格具有相同的线性函数。所以至少我们知道我们可以相信您从 lmm
.
获得的估计和对比
我 运行 调用 rg
并进行调试,警告出现在 emm_basis.merMod
中的代码行中:
m = model.frame(trms, grid, na.action = na.pass, xlev = xlev)
最后一个参数 xlev
是一个列表,名称为 "Group"
和 "Day"
。如果,在我 运行 调试器中的那一行之前,我做
names(xlev) = c("as.factor(Group)", "as.factor(Day)")
然后警告消失。
有趣的是,如果我们这样做:
example = transform(example, ngrp = as.numeric(Group), nday = as.numeric(Day))
lmm3 = lmer(Pel ~ as.factor(ngrp)*as.factor(nday) + (1 |Subject), data=example)
rg3 = ref_grid(lmm3)
这工作正常,没有警告。问题是有特殊的代码可以跟踪数字变量被强制转换为因子的情况;但是当它已经是一个因素时,跟踪就不会完成。
我认为这通常是一个无害的错误。修复 emmeans 可能会阻止此类警告发生,但这会很复杂,因为它涉及将 trms
中的因子名称(在上面显示的调用中)与模型公式中的名称。如果可以避免,我宁愿不去那里。
本题数据如下
example<-structure(structure(list(Group = structure(c(3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("1",
"2", "3"), class = "factor"), Subject = c(300L, 300L, 300L, 300L,
300L, 300L, 300L, 300L, 300L, 300L, 301L, 301L, 301L, 301L, 301L,
301L, 301L, 301L, 301L, 301L, 302L, 302L, 302L, 302L, 302L, 302L,
302L, 302L, 302L, 302L, 303L, 303L, 303L, 303L, 303L, 303L, 303L,
303L, 304L, 304L, 304L, 304L, 304L, 304L, 304L, 304L, 304L, 304L,
305L, 305L, 305L, 305L, 305L, 305L, 305L, 305L, 305L, 305L, 306L,
306L, 306L, 306L, 306L, 306L, 306L, 306L, 306L, 306L, 306L, 307L,
307L, 307L, 307L, 307L, 307L, 307L, 307L, 307L, 307L, 307L, 308L,
308L, 308L, 308L, 308L, 308L, 308L, 308L, 308L, 308L, 308L, 309L,
309L, 309L, 309L, 309L, 309L, 309L, 309L, 309L, 309L, 309L, 310L,
310L, 310L, 310L, 310L, 310L, 310L, 310L, 310L, 310L, 310L, 311L,
311L, 311L, 311L, 311L, 311L, 311L, 311L, 311L, 311L, 311L, 312L,
312L, 312L, 312L, 312L, 312L, 312L, 312L, 312L, 312L, 312L, 313L,
313L, 313L, 313L, 313L, 313L, 313L, 313L, 313L, 313L, 313L, 314L,
314L, 314L, 314L, 314L, 314L, 314L, 314L, 314L, 314L, 315L, 315L,
315L, 315L, 315L, 315L, 315L, 315L, 315L, 315L, 316L, 316L, 316L,
316L, 316L, 316L, 316L, 316L, 316L, 316L, 317L, 317L, 317L, 317L,
317L, 317L, 317L, 317L, 317L, 317L, 318L, 318L, 318L, 318L, 318L,
318L, 318L, 318L, 318L, 318L, 319L, 319L, 319L, 319L, 319L, 319L,
319L, 319L, 319L, 319L, 319L, 320L, 320L, 320L, 320L, 320L, 320L,
320L, 320L, 320L, 320L, 320L, 321L, 321L, 321L, 321L, 321L, 321L,
321L, 321L, 321L, 321L, 321L, 322L, 322L, 322L, 322L, 322L, 322L,
322L, 322L, 322L, 322L, 322L, 323L, 323L, 323L, 323L, 323L, 323L,
323L, 323L, 323L, 323L, 324L, 324L, 324L, 324L, 324L, 324L, 324L,
324L, 324L, 324L, 325L, 325L, 325L, 325L, 325L, 325L, 325L, 325L,
325L, 325L, 326L, 326L, 326L, 326L, 326L, 326L, 326L, 326L, 326L,
326L, 327L, 327L, 327L, 327L, 327L, 327L, 327L, 327L, 327L, 327L
), Day = structure(c(1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L,
1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 1L, 2L, 4L, 5L, 6L,
7L, 8L, 9L, 10L, 11L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 1L, 2L,
4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 1L, 2L, 4L, 5L, 6L, 7L, 8L,
9L, 10L, 11L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 3L, 1L,
2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 3L, 1L, 2L, 4L, 5L, 6L,
7L, 8L, 9L, 10L, 11L, 3L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L,
11L, 3L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 3L, 1L, 2L,
4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 3L, 1L, 2L, 4L, 5L, 6L, 7L,
8L, 9L, 10L, 11L, 3L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L,
3L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 1L, 2L, 4L, 5L,
6L, 7L, 8L, 9L, 10L, 11L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L,
11L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 1L, 2L, 4L, 5L,
6L, 7L, 8L, 9L, 10L, 11L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L,
11L, 3L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 3L, 1L, 2L,
4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 3L, 1L, 2L, 4L, 5L, 6L, 7L,
8L, 9L, 10L, 11L, 3L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L,
1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 1L, 2L, 4L, 5L, 6L,
7L, 8L, 9L, 10L, 11L, 1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L,
1L, 2L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L), .Label = c("0", "1",
"10", "2", "3", "4", "5", "6", "7", "8", "9"), class = "factor"),
Pel = c(0L, 0L, 0L, 0L, 182L, 347L, 185L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 259L,
387L, 400L, 400L, 365L, 0L, 0L, 0L, 62L, 382L, 400L, 400L,
400L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 69L, 90L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 167L,
378L, 252L, 382L, 216L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 12L, 300L, 385L, 278L, 0L,
38L, 0L, 0L, 0L, 0L, 0L, 180L, 389L, 400L, 397L, 398L, 362L,
206L, 0L, 0L, 0L, 0L, 303L, 382L, 400L, 399L, 391L, 296L,
359L, 165L, 0L, 0L, 0L, 112L, 400L, 389L, 350L, 228L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 104L, 380L, 360L, 330L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 218L, 373L, 340L,
352L, 135L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 248L, 400L,
352L, 400L, 0L, 0L, 0L, 0L, 101L, 236L, 250L, 166L, 0L, 0L,
0L, 0L, 94L, 167L, 323L, 329L, 400L, 374L, 371L, 240L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
196L, 395L, 398L, 374L, 261L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
390L, 397L, 400L, 389L, 373L, 342L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 296L, 393L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 43L,
194L, 174L, 0L, 0L, 0L)), row.names = c(NA, -290L), class = c("tbl_df",
"tbl", "data.frame")))
当我运行下面的代码
lmm <- lmer(Pel ~ as.factor(Group)*as.factor(Day) + (1 |Subject), data=example)
summary(lmm)
broom.mixed::tidy(lmm,conf.int=T)
emmeans(lmm, pairwise ~ Group | Day, adjust = "bonferroni") # | Day performs pairwise comparisons by day
我收到以下错误消息
Warning in model.frame.default(formula, data = data, ...) : variable 'Group' is not a factor Warning in model.frame.default(formula, data = data, ...) : variable 'Day' is not a factor
各组的成对比较提供了置信区间和 p 值。
我想知道为什么会出现此错误,如何避免以及成对比较的结果是否有效。
谢谢
我做到了:
# lmm = ... (as in OP)
rg = ref_grid(lmm) # (same warning messages)
lmm2 = lmer(Pel ~ Group*Day + (1 |Subject), data=example)
rg2 = ref_grid(lmm2) # (no warnings)
summary(as.numeric(rg@linfct - rg2@linfct))
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0 0 0 0 0 0
我相信 lmm2
的结果,上面显示 lmm
的参考网格具有相同的线性函数。所以至少我们知道我们可以相信您从 lmm
.
我 运行 调用 rg
并进行调试,警告出现在 emm_basis.merMod
中的代码行中:
m = model.frame(trms, grid, na.action = na.pass, xlev = xlev)
最后一个参数 xlev
是一个列表,名称为 "Group"
和 "Day"
。如果,在我 运行 调试器中的那一行之前,我做
names(xlev) = c("as.factor(Group)", "as.factor(Day)")
然后警告消失。
有趣的是,如果我们这样做:
example = transform(example, ngrp = as.numeric(Group), nday = as.numeric(Day))
lmm3 = lmer(Pel ~ as.factor(ngrp)*as.factor(nday) + (1 |Subject), data=example)
rg3 = ref_grid(lmm3)
这工作正常,没有警告。问题是有特殊的代码可以跟踪数字变量被强制转换为因子的情况;但是当它已经是一个因素时,跟踪就不会完成。
我认为这通常是一个无害的错误。修复 emmeans 可能会阻止此类警告发生,但这会很复杂,因为它涉及将 trms
中的因子名称(在上面显示的调用中)与模型公式中的名称。如果可以避免,我宁愿不去那里。