Omega, R?


10

Okuduğum istatistik kitabı, deneylerimin etkilerini ölçmek için omega kare öneriliyor. Zaten denek içi faktörlerimin p <0.001 ve F = 17 ile istatistiksel olarak anlamlı olduğunu bir bölünmüş arsa tasarımı (iç denekler ve denekler arası tasarım karışımı) kullanarak kanıtladım.

Şimdi farkın ne kadar büyük olduğunu görmek istiyorum ... R için bir yerde omega uygulaması var mı (veya python? Biliyorum ... biri hayal edebilir;) R ile ilgili şeyler için internette arama yapmak bir acı * , C ile bir şeyler bulmayı nasıl başardığımı bilmiyorum.

Teşekkürler!


3
Böyle bir işlevin farkında değilim, ama belki birisi Olejnik ve Algina'daki formüllere bakabilir (2003) cps.nova.edu/marker/olejnik2003.pdf ve bir fonksiyon yazabilir
Jeromy Anglim

3
@Jeromy Güzel referans! Bu da bakmaya değer: Tekrarlanan ölçüm tasarımları için önerilen etki boyutu istatistikleri (BRM 2005 37 (3)), j.mp/cT9uEQ
chl

2
@chl Teşekkürler. Görünüşe göre, R'deki ez paketindeki ezANOVA () genelleştirilmiş eta kare raporlar.
Jeromy Anglim

Yanıtlar:


7

Omega karesini hesaplamak için bir işlev yazmak kolaydır. Bu işlev aov testi tarafından döndürülen nesneyi alır ve hesaplar ve geri döner ve omega karesini hesaplar:

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)
}

edit: n-yönlü aov modelleri için güncellenmiş fonksiyon:

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

Yakın zamanda bir bildirmem gerekiyordu .ω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
}

Kolayca temizlenebilen dağınık bir fonksiyondur. Kısmi hesaplar ve muhtemelen sadece denekler arasındaki faktöryel tasarımlarda kullanılmalıdır.ω2


2

Genelleştirilmiş eta karesinin efekt boyutunun daha uygun bir ölçüsü olarak kabul edildiğini ( ref , ref ) öneririm . R için ez paketindeki ANOVA çıktısına dahildir.


5
Aslında, eta karesi oldukça pozitif bir sapma istatistiğidir. Bu nedenle, bu durumda omega-kareden daha kötüdür, ancak basitliği nedeniyle daha popülerdir.

Yukarıdaki kullanıcıyla hemfikirim. İşte onu yedeklemek için bir link. daniellakens.blogspot.nl/2015/06/…
Deleet


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.