pbinom(0, 10, 0.5)
[1] 0.0009765625
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(tidymodels) # para realizar contrastes de hipótesis en formato tidy.
library(pwr) # para el cálculo de tamaños muestrales.
library(knitr) # para el formateo de tablas.
Ejercicio 9.1 Para averiguar si en una determinada población existen menos hombres que mujeres se plantea el siguiente contraste de hipótesis sobre la proporción de hombres que hay en la población:
\[\begin{align*} H_0 &: p=0.5\\ H_1 &: p<0.5 \end{align*}\]
Para ello se ha tomado una muestra aleatoria con reemplazamiento de \(10\) personas.
Suponiendo cierta la hipótesis nula, ¿qué distribución sigue la variable que mide el número de hombres en la muestra de tamaño 10?
Suponiendo cierta la hipótesis nula, es decir, que la proporción de hombres en la población es \(0.5\), el número de hombres en una muestra aleatoria con reemplazamiento de 10 personas sigue una distribución Binomial \(B(10, 0.5)\).
Suponiendo cierta la hipótesis nula, ¿cuál es la probabilidad de que en la muestra se obtengan 0 hombres? ¿Se aceptaría la hipótesis nula en tal caso?
Tenemos que calcular la probabilidad de \(0\) hombres con la distribución \(B(10, 0.5)\).
pbinom(0, 10, 0.5)
[1] 0.0009765625
Como se ve, la probabilidad de obtener 0 hombres en una muestra aleatoria con reemplazamiento de 10 personas tomadas de una población con el mismo número de hombres y mujeres es muy baja, por lo que, en este caso rechazaríamos la hipótesis nula sin dudarlo.
Suponiendo cierta la hipótesis nula, si se decide rechazarla cuando en la muestra haya 2 o menos hombres, ¿cuál es el riesgo de equivocarse?
Tenemos que calcular la probabilidad de haya \(2\) o menos hombres con la distribución \(B(10, 0.5)\).
pbinom(2, 10, 0.5)
[1] 0.0546875
La probabilidad de cometer un error de tipo I (rechazar la hipótesis nula cuando es cierta) es \(0.0547\).
Si el máximo riesgo de error de tipo I \(\alpha\) que se tolera es \(0.05\), ¿qué número de hombres en la muestra formarían la región de rechazo de la hipótesis nula?
Si el máximo riesgo de error de tipo I se establece en \(\alpha=0.05\), solo podría rechazarse la hipótesis nula si en la muestra aleatoria con reemplazamiento de \(10\) personas se obtuviese \(0\) o \(1\) hombres. Si se obtuviesen \(2\) hombres ya no se podría rechazar la hipótesis nula porque la probabilidad de equivocarnos es mayor de \(0.05\) como se ha visto en el apartado anterior.
Suponiendo que la proporción real de hombres en la población fuese de \(0.4\), ¿cuál es la potencia del contraste para la región de rechazo del apartado anterior?
La potencia de un contraste es \(1-\beta\), donde \(\beta\) es la probabilidad de cometer un error de tipo II (aceptar la hipótesis nula cuando es falsa).
Tenemos que calcular la probabilidad de haya \(1\) o menos hombres con la distribución \(B(10, 0.4)\).
pbinom(1, 10, 0.4)
[1] 0.0463574
La potencia del contraste suponiendo que la proporción real de hombres en la población es \(0.4\), es \(0.0464\) que es muy baja.
Si en lugar de una muestra de tamaño 10 se tomase una muestra de tamaño 100, y haciendo uso de la aproximación de una distribución binomial mediante una normal, ¿qué número de hombres en la muestra formarían la región de rechazo para un riesgo \(\alpha=0.05\)? ¿Qué potencia tendría ahora el contraste si la proporción real de hombres fuese de \(0.4\)? ¿Es mejor o peor contraste que el anterior?
Si tomamos una muestra de \(100\) personas, entonces el número de hombres en la muestra si en la población hay el mismo número de hombres que de mujeres sigue una distribución binomial \(B(100,0.5)\), que puede aproximarse mediante una distribución normal \(N(50,5)\), así que tenemos que calcular el percentil \(5\) de esta distribución.
qnorm(0.05, 50, 5)
[1] 41.77573
Por tanto, para un riesgo \(\alpha=0.05\), rechazaremos la hipótesis nula si en la muestra se obtienen \(41\) o menos hombres.
Si la proporción real de hombres fuese de \(0.4\), la potencia del contraste es la probabilidad de obtener \(41\) o menos hombres con una distribución binomial \(B(100, 0.4)\).
pbinom(41, 100, 0.4)
[1] 0.6225327
Ahora la potencia del contraste ha aumentado hasta \(0.6225\) que es mucho mayor que la del contraste anterior.
Ejercicio 9.2 Se sabe que para que un fármaco sea efectivo, la concentración de su principio activo debe ser de al menos \(16\) mg/mm\(^3\). Una farmacia va a comprar un lote de este medicamento, pero antes quiere asegurarse de que los medicamentos del lote son efectivos y para ello analiza la concentración de principio activo en una muestra aleatoria de \(10\) envases tomados del lote, obteniendo los siguientes resultados en mg/mm\(^{3}\):
\[ 17.6 \quad 19.2 \quad 21.3 \quad 15.1 \quad 17.6 \quad 18.9 \quad 16.2 \quad 18.3 \quad 19.0 \quad 16.4 \]
Crear un conjunto de datos con los datos de la muestra.
df <- data.frame(concentracion = c(17.6, 19.2, 21.3, 15.1, 17.6, 18.9, 16.2, 18.3, 19.0, 16.4 ))
Realizar un contraste de hipótesis para ver si la concentración media de principio activo es diferente de \(18\) mg/mm\(^3\).
Para realizar un contraste de hipótesis para la media de una población podemos utilizar la función t.test
del paquete stats
.
Si queremos mostrar la salida del test en formato de tabla podemos utilizar la función tidy
del paquete broom
.
Otra opción es utilizar la función t_test
de la colección de paquetes tidymodels
, que ofrece ya la salida en formato tidy
.
Tenemos que realizar el contraste bilateral
\[\begin{align*} H_0 &: \mu=18\\ H_1 &: \mu\neq 18 \end{align*}\]
t.test(df$concentracion, mu = 18)
One Sample t-test
data: df$concentracion
t = -0.07078, df = 9, p-value = 0.9451
alternative hypothesis: true mean is not equal to 18
95 percent confidence interval:
16.68158 19.23842
sample estimates:
mean of x
17.96
Para mostrar la salida en formato tabla.
library(tidymodels)
df |>
t_test(response = concentracion, mu = 18) |>
kable()
statistic | t_df | p_value | alternative | estimate | lower_ci | upper_ci |
---|---|---|---|---|---|---|
-0.0707795 | 9 | 0.9451211 | two.sided | 17.96 | 16.68158 | 19.23842 |
Como el p-valor del contraste es \(0.9451\) que es mucho mayor que el riesgo \(\alpha=0.05\), no rechazamos la hipótesis nula.
Obsérvese que el valor de la media muestral es \(17.96\) que está muy cerca del valor que establece la hipótesis nula, por lo que sería una locura rechazar la hipótesis nula con esta muestra.
Realizar un contraste de hipótesis para ver si la concentración media de principio activo es diferente de \(19.5\) mg/mm\(^3\).
Tenemos que realizar el contraste bilateral
\[\begin{align*} H_0 &: \mu=19.5\\ H_1 &: \mu\neq 19.5 \end{align*}\]
library(tidymodels)
df |>
t_test(response = concentracion, mu = 19.5) |>
kable()
statistic | t_df | p_value | alternative | estimate | lower_ci | upper_ci |
---|---|---|---|---|---|---|
-2.725012 | 9 | 0.0234149 | two.sided | 17.96 | 16.68158 | 19.23842 |
Como el p-valor del contraste es \(0.0234\) que es menor que el riesgo \(\alpha=0.05\), rechazamos la hipótesis nula y concluimos que la concentración media es significativamente diferente de \(19\).
Obsérvese que ahora el valor de la media muestral es \(17.96\) está mucho más lejos del valor que establece la hipótesis nula, por lo que tiene más lógica rechazar la hipótesis nula.
Si el fabricante del lote asegura haber aumentado la concentración de principio activo con respecto a anteriores lotes, en los que la media era de \(17\) mg/mm\(^3\), ¿podemos aceptar la afirmación del fabricante?
Ahora tenemos que realizar el contraste unilateral
\[\begin{align*} H_0 &: \mu=17\\ H_1 &: \mu> 17 \end{align*}\]
library(tidymodels)
df |>
t_test(response = concentracion, mu = 19.5, alternative = "greater") |>
kable()
statistic | t_df | p_value | alternative | estimate | lower_ci | upper_ci |
---|---|---|---|---|---|---|
-2.725012 | 9 | 0.9882925 | greater | 17.96 | 16.92404 | Inf |
Como el p-valor del contraste es \(0.0618\) que es mayor que el riesgo \(\alpha=0.05\), no podemos rechazar la hipótesis nula y concluimos que con esta muestra no hay pruebas significativas de que la afirmación del fabricante sea cierta.
¿Cuál sería el tamaño muestral requerido para poder detectar una diferencia de \(0.5\) mg/mm\(^{3}\) más con un nivel de significación \(\alpha=0.05\) y una potencia \(1-\beta=0.8\)?
Ahora tenemos que realizar el contraste unilateral
library(pwr)
efecto <- 0.5 / sd(df$concentracion)
power.t.test(d = efecto, sig.level = 0.05, power = 0.8, type = "one.sample", alternative = "two.sided")
One-sample t test power calculation
n = 102.2077
delta = 0.2797806
sd = 1
sig.level = 0.05
power = 0.8
alternative = two.sided
Ejercicio 9.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.
Crear conjunto de datos con los datos de la muestra a partir del fichero biblioteca.csv
.
Contrastar si el porcentaje de alumnos que utiliza habitualmente la biblioteca es superior al \(40\%\).
Para realizar un contraste de hipótesis para la proporción de una población podemos utilizar la función prop.test
del paquete stats
.
Si queremos mostrar la salida del test en formato de tabla podemos utilizar la función tidy
del paquete broom
.
Otra opción es utilizar la función prop_test
de la colección de paquetes tidymodels
, que ofrece ya la salida en formato tidy
.
Tenemos que realizar el contraste unilateral
\[\begin{align*} H_0 &: p = 0.4\\ H_1 &: p > 0.4 \end{align*}\]
library(broom)
library(knitr)
frec <- table(df$respuesta)
tidy(prop.test(frec["si"], nrow(df), p = 0.4, alternative = "greater")) |>
kable()
estimate | statistic | p.value | parameter | conf.low | conf.high | method | alternative |
---|---|---|---|---|---|---|---|
0.4705882 | 0.442402 | 0.2529827 | 1 | 0.3238772 | 1 | 1-sample proportions test with continuity correction | greater |
library(tidymodels)
library(knitr)
df |>
prop_test(response = respuesta, p = 0.4, alternative = "greater", success = "si") |>
kable()
statistic | chisq_df | p_value | alternative |
---|---|---|---|
0.442402 | 1 | 0.2529827 | greater |
Como el p-valor del contraste es \(0.253\), que es mayor que el riesgo \(\alpha=0.05\), no rechazamos la hipótesis nula.
Ejercicio 9.4 Un estudio trata de averiguar si existen diferencias significativas en la edad media a la que los niños de África y Europa comienzan a andar por sí solos. Los investigadores obtuvieron los siguientes datos para la edad al comenzar a andar (expresada en meses):
\[\begin{align*} \textrm{África}:& \ 9.5-10.5-9.0-9.8-10.0-13.0-10.0-13.5-10.0-9.8\\ \textrm{Europa}:& \ 12.5-9.5-13.5-13.8-12.0-13.8-12.5-9.5-12.0-13.5-12.0-12.0 \end{align*}\]
Crear un conjunto de datos con los datos de la muestra.
Realizar un contraste de hipótesis con un nivel de significación de \(0.05\) para ver si existen diferencias estadísticamente significativas entre las edades medias a las que comienzan a andar los niños de África y los de Europa.
Para realizar un contraste de hipótesis para la diferencia de medias de dos población independientes utilizar la función t.test
del paquete stats
. Este test da resultados diferentes dependiendo de si las dos poblaciones que se comparan tienen varianzas diferentes o no, por lo que previamente debemos realizar un contraste de comparación de varianzas mediante la función var.test
del paquete stats
. Si se acepta la hipótesis de igualdad de varianzas mediante este test, en la función t.test
hay que añadir el parámetro var.equal = TRUE
.
Si queremos mostrar la salida del test en formato de tabla podemos utilizar la función tidy
del paquete broom
.
Otra opción es utilizar la función t_test
de la colección de paquetes tidymodels
, que ofrece ya la salida en formato tidy
.
Tenemos que realizar el contraste bilateral
\[\begin{align*} H_0 &: \mu_A = \mu_E \\ H_1 &: \mu_A \neq \mu_E \end{align*}\]
Realizamos primero el test F para la comparación de las varianzas de las dos poblaciones.
var.test(edad ~ continente, data = df)
F test to compare two variances
data: edad by continente
F = 1.0558, num df = 9, denom df = 11, p-value = 0.9164
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
0.2942791 4.1305381
sample estimates:
ratio of variances
1.055843
Como el p-valor del contraste es \(0.9164\), que es mayor que el riesgo \(\alpha=0.05\), no se rechaza la hipótesis nula y concluimos que no hay una diferencia estadísticamente significativas entre las varianzas de las dos poblaciones.
A continuación realizamos el contraste de comparación de medias.
t.test(edad ~ continente, data = df, var.equal = TRUE)
Two Sample t-test
data: edad by continente
t = -2.6982, df = 20, p-value = 0.01383
alternative hypothesis: true difference in means between group África and group Europa is not equal to 0
95 percent confidence interval:
-3.0260864 -0.3872469
sample estimates:
mean in group África mean in group Europa
10.51000 12.21667
Para mostrar la salida en formato tabla.
library(tidymodels)
df |>
t_test(edad ~ continente, var.equal = TRUE) |>
kable()
Warning: The statistic is based on a difference or ratio; by default, for
difference-based statistics, the explanatory variable is subtracted in the
order "África" - "Europa", or divided in the order "África" / "Europa" for
ratio-based statistics. To specify this order yourself, supply `order =
c("África", "Europa")`.
statistic | t_df | p_value | alternative | estimate | lower_ci | upper_ci |
---|---|---|---|---|---|---|
-2.698189 | 20 | 0.0138327 | two.sided | -1.706667 | -3.026086 | -0.3872469 |
Como el p-valor del contraste es \(0.0138\) que es menor que el riesgo \(\alpha=0.05\), podemos rechazar la hipótesis nula y se concluye que existe una diferencia estadísticamente significativa entre las edades medias a las que comienzan a andar los niños de África y Europa.
Aunque se ha planteado un contraste bilateral, observando el intervalo de confianza para la diferencia entre la edad media de los niños de África y los de Europa, que es completamente negativo, se puede concluir con un \(95\%\) de confianza que los niños de África comienzan a andar entre \(0.3872\) meses y \(3.261\) meses antes que los niños de Europa en promedio.
Ejercicio 9.5 El conjunto de datos hipertension.csv
contiene datos de la presión arterial de una muestra de individuos hipertensos, antes y después de aplicarles tres tratamientos (Placebo, IECA y Antagonista del Calcio + Diurético).
Crear un conjunto de datos con los datos de la muestra.
library(tidyverse)
df <- read_csv("https://aprendeconalf.es/estadistica-practicas-r/datos/hipertension.csv")
glimpse(df)
Rows: 100
Columns: 15
$ ...1 <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 1…
$ NOMBRE <chr> "SGL", "JCZ", "APZ", "NDG", "CLO", "LFZ", "OAR", "SGH", "ZLZ…
$ EDAD <dbl> 57, 40, 30, 44, 38, 48, 41, 31, 39, 31, 34, 27, 32, 59, 29, …
$ SEXO <chr> "Mujer", "Mujer", "Hombre", "Hombre", "Mujer", "Hombre", "Mu…
$ ESTATURA <dbl> 165, 154, 156, 181, 184, 179, 159, 153, 172, 154, 170, 154, …
$ PESO <dbl> 93, 80, 74, 88, 86, 73, 70, 57, 55, 50, 64, 57, 54, 77, 91, …
$ ESTRES <dbl> 42, 30, 21, 33, 36, 22, 31, 12, 21, 24, 32, 20, 30, 26, 18, …
$ PAD_INI <dbl> 80, 92, 87, 84, 88, 70, 91, 84, 69, 84, 88, 85, 83, 88, 75, …
$ PAD_FIN <dbl> 84, 89, 83, 79, 80, 82, 80, 73, 67, 77, 75, 83, 80, 72, 72, …
$ PAS_INI <dbl> 180, 167, 148, 167, 170, 148, 173, 140, 155, 153, 166, 153, …
$ PAS_FIN <dbl> 155, 140, 130, 141, 142, 128, 132, 123, 115, 135, 128, 133, …
$ TAB_INI <chr> "si", "no", "no", "si", "si", "si", "no", "no", "no", "no", …
$ TAB_FIN <chr> "si", "no", "no", "no", "si", "si", "no", "no", "no", "no", …
$ CAR_ISQUE <chr> "si", "no", "no", "si", "no", "no", "no", "no", "no", "no", …
$ FARMACO <chr> "Antagonista Calcio + Diurético", "Antagonista Calcio + Diur…
Realizar un contraste de hipótesis para ver si hay la media de la presión sistólica ha disminuido significativamente.
Para realizar un contraste de hipótesis para la diferencia de medias de dos población pareadas utilizar la función t.test
del paquete stats
añadiendo el parámetro paired = TRUE
.
Si queremos mostrar la salida del test en formato de tabla podemos utilizar la función tidy
del paquete broom
.
Otra opción es utilizar la función t_test
de la colección de paquetes tidymodels
, que ofrece ya la salida en formato tidy
.
Tenemos que realizar el contraste de hipótesis unilateral
\[\begin{align*} H_0 &: \mu_I = \mu_F \\ H_1 &: \mu_I \neq \mu_F \end{align*}\]
t.test(df$PAS_INI, df$PAS_FIN, paired = TRUE, alternative = "greater")
Paired t-test
data: df$PAS_INI and df$PAS_FIN
t = 31.743, df = 99, p-value < 2.2e-16
alternative hypothesis: true mean difference is greater than 0
95 percent confidence interval:
26.99975 Inf
sample estimates:
mean difference
28.49
Para mostrar la salida en formato tabla.
library(tidymodels)
df |>
mutate(PAS_DIF = PAS_INI - PAS_FIN) |>
t_test(response = PAS_DIF, alternative = "greater") |>
kable()
statistic | t_df | p_value | alternative | estimate | lower_ci | upper_ci |
---|---|---|---|---|---|---|
31.74278 | 99 | 0 | greater | 28.49 | 26.99975 | Inf |
Como el p-valor del contraste es prácticamente \(0\), que es mucho menor que el riesgo \(\alpha=0.05\), podemos rechazar con contundencia la hipótesis nula y se concluye que existe una diferencia estadísticamente muy significativa entre las medias de la presión arterial sistólica antes y después del tratamiento.
Realizar el mismo contraste de antes, pero para cada tratamiento por separado.
df |>
nest(data = -FARMACO) |>
mutate(test = map(data, ~ tidy(t.test(.x$PAS_INI, .x$PAS_FIN, paired = TRUE, alternative = "greater")))) |>
unnest(test) |>
select(-data) |>
kable()
FARMACO | estimate | statistic | p.value | parameter | conf.low | conf.high | method | alternative |
---|---|---|---|---|---|---|---|---|
Antagonista Calcio + Diurético | 26.63636 | 99.52715 | 0 | 32 | 26.18303 | Inf | Paired t-test | greater |
Placebo | 18.63636 | 58.37322 | 0 | 32 | 18.09557 | Inf | Paired t-test | greater |
IECA | 39.85294 | 145.42329 | 0 | 33 | 39.38915 | Inf | Paired t-test | greater |
df |>
mutate(PAS_DIF = PAS_INI - PAS_FIN) |>
nest(data = -FARMACO) |>
mutate(test = map(data, ~ t_test(x = .x, response = PAS_DIF, paired = TRUE, alternative = "greater"))) |>
unnest(test) |>
select(-data) |>
kable()
FARMACO | statistic | t_df | p_value | alternative | estimate | lower_ci | upper_ci |
---|---|---|---|---|---|---|---|
Antagonista Calcio + Diurético | 99.52715 | 32 | 0 | greater | 26.63636 | 26.18303 | Inf |
Placebo | 58.37322 | 32 | 0 | greater | 18.63636 | 18.09557 | Inf |
IECA | 145.42329 | 33 | 0 | greater | 39.85294 | 39.38915 | Inf |
Como se puede observar, todos los p-valores son menores que el nivel de significación \(\alpha=0.05\), por lo que se puede concluir que existe una diferencia estadísticamente muy significativa entre las medias de la presión arterial sistólica antes y después de cada tratamiento. Si observamos los intervalos de confianza, se observa que la mayor diferencia entre se da para el tratamiento IECA, después el Antagonista del Calcio y finalmente el Placebo.
Ejercicio 9.6 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\). ¿Se puede afirmar que hay diferencias significativas entre los porcentajes de aprobados en ambos grupos?
Tenemos que realizar el contraste bilateral
\[\begin{align*} H_0 &: p_M = p_T \\ H_1 &: p_M \neq p_T \end{align*}\]
library(broom)
library(knitr)
# Aplicamos el test de comparación de proporciones.
tidy(prop.test(c(55, 32), c(80, 90))) |>
# Multiplicamos por 100 todas las columnas para obtener porcentajes.
mutate(across(c(estimate1, estimate2, conf.low, conf.high), ~ .x * 100)) |>
# Mostramos por pantalla en formato tabla.
kable()
estimate1 | estimate2 | statistic | p.value | parameter | conf.low | conf.high | method | alternative |
---|---|---|---|---|---|---|---|---|
68.75 | 35.55556 | 17.37244 | 3.07e-05 | 1 | 17.83764 | 48.55125 | 2-sample test for equality of proportions with continuity correction | two.sided |
Como el p-valor del contraste es prácticamente \(0\), que es mucho menor que el riesgo \(\alpha=0.05\), podemos rechazar con contundencia la hipótesis nula y se concluye que existe una diferencia estadísticamente muy significativa entre los porcentajes de aprobados en la mañana y la tarde. Si observamos el intervalo de confianza para diferencia entre la proporción de aprobados en la mañana y la tarde, que es completamente positivo, se concluye con un \(95\%\) de confianza que el porcentaje de aprobados en la mañana es significativamente mayor que en la tarde.
Ejercicio 9.7 El fichero pulso.csv
contiene información sobre el pulso de un grupo de pacientes que han realizado distintos ejercicios: pulso en reposo (pulse1), pulso después de hacer ejercicio (pulse2), tipo de ejercicio (ran, 1=correr, 2=andar), sexo (sex, 1=hombre, 2=mujer) y peso (weight).
Contrastar si el pulso en reposo está por debajo de \(75\) pulsaciones.
¿Qué tamaño muestral sería necesario para detectar una diferencia de 2 pulsaciones más en la media de las pulsaciones en reposo, con un nivel de significación \(0.05\) y una potencia de \(0.9\)?
Contrastar si el pulso después de correr está por encima de \(85\) pulsaciones.
Contrastar si el porcentaje de personas con taquicardia leve (número de pulsaciones en reposo por encima de \(90\)) supera el \(5\%\).
¿Se puede afirmar que el ejercicio aumenta las pulsaciones con una significación de \(0.05\)? ¿y con una significación \(0.01\)?
¿Existe una diferencia significativa entre las medias de las pulsaciones después de andar y después de correr?
¿Existe una diferencia significativa entre la media de las pulsaciones en reposo de hombres y mujeres? ¿Y entre las medias de las pulsaciones después de correr?