12 votos

¿Omega al cuadrado para medir el efecto en R?

El libro de estadística que estoy leyendo recomienda el omega al cuadrado para medir los efectos de mis experimentos. Ya he comprobado mediante un diseño de parcela dividida (mezcla de diseño dentro de los sujetos y entre los sujetos) que mis factores dentro de los sujetos son estadísticamente significativos con p<0,001 y F=17.

Ahora estoy buscando cómo de 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 el * No sé cómo me las arreglo para encontrar cosas con C.

Gracias.

3 votos

No conozco esa función, pero tal vez alguien pueda consultar las fórmulas de Olejnik y Algina (2003) cps.nova.edu/marker/olejnik2003.pdf y escribir una función

3 votos

@Jeromy ¡Buena referencia! También vale la pena mirar esta: Recommended effect size statistics for repeated measures designs (BRM 2005 37(3)), j.mp/cT9uEQ

2 votos

@chl Gracias. Aparentemente, ezANOVA() en el paquete ez en R reporta el eta cuadrado generalizado.

8voto

kurczak Puntos 638

Una función para calcular el omega al cuadrado es fácil de escribir. Esta función toma el objeto devuelto por la prueba aov, y calcula y devuelve 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)
}

edit: función actualizada para modelos aov de n vías:

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

3voto

Stephen Martin Puntos 11

Hace poco tuve que denunciar un $\omega^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 sucia que se puede limpiar fácilmente. Calcula el parcial $\omega^2$ y probablemente sólo debería utilizarse en diseños factoriales entre sujetos.

2voto

Encontré una función omega al cuadrado en el .Rprofile de alguien que puso a disposición en línea:

http://www.estudiosfonicos.cchs.csic.es/metodolo/1/.Rprofile

1voto

Matt Mitchell Puntos 17005

Sugiero que se considere la eta cuadrada generalizada ( ref , ref ) una medida más apropiada del tamaño del efecto. Se incluye en la salida del ANOVA en el paquete ez para R.

5 votos

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

0 votos

Estoy de acuerdo con el usuario de arriba. Aquí hay un enlace que lo respalda. daniellakens.blogspot.nl/2015/06/

1voto

Roman Dolejsi Puntos 1

Paquete de Daniel "strengejacke" Lüdecke sjstats no puede hacer omega-cuadrado, omega-cuadrado parcial, etc. para los modelos ANOVA. Compruébelo.

He aquí una viñeta que lo demuestra:

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)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X