方差分析数据参数错误
ANOVA data argument error
我正在尝试 运行 对混合效应模型的协方差进行分析。
我的数据集如下
> 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
我有点困惑,因为据我推测,方差分析函数没有 'data' 参数。
大多数情况下,当您为数据集指定与内置 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
>
我正在尝试 运行 对混合效应模型的协方差进行分析。 我的数据集如下
> 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
我有点困惑,因为据我推测,方差分析函数没有 'data' 参数。
大多数情况下,当您为数据集指定与内置 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
>