В функции rstatix ​​anova_test, как мне получить как ges, так и pes в качестве размеров эффекта?

Здесь написано здесь, что можно получить и то, и другое, или и то, и другое. Я смог получить каждый по отдельности, но не оба вместе, даже когда я установил 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"))

Буду очень благодарен за вашу помощь!

О нет, куда делся комментарий Зефрила? Они сказали, что это ошибка в документе или коде, потому что код допускает только один размер эффекта в качестве вывода, несмотря на то, что говорится в документе. Получение обоих невозможно с этим кодом.

curious 30.11.2022 15:29

не волнуйтесь, я просто переместил его в полный ответ ниже.

zephryl 30.11.2022 15:30
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
57
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете получить оба, используя effect.size = "both".

Тем не менее, вы можете знать об этой проблеме, поднятой на странице github для этого пакета, относительно того, как рассчитывается effect.size:

https://github.com/kassambara/rstatix/issues/132

Вы проверяли это? anova_test(mtcars, mpg ~ cyl, effect.size = "both") дает только ges, а не pes.

zephryl 30.11.2022 15:07

Судя по проблеме с github, возникла проблема с расчетом в anova_test. Я не уверен, что это было исправлено.

Phenomniverse 30.11.2022 15:10

Верно, но я говорю, что «Вы можете получить и то, и другое, используя effect.size = «both»» неверно.

zephryl 30.11.2022 15:13

Привет, спасибо за ответ! К сожалению, как говорит zephryl: «оба» дают только ges, а не pes.

curious 30.11.2022 15:16

Ты прав. Я просто взял это из того, что было сообщено в выпуске github. Сначала я пытался найти соответствующий код, но вам удалось то, что не удалось мне.

Phenomniverse 30.11.2022 15:16

Я знаю о проблеме, поднятой на github. Кажется, это было исправлено, или, по крайней мере, результаты для ges и pes уже не те.

curious 30.11.2022 15:20

@любопытно, как выглядит вывод функции anova_test?

Phenomniverse 30.11.2022 15:24

@любопытно, я бы не стал предполагать, что это исправлено, поскольку соответствующий код не обновлялся в течение 3 лет на github. Возможно, подтвердите, используя функцию ges из другого пакета или вычислив вручную.

zephryl 30.11.2022 15:28

@zephryl Да, ты прав, я обязательно проверю.

curious 30.11.2022 15:48
Ответ принят как подходящий

Кажется, это ошибка либо в документах, либо в коде. В документах говорится, что вы можете указать оба, но соответствующий код использует 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.

curious 30.11.2022 17:18

ezANOVA взят из библиотеки ez, и я снова использую данные о похмелье из пакета WSR2: ezANOVA(данные = похмелье, dv = симптомы, wid = id, between = group, within = time, type = 3)

curious 30.11.2022 17:43

Но я не уверен, насколько я могу доверять ezANOVA, и хотел бы перепроверить это вручную. Если кто-нибудь знает, как это сделать, используя стандартный вывод ANOVA и формулу, приведенную в Bakeman (2005), я был бы очень признателен за объяснение. Бейкман (2005): link.springer.com/content/pdf/10.3758/BF03192707.pdf?pdf=but‌​ton

curious 30.11.2022 18:30

С 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.

zephryl 30.11.2022 21:22

Должна ли она быть суммой (SSn) или просто SSn, зависит от того, какими факторами манипулировали, а какие были только что измерены, верно? (См. ссылку Бейкмана выше)

curious 01.12.2022 17:14

И если это правда, мне интересно, как функция должна знать, какими факторами манипулировали, а какие измеряли.

curious 01.12.2022 17:17

Да, я думаю, ты прав. Код, который я дал, даст только ges для всех измеренных факторов (что == старый добрый квадрат эта). anova_test() имеет аргумент observed, чтобы указать, что переменные измерялись, а не манипулировались. Из документации не ясно, что по умолчанию.

zephryl 01.12.2022 17:49

Вы можете опубликовать новый вопрос, касающийся этого. Либо здесь, на SO, если он больше сосредоточен на том, как rstatix ​​вычисляет вещи и является ли он правильным, либо на Cross Validated, если он больше сосредоточен только на том, как вычислять различные меры в квадрате в целом.

zephryl 01.12.2022 17:51

Еще раз большое спасибо! Я подумаю над этим еще немного и, возможно, сделаю новый пост.

curious 02.12.2022 15:13

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