1 INTRODUCCION

El análisis de este tipo de asociación implica comparar la distribución de una variable para los distintos valores que toma la otra u otras. Normalmente, se considera a la variable cualitativa como independiente o condicionante, mientras que la variable cuantitativa es la dependiente o condicionada.

Supongamos que, tras medir el peso de 100 individuos (50 mujeres -grupo A- y 50 hombres -grupo B-) queremos saber si existe relación entre peso y género. Esta comparación se puede realizar tanto para los valores medios como para su dispersión. Si el peso de varones y mujeres es el mismo, podríamos afirmar que el peso no dependería del género. En este caso podríamos plantear las siguientes hipótesis:

Para elegir la prueba que permita realizar este contraste, debemos tener en cuenta los siguientes aspectos:

2 COMPARACIÓN DE LAS MEDIAS DE DOS GRUPOS

Está basado en la prueba t, un procedimiento estadístico que comprueba si existe una diferencia significativa entre las medias de dos grupos. Hay tres tipos diferentes de pruebas t:

Prueba t de una muestra Fuente: DataLab (https://datatab.es/tutorial/t-test)

2.1 Comparación de la media de una única muestra (Prueba t de una muestra o “one sample” test)

Utilizamos la prueba t de una muestra cuando queremos comparar la media de una muestra con una media de referencia conocida.

Prueba t de una muestra Fuente: DataLab (https://datatab.es/tutorial/t-test)

Supongamos que queremos saber si el peso medio de los alumnos de la UC encuestados es diferente del peso medio recomendado por la OMM que sería 75 kg.

La hipótesis nula y alternativa de este ejemplo.

  • H0: µ = 75 (el peso medio de nuestros alumnos sí es equivalente al valor recomendado por la OMN).

  • H1: µ ≠ 75 (el peso medio es diferente a 75).

Primero cargaríamos el dataframe alumnos_UC.RData.

load("./alumnos_UC.RData")

A continuación aplicamos la prueba t:

t.test(df$peso, 
       mu = 75)                                               # Variable de referencia

El significado de la salida es el siguiente:

t: el estadístico t, calculado como (x – μ) / (s√n) = 4.9377.

df: los grados de libertad, calculados como n-1 = 99.

p-value: El valor-p- que corresponde a un estadístico t de 4.9377 con 11 grados de libertad (en este caso, p-value = 3.208e-06).

95 percent confidence interval: El intervalo de confianza con una probabilidad del 95%.

Dado que el valor-p de obtenido es menor que 0.05 (α =.05), tenemos que rechazar la hipótesis nula, es decir, el peso medio de nuestros estudiantes es diferente del peso medio recomendado por la OMN.

Pregunta 1: importa el dataframe zonas_verdes comprueba si la superficie de los parques es significativamente equivalente a 7.5 km2.

t.test(zonas_verdes$superficie, 
       mu = 7.5)                                               # Variable de referencia

2.2 Comparación de la media de dos muestras independientes

La prueba t para muestras independientes se utiliza para comparar las medias de dos grupos o muestras independientes y determinar si hay una diferencia significativa entre esas medias. Es una de las pruebas más populares y utilizadas.

Prueba t de una muestra Fuente: DataLab (https://datatab.es/tutorial/t-test)

Supongamos que queremos saber si el género de los alumnos influye en el peso, es decir, si hombres y mujeres tienen el mismo peso o no. Antes de proceder a la prueba, es conveniente realizar algunos análisis previos para verificar ciertos supuestos:

  • Conviene realizar una visualización inicial de los datos.

  • Suposición 1: ¿Son las dos muestras independientes?

  • Suposición 2: ¿Los datos de cada uno de los 2 grupos siguen una distribución normal?

  • Suposición 3: tienen las dos muestras la misma varianza?

  • Elección de pruebas unilaterales o bilaterales.

2.2.1 Visualización de los datos

Para detectar diferencias, se puede utilizar un gráfico de caja y bigotes incorporando una variable cuantitativa que aparecerá en el eje horizontal. Este gráfico requiere dos argumentos:

boxplot(formula, data)

  • formula: utiliza el formato y ~ x, donde y es el nombre de la variable continua y x la variable cualitativa usada como agrupación.

  • data: de dónde se extraen las variables.

boxplot(peso ~ genero,
        df,
        notch = TRUE)
abline(h = mean(df$peso), col = 2, lwd = 2)                               # Añade el valor medio

Con el argumento notch = TRUE se representan los intervalos de confianza al 95% para la mediana (hendiduras en torno a la mediana); si no se superponen las medianas son diferentes estadísticamente y podemos continuar con la prueba. Por defecto, los diagramas de caja se dibujan con el orden con el que aparecen los factores en los datos. Los datos se puede reordenar aplicando la función reorder() a cualquier medida, como la mediana o la media de los datos.

# De más bajo a más alto
mediana <- with(df, reorder(genero, peso, median)) 
boxplot(df$peso ~ mediana, las = 1)

# De más alto a más bajo
mediana <- with(df, reorder(genero, -peso, median)) # Equivalente
boxplot(df$peso ~ mediana, las = 1)

Si se asigna el gráfico a un objeto, se puede obtener una lista con diferentes componentes.

res <- boxplot(peso ~ genero,
               df)

Estos componentes son:

res
  • stats: cada columna representa el bigote inferior, el primer cuartil, la mediana, el tercer cuartil y el bigote superior de cada grupo.

  • n: número de observaciones de cada grupo.

  • conf: cada columna representa los extremos inferior y superior del intervalo de confianza de la mediana.

  • out: número total de valores atípicos.

  • group: número total de grupos.

  • names: nombres de cada grupo.

Finalmente, se puede recrear el mismo boxplot (res) con la función bxp().

bxp(res)

Podemos agregar puntos representando a los datos

boxplot(peso ~ genero,                                                       
        data = df,                                         # Dataframe de origen
        col = "white")                                     # Color del fondo de las cajas

stripchart(peso ~ genero,                                  # Equivalente
           data = df,
           vertical = TRUE,                                # Diagrama vertical
           method = "jitter",                              # Evita dibujar los datos atípicos. Distribuye aleatoriamente los puntos
           pch = 19,                                       # Tipo de símbolo
           add = TRUE,                                     # Superpone el stripchart al diagrama de caja y bigotes
           col = "red")                                    # Color del símbolo

Gráfico de violín con datos de dos grupos en lados diferentes. Primero, extraemos las dos variables:

borrame <- df[  , c(1,4)]

A continuación se dividen los datos en dos grupos

subset_masculino <- borrame[borrame$genero == "Masculino",  ]
subset_femenino <- borrame[borrame$genero == "Femenino",  ]
library("vioplot")

vioplot(subset_masculino,
        plotCentre = "line",                               # Mediana con una línea
        side = "right",                                    # Lado derecho
        col = "#5773CC",
        xlab = "Géneros",  
        ylim = c(60, 120))                                  # Color del lado derecho
vioplot(subset_femenino,
        plotCentre = "line",                               # Mediana con una línea
        side = "left",                                     # Lado izquierdo
        col = "#FFB900",                                   # Color del lado izquierdo
        add = TRUE)                                        # Sobre el gráfico anterior

legend("topleft",
       legend = c("Masculino", "Femenino"),
       fill = c("#5773CC", "#FFB900"))

2.2.2 Suposición 1: ¿Son las dos muestras independientes?

Sí, ya que se supone que hombres y mujeres poseen diferente configuración corporal.

2.2.3 Suposición 2: ¿Los datos de cada uno de los 2 grupos siguen una distribución normal?

Para ello utilizaremos la prueba de normalidad de Shapiro-Wilk. En esta prueba:

  • Hipótesis nula H0: los datos se distribuyen normalmente

  • Hipótesis alternativa H1: los datos no se distribuyen normalmente

Por lo tanto

  • Si el valor-p es inferior a α =.05, rechazamos la hipótesis nula/aceptamos la hipótesis alternativa: la variable no sigue una distribución normal.

  • Si el valor-p es superior a α =.05, aceptamos la hipótesis nula: la variable sigue una distribución normal.

Para calcular la prueba de Shapiro-Wilks para cada grupo de muestras se concatenerán las funciones with() y shapiro.test().

with(df, shapiro.test(peso[genero == "Masculino"]))                     
with(df, shapiro.test(peso[genero == "Femenino"]))               

También podemos confirmar los resultados del test elaborando un histograma para observar si los datos se distribuyen normalmente:

par(mfrow = c(1, 2))

with(df, hist(peso[genero == "Masculino"], main= "Masculino", col='steelblue'))
with(df, hist(peso[genero == "Femenino"], main= "Masculino", col='steelblue'))  

par(mfrow = c(1, 1))

Si los datos no se distribuyen normalmente, es posible optar por

  • La prueba de rango Wilcoxon (no paramétrica).

  • Proceder a una de las siguientes transformaciones para que la variable de respuesta se acerque a una distribución normal.

    • Transformación logarítmica de la variable respuesta mediante la función log(y).

    • Transformación calculando la raíz cuadrada de la variable respuesta √y.

    • Transformación en la raíz cúbica.

2.2.4 Suposición 3: tienen las dos muestras la misma varianza?

Para ello se usa la prueba F mediante la función var.test(). Las hipótesis nula y alternativa son las siguientes:

  • Hipótesis nula H0: las varianzas de ambas variables son iguales.

  • Hipótesis alternativa H1: las varianzas de ambas variables son diferentes.

Por lo tanto:

  • Si el valor de p es inferior a α =..05, se rechaza la hipótesis nula/aceptamos la alternativa: las varianzas de ambas variables no son igulaes.

  • Si el valor de p es superior a α =..05, aceptamos la hipótesis nula: las varianzas de ambas variables son iguales.

res.ftest <- var.test(peso ~ genero, 
                      data = df)
res.ftest

La interpretación de esos resultados es la siguiente

F: el valor del estadístico F, en este caso 1,0953.

num df, denom df: grados de libertad del numerador (57) y del denominador (41) para el estadístico F, calculados como \(n_1-1\) \(n_2-1\), respectivamente.

p-value: valor-p que corresponde a un valor de F de 1,0953 con 57 (numerador) y 41 (denominador) grados de libertad, que es 0,7672.

95 percent confidence interval: el intervalo de confianza al 95% correspondiente a la ratio entre las varianzas de ambos grupos[.6082483, 1.9193511]. Dado que la ratio (1.095283) se encuetnra dentro de este intervalo, es probable que el ratio sea verdadero, o sea, que las varianzas sean iguales.

sample estimates: representa la relación de varianzas entre cada grupo. Si calculáramos las varianzas de ambos grupos y las dividiéramos entre sí, la relación de varianzas debería ser 1.095283.

El valor p de la prueba F es 1,0953, con un p-value de 0.7672; este valor superior al valor crítico correspondiente a un nivel de significación α =0.05. En consecuencia, aceptamos la hipótesis nula: las varianzas de ambos conjuntos de datos son iguales.

2.2.5 Elección de pruebas unilaterales o bilaterales.

Si la Hipótesis nula H0 supone que las dos variables bajo análisis tienen igual media, la hipótesis alternativa puede tener 3 posibilidades:

  • Hipótesis alternativa H1 (dos colas): las medias de ambas variables no son iguales.

  • Hipótesis alternativa H1 (una cola-izquierda): la media de la variable 1 es menor que la media de la variable 2.

  • Hipótesis alternativa H1 (una cola-derecha): la media de la variable 1 es mayor que la media de la variable 2.

¿Cuándo elegir “two.sided” (default), “greater” or “less”?

  • Pruebas bilaterales o de dos colas. Una prueba de dos colas se asocia a una hipótesis alternativa para la cual se desconoce el signo de la potencial diferencia. Por ejemplo, deseamos comparar las medias de dos muestras A y B, pero no sabemos si A debería ser superior a B o a la inversa. Esto nos lleva a elegir una prueba de dos colas, asociada a la siguiente hipótesis alternativa: H1: media(A) ≠ media(B). Las pruebas de dos colas son con diferencia las más utilizadas.

  • Pruebas unilaterales o de una cola. Una prueba de una cola normalmente está asociada a una hipótesis alternativa para la cual se conoce el signo de la potencial diferencia antes de ejecutar el experimento y la prueba. En el ejemplo descrito más arriba, la hipótesis alternativa referida a una prueba de una cola podría redactarse así: media(A) < media(B) o media(A) > media(B).

2.3 Cálculo de la prueba t para dos muestras independientes.

Para realizar la prueba t comparando las medias de dos muestras independientes, la función R t.test() se usa de la siguiente manera:

t.test(x, y, alternative = “two.sided”, mu=0, paired = FALSE, var.equal = FALSE, conf.level=0.95)

En este caso

  • x,y: vectores numéricos

  • alternative: La hipótesis alternativa. El valor permitido es uno de “two.sided” (default), “greater” or “less”.

  • var.equal: variable lógica que indica si se deben tratar las dos varianzas como iguales. Si es VERDADERO, entonces la varianza agrupada se utiliza para estimar la varianza, de lo contrario se utiliza la prueba de Welch.

  • mu: valor que se asume es la verdadera diferencia en la media.

  • paired: si se uso o no la prueba t-test por pares.

  • conf.level: el nivel de confianza para usar la prueba.

La aplicación de la prueba responderá a la cuestión ¿hay diferencias significativas en el peso de hombres y mujeres?

res <- t.test(peso ~ genero, 
              data = df, 
              var.equal = TRUE)
res

La salida consta de los siguientes elementos:

  • t: valor del estadístico t (t = 0.66771).

  • df: grados de libertad (df = 98).

  • p-value: nivel de significación de la prueba t (p-value = 0.5059).

  • conf.int: intervalo de confianza de la media con una probabilidad del 95% (conf.int = [-2.862956 5.766466]).

  • sample estimate: promedios de los dos grupos sometidos a comparación (caso de un test independiente) o la diferencia en las medias (caso de un test pareado).

En consecuencia, si las hipótesis nula y alternativa son:

  • H0: µ1 = µ2 (las medias son iguales).

  • HA: µ1 ≠µ2 (las medias no son iguales).

Entonces

  • Si el valor de p es inferior a 0.05 se rechaza la hipótesis nula/acepta la hipótesis alternativa: las medias de ambas variables no son iguales.

  • Si el valor de p es mayor que 0.05 se acepta la hipótesis nula: las medias de ambas variables son iguales.

Al crear un objeto denominado res podemos acceder a cada elemento de la salida por separado:

res$p.value                                    # valor p
res$estimate                                   # promedios
res$conf.int                                   # intervalo de confianza

En caso de que los resultados ofrecieran una diferencia significativa, también se podría analizar si el peso de los hombres es superior al de las mujeres o viceversa.

  • El peso de los hombres es inferior al de las mujeres:
t.test(peso ~ genero, data = df,
        var.equal = TRUE, alternative = "less")
  • El peso de los hombres es superior al de las mujeres:
t.test(peso ~ genero, data = df,
        var.equal = TRUE, alternative = "greater")

Pregunta 2: Aplica la prueba t al análisis de la relación entre la superficie según el parque esté o no en obras. Para ello:

  • Comprueba si la variable obras es un factor o no. Si no lo es, conviértela en factor.
zonas_verdes$obras <- factor(zonas_verdes$obras, 
                             levels = c(0,1),
                             labels = c("Sin obras", "Con obras"))
  • Elabora un gráfico de caja y bigotes
boxplot(superficie ~ obras,
        zonas_verdes,
        notch = TRUE)
abline(h = mean(zonas_verdes$superficie), col = 2, lwd = 2)                               # Añade el valor medio
  • ¿Siguen los dos grupos (con y sin obras) distribución normal?.
with(zonas_verdes, shapiro.test(superficie[obras == "Sin obras"]))                     
with(zonas_verdes, shapiro.test(superficie[obras == "Con obras"]))               
  • Comprueba si tienen las mismas varianzas.
var.test(superficie ~ obras, 
        data = zonas_verdes)
  • ¿Hay diferencias significativas en la superficie de los jardines con y sin obras?
t.test(superficie ~ obras, 
      data = zonas_verdes, 
      var.equal = TRUE)
  • ¿Es la superficie de los jardines con obras mayor que la de los jardines sin obras?
t.test(superficie ~ obras, 
      data = zonas_verdes,
      var.equal = TRUE, 
      alternative = "greater")

2.3.1 Prueba de Wilcoxon de dos muestras independientes

Es conocida también como prueba de la suma de rangos de Wilcoxon o prueba de Mann-Whitney. Es la alternativa no paramétrica a la prueba t de dos muestras no pareada, y se usa para comparar dos grupos independientes de datos cuando éstos no se distribuyen normalmente. La idea que subyace es que si las dos muestras comparadas proceden de la misma población, al juntar todas las observaciones y ordenarlas de menor a mayor, cabría esperar que las observaciones de una y otra muestra estuviesen intercaladas aleatoriamente. Por lo contrario, si una de las muestras pertenece a una población con valores mayores o menores que la otra población, al ordenar las observaciones, estas tenderán a agruparse de modo que las de una muestra queden por encima de las de la otra.

wilcox.test(x, y, alternative = “two.sided”)

donde:

  • x,y: vectores numéricos.

  • alternative: hipótesis alternativa, siendo los valores permitidos “two.sided” (default), “greater” or “less”.

Las hipótesis nula y alternativa se enuncian así:

  • Hipótesis nula H0: los rangos de ambas poblaciones son iguales.

  • Hipótesis alternativa Ha: los rangos de ambas poblaciones no son iguales.

Por lo tanto

  • Si el valor de p es inferior a α =.05, se rechaza la hipótesis nula/acepta la hipótesis alternativa: las medias de ambas variables no son iguales.

  • Si el valor de p es mayor a α =.05, se acepta la hipótesis nula: las medias de ambas variables son iguales.

Para realizarlo

res <- wilcox.test(peso ~ genero, 
                   data = df)
res

Si queremos imprimir sólo el valor p:

res$p.value

El valor p de la prueba es 0.5138, mayor que el nivel de significación alfa = 0,05. Se acepta la hipótesis nula: el peso medio de los hombres no es significativamente diferente del peso de las mujeres (el tamaño medio no es igual).

También es posible replicar si el peso medio de los hombres es menor que el de las mujeres:

wilcox.test(peso ~ genero, data = df, 
        alternative = "less")

O la opción contraria:

wilcox.test(peso ~ genero, data = df,
        alternative = "greater")

Pregunta 3: repite, ahora aplicando el test de Wilcoxon, el análisis de la relación entre la superficie según el parque esté o no en obras.

wilcox.test(superficie ~ obras, 
            data = zonas_verdes)
rm(res, res.ftest, subset_femenino, subset_masculino, borrame)

2.4 Comparación de las medias de dos grupos por parejas (prueba t para muestras relacionadas)

La prueba t para muestras relacionadas, también conocida como de muestras dependientes, se utiliza para comparar las medias de dos grupos dependientes. En una muestra pareada (muestra dependiente) los valores medidos están disponibles por pares. Los pares se crean, por ejemplo, mediante mediciones repetidas en las mismas personas. Las muestras independientes (muestra no pareada) son el resultado de personas y mediciones independientes entre sí.

Prueba t Fuente: DataLab (https://datatab.es/tutorial/t-test)

Como ejemplo de un conjunto de datos que se puede someter a un análisis por grupos pareados, supongamos que en una localidad se instala una nueva industria potencialmente contaminante. Para determinar si su actividad afecta a la calidad del agua, se midió la concentración de un determinado contaminante en el agua durante las 10 semanas anteriores al comienzo de la actividad y durante las 10 semanas posteriores. Los datos son los siguientes:

antes <- c(200.1, 190.9, 192.7, 213, 241.4, 196.9, 172.2, 185.5, 205.2, 193.7)
despues <- c(392.9, 393.2, 345.1, 393, 434, 427.9, 422, 383.9, 392.3, 352.2)

A partir de ellos se crea un nuevo dataframe, que comprende una variable cualitativa (grupo) y una variable cuantitativa (concentración).

nuevos_datos <- data.frame( 
                grupo = rep(c("antes", "despues"), each = 10),
                concentracion = c(antes,  despues))

rm(antes, despues)

La función de R para llevar a cabo una prueba t comparando las medias de dos parejas de grupos es la siguiente:

t.test(x, y, paired = TRUE, alternative = “two.sided”)

en la que

  • x,y: son los dos grupos.

  • paired: una valor lógico que indica (TRUE) que se desea una prueba pareada.

  • alternative: la hipótesis alternativa con tres posibilidades: “two.sided” (por defecto), “greater” or “less”.

Con estos datos podemos calcular unos estadísticos básicos:

promedio <- aggregate(concentracion ~ grupo, 
                      data = nuevos_datos, 
                      FUN = mean)
colnames(promedio) <- c("Grupo", "Media")
promedio

Al igual que ocurre en el caso de las muestras independientes, es necesario comprobar las mismas asumpciones, pero en este caso serán omitidas. Para realizar la prueba t para muestras pareadas:

res <- t.test(concentracion ~ grupo, 
              data = nuevos_datos, 
              paired = TRUE)

Los componentes del cuadro superior son idénticos al obtenido al analizar muestras independientes:

  • t: el valor del estadístico t (t = 20.88).

  • df: los grados de libertad (df= 9).

  • p-value: el nivel de significación de la prueba t obtenido (p-value = 6.210^{-9}).

  • conf.int: el intervalo de confianza de la media de las diferencias con un nivel de significación del 95% (173.42, 215.56).

  • sample estimates: la media de las diferencias entre las parejas (mean = 194.49).

El valor de p de la prueba \(6.2*10^{-9}\) es menor que el nivel de significación (alpha = 0.05). Por lo tanto, podemos rechazar la hipótesis nula y concluir que el valor medio de la concentración de ese contaminante después de la instalación de la empresa fue diferente de su valor medio antes de su instalación.

También es posible acceder a los elementos de esta lista por separado

res$p.value                         
res$estimate
res$conf.int

Si quisiéramos averiguar si la concentración antes es inferior a la concentración después utilizaríamos la siguiente sintaxis:

t.test(concentracion ~ grupo, 
       data = nuevos_datos, 
       paired = TRUE,
       alternative = "less")

Alternativamente, si lo que se quiere es si fue mayor antes que después:

t.test(concentracion ~ grupo, 
       data = nuevos_datos, 
       paired = TRUE,
       alternative = "greater")

El fichero calidad_aire_covid.csv contiene los valores medios mensuales de varios contaminantes en varias localidades de Cantabria durante los años 2019 y 2020. Dado que en este último año, a causa de la epidemia de COVID, se produjeron periodos de confinamiento, es posible que la ausencia de actividad haya afectado a los niveles de los contaminantes. Cada alumno deberá elegir una localidad y comparar los niveles medios de esos contaminantes entre 2019 y 2020.

original <- read.csv2("C:/Users/docencia/Downloads/Estadistica_2023/TEMA_3/calidad_aire_covid.csv")

datos <- subset(original,
                site == "TETUAN" & contaminante == "no2")

media <- aggregate(valor ~ grupo, 
                   data = datos, 
                   FUN = mean)
colnames(media) <- c("Grupo", "Media")
media

boxplot(valor ~ grupo,
        datos,
        notch = TRUE)
abline(h = mean(datos$valor), col = 2, lwd = 2) 

t.test(valor ~ grupo, 
      data = datos, 
      paired = TRUE)

2.4.1 Test de Wilcoxon

Respecto a la aplicación del test de Wilcoxon, en este caso debe incluirse el argumento paired = TRUE en la sintaxis ya conocida de esta prueba:

wilcox.test(x, y, paired = TRUE, alternative = “two.sided”)

  • x, y: los valores a comparar.

  • paired: valor lógico especificando que se quiere realizar un test pareado.

  • alternative: la hipótesis alternativa con tres posibles valores: “two.sided” (default), “greater” or “less”.

Como ejemplo

res <- wilcox.test(concentracion ~ grupo, 
                   data = nuevos_datos, 
                   paired = TRUE)

El valor p de la prueba es 0.001953, menor que el nivel de significación (alpha = 0.05). En consecuencia, la mediana de la concentración antes de la instalación de la empresa fue significativamente diferente de la concentración después de la instalación.

rm(nuevos_datos, promedio, res)

3 COMPARACIÓN DE LAS MEDIAS DE MÁS DE DOS GRUPOS

3.1 Análisis de varianza (ANOVA):

Para comparar las medias de dos o más grupos se utiliza el Análisis de varianza, conocido como ANOVA.

3.1.1 Prueba One-Way ANOVA

El análisis de varianza unidireccional (one-way ANOVA), también conocido como ANOVA de un factor, es una extensión de la prueba t de dos muestras independientes. Se utiliza para determinar si existe o no una diferencia estadísticamente significativa entre las medias de tres o más grupos independientes. Este tipo de prueba se llama ANOVA unidireccional porque estamos analizando cómo una variable predictora impacta una variable de respuesta.

####¿Cuáles son las hipótesis de prueba de ANOVA?

  • Hipótesis nula H0: los promedios de todas las variables es igual.

  • Hipótesis alternativa H1: al menos el promedio de una variable es diferentes al de las restantes

Por lo tanto

  • Si el valor de p es inferior a 0.05 se rechaza la hipótesis nula/acepta la hipótesis alternativa: la media de una variable es diferente de las restantes (no es igual).

  • Si el valor de p es mayor a 0.05, se acepta la hipótesis nula: las medias de todas las variables son iguales.

En el ejemplo que trabajaremos a continuación, se analizará si el nivel de uso de móvil tiene relación con el peso de los alumnos.

3.1.1.1 ¿Cómo funciona la prueba ANOVA unidireccional?

  • Calcular la varianza común, que se denomina varianza (\(S2_{dentro}\)) de las muestras o varianza residual.

  • Calcular la varianza entre las medias muestrales de la siguiente manera:

    • Calcular la media de cada grupo

    • Calcular la varianza entre medias muestrales (\(S2_{entre}\)).

  • Calcular el estadístico F como la relación de \(S2{entre}\)/\(S2{dentro}\).

3.1.1.2 Pasos iniciales

Es conveniente iniciar el análisis calculando estadísticos de resumen por grupos: número de casos, media, desviación típica etc…

aggregate(peso ~ uso_movil_let, data = df, length)
aggregate(peso ~ uso_movil_let, data = df, mean)

Igualmente, es conveniente visualizar los datos.

boxplot(peso ~ uso_movil_let, 
        data = df) 

3.1.1.3 Implementación de la prueba ANOVA unidireccional

Para comprobar si existe alguna diferencia significativa entre el valor promedio en cada categoría se usa la función aov(). El resultado no es la tabla del ANOVA, ya que para obtenerla hay que aplicar la función summary al resultado de aov.

res.aov <- aov(peso ~ uso_movil_let, 
               data = df)                 

summary(res.aov)                                               

En una tabla ANOVA:

  • En la primera columna, dos etiquetas: el nombre del factor, en este caso uso_movil_let, y Residuals, que representa los errores o residuos del ANOVA.

  • La segunda columna, etiquetada Df, proporciona los grados de libertad correspondientes al factor (su número de niveles menos 1) y a los residuos (el número de individuos en la tabla, menos el número de niveles del factor).

  • La tercera columna, Sum Sq, muestra las sumas de los cuadrados del factor, \(SS_{Tr}\), y de los residuos, \(SS_E\).

  • La cuarta columna, Mean Sq, contiene las medias de los cuadrados del factor, \(MS_{Tr}\), y de los residuos, \(MS_E\).

  • La quinta columna, F value, nos da el valor del estadístico de contraste.

  • En la sexta columna, **Pr(>F)*, aparece el p-valor del contraste.

  • La séptima columna, sin etiqueta, indica el nivel de significación del p-valor según el código usual, explicado en la última línea del resultado. A mayor número de asteriscos, más significativo es el p-valor y por lo tanto es más fuerte la evidencia de que las medias comparadas no son todas iguales.

3.1.1.4 ¿Cómo interpretamos el resultado de la prueba one-way ANOVA?

Como el valor- p es mayor que el nivel de significación 0,05, se acepta la hipótesis nula: los promedios de la variable peso son iguales para cada categoría de la variable uso de móvil. En consecuencia, no existen diferencias significativas entre los grupos resaltados con “*” en el resumen del modelo.

Pero debe tenerse en cuenta que este resultado no significa que se haya obtenido evidencia de que cada categoría es significativamente diferente de las restantes. Para ello es necesario realizar comparaciones por pares, determinando si la diferencia media entre pares específicos de grupos es estadísticamente significativa.

Una posibilidad es la prueba HSD de Tukey. La función TukeyHD() toma como argumento el ANOVA ajustado.

TukeyHSD(res.aov)

Este procedimiento proporciona una tabla con las siguientes columnas:

  • diff: diferencias entre las medias de cada pareja de grupos.

  • lwr, upr: valor más bajo/más alto del intervalo de confianza al 95 % (por defecto)

  • p adj: valor-p después del ajuste para comparaciones múltiples.

De acuerdo con esta tabla, las diferencias entre las medias de los pares de categorías no son estadísticamente significativas, ya que el valor-p ajustado es superior a 0.05.

Otra posibilidad es usar la función glht(), incluida en el paquete multcomp. La sintaxis es la siguiente:

glht(model, lincft)

  • model: modelo ANOVA, por ejemplo un objeto obtenido tras aplicar la función aov().

  • lincft: especificación de las hipótesis lineales a ser probadas. Las comparaciones múltiples en los modelos ANOVA se especifican mediante objetos devueltos por la función mcp().

library(multcomp)

summary(glht(res.aov, 
             linfct = mcp(uso_movil_let = "Tukey")))

Obsérvese que los resultados son iguales, aunque tabla es algo diferente, ya que, además de la probabilidad (Pr(>|t|)), incluye el valor de la prueba t en cada pareja, el error típico etc…

Por último, la función pairewise.t.test() también puede usarse para calcular comparaciones pareadas entre los niveles de los grupos con diferentes correcciones.

pairwise.t.test(df$edad, 
                df$uso_movil_let,
                 p.adjust.method = "BH")

El resultado es una tabla de valores p ajustados por el método “Benjamini-Hochberg”.

Al igual que ocurría con la prueba t, la prueba ANOVA se puede aplicar solo cuando:

  • Las observaciones son obtenidas de manera independiente y aleatoriamente de una población definida por una serie de grupos.

  • Los datos de cada categoría o grupo poseen una distribución normal.

  • Estas poblaciones tienen una varianza similar (para comprobarlo se utiliza el test de Levene).

3.1.1.4.1 Los datos de cada nivel de factor se distribuyen normalmente.

Para verificar si los datos se distribuyen normalmente, se puede realizar un gráfico de normalidad de los residuos, en el que se representan los cuantiles de los residuos frente a los cuantiles de la distribución normal, acompañada de una línea de referencia. Los residuos deben seguir aproximadamente una línea recta, superpuesta a la línea de referencia.

plot(res.aov, 2)

Esa conclusión puede reforzarse aplicando la prueba de Shapiro-Wilk test a esos mismos resíduos:

aov_residuals <- residuals(res.aov )

shapiro.test(x = aov_residuals )

El valor-p es claramente inferior a 0.05, por lo que la variable analizada no tiene una distribución normal (supuesto de normalidad).

3.1.1.4.2 Las poblaciones normales tienen una varianza común.

La gráfica de residuos versus valores ajustados se puede usar para verificar la homogeneidad de las varianzas.

plot(res.aov, 1)

En ese gráfico no se observan relaciones evidentes entre los residuos y los valores ajustados (la media de cada grupo), por lo que es posible asumir la homogeneidad de las varianzas. No obstante, algunos casos (viviendas) son considerados “outliers”, lo cual podría explicar la ausencia de normalidad y afectar a la homogeneidad de varianza de los datos. En estos casos, es recomendable eliminar esos outliers.

También es posible utilizar la prueba de Bartlett o la prueba de Levene para verificar la homogeneidad de las varianzas. El último es más recomendable, ya que es menos sensible a las desviaciones de la distribución normal.

El test plantea las siguientes hipótesis

  • Hipótesis nula (H0): las varianzas entre los grupos son iguales.

  • Hipótesis alternativa (HA): la varianzas entre los grupos no son iguales.

Por consiguiente,

  • Si el valor-p es inferior a 0.05 se rechaza la hipótesis nula/acepta la hipótesis alternativa: las varianzas de los grupos no son iguales.

  • Si el valor-p es mayor a 0.05, se acepta la hipótesis nula: las varianzas de los grupos son iguales.

En R existe la función leveneTest() del paquete car.

library(car)

leveneTest(peso ~ uso_movil_let, 
           data = df)

Del resultado anterior podemos ver que el valor p es mayor que el nivel de significanción de 0.05. Esto significa que no hay evidencia que sugiera que la varianza entre los grupos sea significativamente diferente desde el punto de vista estadístico. Por lo tanto, podemos asumir la homogeneidad de las varianzas en los diferentes grupos o categorías.

3.1.1.5 ¿Podemos realizar la prueba ANOVA cuando se viola el supuesto de homogeneidad de varianza?

3.1.1.5.1 Prueba de Welch.

Sí. Una posibilidad es aplicar un procedimiento alternativo (es decir: prueba unidireccional de Welch), que no requiere que se haya implementado esa suposición en la función oneway.test().

oneway.test(peso ~ uso_movil_let, 
            data = df)

De nuevo se confirma la existencia de diferencias signficativas, incluso no asumiendo varianzas iguales.

Otra alternativa es un Pairwise t-tests

pairwise.t.test(df$peso, 
                df$uso_movil_let,
                 p.adjust.method = "BH", 
                pool.sd = FALSE)
3.1.1.5.2 Prueba de Kruskall-Wallis

Otra posibilidad es utilizar una alternativa no-paramétrica, la prueba de Kruskal-Wallis (KW rank sum test). Esta prueba usa las siguientes hipótesis nula y alternativa:

  • Hipótesis nula (H0): el valor de la mediana es igual entre todos los grupos.

  • Hipótesis alternativa (H1): el valor de la mediana no es igual entre todos los grupos.

Por lo tanto

  • Si el valor de p es inferior a 0.05 se rechaza la hipótesis nula/acepta la hipótesis alternativa: al menos un grupo tiene una mediana cuyo valor no es igual al de los otros grupos.

  • Si el valor de p es mayor que 0.05 se acepta la hipótesis nual: el valor de la mediana es igual entre los grupos.

kruskal.test(peso ~ uso_movil_let, 
             data = df)
rm(res.aov, aov_residuals)

Pregunta 4: repite, ahora aplicando el test de Wilcoxon, el análisis de la relación entre la superficie según el parque esté o no en obras.

res <- wilcox.test(superficie ~ obras, data = zonas_verdes)
res

3.1.2 Two-Way ANOVA Test in R

La prueba ANOVA bidireccional se usa para evaluar simultáneamente el efecto de dos variables de agrupación (dos variables cualitativas A y B) sobre una variable respuesta (variable cuantitativa). Las variables de agrupación también se conocen como factores, mientras que sus diferentes categorías (grupos) se denominan niveles. El número de niveles puede variar entre factores. Las combinaciones de niveles de factores se denominan celdas.

  • Cuando los tamaños de muestra dentro de las celdas son iguales, tenemos el llamado diseño “equilibrado”. En este caso, se puede aplicar la prueba ANOVA estándar bidireccional.

  • Cuando los tamaños de muestra dentro de cada nivel de las variables independientes no son los mismos (caso de diseños no equilibrados), la prueba ANOVA debe manejarse de manera diferente.

3.1.2.1 Hipótesis prueba ANOVA bidireccional.

Las hipótesis nula son las siguientes:

  • No hay diferencia en las medias del factor A

  • No hay diferencia en las medias del factor B

  • No hay interacción entre los factores A y B

La hipótesis alternativa para los casos 1 y 2 es: las medias no son iguales.

La hipótesis alternativa para el caso 3 es: hay una interacción entre A y B.

3.1.2.2 Supuestos de la prueba ANOVA de dos vías

La prueba ANOVA bidireccional, como todas las pruebas de ANOVA, asume que las observaciones dentro de cada celda se distribuyen normalmente y tienen varianzas iguales.

Para el siguiente ejercicio seleccionaremos del conjunto de datos original uno nuevo consistente en 3 variables, 2 cualitativas (uso_movil_let y genero) y una cuantitativa (edad).

nuevos_datos <- subset(df, 
                       select=c("uso_movil_let","genero", "edad")) 

El objetivo de este ejercicio consiste en saber si el precio de una vivienda está condicionado por la inclusión en ella de una terraza y un garaje.

3.1.2.2.1 Prueba ANOVA bidireccional para diseños equilibrados

Los diseños equilibrados corresponden a la situación en la que tenemos tamaños de muestra iguales dentro de los niveles de nuestros niveles de agrupación independientes.

3.1.2.3 Análisis inicial de los datos

Una primera posibilidad es la creación de una tabla de frecuencias para conocer la distribución de los datos.

table(nuevos_datos$uso_movil_let, nuevos_datos$edad)

En segundo lugar, se puede representar la dispersión de los datos en un gráfico de caja y bigotes en los que aparezcan los datos agrupados según los niveles de las dos variables cualitativas.

boxplot(edad ~ uso_movil_let * genero, 
        data=nuevos_datos, 
        frame = FALSE, 
        col = c("#00AFBB", "#E7B800"), 
        horizontal = TRUE, 
        las = 2)

En tercer lugar, también se puede aplicar un gráfico denominado de “interacción bidireccional”, que representa la media (u otro estadístico similar) de la variable respuesta para combinaciones bidireccionales de factores, ilustrando las posibles interacciones. En este gráfico se representa la variable cuantitativa según grupos de una de las dos variables cualitativas, al tiempo que se colorea de acuerdo a la segunda variable cualitativa.

interaction.plot(x.factor = nuevos_datos$uso_movil_let,               # Factor representado en el eje x.
                 trace.factor = nuevos_datos$genero,            # Factor representado como líneas.
                 response = nuevos_datos$edad,                # Variable cuantitativa.
                 fun = mean, 
                 type = "b",                                    # p representa sólo puntos, l líneas y b ambos.
                 legend = TRUE, 
                 xlab = "Terraza", 
                 ylab="Precio en euros",
                 pch=c(1,19), 
                 col = c("#00AFBB", "#E7B800"))

3.1.2.4 ANOVA bidireccional

Como ha sido señalado previamente, se quiere saber si la variable cuantitativa depende de los valores que tomen las variables cualitativas. La función aov() sirve para este propósito, mientras que la función summary.aov()resumen el modelo.

res.aov2 <- aov(edad ~ uso_movil_let + genero, 
                data = nuevos_datos)
summary(res.aov2)

La salida incluye las columnas F value y Pr(>F correspondientes al valor p de la prueba.

De la tabla ANOVA podemos concluir que el uso de móvil no tiene efecto sobre el peso, pero sí el género.

ANOVA bidireccional con efecto de interacción. En el análisis anterior, se considera que el efecto de ambas variables cualitativas es independiente (modelo aditivo), que debe utilizarse si se estima que no existe interacción entre esas variables. Si esas dos variables podrían interactuar creando un efecto sinérgico, debe reemplazarse el símbolo más (+) por un asterisco (*)

res.aov3 <- aov(edad ~ uso_movil_let * genero, 
                data = nuevos_datos)
summary(res.aov3)

A partir de los resultados del cuadro superior, se puede concluir que, a partir de los valores p y para un nivel de significación de 0,05:

  • el valor p de uso_movil_let es 0.87709 (no significativo), lo que indica que los niveles de esta variable no están asociados al peso. significativamente diferentes.

  • el valor p de genero es 0.00716 (significativo), lo que indica que los niveles de esta variable sí están asociados con el peso.

  • el valor p para la interacción entre uso_movil_let y genero es 0.34962 (no significativo), lo que indica que las relaciones entre el peso y el uso de móvil y el género no interactúan.

3.1.2.5 Cálculo de algunos estadísticos de resumen

También es posible usar la función model.tables() de la siguiente manera:

model.tables(res.aov3, type="means", se = TRUE)

Obsérvese que el programa envía un aviso señalando que Design is unbalanced - use se.contrast() for se's.

3.1.2.6 Comparación múltiple por pares entre las medias de los grupos.

En la prueba ANOVA, un valor p significativo indica que algunas de las medias de los grupos son diferentes, pero no sabemos qué pares de grupos son diferentes. Es posible realizar múltiples comparaciones por pares para determinar si la diferencia media entre pares específicos de grupos es estadísticamente significativa.

** Método de Tukey para realizar múltiples comparaciones por pares**

Como la prueba ANOVA es significativa, podemos calcular el estadístico HSD de Tukey (Diferencias significativas honestas) con la función TukeyHSD() para realizar múltiples comparaciones por pares entre las medias de los grupos. Esta función toma el ANOVA ajustado como argumento. No necesitamos realizar la prueba para la variable “soporte” porque tiene solo dos niveles, que ya se ha demostrado que son significativamente diferentes mediante la prueba ANOVA. Por lo tanto, la prueba Tukey HSD se realizará solo para la variable de factor “genero”.

TukeyHSD(res.aov3, 
         which = "genero")
  • diff: diferencia entre las medias de los dos grupos

  • lwr,upr: los valores inferior y superior del intervalo de confianza al 95 % (predeterminado).

  • p adj: valor de p después del ajuste para las comparaciones múltiples.

Puede verse en la salida que todas las comparaciones por pares son significativas con un valor p ajustado < 0,05.

Comparaciones múltiples utilizando el paquete multcomp

La función glht() (paquete multcomp) realiza múltiples procedimientos de comparación para un ANOVA. El formato simplificado es el siguiente:

  • glht(modelo, lincft)

  • modelo: un modelo ajustado, por ejemplo, un objeto devuelto por aov().

  • lincft(): una especificación de las hipótesis lineales a probar. Las comparaciones múltiples en los modelos ANOVA se especifican mediante objetos devueltos por la función mcp().

library(multcomp)

summary(glht(res.aov3, 
             linfct = mcp(uso_movil_let = "Tukey")))

Prueba t por pares

La función pairwise.t.test() también se puede utilizar para calcular comparaciones por pares entre niveles de grupo con correcciones para pruebas múltiples.

pairwise.t.test(nuevos_datos$edad, 
                nuevos_datos$genero,
                p.adjust.method = "BH")

3.1.2.7 Comprobando los requisitos de ANOVA

ANOVA asume que los datos se distribuyen normalmente y que la varianza entre los grupos es homogénea. Podemos verificar eso con algunas herramientas de diagnóstico.

3.1.2.7.1 Comprobando la homogeneidad de varianzas

La gráfica de residuos versus valores ajustados se utiliza para comprobar la homogeneidad de las varianzas. En el gráfico a continuación, no hay relaciones evidentes entre los residuos y los valores ajustados (la media de cada grupo), lo cual permite suponer la homogeneidad de las varianzas.

plot(res.aov3, 1)

Los puntos 344, 346 y 347 se detectan como valores atípicos, lo que puede afectar gravemente la normalidad y la homogeneidad de la varianza. Puede ser útil eliminar los valores atípicos para cumplir con los supuestos de la prueba.

Use la prueba de Levene para verificar la homogeneidad de las varianzas. Se utilizará la función leveneTest()(paquete cars).

library(car)

leveneTest(edad ~ uso_movil_let * genero, 
           data = nuevos_datos)

Del resultado anterior podemos ver que el valor p no es menor que el nivel de significancia de 0.05. Esto significa que no hay evidencia que sugiera que la varianza entre los grupos sea significativamente diferente desde el punto de vista estadístico. Por lo tanto, podemos asumir la homogeneidad de las varianzas en los diferentes grupos de tratamiento.

3.1.2.7.2 Comprobación de la condición de normalidad

En el siguiente gráfico, los cuantiles de los residuos se representan frente a los cuantiles de la distribución normal. También se traza una línea de referencia de 45 grados. La gráfica de probabilidad normal de residuos se utiliza para verificar la suposición de que los residuos se distribuyen normalmente, que deben seguir aproximadamente una línea recta.

plot(res.aov3, 2)

Como no todos los puntos se sitúan aproximadamente a lo largo de esta línea de referencia, no se cumple la condición de normalidad. La conclusión anterior está respaldada por la prueba de Shapiro-Wilk sobre los residuos de ANOVA (W = 0,98, p = 0,5) que ofrece indicios de que se haya violado la normalidad.

aov_residuals <- residuals(object = res.aov3)                  # Extrae los resíduos
shapiro.test(x = aov_residuals)                               # Ejecuta la prueba de Shapiro-Wilk sobre los residuos

3.1.2.8 Cálculo de la prueba two-way ANOVA para diseños no equilibrados

Un diseño desequilibrado tiene un número desigual de sujetos en cada grupo. Hay tres formas fundamentalmente diferentes de ejecutar un ANOVA bajo estas condiciones y se conocen como sumas de cuadrados tipo I, tipo II y tipo III. Para simplificar las cosas, el método recomendado son las sumas de cuadrados de tipo III. Los tres métodos dan el mismo resultado cuando el diseño está equilibrado, pero en condiciones de desequilibrio no proporcionan los mismos resultados. La función Anova() del paquete car se puede usar para calcular la prueba ANOVA de dos vías para diseños no equilibrados.

library(car)
anova_bis <- aov(edad ~ genero * uso_movil_let, 
                 data = nuevos_datos)
Anova(anova_bis, type = "III")
rm(nuevos_datos, res.aov2, res.aov3, aov_residuals, anova_bis)

3.1.3 MANOVA Test: Multivariate Analysis of Variance

Por último, cuando hay múltiples variables (cuantitativas) de respuesta, puede probarlas simultáneamente usando un análisis de varianza multivariante (MANOVA).

Por ejemplo, en el siguiente ejercicio seleccionaremos 3 variables, 1 cualitativa (genero) y dos cuantitativas (peso y edad).

nuevos_datos <- subset(df, 
                       select=c("genero","peso", "edad")) 

MANOVA se utilizar bajo ciertos supuestos:

  • Las variables dependientes deben distribuirse normalmente dentro de los grupos.

  • Homogeneidad de las varianzas en toda la gama de predictores.

  • Linealidad entre todos los pares de variables dependientes, todos los pares de covariables y todos los pares de variables dependientes-covariables en cada celda

3.1.3.1 Interpretación de MANOVA

Si la prueba multivariante global es significativa, concluimos que el efecto correspondiente (tratamiento) es significativo. En ese caso, la siguiente pregunta es determinar si el tratamiento afecta solo el peso, solo la altura o ambos. En otras palabras, queremos identificar las variables dependientes específicas que contribuyeron al efecto global significativo.

res.manova <- manova(cbind(peso, edad) ~ genero, 
                     data = nuevos_datos)
summary(res.manova)

Podemos verificar en qué medida difieren

summary.aov(res.manova)

Del resultado anterior, se puede ver que las dos variables son significativamente diferentes entre las especies.

rm(nuevos_datos, res.manova)

4 COMPARACIÓN DE VARIANZAS

4.1 Comparación de la varianza de dos poblaciones.

Como hemos señalado en el apartado 2.1.4, la prueba F se utiliza para:

  • Verificar la igualdad de las varianzas de las dos muestras.

  • Comparar la variabilidad de un nuevo método de medición con uno antiguo. ¿El nuevo método reduce la variabilidad de la medida?

Las preguntas típicas de investigación son:

  • si la varianza del grupo A (σ2A) es igual a la varianza del grupo B (σ2B)?

  • si la varianza del grupo A (σ2A) es menor que la varianza del grupo B (σ2B)?

  • si la varianza del grupo A (σ2A) es mayor que la varianza del grupo B (σ2B)?

De acuerdo con lo señalado anteriormente, las hipótesis a verificar son

  • Hipótesis nula H0: las varianzas de ambas variables son iguales. Podemos definir la hipótesis nula correspondiente (H0) de la siguiente manera:

    • H0:σ2A=σ2B

    • H0:σ2A≤σ2B

    • H0:σ2A≥σ2B

  • Hipótesis alternativa H1: las varianzas de ambas variables no son iguales. Las hipótesis alternativas correspondientes son las siguientes:

    • Ha:σ2A≠σ2B (diferente)

    • Ha:σ2A>σ2B (mayor)

    • Ha:σ2A<σ2B (menos)

De acuerdo con ello

  • Si el valor de p es inferior a .05, se rechaza la hipótesis nula/aceptamos la alternativa: las varianzas de ambas variables no son igulaes.

  • Si el valor de p es superior a .05, aceptamos la hipótesis nula: las varianzas de ambas variables son iguales.

Tenga en cuenta que:

  • Las hipótesis 1) se denominan pruebas de dos colas

  • Las hipótesis 2) y 3) se denominan pruebas de una cola

La estadística de prueba se puede obtener calculando la razón de las dos varianzas S2A y S2B.

F=S2AS2B

Los grados de libertad son nA−1 (para el numerador) y nB−1 (para el denominador).

Tenga en cuenta que, cuanto más se desvíe esta relación de 1, más fuerte será la evidencia de varianzas poblacionales desiguales. Tenga en cuenta que la prueba F requiere que las dos muestras se distribuyan normalmente. La prueba F es muy sensible a la desviación del supuesto de normalidad, por lo que debe verificarse si los datos se distribuyen normalmente antes de usarla. La prueba de Shapiro-Wilk se puede utilizar para comprobar si se cumple esta suposición, al igual que el gráfico Q-Q (gráfico cuantil-cuantil). Si hay dudas sobre la normalidad, la mejor opción es utilizar la prueba de Levene o la prueba de Fligner-Killeen, menos sensibles a la desviación del supuesto normal.

La función de R var.test() se puede usar para com

res.ftest <- var.test(superficie ~ disponible, 
                      data = datos,
                      alternative = "two.sided")        # Hipótesis alternativa: “two.sided” (por defecto), “greater” o “less”)
res.ftest

La función var.test() devuelve una lista que contiene los siguientes componentes:

  • statistic: el valor del estadístico de la prueba F.

  • parameter: los grados de libertad de la distribución F del estadístico de prueba.

  • p.value: el valor p de la prueba.

  • conf.int: un intervalo de confianza para el cociente de las varianzas de la población.

  • estimar: el cociente de las varianzas de la muestra

Para conseguir estos valores podemos escribir:

res.ftest$estimate
res.ftest$p.value

El valor p de la prueba F es p = 1.078e-05 es menor que el nivel de significancia de 0,05. En conclusión, existe una diferencia significativa entre las dos varianzas.

4.2 Comparación de las varianzas de múltiples muestras

Existen diferentes opciones para probar la igualdad (homogeneidad) de la varianza entre grupos, que incluyen:

  • La prueba F: compara las varianzas de dos muestras.

  • La prueba de Bartlett: compara las varianzas de \(k\) muestras, donde \(k\) puede ser más de dos muestras.

  • La prueba de Levene: compara las varianzas de \(k\) muestras, donde \(k\) puede ser más de dos muestras. Es una alternativa a la prueba de Bartlett que es menos sensible a las desviaciones de la normalidad.

  • La prueba de Fligner-Killeen: prueba no paramétrica muy robusta frente a desviaciones de la normalidad.

Para todas estas pruebas es posible formular las siguientes pruebas estadísticas:

  • La hipótesis nula es que todas las varianzas de las poblaciones son iguales.

  • La hipótesis alternativa es que al menos dos de ellos difieren.

4.2.1 Prueba de Bartlett

La prueba de Bartlett se usa para probar la homogeneidad de las varianzas en varias muestras, y requiere que los datos sigan una distribución normal. La función bartlett.test() tiene la siguiente sintaxis:

bartlett.test(formula, data)

  • formula: una sintaxis en la forma variable cuantitativa ~ variable cualitativa.
  • data: matriz o dataframe a analizar.

La función devuelve una lista que contiene la siguiente información:

  • statistic: estadístico de Bartlett.

  • parameter: grados de libertad de la distribución de chi-cuadrado.

  • p.value: el valor de p de la prueba.

Prueba de Bartlett con una variable independiente

res <- bartlett.test(superficie ~ accesibilidad, data = datos)
res

A partir de la salida de esta función, el valor p de 2.2e-16 es inferior al nivel de significancia de 0,05. Esto significa que hay evidencias que sugiere que el tamaño de las viviendas está relacionado con su accesiblidad desde el punto de vista estadístico.

Prueba de Bartlett con múltiples variables independientes: la función interaction() debe usarse para colapsar múltiples factores en una sola variable que contiene todas las combinaciones de los factores.

bartlett.test(superficie ~ interaction(accesibilidad, terraza), data=datos)

4.2.2 Prueba de Levene

Es una alternativa a la prueba de Bartlett cuando los datos no se distribuyen normalmente. Se puede utilizar la función leveneTest() (en el paquete car).

library(car)

Prueba de Levene con una variable independiente

leveneTest(superficie ~ accesibilidad, data = datos)                     

Prueba de Leven con múltiples variables independientes

leveneTest(superficie ~ accesibilidad*disponible, data = datos)

4.2.3 Prueba de Fligner-Killeen

Es una de las muchas pruebas de homogeneidad de varianzas que es más robusta frente a las desviaciones de la normalidad. La función fligner.test() :

fligner.test(peso ~ accesibilidad, data = datos)
rm(res, res.ftest)

ACTIVIDADES DE EVALUACIÓN CONTINUA

El fichero word 03_Actividad_evaluacion_continua_2_2023 contiene una serie de actividades encaminadas a poner en práctica los conocimientos adquiridos. Cada alumnos deberá elaborar un script que contenga los procedimientos necesarios para responder a las cuestiones planteadas, y enviarlo posteriormente al profesor a través de correo electrónico.

Los resultados de esta actividad pueden consultarse en 03_Actividad_evaluacion_continua_2_2023_resuelta