Saltar al contenido principal
LibreTexts Español

14.8: Comprobación de la Suposición de Homogeneidad de Varianza

  • Page ID
    151275
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Hay más de una manera de despellejar a un gato, como dice el refrán, y más de una forma de probar la homogeneidad de la suposición de varianza, también (aunque por alguna razón nadie hizo un dicho de eso). La prueba más utilizada para esto que he visto en la literatura es la prueba Levene (Levene 1960), y la estrechamente relacionada prueba Brown-Forsythe (Brown y Forsythe 1974), las cuales describiré aquí. Alternativamente, podrías usar la prueba de Bartlett, que se implementa en R a través de la función bartlett.test (), pero lo dejaré como un ejercicio para que el lector vaya a comprobarlo si te interesa.

    La prueba de Levene es sorprendentemente simple. Supongamos que tenemos nuestra variable de resultado Y ik. Todo lo que hacemos es definir una nueva variable, a la que llamaré Z ik, correspondiente a la desviación absoluta de la media del grupo:

    Z ik =|Y ik\(\ \bar{Y_k}\) |

    Bien, ¿de qué sirve esto? Bueno, tomemos un momento para pensar qué es realmente Z ik, y qué estamos tratando de probar. El valor de Z ik es una medida de cómo la observación i-ésima en el k-ésimo grupo se desvía de la media de su grupo. Y nuestra hipótesis nula es que todos los grupos tienen la misma varianza; es decir, ¡las mismas desviaciones generales de las medias grupales! Entonces, la hipótesis nula en una prueba de Levene es que las medias poblacionales de Z son idénticas para todos los grupos. Hm. Entonces lo que necesitamos ahora es una prueba estadística de la hipótesis nula de que todas las medias grupales son idénticas. ¿Dónde lo hemos visto antes? Oh, claro, eso es lo que es ANOVA... y así todo lo que hace la prueba de Levene es ejecutar un ANOVA sobre la nueva variable Z ik.

    ¿Y la prueba de Brown-Forsythe? ¿Eso hace algo particularmente diferente? No. El único cambio de la prueba de Levene es que construye la variable transformada Z de una manera ligeramente diferente, utilizando desviaciones de las medianas del grupo en lugar de desviaciones de las medias del grupo. Es decir, para la prueba de Brown-Forsythe,

    Z ik =|Y ik −mediana k (Y) |

    donde la mediana k (Y) es la mediana para el grupo k. Independientemente de si estás haciendo la prueba estándar de Levene o la prueba de Brown-Forsythe, el estadístico de prueba, que a veces se denota F, pero a veces se escribe como W, se calcula exactamente de la misma manera que el estadístico F para el ANOVA regular calculado, solo usando un Z ik en lugar de Y ik. Con eso en mente, sigamos adelante y veamos cómo ejecutar la prueba en R.

    Ejecutando la prueba de Levene en R

    Bien, entonces, ¿cómo hacemos la prueba de Levene? Obviamente, dado que la prueba de Levene es solo un ANOVA, sería bastante fácil crear manualmente la variable transformada Z ik y luego usar la función aov () para ejecutar un ANOVA sobre eso. No obstante, esa es la forma tediosa de hacerlo. Una mejor manera de hacer ejecutar tu prueba de Levene es usar la función LeveTest (), que está en el paquete del auto. Como de costumbre, primero cargamos el paquete

    library( car )  
    ## Loading required package: carData

    y ahora que tenemos, podemos ejecutar nuestra prueba Levene. El argumento principal que debes especificar es y, pero puedes hacerlo de muchas maneras diferentes. Probablemente la forma más sencilla de hacerlo es realmente ingresar el objeto aov original. Como tengo la variable my.anova almacenada de mi ANOVA original, simplemente puedo hacer esto:

    leveneTest( my.anova )
    ## Levene's Test for Homogeneity of Variance (center = median)
    ##       Df F value Pr(>F)
    ## group  2  1.4672 0.2618
    ##       15

    Si miramos la salida, vemos que la prueba no es significativa (F 2,15 =1.47, p=.26), por lo que parece que la hipótesis de homogeneidad de varianza está bien. Recuerda, aunque R reporta el estadístico de prueba como un valor F, también podría llamarse W, en cuyo caso solo escribirías W 2,15 =1.47. Además, anote la parte de la salida que dice centro = mediana. Eso te dice que, por defecto, la función LeveTest () en realidad hace la prueba Brown-Forsythe. Si quieres usar la media en su lugar, entonces necesitas establecer explícitamente el argumento center, así:

    leveneTest( y = my.anova, center = mean )
    ## Levene's Test for Homogeneity of Variance (center = mean)
    ##       Df F value Pr(>F)
    ## group  2  1.4497 0.2657
    ##       15

    Dicho esto, en la mayoría de los casos probablemente sea mejor ceñirse al valor predeterminado, ya que la prueba de Brown-Forsythe es un poco más robusta que la prueba original de Levene.

    Comentarios adicionales

    Dos comentarios más rápidos antes de pasar a un tema diferente. En primer lugar, como se mencionó anteriormente, existen otras formas de llamar a la función leveNeTest (). Aunque la gran mayoría de las situaciones que requieren una prueba de Levene implican verificar los supuestos de un ANOVA (en cuyo caso probablemente tengas una variable como my.anova por ahí), a veces podrías encontrarte queriendo especificar las variables directamente. A continuación se muestran dos formas diferentes en las que puede hacer esto:

    leveneTest(y = mood.gain ~ drug, data = clin.trial)   # y is a formula in this case
    leveneTest(y = clin.trial$mood.gain, group = clin.trial$drug)   # y is the outcome  

    En segundo lugar, mencioné que es posible ejecutar una prueba de Levene solo usando la función aov (). No quiero desperdiciar mucho espacio en esto, pero por si acaso algunos lectores están interesados en ver cómo se hace esto, aquí está el código que crea las nuevas variables y ejecuta un ANOVA. Si está interesado, no dude en ejecutar esto para verificar que produce las mismas respuestas que la prueba de Levene (es decir, con centro = media):

    Y <- clin.trial $ mood.gain    # the original outcome variable, Y
    G <- clin.trial $ drug         # the grouping variable, G
    gp.mean <- tapply(Y, G, mean)  # calculate group means
    Ybar <- gp.mean[G]             # group mean associated with each obs
    Z <- abs(Y - Ybar)             # the transformed variable, Z
    summary( aov(Z ~ G) )          # run the ANOVA 
    ##             Df Sum Sq Mean Sq F value Pr(>F)
    ## G            2 0.0616 0.03080    1.45  0.266
    ## Residuals   15 0.3187 0.02125

    Dicho esto, no me imagino que a mucha gente le importe esto. Sin embargo, es bueno saber que podrías hacerlo de esta manera si quisieras. Y para aquellos de ustedes que sí lo prueban, creo que ayuda desmitificar un poco la prueba cuando pueden ver —con sus propios ojos— la forma en que la prueba de Levene se relaciona con el ANOVA.


    This page titled 14.8: Comprobación de la Suposición de Homogeneidad de Varianza is shared under a CC BY-SA 4.0 license and was authored, remixed, and/or curated by Danielle Navarro via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.