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!

levesco
fuente
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)
}
Janak Mayer
fuente
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

Stephen Martin
fuente
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.

Mike Lawrence
fuente
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