Омега в квадрате для измерения эффекта в R?

10

Книга статистики, которую я читаю, рекомендует омега в квадрате, чтобы измерить результаты моих экспериментов. Я уже доказал, используя сплит-дизайн (сочетание внутри-предметов и между-предметов), что мои внутри-предметы факторы статистически значимы с р <0,001 и F = 17.

Теперь я смотрю, насколько велика разница ... есть ли где-нибудь реализация омега-квадрата для R (или python? Я знаю ... можно мечтать;) Поиск в Интернете вещей, связанных с R, - это боль * , я не знаю, как мне удается найти вещи с C.

Спасибо!

Левек
источник
3
Я не знаю такой функции, но, возможно, кто-то мог бы взглянуть на формулы в Olejnik and Algina (2003) cps.nova.edu/marker/olejnik2003.pdf и написать функцию
Jeromy Anglim
3
@Jeromy Хорошая ссылка! На это тоже стоит обратить внимание: рекомендуемая статистика величины эффекта для планов
chl
2
@chl Спасибо. Видимо, ezANOVA () в пакете ez в R сообщает обобщенный eta квадрат.
Джером Энглим

Ответы:

7

Функция для вычисления омега-квадрата проста в написании. Эта функция берет объект, возвращенный тестом aov, и вычисляет и возвращает омега-квадрат:

omega_sq <- function(aovm){
    sum_stats <- summary(aovm)[[1]]
    SSm <- sum_stats[["Sum Sq"]][1]
    SSr <- sum_stats[["Sum Sq"]][2]
    DFm <- sum_stats[["Df"]][1]
    MSr <- sum_stats[["Mean Sq"]][2]
    W2 <- (SSm-DFm*MSr)/(SSm+SSr+MSr)
    return(W2)
}

редактирование: обновлена ​​функция для моделей n-way aov:

omega_sq <- function(aov_in, neg2zero=T){
    aovtab <- summary(aov_in)[[1]]
    n_terms <- length(aovtab[["Sum Sq"]]) - 1
    output <- rep(-1, n_terms)
    SSr <- aovtab[["Sum Sq"]][n_terms + 1]
    MSr <- aovtab[["Mean Sq"]][n_terms + 1]
    SSt <- sum(aovtab[["Sum Sq"]])
    for(i in 1:n_terms){
        SSm <- aovtab[["Sum Sq"]][i]
        DFm <- aovtab[["Df"]][i]
        output[i] <- (SSm-DFm*MSr)/(SSt+MSr)
        if(neg2zero & output[i] < 0){output[i] <- 0}
    }
    names(output) <- rownames(aovtab)[1:n_terms]

    return(output)
}
Джанак Майер
источник
3

Я должен был недавно сообщить .ω2

partialOmegas <- function(mod){
    aovMod <- mod
    if(!any(class(aovMod) %in% 'aov')) aovMod <- aov(mod)
    sumAov     <- summary(aovMod)[[1]]
    residRow   <- nrow(sumAov)
    dfError    <- sumAov[residRow,1]
    msError    <- sumAov[residRow,3]
    nTotal     <- nrow(model.frame(aovMod))
    dfEffects  <- sumAov[1:{residRow-1},1]
    ssEffects  <- sumAov[1:{residRow-1},2]
    msEffects  <- sumAov[1:{residRow-1},3]
    partOmegas <- abs((dfEffects*(msEffects-msError)) /
                  (ssEffects + (nTotal -dfEffects)*msError))
    names(partOmegas) <- rownames(sumAov)[1:{residRow-1}]
    partOmegas
}

Это грязная функция, которую легко убрать. Он вычисляет частичный и, вероятно, должен использоваться только для факторных планов между субъектами.ω2

Стивен Мартин
источник
2

Я бы предположил, что обобщенный квадрат eta считается ( ref , ref ) более подходящей мерой величины эффекта. Он включен в вывод ANOVA в пакете ez для R.

Майк Лоуренс
источник
5
На самом деле, эта-квадрат является очень позитивно смещенной статистикой. Поэтому в этой ситуации намного хуже, чем в омега-квадрате, хотя из-за своей простоты он более популярен.
Я согласен с пользователем выше. Вот ссылка, чтобы поддержать это. daniellakens.blogspot.nl/2015/06/…
Deleet
0

Пакет Даниэля "strengejacke" Людеке не sjstatsможет делать омега-квадрат, частично омега-квадрат и т.д. для моделей ANOVA. Проверьте это.

Вот виньетка, которая демонстрирует, что:

https://cran.r-project.org/web/packages/sjstats/vignettes/anova-statistics.html

install.packages("sjstats")
library(sjstats)

mod1 <- aov(y~x, data= d.frame)

anova_stats(mod1)
Аарон Хоган
источник