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:
Para ello se ha tomado una muestra aleatoria con reemplazamiento de
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
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
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
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
Si el máximo riesgo de error de tipo I
Si el máximo riesgo de error de tipo I se establece en
Suponiendo que la proporción real de hombres en la población fuese de
La potencia de un contraste es
Tenemos que calcular la probabilidad de haya
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
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
Si tomamos una muestra de
qnorm(0.05, 50, 5)
[1] 41.77573
Por tanto, para un riesgo
Si la proporción real de hombres fuese de
pbinom(41, 100, 0.4)
[1] 0.6225327
Ahora la potencia del contraste ha aumentado hasta
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
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
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
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.
── Attaching packages ────────────────────────────────────── tidymodels 1.2.0 ──
✔ dials 1.3.0 ✔ rsample 1.2.1
✔ dplyr 1.1.4 ✔ tibble 3.2.1
✔ ggplot2 3.5.1 ✔ tidyr 1.3.1
✔ infer 1.0.7 ✔ tune 1.2.1
✔ modeldata 1.4.0 ✔ workflows 1.1.4
✔ parsnip 1.2.1 ✔ workflowsets 1.1.0
✔ purrr 1.0.2 ✔ yardstick 1.3.1
✔ recipes 1.1.0
── Conflicts ───────────────────────────────────────── tidymodels_conflicts() ──
✖ purrr::discard() masks scales::discard()
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
✖ recipes::step() masks stats::step()
• Use tidymodels_prefer() to resolve common conflicts.
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
Obsérvese que el valor de la media muestral es
Realizar un contraste de hipótesis para ver si la concentración media de principio activo es diferente de
Tenemos que realizar el contraste bilateral
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
Obsérvese que ahora el valor de la media muestral es
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
Ahora tenemos que realizar el contraste unilateral
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
¿Cuál sería el tamaño muestral requerido para poder detectar una diferencia de
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
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
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
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):
Crear un conjunto de datos con los datos de la muestra.
Realizar un contraste de hipótesis con un nivel de significación de
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
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
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
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
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
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
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
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
Tenemos que realizar el contraste bilateral
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
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
¿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
Contrastar si el pulso después de correr está por encima de
Contrastar si el porcentaje de personas con taquicardia leve (número de pulsaciones en reposo por encima de
¿Se puede afirmar que el ejercicio aumenta las pulsaciones con una significación de
¿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?