8  Intervalos de confianza para la comparación de medias y proporciones de dos poblaciones

8.1 Ejercicios Resueltos

Para la realización de esta práctica se requieren los siguientes paquetes:

library(tidyverse)
# Incluye los siguientes paquetes:
# - dplyr: para el preprocesamiento y manipulación de datos.
# - purrr: para aplicar funciones a vectores.
library(broom) # para convertir las listas con los resúmenes de los modelos de regresión a formato organizado.
library(knitr) # para el formateo de tablas.

Ejercicio 8.1 Para ver si una campaña de publicidad sobre un fármaco ha influido en sus ventas, se tomó una muestra de 8 farmacias y se midió el número de unidades de dicho fármaco vendidas durante un mes, antes y después de la campaña, obteniéndose los siguientes resultados:

\[ \begin{array}{|c|c|c|c|c|c|c|c|c|} \hline \mbox{Antes} & 147 & 163 & 121 & 205 & 132 & 190 & 176 & 147 \\ \hline \mbox{Después} & 150 & 171 & 132 & 208 & 141 & 184 & 182 & 145\\ \hline \end{array} \]

  1. Crear un conjunto de datos con los datos de la muestra.

    df <- data.frame(
        antes = c(147, 163, 121, 205, 132, 190, 176, 147),
        despues = c(150, 171, 132, 208, 141, 184, 182, 145))
  2. Calcular las ventas medias antes y después de la campaña de publicidad. ¿Ha aumentado la campaña las ventas medias?, ¿crees que los resultados son estadísticamente significativos?

    ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
    ✔ dplyr     1.1.4     ✔ readr     2.1.5
    ✔ forcats   1.0.0     ✔ stringr   1.5.1
    ✔ ggplot2   3.4.4     ✔ tibble    3.2.1
    ✔ lubridate 1.9.3     ✔ tidyr     1.3.0
    ✔ purrr     1.0.2     
    ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
    ✖ dplyr::filter()     masks stats::filter()
    ✖ dplyr::group_rows() masks kableExtra::group_rows()
    ✖ dplyr::lag()        masks stats::lag()
    ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
    df |> 
        # Calculamos la media de las columnas antes y despues del data frame.
        summarize(across(antes:despues, ~ mean(.x, na.rm = TRUE))) |> 
        # Renombramos los nombres de las columnas del data frame resultante.
        rename(`Ventas medias antes` = antes, `Ventas medias despues` = despues) |> 
        # Mostramos por pantalla en formato tabla.
        kbl()
    Ventas medias antes Ventas medias despues
    160.125 164.125

    A pesar de que las ventas medias después de la campaña de publicidad han aumentado en la muestra, no podemos concluir que las medias poblacionales han aumentado significativamente ya que se trata de estimaciones puntuales que no tienen en cuenta el error en la estimación.

  3. Calcular el intervalo de confianza para la media de la diferencia entre las ventas de después y antes de la campaña de publicidad. ¿Existen pruebas suficientes para afirmar con un \(95\%\) de confianza que la campaña de publicidad ha aumentado las ventas?

    library(broom)
    # Añadimos al data frame una nueva variable con la diferencia entre las ventas de después y antes
    df$incremento <- df$despues - df$antes
    # Aplicamos el test de la t de student para una muestra.
    tidy(t.test(df$incremento)) |> 
        # Obtenemos la estimación de la media de la diferencia entre las ventas de después y antes y el intervalo de confianza del 95%.
        select(estimate, conf.low, conf.high) |> 
        # Mostramos por pantalla en formato tabla.
        kable()
    estimate conf.low conf.high
    4 -0.8129585 8.812959

    Podemos llegar a este mismo intervalo de confianza sin necesitad de calcular previamente la diferencia entre las ventas de después y antes, pasándole directamente las dos variables a comparar a la función t.test añadiendo el parámetro paired = TRUE.

    # Aplicamos el test de la t de student para muestras pareadas.
    tidy(t.test(df$despues, df$antes, paired = TRUE)) |> 
        # Obtenemos la estimación de la media de la diferencia entre las ventas de después y antes y el intervalo de confianza del 95%.
        select(estimate, conf.low, conf.high) |> 
        kable()
    estimate conf.low conf.high
    4 -0.8129585 8.812959

    Como el intervalo contiene tanto valores negativos como positivos, y en particular contiene el 0, no podemos concluir que existen diferencias significativas entre las ventas medias de después y antes, y por tanto no hay pruebas suficientes para afirmar con un \(95\%\) de confianza que la campaña de publicidad es efectiva.

  4. Si añadimos a la muestra dos nuevas farmacia con unas ventas antes de \(155\) y \(160\) unidades y unas ventas después de \(170\) y \(180\) unidades respectivamente, ¿qué efecto tendrán sobre el intervalo de confianza para la media de la diferencia entre las ventas de después y antes de la campaña de publicidad? ¿Podemos afirmar ahora con un \(95\%\) de confianza que la campaña de publicidad ha aumentado las ventas? En tal caso, ¿en cuanto se incrementarán las ventas medias?

    Como las ventas se han incrementado bastante en estas dos nuevas farmacias, la media de la diferencia entre las ventas de después y antes de la campaña de publicidad y el correspondiente intervalo de confianza se desplazará hacia la derecha, es decir, aumentará.

    # Añadimos al data frame los datos de la nueva farmacia.
    df <- rbind(df, c(155, 170, 170-155), c(160, 180, 180 - 160))
    # Volvemos a calcular el intervalo de confianza para la media de la diferencia entre las ventas de después y antes.
    tidy(t.test(df$incremento)) |> 
        select(estimate, conf.low, conf.high) |> 
        kable()
    estimate conf.low conf.high
    6.7 1.178915 12.22108

    Como ahora el intervalo es completamente positivo, podemos afirmar con un \(95\%\) de confianza que la media de la diferencia entre las ventas de después y antes de la campaña de publicidad es positiva, es decir ha habido un incremento estadísticamente significativo de las ventas después de la campaña y el incremento medio estará entre \(1.1789\) y \(12.2211\) unidades más al mes.

Ejercicio 8.2 Una central de productos lácteos recibe diariamente la leche de dos granjas \(X\) e \(Y\). Para analizar la calidad de la leche, durante una temporada, se controla el porcentaje de materia grasa de la leche que proviene de ambas granjas, con los siguientes resultados:

\[ \begin{array}{c|c} X & Y \\ \hline \begin{array}[t]{rr} 3.4 & 3.4 \\ 3.2 & 3.5 \\ 3.3 & 3.3 \\ 3.2 & 3.2 \\ 3.3 & 3.0 \\ 3.1 & 3.2 \\ \end{array} & \begin{array}[t]{rr} 2.8 & 2.9 \\ 3.0 & 3.2 \\ 3.2 & 3.1 \\ 2.9 & 2.9 \\ 3.1 & 3.2 \\ 2.9 & 3.1 \\ 3.3 & 3.2 \\ 3.2 & 3.3 \\ \end{array} \end{array} \]

  1. Crear un conjunto de datos con los datos de la muestra.

    library(tidyverse)
    df <- tibble(
        grasa = c(3.4, 3.2, 3.3, 3.2, 3.3, 3.1, 3.4, 3.5, 3.3, 3.2, 3.0, 3.2, 2.8, 3.0, 3.2, 2.9, 3.1, 2.9, 3.3, 3.2, 2.9, 3.2, 3.1, 2.9, 3.2, 3.1, 3.2, 3.3),
        granja = factor(c(rep("X", 12), rep("Y", 16)))
    )
  2. Calcular el intervalo de confianza para el cociente de varianzas del porcentaje de materia grasa de la leche procedente de ambas granjas. ¿Existen diferencias estadísticamente significativas entre las varianzas de la grasa de las leches de las dos granjas?

    library(broom)
    library(knitr)
    # Aplicamos el test F de Fisher para la comparación de varianzas.
    tidy(var.test(grasa ~ granja, data = df)) |> 
    # Obtenemos la estimación del cociente de varianzas de la grasa de la leche de las granjas y el intervalo de confianza del 95%.
        select(estimate, conf.low, conf.high) |> 
        # Mostramos por pantalla en formato tabla.
        kable()
    estimate conf.low conf.high
    0.7420547 0.2467078 2.470994

    Como el intervalo de confianza contiene el valor \(1\), no podemos afirmar que haya diferencias estadísticamente significativas entre las varianzas del porcentaje de materia grasa de las leches de las dos granjas, y por tanto podemos asumir que la variabilidad es parecida en ambas granjas.

  3. Calcular el intervalo de confianza para la diferencia en el porcentaje medio de materia grasa de la leche procedente de las dos granjas. ¿Se puede concluir que existen diferencias significativas en el porcentaje medio de grasa de la leche de las dos granjas? En tal caso, ¿qué leche tiene mayor porcentaje de grasa?

    # Aplicamos el test de la t de student para muestras independientes con varianzas iguales.
    tidy(t.test(grasa ~ granja, equal.var = TRUE, data = df)) |> 
    # Obtenemos la estimación de la diferencia de las medias de la grasa de la leche de las granjas y el intervalo de confianza del 95%.
        select(estimate, conf.low, conf.high) |> 
        # Mostramos por pantalla en formato tabla.
        kable()
    estimate conf.low conf.high
    0.1770833 0.0609291 0.2932376
    Advertencia

    La función t.test calcula el intervalo de confianza para la diferencia de medias de primer nivel (en este caso \(X\)) y el segundo nivel (en este caso \(Y\)) del factor granja. Si se desea obtener el intervalo para diferencia de medias entre \(Y\) y \(X\) es necesario reordenar los niveles del factor.

    Como el intervalo de confianza es completamente positivo, y por tanto no contiene el \(0\), podemos afirmar con un \(95\%\) de confianza que existen diferencias estadísticamente entre el porcentaje de grasa de ambas granjas. Como además el intervalo es para la diferencia entre las medias del porcentaje de leche de la granja \(X\) y de la granja \(Y\), podemos concluir que el porcentaje medio de grasa de la leche de la granja \(X\) es significativamente mayor que el de la granja \(Y\).

Ejercicio 8.3 El conjunto de datos biblioteca.csv contiene los resultados de una encuesta realizada en una universidad, sobre si el alumnado utiliza habitualmente (al menos una vez a la semana) la biblioteca.

  1. Crear conjunto de datos con los datos de la muestra a partir del fichero biblioteca.csv.

    library(tidyverse)
    df <- read_csv("https://aprendeconalf.es/estadistica-practicas-r/datos/biblioteca.csv")
  2. Calcular el intervalo de confianza para la diferencia entre las proporciones de chicos y chicas que utilizan habitualmente la biblioteca. ¿Existen diferencias significativas entre las proporciones de chicos y chicas que usan habitualmente la biblioteca? En tal caso, ¿quienes utilizan más la biblioteca?

    # Calculamos las frecuencias absolutas y los tamaños muestrales de las muestras de ambos sexos.
    df2 <- df |> 
        group_by(sexo) |> 
        count(respuesta, name = "frec") |> 
        mutate(n = sum(frec)) |> 
        filter(respuesta == "si")
    
    # Aplicamos el test de comparación de proporciones.
    tidy(prop.test(df2$frec, df2$n)) |> 
    # Obtenemos la estimación de la diferencia de las proporciones de chicos y chicas que utilizan habitualmente la biblioteca y el intervalo de confianza del 95%.
        select(estimate1, estimate2, conf.low, conf.high) |> 
        # Mostramos por pantalla en formato tabla.
        kable()
    estimate1 estimate2 conf.low conf.high
    0.1875 0.7222222 -0.8755141 -0.1939304
    Advertencia

    La función prop.test calcula el intervalo de confianza para la diferencia de proporciones de la primera muestra (en este caso chicos) la segunda (en este caso chicas). Si se desea obtener el intervalo para diferencia de proporciones entre chicas y chicos es necesario introducir primero las frecuencias de las chicas.

    Como el intervalo de confianza es completamente negativo, y por tanto no contiene el \(0\), podemos afirmar con un \(95\%\) de confianza que existen diferencias estadísticamente significativas entre la proporción de chicos y chicas que utilizan habitualmente la biblioteca. Como además el intervalo de confianza es para la diferencia entre la proporción de chicos y chicas, se puede concluir que la proporción de chicas que usan habitualmente la biblioteca es significativamente mayor que la de chicos.

Ejercicio 8.4 Un profesor universitario ha tenido dos grupos de clase a lo largo del año: uno con horario de mañana y otro de tarde. En el de mañana, sobre un total de 80 alumnos, han aprobado 55; y en el de tarde, sobre un total de 90 alumnos, han aprobado 32.

  1. ¿Existen diferencias significativas en el porcentaje de aprobados de los dos grupos? En tal caso, ¿en qué turno hay un porcentaje mayor de aprobados y cuánto mayor es?

    # Aplicamos el test de comparación de proporciones.
    tidy(prop.test(c(55, 32), c(80, 90))) |> 
    # Obtenemos la estimación de la diferencia de las proporciones de chicos y chicas que utilizan habitualmente la biblioteca y el intervalo de confianza del 95%.
        select(estimate1, estimate2, conf.low, conf.high) |> 
        # Multiplicamos por 100 todas las columnas para obtener porcentajes.
        mutate(across(everything(), ~ .x * 100)) |> 
        # Mostramos por pantalla en formato tabla.
        kable()
    estimate1 estimate2 conf.low conf.high
    68.75 35.55556 17.83764 48.55125

    Como el intervalo de confianza es completamente positivo, y por tanto no contiene el \(0\), podemos afirmar con un \(95\%\) de confianza que existen diferencias estadísticamente significativas entre el porcentaje de aprobados en los turnos de mañana y tarde. Como además el intervalo de confianza es para la diferencia entre el porcentaje de aprobados en la mañana y el porcentaje de aprobados en la tarde, se puede concluir que la proporción de aprobados en la mañana es significativamente mayor que en la tarde, en particular, entre un \(17.83\%\) y un \(48.55\%\) mayor.

  2. ¿Puede concluirse que las diferencias son debidas al turno horario?

    No puede concluirse que la diferencia entre el porcentaje de aprobados de la mañana y la tarde sea debido al factor horario, ya que las diferencias podrían deberse a otros factores como el tipo de alumnos, el profesor, la metodología, el examen, etc. Para poder concluir que la causa de la diferencia en el porcentaje de aprobados es el turno horario, el resto de factores deberían ser iguales en la mañana y la tarde.