【问题标题】:ANOVA data argument errorANOVA 数据参数错误
【发布时间】:2018-11-29 15:39:56
【问题描述】:

我正在尝试对混合效应模型进行协方差分析。 我的数据集如下

> str(try)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   864 obs. of  7 variables:
$ Site      : chr  "BISC1" "BISC1" "BISC1" "BISC1" ...
$ SET       : Factor w/ 3 levels "SET1","SET2",..: 1 1 1 1 1 1 1 1 1 1 ...
$ ARM       : chr  "A_0001" "A_0001" "A_0001" "A_0001" ...
$ Pin       : num  1 2 3 4 5 6 7 8 9 1 ...
$ SETarmpin : chr  "SET1_A_0001_1" "SET1_A_0001_2" "SET1_A_0001_3" 
"SET1_A_0001_4" ...
$ Days      : num  145 145 145 145 145 145 145 145 145 145 ...
$ AbsPinDiff: num  -1 -4 7 -12 -5 0 -5 -1 0 -22 ...

> dput(head(try))
structure(list(Site = c("BISC1", "BISC1", "BISC1", "BISC1", "BISC1", 
"BISC1"), SET = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = c("SET1", 
"SET2", "SET3"), class = "factor"), ARM = c("A_0001", "A_0001", 
"A_0001", "A_0001", "A_0001", "A_0001"), Pin = c(1, 2, 3, 4, 
5, 6), SETarmpin = c("SET1_A_0001_1", "SET1_A_0001_2", "SET1_A_0001_3", 
"SET1_A_0001_4", "SET1_A_0001_5", "SET1_A_0001_6"), Days = c(145, 
145, 145, 145, 145, 145), AbsPinDiff = c(-1, -4, 7, -12, -5, 
0)), row.names = c(NA, -6L), class = c("tbl_df", "tbl", "data.frame"
))

我的混合效果模型如下:

trymodel<-lme(AbsPinDiff~Days+SET, random = ~1|SETarmpin,
           correlation = corAR1(form=~Days|SETarmpin),
           data = try, na.action = na.exclude, method="REML")

我正在使用“car”包中的 Anova 函数。然而,当我在上述模型上运行该函数时,我收到以下错误消息:

> Anova(trymodel4)
Error in terms.formula(object, data = data) : 
'data' argument is of the wrong type

我有点困惑,因为据我推测,Anova 函数没有“数据”参数。

【问题讨论】:

  • 您的文字图片isn't very helpful。它无法大声朗读或复制到编辑器中,并且索引不是很好,这意味着有相同问题的其他用户不太可能在这里找到答案。请edit您的帖子直接合并相关文本(最好使用复制+粘贴以避免转录错误)。
  • @TobySpeight 感谢您的建议!这个修改是不是看起来更舒服一点?
  • 你会想要输入你的数据..stackoverflow.com/questions/5963269/…
  • @NickDylla 我将 dput() 函数与 head() 函数结合使用。这种编辑更可取吗?我非常感谢您的建议
  • 不幸的是,我们不能仅使用head() 进行复制(尽管有时它提供了足够的信息来澄清问题)。你能告诉我们summary(trymodel4)吗?

标签: r statistics anova mixed-models


【解决方案1】:

大多数情况下,当您将数据集命名为与内置 R 对象相同的名称(例如 try)时,R 很聪明,会发现它需要一个不是函数的对象。这似乎是它感到困惑的情况之一 - 导致一般建议不要以这种方式命名您的对象......

加载ggplot2 包(报告here)有一个奇怪的交互(我还没有弄清楚)。无论哪种情况,我都会收到错误,但如果加载了ggplot2(在nlme 之前或之后,有时会有所不同),那么我会收到您报告的错误;否则我会得到一个不同的错误。 (请注意,如果您要对此进行试验,您需要确保在干净的 R 会话中开始每个测试。)

在任何一种情况下,更改数据集的名称都会使 car::Anova() 为我工作。

test <- FALSE
test_before <- TRUE
if (test_before) library(ggplot2)
library(nlme)
if (test) library(ggplot2)
data("sleepstudy",package="lme4")
try <- sleepstudy ## rename data set
m1 <- lme(Reaction~Days,random=~1|Subject,
          correlation=corAR1(form=~Days|Subject),data=try)
car::Anova(m1)
## with only nlme: cannot coerce class "function" to a data.frame
car::Anova(update(m1,data=sleepstudy)) ## works 

这个可能可以在 car 包内部修复(有办法告诉 R 只查找非函数对象)。

我的会话信息:

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] nlme_3.1-137       ggplot2_2.2.1.9000

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.17      bindr_0.1.1       magrittr_1.5      tidyselect_0.2.4 
 [5] munsell_0.5.0     colorspace_1.3-2  lattice_0.20-35   R6_2.2.2         
 [9] rlang_0.2.1       carData_3.0-1     car_3.0-0         plyr_1.8.4       
[13] dplyr_0.7.5       tools_3.6.0       grid_3.6.0        data.table_1.11.4
[17] gtable_0.2.0      rio_0.5.10        withr_2.1.2       abind_1.4-5      
[21] readxl_1.1.0      lazyeval_0.2.1    assertthat_0.2.0  tibble_1.4.2     
[25] zip_1.0.0         bindrcpp_0.2.2    purrr_0.2.5       curl_3.2         
[29] glue_1.2.0        haven_1.1.1       openxlsx_4.1.0    cellranger_1.1.0 
[33] compiler_3.6.0    pillar_1.2.3      forcats_0.3.0     scales_0.5.0.9000
[37] foreign_0.8-70    pkgconfig_2.0.1  
> 

【讨论】:

  • 感谢您的帮助!我进行了建议的调整,但不幸的是仍然收到相同的错误消息。来自在线资源......“第一步是将数据重组为矩阵形式,其中行是主题,列是重复测量因子的水平”......我怀疑这没有描述我的数据集的组织,但我不确定如何进行必要的调整。
  • 你确定吗??现在我已经添加了相关参数,我可以得到你的确切错误(并通过更改数据集名称来解决它)。
  • 天哪!这完全解决了这个问题,我正在更改模型的名称而不是数据集。傻我!关于您对我发布的在线建议的评论,您有什么建议可以确保在线或教程是可信的吗?我通常会看机构或出版商,但这还不够
  • 不幸的是我没有。也许您不小心脱离了上下文是合理的建议?
  • 我认为你是完全正确的。缺乏理解导致我把它拖出上下文。感谢您帮助我重回正轨!
猜你喜欢
  • 2021-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-18
  • 2021-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多