Omega al cuadrado para medir el efecto en R?


10

El libro de estadísticas que estoy leyendo recomienda omega al cuadrado para medir los efectos de mis experimentos. Ya probé usando un diseño de parcela dividida (mezcla de diseño dentro de los sujetos y entre sujetos) que mis factores dentro de los sujetos son estadísticamente significativos con p <0.001 y F = 17.

Ahora estoy buscando ver qué tan grande es la diferencia ... ¿hay una implementación de omega al cuadrado en algún lugar para R (o python? Lo sé ... uno puede soñar;) Buscar en Internet cosas relacionadas con R es un dolor * , no sé cómo consigo encontrar cosas con C.

¡Gracias!


3
No conozco esa función, pero tal vez alguien podría mirar las fórmulas en Olejnik y Algina (2003) cps.nova.edu/marker/olejnik2003.pdf y escribir una función
Jeromy Anglim

3
@Jeromy ¡Buena referencia! También vale la pena mirar este: Estadísticas de tamaño de efecto recomendadas para diseños de medidas repetidas (BRM 2005 37 (3)), j.mp/cT9uEQ
chl

2
@chl Gracias. Aparentemente, ezANOVA () en el paquete ez en R informa eta cuadrado generalizado.
Jeromy Anglim

Respuestas:


7

Una función para calcular omega al cuadrado es fácil de escribir. Esta función toma el objeto devuelto por la prueba aov, y calcula y devuelve y omega al cuadrado:

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

editar: función actualizada para modelos 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

Recientemente tuve que reportar un .ω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
}

Es una función desordenada que se puede limpiar fácilmente. Calcula el parcial , y probablemente solo debería usarse en diseños factoriales entre sujetos.ω2


2

Sugeriría que el cuadrado generalizado se considere ( ref , ref ) una medida más apropiada del tamaño del efecto. Se incluye en la salida ANOVA en el paquete ez para R.


55
En realidad, eta-cuadrado es una estadística altamente sesgada positivamente. Es, por lo tanto, mucho peor en esta situación que omega-cuadrado, aunque debido a su simplicidad, es más popular.

Estoy de acuerdo con el usuario anterior. Aquí hay un enlace para respaldarlo. daniellakens.blogspot.nl/2015/06/…
Deleet


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.