Ошибка в TukeyHSD.aov(my_data): нет факторов в подобранной модели в R
Новый пользователь Rstudio, успешно загрузил данные, запустил shapiro, bartletts и одностороннюю анову в моем наборе данных, однако, что бы я ни пытался, я не могу запустить TukeyHSD без какого-либо сообщения об ошибке, такого как приведенное выше, это то, что у меня есть Введено ли что-то, что мне не хватает??
my_data <- aov (yield ~ temp, data = Pectin) summary.aov (my_data) Df Сумма Sq Среднее Sq F значение Pr (> F)
temp 1 63,90 63,90 24,67 0,000327 *** Остатки 12 31,09 2,59Ошибка TukeyHSD(Pectin) в UseMethod("TukeyHSD"): не применим метод для TukeyHSD, примененный к объекту класса "c ('tbl_df', 'tbl', 'data.frame')" Ошибка TukeyHSD (my_data) в TukeyHSD.aov (my_data): в подобранной модели нет факторов. Дополнительно: предупреждающее сообщение: в репликациях (paste("~", xx), data = mf): не учитываются факторы: temp TukeyHSD(summary.aov(my_data) ") Ошибка в UseMethod("TukeyHSD"): для объекта класса "c('summary.aov', 'listof')" не применяется применимый метод для "TukeyHSD".
Любая помощь будет отличной!!
1 ответ
На это ответил в комментариях @MYaseen208, но для полноты картины вот ответ с некоторыми подробностями.
Хотя в документации это не указано,
TukeyHSD()
требует, чтобы объект был создан с группами в качестве факторов (или символов, которые приводятся к факторам). Вы можете дополнительно проверить,
aov
объект имеет правильные типы, например,
str(data.aov$model)
.
# Generate some example data across three levels of `temp`
my_data = data.frame(yield = rnorm(n = 60), temp = c(100, 200, 300))
# Perform the ANOVA
data.aov = aov(yield ~ temp, data = my_data)
# Summary of AOV will output valid results
summary(data.aov)
#> Df Sum Sq Mean Sq F value Pr(>F)
#> temp 1 0.87 0.8700 1.107 0.297
#> Residuals 58 45.59 0.7861
# TukeyHSD requires categories as factors, note the error
TukeyHSD(data.aov)
#> Warning in replications(paste("~", xx), data = mf): non-factors ignored: temp
#> Error in TukeyHSD.aov(data.aov): no factors in the fitted model
# As shown in the comments, this can be done in-line
data.aov.factor = aov(yield ~ factor(temp), data = my_data)
# Same results as AOV without factors
summary(data.aov.factor)
#> Df Sum Sq Mean Sq F value Pr(>F)
#> factor(temp) 2 1.09 0.5440 0.683 0.509
#> Residuals 57 45.38 0.7961
# And with factors TukeyHSD will work as expected
TukeyHSD(data.aov.factor)
#> Tukey multiple comparisons of means
#> 95% family-wise confidence level
#>
#> Fit: aov(formula = yield ~ factor(temp), data = my_data)
#>
#> $`factor(temp)`
#> diff lwr upr p adj
#> 200-100 -0.27537565 -0.9543331 0.4035818 0.5948950
#> 300-100 -0.29495353 -0.9739110 0.3840039 0.5516274
#> 300-200 -0.01957788 -0.6985354 0.6593796 0.9973491
# Also note that type character will be used as factors, and will not throw an error if used
data.aov.char = aov(yield ~ as.character(temp), data = my_data)
TukeyHSD(data.aov.char)
#> Tukey multiple comparisons of means
#> 95% family-wise confidence level
#>
#> Fit: aov(formula = yield ~ as.character(temp), data = my_data)
#>
#> $`as.character(temp)`
#> diff lwr upr p adj
#> 200-100 -0.27537565 -0.9543331 0.4035818 0.5948950
#> 300-100 -0.29495353 -0.9739110 0.3840039 0.5516274
#> 300-200 -0.01957788 -0.6985354 0.6593796 0.9973491
Создано 28 февраля 2022 г. пакетом reprex (v2.0.1)