Ошибка в 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)

Другие вопросы по тегам