Здесь написано здесь, что можно получить и то, и другое, или и то, и другое. Я смог получить каждый по отдельности, но не оба вместе, даже когда я установил effect.size = c("ges", "pes")
. Вместо этого я получаю только "pes". У меня такая же проблема, когда я использую свои собственные данные и когда я использую набор данных hangover
из пакета {WRS2}
. Для данных о похмелье мой код:
anova_test(data = hangover, dv = symptoms, wid = id, between = group, within = time, effect.size = c("ges", "pes"))
Буду очень благодарен за вашу помощь!
не волнуйтесь, я просто переместил его в полный ответ ниже.
Вы можете получить оба, используя effect.size = "both".
Тем не менее, вы можете знать об этой проблеме, поднятой на странице github для этого пакета, относительно того, как рассчитывается effect.size:
https://github.com/kassambara/rstatix/issues/132
Вы проверяли это? anova_test(mtcars, mpg ~ cyl, effect.size = "both")
дает только ges
, а не pes
.
Судя по проблеме с github, возникла проблема с расчетом в anova_test. Я не уверен, что это было исправлено.
Верно, но я говорю, что «Вы можете получить и то, и другое, используя effect.size = «both»» неверно.
Привет, спасибо за ответ! К сожалению, как говорит zephryl: «оба» дают только ges, а не pes.
Ты прав. Я просто взял это из того, что было сообщено в выпуске github. Сначала я пытался найти соответствующий код, но вам удалось то, что не удалось мне.
Я знаю о проблеме, поднятой на github. Кажется, это было исправлено, или, по крайней мере, результаты для ges и pes уже не те.
@любопытно, как выглядит вывод функции anova_test?
@любопытно, я бы не стал предполагать, что это исправлено, поскольку соответствующий код не обновлялся в течение 3 лет на github. Возможно, подтвердите, используя функцию ges из другого пакета или вычислив вручную.
@zephryl Да, ты прав, я обязательно проверю.
Кажется, это ошибка либо в документах, либо в коде. В документах говорится, что вы можете указать оба, но соответствующий код использует if / else для возврата только одного или другого:
add_anova_effect_size <- function(res.anova.summary, effect.size = "ges", observed = NULL){
ss.exists <- "SSn" %in% colnames(res.anova.summary$ANOVA)
if (!ss.exists){
return(res.anova.summary)
}
if ("pes" %in% effect.size){
res.anova.summary <- res.anova.summary %>%
add_partial_eta_squared()
}
else {
res.anova.summary <- res.anova.summary %>%
add_generalized_eta_squared(observed)
}
res.anova.summary
}
Но также, как обсуждалось здесь и упоминалось @Phenomniverse, rstatix в настоящее время неправильно вычисляет ges.
Относительно ges: ezANOVA дает тот же результат для ges.
ezANOVA взят из библиотеки ez, и я снова использую данные о похмелье из пакета WSR2: ezANOVA(данные = похмелье, dv = симптомы, wid = id, between = group, within = time, type = 3)
Но я не уверен, насколько я могу доверять ezANOVA, и хотел бы перепроверить это вручную. Если кто-нибудь знает, как это сделать, используя стандартный вывод ANOVA и формулу, приведенную в Bakeman (2005), я был бы очень признателен за объяснение. Бейкман (2005): link.springer.com/content/pdf/10.3758/BF03192707.pdf?pdf=button
С dplyr вы можете сделать anova_test(iris, Sepal.Length ~ Sepal.Width * Species, detailed = T, effect.size = "ges") %>% as_tibble() %>% mutate(pes_calc = SSn / (SSn + first(SSd)), ges_calc = SSn / (sum(SSn) + first(SSd)))
. Для меня это дает тот же pes, что и rstatix, но другой ges.
Должна ли она быть суммой (SSn) или просто SSn, зависит от того, какими факторами манипулировали, а какие были только что измерены, верно? (См. ссылку Бейкмана выше)
И если это правда, мне интересно, как функция должна знать, какими факторами манипулировали, а какие измеряли.
Да, я думаю, ты прав. Код, который я дал, даст только ges
для всех измеренных факторов (что == старый добрый квадрат эта). anova_test()
имеет аргумент observed
, чтобы указать, что переменные измерялись, а не манипулировались. Из документации не ясно, что по умолчанию.
Вы можете опубликовать новый вопрос, касающийся этого. Либо здесь, на SO, если он больше сосредоточен на том, как rstatix вычисляет вещи и является ли он правильным, либо на Cross Validated, если он больше сосредоточен только на том, как вычислять различные меры в квадрате в целом.
Еще раз большое спасибо! Я подумаю над этим еще немного и, возможно, сделаю новый пост.
О нет, куда делся комментарий Зефрила? Они сказали, что это ошибка в документе или коде, потому что код допускает только один размер эффекта в качестве вывода, несмотря на то, что говорится в документе. Получение обоих невозможно с этим кодом.