19/08/26
Abstract
La teoría mencionada puede revisarse en el TEXTO GUÍA o en la BIBLIOGRAFÍA COMPLEMENTARIA. En Rpubs:: toc se pueden ver otros documentos de posible interés.
Primero, debemos instalar, si es necesario, y cargar los paquetes que vamos a utilizar.
library(lsm) # Para acceder a la base de datos survey
library(knitr) # Para construir tablas
library(kableExtra) # Para mejorar la presentación de las tablas
La hipótesis nula, denotada por \(H_0\), representa la afirmación que se somete a evaluación. La hipótesis alternativa, denotada por \(H_1\), expresa la posibilidad que se desea contrastar.
El nivel de significancia se representa mediante \(\alpha\). En este documento se utilizará, salvo indicación contraria,
\[ \alpha=0.05. \]
La regla de decisión basada en el \(p\)-valor es:
si \(p\text{-valor}\leq\alpha\), se rechaza \(H_0\);
si \(p\text{-valor}>\alpha\), no se rechaza \(H_0\).
No rechazar \(H_0\) no significa demostrar que sea verdadera; únicamente indica que la muestra no proporciona evidencia estadística suficiente para rechazarla.
Todas las funciones permiten especificar el tipo de hipótesis
alternativa mediante el argumento alternative. Este
argumento determina si la prueba es bilateral, de cola derecha o de cola
izquierda.
| Valor de alternative | Tipo de prueba | Hipótesis alternativa |
|---|---|---|
"two.sided"
|
Bilateral | \(H_1:\ \theta \neq \theta_0\) |
"greater"
|
Cola derecha | \(H_1:\ \theta \gt \theta_0\) |
"less"
|
Cola izquierda | \(H_1:\ \theta \lt \theta_0\) |
De acuerdo con el tipo de hipótesis alternativa, en el código de R se escribiría así:
alternative = "two.sided" # Prueba bilateral
alternative = "greater" # Prueba de cola derecha
alternative = "less" # Prueba de cola izquierda
La siguiente tabla resume las funciones desarrolladas en este capítulo y el procedimiento estadístico para el cual fueron diseñadas.
| Función | Descripción |
|---|---|
|
Prueba Z para una media (σ conocida). |
|
Prueba t para una media (σ desconocida). |
|
Prueba Z para una proporción. |
|
Prueba χ² para una varianza. |
|
Prueba Z para la diferencia de medias (σ₁ y σ₂ conocidas). |
|
Prueba t para diferencia de medias (varianzas desconocidas e iguales). |
|
Prueba t de Welch para diferencia de medias (varianzas desconocidas y diferentes). |
|
Prueba Z para la diferencia de dos proporciones. |
|
Prueba F para la razón de varianzas. |
A continuación se presentan funciones desarrolladas para realizar las pruebas de hipótesis estudiadas en este capítulo. Cada función recibe las estadísticas muestrales necesarias y devuelve una tabla con las hipótesis, el estadístico de prueba, el p-valor, la decisión y una conclusión breve.
# ============================================================
# 1. Funciones auxiliares
# ============================================================
formato_num <- function(x, digitos = 4) {
format(
round(x, digitos),
nsmall = 0,
trim = TRUE,
scientific = FALSE
)
}
nombre_alternativa <- function(alternative) {
switch(
alternative,
"two.sided" = "Bilateral",
"greater" = "Cola derecha",
"less" = "Cola izquierda"
)
}
valor_p_normal <- function(estadistico, alternative) {
switch(
alternative,
"two.sided" = 2 * pnorm(-abs(estadistico)),
"greater" = pnorm(estadistico, lower.tail = FALSE),
"less" = pnorm(estadistico)
)
}
valor_p_t <- function(estadistico, gl, alternative) {
switch(
alternative,
"two.sided" = 2 * pt(-abs(estadistico), df = gl),
"greater" = pt(estadistico, df = gl, lower.tail = FALSE),
"less" = pt(estadistico, df = gl)
)
}
valor_p_chi <- function(estadistico, gl, alternative) {
switch(
alternative,
"two.sided" = min(
1,
2 * min(
pchisq(estadistico, df = gl),
pchisq(estadistico, df = gl, lower.tail = FALSE)
)
),
"greater" = pchisq(estadistico, df = gl, lower.tail = FALSE),
"less" = pchisq(estadistico, df = gl)
)
}
valor_p_f <- function(estadistico, gl1, gl2, alternative) {
switch(
alternative,
"two.sided" = min(
1,
2 * min(
pf(estadistico, df1 = gl1, df2 = gl2),
pf(estadistico, df1 = gl1, df2 = gl2, lower.tail = FALSE)
)
),
"greater" = pf(
estadistico,
df1 = gl1,
df2 = gl2,
lower.tail = FALSE
),
"less" = pf(
estadistico,
df1 = gl1,
df2 = gl2
)
)
}
decision_prueba <- function(valor_p, alpha) {
if (valor_p <= alpha) {
"Rechazar H0"
} else {
"No rechazar H0"
}
}
conclusion_prueba <- function(valor_p, alpha) {
if (valor_p <= alpha) {
paste0(
"Existe evidencia estadística suficiente, al nivel α = ",
formato_num(alpha),
", para apoyar H1"
)
} else {
paste0(
"No existe evidencia estadística suficiente, al nivel α = ",
formato_num(alpha),
", para apoyar H1"
)
}
}
validar_alternativa <- function(alternative) {
match.arg(alternative, c("two.sided", "greater", "less"))
}
# ============================================================
# 2. Prueba Z para una media con sigma conocida
# H0: mu = mu0
# ============================================================
ph_media_z <- function(media, sigma, n, mu0,
alpha = 0.05,
alternative = "two.sided",
digitos = 4) {
alternative <- validar_alternativa(alternative)
if (sigma <= 0 || n <= 1) {
stop("sigma debe ser positiva y n debe ser mayor que 1.")
}
error_estandar <- sigma / sqrt(n)
estadistico <- (media - mu0) / error_estandar
valor_p <- valor_p_normal(estadistico, alternative)
resultado <- data.frame(
Medida = c(
"Media muestral",
"Media bajo H0",
"σ",
"n",
"Error estándar",
"Tipo de prueba",
"Nivel de significancia",
"Estadístico Z",
"p-valor",
"Decisión",
"Conclusión"
),
Valor = c(
formato_num(media, digitos),
formato_num(mu0, digitos),
formato_num(sigma, digitos),
n,
formato_num(error_estandar, digitos),
nombre_alternativa(alternative),
formato_num(alpha, digitos),
formato_num(estadistico, digitos),
formato_num(valor_p, digitos),
decision_prueba(valor_p, alpha),
conclusion_prueba(valor_p, alpha)
),
check.names = FALSE
)
knitr::kable(
resultado,
format = "html",
col.names = c("Medida", "Valor"),
align = c("l", "r")
)
}
# ============================================================
# 3. Prueba t para una media con sigma desconocida
# H0: mu = mu0
# ============================================================
ph_media_t <- function(media, s, n, mu0,
alpha = 0.05,
alternative = "two.sided",
digitos = 4) {
alternative <- validar_alternativa(alternative)
if (s <= 0 || n <= 1) {
stop("s debe ser positiva y n debe ser mayor que 1.")
}
gl <- n - 1
error_estandar <- s / sqrt(n)
estadistico <- (media - mu0) / error_estandar
valor_p <- valor_p_t(estadistico, gl, alternative)
resultado <- data.frame(
Medida = c(
"Media muestral",
"Media bajo H0",
"s",
"n",
"Grados de libertad",
"Error estándar",
"Tipo de prueba",
"Nivel de significancia",
"Estadístico t",
"p-valor",
"Decisión",
"Conclusión"
),
Valor = c(
formato_num(media, digitos),
formato_num(mu0, digitos),
formato_num(s, digitos),
n,
gl,
formato_num(error_estandar, digitos),
nombre_alternativa(alternative),
formato_num(alpha, digitos),
formato_num(estadistico, digitos),
formato_num(valor_p, digitos),
decision_prueba(valor_p, alpha),
conclusion_prueba(valor_p, alpha)
),
check.names = FALSE
)
knitr::kable(
resultado,
format = "html",
col.names = c("Medida", "Valor"),
align = c("l", "r")
)
}
# ============================================================
# 4. Prueba Z para una proporción
# H0: p = p0
# ============================================================
ph_proporcion <- function(exitos, n, p0,
alpha = 0.05,
alternative = "two.sided",
digitos = 4) {
alternative <- validar_alternativa(alternative)
if (exitos < 0 || exitos > n) {
stop("El número de éxitos debe estar entre 0 y n.")
}
if (p0 <= 0 || p0 >= 1) {
stop("p0 debe estar entre 0 y 1.")
}
proporcion <- exitos / n
error_estandar <- sqrt(p0 * (1 - p0) / n)
estadistico <- (proporcion - p0) / error_estandar
valor_p <- valor_p_normal(estadistico, alternative)
resultado <- data.frame(
Medida = c(
"Éxitos",
"n",
"Proporción muestral",
"Proporción bajo H0",
"ES bajo H0",
"Tipo de prueba",
"Nivel de significancia",
"Estadístico Z",
"p-valor",
"Decisión",
"Conclusión"
),
Valor = c(
exitos,
n,
formato_num(proporcion, digitos),
formato_num(p0, digitos),
formato_num(error_estandar, digitos),
nombre_alternativa(alternative),
formato_num(alpha, digitos),
formato_num(estadistico, digitos),
formato_num(valor_p, digitos),
decision_prueba(valor_p, alpha),
conclusion_prueba(valor_p, alpha)
),
check.names = FALSE
)
knitr::kable(
resultado,
format = "html",
col.names = c("Medida", "Valor"),
align = c("l", "r")
)
}
# ============================================================
# 5. Prueba chi-cuadrada para una varianza
# H0: sigma^2 = varianza0
# ============================================================
ph_varianza <- function(varianza, n, varianza0,
alpha = 0.05,
alternative = "two.sided",
digitos = 4) {
alternative <- validar_alternativa(alternative)
if (varianza <= 0 || varianza0 <= 0 || n <= 1) {
stop("Las varianzas deben ser positivas y n debe ser mayor que 1.")
}
gl <- n - 1
estadistico <- gl * varianza / varianza0
valor_p <- valor_p_chi(estadistico, gl, alternative)
resultado <- data.frame(
Medida = c(
"Varianza muestral",
"Varianza bajo H0",
"n",
"Grados de libertad",
"Tipo de prueba",
"Nivel de significancia",
"Estadístico chi-cuadrada",
"p-valor",
"Decisión",
"Conclusión"
),
Valor = c(
formato_num(varianza, digitos),
formato_num(varianza0, digitos),
n,
gl,
nombre_alternativa(alternative),
formato_num(alpha, digitos),
formato_num(estadistico, digitos),
formato_num(valor_p, digitos),
decision_prueba(valor_p, alpha),
conclusion_prueba(valor_p, alpha)
),
check.names = FALSE
)
knitr::kable(
resultado,
format = "html",
col.names = c("Medida", "Valor"),
align = c("l", "r")
)
}
# ============================================================
# 6. Prueba Z para diferencia de medias
# Varianzas poblacionales conocidas
# H0: mu1 - mu2 = diferencia0
# ============================================================
ph_dif_medias_z <- function(media1, media2,
sigma1, sigma2,
n1, n2,
diferencia0 = 0,
alpha = 0.05,
alternative = "two.sided",
digitos = 4) {
alternative <- validar_alternativa(alternative)
if (sigma1 <= 0 || sigma2 <= 0 || n1 <= 1 || n2 <= 1) {
stop("Las desviaciones deben ser positivas y los tamaños mayores que 1.")
}
diferencia <- media1 - media2
error_estandar <- sqrt(
sigma1^2 / n1 +
sigma2^2 / n2
)
estadistico <- (diferencia - diferencia0) / error_estandar
valor_p <- valor_p_normal(estadistico, alternative)
resultado <- data.frame(
Medida = c(
"Media (Muestra 1)",
"σ (Muestra 1)",
"n (Muestra 1)",
"Media (Muestra 2)",
"σ (Muestra 2)",
"n (Muestra 2)",
"Diferencia observada",
"Diferencia bajo H0",
"Error estándar",
"Tipo de prueba",
"Nivel de significancia",
"Estadístico Z",
"p-valor",
"Decisión",
"Conclusión"
),
Valor = c(
formato_num(media1, digitos),
formato_num(sigma1, digitos),
n1,
formato_num(media2, digitos),
formato_num(sigma2, digitos),
n2,
formato_num(diferencia, digitos),
formato_num(diferencia0, digitos),
formato_num(error_estandar, digitos),
nombre_alternativa(alternative),
formato_num(alpha, digitos),
formato_num(estadistico, digitos),
formato_num(valor_p, digitos),
decision_prueba(valor_p, alpha),
conclusion_prueba(valor_p, alpha)
),
check.names = FALSE
)
knitr::kable(
resultado,
format = "html",
col.names = c("Medida", "Valor"),
align = c("l", "r")
)
}
# ============================================================
# 7. Prueba t para diferencia de medias
# Varianzas desconocidas, pero iguales
# H0: mu1 - mu2 = diferencia0
# ============================================================
ph_dif_medias_t_si <- function(media1, media2,
s1, s2,
n1, n2,
diferencia0 = 0,
alpha = 0.05,
alternative = "two.sided",
digitos = 4) {
alternative <- validar_alternativa(alternative)
if (s1 <= 0 || s2 <= 0 || n1 <= 1 || n2 <= 1) {
stop("Las desviaciones deben ser positivas y los tamaños mayores que 1.")
}
diferencia <- media1 - media2
gl <- n1 + n2 - 2
varianza_combinada <- (
(n1 - 1) * s1^2 +
(n2 - 1) * s2^2
) / gl
s_combinada <- sqrt(varianza_combinada)
error_estandar <- s_combinada *
sqrt(1 / n1 + 1 / n2)
estadistico <- (diferencia - diferencia0) / error_estandar
valor_p <- valor_p_t(estadistico, gl, alternative)
resultado <- data.frame(
Medida = c(
"Media (Muestra 1)",
"s (Muestra 1)",
"n (Muestra 1)",
"Media (Muestra 2)",
"s (Muestra 2)",
"n (Muestra 2)",
"Diferencia observada",
"Diferencia bajo H0",
"Varianza combinada",
"Desviación combinada",
"Grados de libertad",
"Error estándar",
"Tipo de prueba",
"Nivel de significancia",
"Estadístico t",
"p-valor",
"Decisión",
"Conclusión"
),
Valor = c(
formato_num(media1, digitos),
formato_num(s1, digitos),
n1,
formato_num(media2, digitos),
formato_num(s2, digitos),
n2,
formato_num(diferencia, digitos),
formato_num(diferencia0, digitos),
formato_num(varianza_combinada, digitos),
formato_num(s_combinada, digitos),
gl,
formato_num(error_estandar, digitos),
nombre_alternativa(alternative),
formato_num(alpha, digitos),
formato_num(estadistico, digitos),
formato_num(valor_p, digitos),
decision_prueba(valor_p, alpha),
conclusion_prueba(valor_p, alpha)
),
check.names = FALSE
)
knitr::kable(
resultado,
format = "html",
col.names = c("Medida", "Valor"),
align = c("l", "r")
)
}
# ============================================================
# 8. Prueba t de Welch para diferencia de medias
# Varianzas desconocidas y diferentes
# H0: mu1 - mu2 = diferencia0
# ============================================================
ph_dif_medias_t_no <- function(media1, media2,
s1, s2,
n1, n2,
diferencia0 = 0,
alpha = 0.05,
alternative = "two.sided",
digitos = 4) {
alternative <- validar_alternativa(alternative)
if (s1 <= 0 || s2 <= 0 || n1 <= 1 || n2 <= 1) {
stop("Las desviaciones deben ser positivas y los tamaños mayores que 1.")
}
diferencia <- media1 - media2
termino1 <- s1^2 / n1
termino2 <- s2^2 / n2
error_estandar <- sqrt(termino1 + termino2)
gl <- (termino1 + termino2)^2 /
(
termino1^2 / (n1 - 1) +
termino2^2 / (n2 - 1)
)
estadistico <- (diferencia - diferencia0) / error_estandar
valor_p <- valor_p_t(estadistico, gl, alternative)
resultado <- data.frame(
Medida = c(
"Media (Muestra 1)",
"s (Muestra 1)",
"n (Muestra 1)",
"Media (Muestra 2)",
"s (Muestra 2)",
"n (Muestra 2)",
"Diferencia observada",
"Diferencia bajo H0",
"Grados de libertad",
"Error estándar",
"Tipo de prueba",
"Nivel de significancia",
"Estadístico t",
"p-valor",
"Decisión",
"Conclusión"
),
Valor = c(
formato_num(media1, digitos),
formato_num(s1, digitos),
n1,
formato_num(media2, digitos),
formato_num(s2, digitos),
n2,
formato_num(diferencia, digitos),
formato_num(diferencia0, digitos),
formato_num(gl, digitos),
formato_num(error_estandar, digitos),
nombre_alternativa(alternative),
formato_num(alpha, digitos),
formato_num(estadistico, digitos),
formato_num(valor_p, digitos),
decision_prueba(valor_p, alpha),
conclusion_prueba(valor_p, alpha)
),
check.names = FALSE
)
knitr::kable(
resultado,
format = "html",
col.names = c("Medida", "Valor"),
align = c("l", "r")
)
}
# ============================================================
# 9. Prueba Z para diferencia de proporciones
# H0: p1 - p2 = 0
# ============================================================
ph_dif_proporciones <- function(exitos1, n1,
exitos2, n2,
alpha = 0.05,
alternative = "two.sided",
digitos = 4) {
alternative <- validar_alternativa(alternative)
if (exitos1 < 0 || exitos1 > n1 ||
exitos2 < 0 || exitos2 > n2) {
stop("Los números de éxitos deben estar entre 0 y n.")
}
p1 <- exitos1 / n1
p2 <- exitos2 / n2
diferencia <- p1 - p2
proporcion_combinada <- (exitos1 + exitos2) / (n1 + n2)
error_estandar <- sqrt(
proporcion_combinada *
(1 - proporcion_combinada) *
(1 / n1 + 1 / n2)
)
estadistico <- diferencia / error_estandar
valor_p <- valor_p_normal(estadistico, alternative)
resultado <- data.frame(
Medida = c(
"Éxitos (Muestra 1)",
"n (Muestra 1)",
"Proporción (Muestra 1)",
"Éxitos (Muestra 2)",
"n (Muestra 2)",
"Proporción (Muestra 2)",
"Diferencia observada",
"Proporción combinada",
"ES bajo H0",
"Tipo de prueba",
"Nivel de significancia",
"Estadístico Z",
"p-valor",
"Decisión",
"Conclusión"
),
Valor = c(
exitos1,
n1,
formato_num(p1, digitos),
exitos2,
n2,
formato_num(p2, digitos),
formato_num(diferencia, digitos),
formato_num(proporcion_combinada, digitos),
formato_num(error_estandar, digitos),
nombre_alternativa(alternative),
formato_num(alpha, digitos),
formato_num(estadistico, digitos),
formato_num(valor_p, digitos),
decision_prueba(valor_p, alpha),
conclusion_prueba(valor_p, alpha)
),
check.names = FALSE
)
knitr::kable(
resultado,
format = "html",
col.names = c("Medida", "Valor"),
align = c("l", "r")
)
}
# ============================================================
# 10. Prueba F para la razón de varianzas
# H0: sigma1^2 / sigma2^2 = razon0
# ============================================================
ph_razon_varianzas <- function(varianza1, varianza2,
n1, n2,
razon0 = 1,
alpha = 0.05,
alternative = "two.sided",
digitos = 4) {
alternative <- validar_alternativa(alternative)
if (varianza1 <= 0 || varianza2 <= 0 || razon0 <= 0) {
stop("Las varianzas y la razón bajo H0 deben ser positivas.")
}
gl1 <- n1 - 1
gl2 <- n2 - 1
razon_muestral <- varianza1 / varianza2
estadistico <- razon_muestral / razon0
valor_p <- valor_p_f(estadistico, gl1, gl2, alternative)
resultado <- data.frame(
Medida = c(
"Varianza (Muestra 1)",
"n (Muestra 1)",
"Grados de libertad (Muestra 1)",
"Varianza (Muestra 2)",
"n (Muestra 2)",
"Grados de libertad (Muestra 2)",
"Razón muestral",
"Razón bajo H0",
"Tipo de prueba",
"Nivel de significancia",
"Estadístico F",
"p-valor",
"Decisión",
"Conclusión"
),
Valor = c(
formato_num(varianza1, digitos),
n1,
gl1,
formato_num(varianza2, digitos),
n2,
gl2,
formato_num(razon_muestral, digitos),
formato_num(razon0, digitos),
nombre_alternativa(alternative),
formato_num(alpha, digitos),
formato_num(estadistico, digitos),
formato_num(valor_p, digitos),
decision_prueba(valor_p, alpha),
conclusion_prueba(valor_p, alpha)
),
check.names = FALSE
)
knitr::kable(
resultado,
format = "html",
col.names = c("Medida", "Valor"),
align = c("l", "r")
)
}
En esta sección se presentan ejemplos sencillos a partir de estadísticas resumidas. En todos los casos se utiliza un nivel de significancia de \(\alpha=0.05\).
Cuando la desviación estándar poblacional (\(\sigma\)) es conocida, se puede usar la distribución normal estándar para evaluar, por ejemplo,
\[ H_0:\ \mu = 3.5 \qquad \text{frente a} \qquad H_1:\ \mu \neq 3.5. \]
resultado <- ph_media_z(
media = 4,
sigma = 2,
n = 100,
mu0 = 3.5,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Media muestral | 4 |
| Media bajo H0 | 3.5 |
| σ | 2 |
| n | 100 |
| Error estándar | 0.2 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico Z | 2.5 |
| p-valor | 0.0124 |
| Decisión | Rechazar H0 |
| Conclusión | Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Cuando la desviación estándar poblacional es desconocida, se utiliza la desviación estándar muestral (\(s\)) y la distribución t de Student.
resultado <- ph_media_t(
media = 4,
s = 2,
n = 100,
mu0 = 3.5,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Media muestral | 4 |
| Media bajo H0 | 3.5 |
| s | 2 |
| n | 100 |
| Grados de libertad | 99 |
| Error estándar | 0.2 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico t | 2.5 |
| p-valor | 0.0141 |
| Decisión | Rechazar H0 |
| Conclusión | Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Se desea determinar si la proporción poblacional de éxitos es diferente de 0.25.
resultado <- ph_proporcion(
exitos = 35,
n = 100,
p0 = 0.25,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Éxitos | 35 |
| n | 100 |
| Proporción muestral | 0.35 |
| Proporción bajo H0 | 0.25 |
| ES bajo H0 | 0.0433 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico Z | 2.3094 |
| p-valor | 0.0209 |
| Decisión | Rechazar H0 |
| Conclusión | Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Se evalúa si la varianza poblacional es igual a 16.
resultado <- ph_varianza(
varianza = 25,
n = 30,
varianza0 = 16,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Varianza muestral | 25 |
| Varianza bajo H0 | 16 |
| n | 30 |
| Grados de libertad | 29 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico chi-cuadrada | 45.3125 |
| p-valor | 0.0549 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Se contrasta la igualdad de las medias poblacionales.
La diferencia se calcula en el orden:
\[ \text{Grupo 1}-\text{Grupo 2}. \]
resultado <- ph_dif_medias_z(
media1 = 45,
media2 = 40,
sigma1 = 8,
sigma2 = 10,
n1 = 50,
n2 = 60,
diferencia0 = 0,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Media (Muestra 1) | 45 |
| σ (Muestra 1) | 8 |
| n (Muestra 1) | 50 |
| Media (Muestra 2) | 40 |
| σ (Muestra 2) | 10 |
| n (Muestra 2) | 60 |
| Diferencia observada | 5 |
| Diferencia bajo H0 | 0 |
| Error estándar | 1.7166 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico Z | 2.9128 |
| p-valor | 0.0036 |
| Decisión | Rechazar H0 |
| Conclusión | Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Cuando las varianzas poblacionales son desconocidas, pero pueden asumirse iguales, se utiliza la varianza combinada (pooled variance).
La diferencia se calcula en el orden:
\[ \text{Grupo 1}-\text{Grupo 2}. \]
resultado <- ph_dif_medias_t_si(
media1 = 45,
media2 = 40,
s1 = 8,
s2 = 7,
n1 = 30,
n2 = 35,
diferencia0 = 0,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Media (Muestra 1) | 45 |
| s (Muestra 1) | 8 |
| n (Muestra 1) | 30 |
| Media (Muestra 2) | 40 |
| s (Muestra 2) | 7 |
| n (Muestra 2) | 35 |
| Diferencia observada | 5 |
| Diferencia bajo H0 | 0 |
| Varianza combinada | 55.9048 |
| Desviación combinada | 7.4769 |
| Grados de libertad | 63 |
| Error estándar | 1.8603 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico t | 2.6877 |
| p-valor | 0.0092 |
| Decisión | Rechazar H0 |
| Conclusión | Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Si no es razonable asumir igualdad de varianzas, se utiliza la prueba de Welch.
La diferencia se calcula en el orden:
\[ \text{Grupo 1}-\text{Grupo 2}. \]
resultado <- ph_dif_medias_t_no(
media1 = 45,
media2 = 40,
s1 = 8,
s2 = 12,
n1 = 30,
n2 = 35,
diferencia0 = 0,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Media (Muestra 1) | 45 |
| s (Muestra 1) | 8 |
| n (Muestra 1) | 30 |
| Media (Muestra 2) | 40 |
| s (Muestra 2) | 12 |
| n (Muestra 2) | 35 |
| Diferencia observada | 5 |
| Diferencia bajo H0 | 0 |
| Grados de libertad | 59.6104 |
| Error estándar | 2.4995 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico t | 2.0004 |
| p-valor | 0.05 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Este ejemplo se evalúa si las dos proporciones poblacionales son iguales..
La diferencia se calcula en el orden:
\[ \text{Grupo 1}-\text{Grupo 2}. \]
resultado <- ph_dif_proporciones(
exitos1 = 5,
n1 = 100,
exitos2 = 7,
n2 = 150,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Éxitos (Muestra 1) | 5 |
| n (Muestra 1) | 100 |
| Proporción (Muestra 1) | 0.05 |
| Éxitos (Muestra 2) | 7 |
| n (Muestra 2) | 150 |
| Proporción (Muestra 2) | 0.0467 |
| Diferencia observada | 0.0033 |
| Proporción combinada | 0.048 |
| ES bajo H0 | 0.0276 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico Z | 0.1208 |
| p-valor | 0.9039 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Se evalúa si las dos varianzas poblacionales son iguales.
La razón se calcula en el orden:
\[ \frac{\text{Grupo 1}} {\text{Grupo 2}}. \]
resultado <- ph_razon_varianzas(
varianza1 = 16,
varianza2 = 9,
n1 = 20,
n2 = 25,
razon0 = 1,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Varianza (Muestra 1) | 16 |
| n (Muestra 1) | 20 |
| Grados de libertad (Muestra 1) | 19 |
| Varianza (Muestra 2) | 9 |
| n (Muestra 2) | 25 |
| Grados de libertad (Muestra 2) | 24 |
| Razón muestral | 1.7778 |
| Razón bajo H0 | 1 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico F | 1.7778 |
| p-valor | 0.1828 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
En esta sección se utiliza el mismo data frame sencillo construido manualmente en las notas de intervalos de confianza.
El siguiente código crea un data frame con dos
variables cuantitativas (puntaje e edad), una
variable dicotómica (fumador) y una variable de agrupación
(grupo), la cual identifica las dos muestras que se
compararán en algunos de los ejemplos.
grupo <- c(
rep("Grupo 1",10),
rep("Grupo 2",10)
)
puntaje <- c(
72,68,75,70,73,71,69,74,70,72,
65,63,67,69,64,66,62,68,65,67
)
edad <- c(
38,42,41,39,40,37,43,40,39,41,
35,37,34,36,38,35,39,37,36,34
)
fumador <- c(
"Sí","Sí","No","Sí","No", "Sí","Sí","No","Sí","Sí",
"No","Sí","No","No","Sí", "No","Sí","No","Sí","No"
)
datos <- data.frame(
grupo,
puntaje,
edad,
fumador
)
datos
| grupo | puntaje | edad | fumador |
|---|---|---|---|
| Grupo 1 | 72 | 38 | Sí |
| Grupo 1 | 68 | 42 | Sí |
| Grupo 1 | 75 | 41 | No |
| Grupo 1 | 70 | 39 | Sí |
| Grupo 1 | 73 | 40 | No |
| Grupo 1 | 71 | 37 | Sí |
| Grupo 1 | 69 | 43 | Sí |
| Grupo 1 | 74 | 40 | No |
| Grupo 1 | 70 | 39 | Sí |
| Grupo 1 | 72 | 41 | Sí |
| Grupo 2 | 65 | 35 | No |
| Grupo 2 | 63 | 37 | Sí |
| Grupo 2 | 67 | 34 | No |
| Grupo 2 | 69 | 36 | No |
| Grupo 2 | 64 | 38 | Sí |
| Grupo 2 | 66 | 35 | No |
| Grupo 2 | 62 | 39 | Sí |
| Grupo 2 | 68 | 37 | No |
| Grupo 2 | 65 | 36 | Sí |
| Grupo 2 | 67 | 34 | No |
La variable grupo identifica las dos muestras;
puntaje y edad son cuantitativas, mientras que
fumador toma los valores Si para éxito y
No para fracaso.
Para ilustrar el procedimiento con \(Z\), se calcula la media de \(x\) y se supone conocida una desviación estándar poblacional igual a \(9\).
# Calcula media y tamaño
media_puntaje <- mean(datos$puntaje)
n_puntaje <- length(datos$puntaje)
# Realiza la prueba
resultado <- ph_media_z(
media = media_puntaje,
sigma = 9,
n = n_puntaje,
mu0 = 68,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Media muestral | 68.5 |
| Media bajo H0 | 68 |
| σ | 9 |
| n | 20 |
| Error estándar | 2.0125 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico Z | 0.2485 |
| p-valor | 0.8038 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Como normalmente la desviación estándar poblacional es desconocida, se estima mediante la desviación estándar muestral del puntaje.
# Calcula media y tamaño
media_puntaje <- mean(datos$puntaje)
s_puntaje <- sd(datos$puntaje)
n_puntaje <- length(datos$puntaje)
# Realiza la prueba
resultado <- ph_media_t(
media = media_puntaje,
s = s_puntaje,
n = n_puntaje,
mu0 = 68,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Media muestral | 68.5 |
| Media bajo H0 | 68 |
| s | 3.6778 |
| n | 20 |
| Grados de libertad | 19 |
| Error estándar | 0.8224 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico t | 0.608 |
| p-valor | 0.5504 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
En este caso, un valor igual a Sí en la variable exito
representa un éxito. La suma del número de categorías de esta variable
proporciona el número total de éxitos. Se evalúa si la proporción de
éxitos es igual a 0.50.
# Calcula total de éxitos y tamaño
total_fumador <- sum(datos$fumador == "Sí")
n_fumador <- length(datos$fumador)
# Realiza la prueba
resultado <- ph_proporcion(
exitos = total_fumador,
n = n_fumador,
p0 = 0.50,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Éxitos | 11 |
| n | 20 |
| Proporción muestral | 0.55 |
| Proporción bajo H0 | 0.5 |
| ES bajo H0 | 0.1118 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico Z | 0.4472 |
| p-valor | 0.6547 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Se evalúa si la varianza poblacional del puntaje es igual a 20.
# Calcula varianza y tamaño
varianza_puntaje <- var(datos$puntaje)
n_puntaje <- length(datos$puntaje)
# Realiza la prueba
resultado <- ph_varianza(
varianza = varianza_puntaje,
n = n_puntaje,
varianza0 = 20,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Varianza muestral | 13.5263 |
| Varianza bajo H0 | 20 |
| n | 20 |
| Grados de libertad | 19 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico chi-cuadrada | 12.85 |
| p-valor | 0.3077 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Para comparar las medias de los dos grupos, primero se separan los
valores de la variable puntaje según el grupo al que
pertenece cada observación. De esta manera se obtienen dos muestras
independientes: una correspondiente al Grupo 1 y otra
al Grupo 2.
# Se extraen los valores de la variable puntaje correspondientes a cada uno de los grupos.
puntaje1 <- datos$puntaje[datos$grupo == "Grupo 1"]
puntaje2 <- datos$puntaje[datos$grupo == "Grupo 2"]
# Se calculan las estadísticas resumidas de cada grupo.
media_gr1 <- mean(puntaje1)
media_gr2 <- mean(puntaje2)
s_gr1 <- sd(puntaje1)
s_gr2 <- sd(puntaje2)
n_gr1 <- length(puntaje1)
n_gr2 <- length(puntaje2)
A partir de estos resultados, se obtiene el siguiente resumen para cada grupo.
tabla_muestras <- data.frame(
Estadística = c(
"Tamaño muestral (n)",
"Media",
"Desviación estándar (s)"
),
`Grupo 1` = c(
n_gr1,
round(media_gr1, 2),
round(s_gr1, 2)
),
`Grupo 2` = c(
n_gr2,
round(media_gr2, 2),
round(s_gr2, 2)
),
check.names = FALSE
)
tabla_muestras
| Estadística | Grupo 1 | Grupo 2 |
|---|---|---|
| Tamaño muestral (n) | 10.00 | 10.00 |
| Media | 71.40 | 65.60 |
| Desviación estándar (s) | 2.22 | 2.22 |
Las estadísticas presentadas en la tabla corresponden a los argumentos que posteriormente se utilizarán en las funciones para comparar las medias de los dos grupos:
media1 y media2: medias
muestrales;
s1 y s2: desviaciones estándar
muestrales;
n1 y n2: tamaños muestrales.
Se evalúa si las medias poblacionales son iguales, suponiendo conocidas las desviaciones estándar poblacionales.
La diferencia se calcula en el orden:
\[ \text{Grupo 1}-\text{Grupo 2}. \]
resultado <- ph_dif_medias_z(
media1 = media_gr1,
media2 = media_gr2,
sigma1 = 8,
sigma2 = 10,
n1 = n_gr1,
n2 = n_gr2,
diferencia0 = 0,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Media (Muestra 1) | 71.4 |
| σ (Muestra 1) | 8 |
| n (Muestra 1) | 10 |
| Media (Muestra 2) | 65.6 |
| σ (Muestra 2) | 10 |
| n (Muestra 2) | 10 |
| Diferencia observada | 5.8 |
| Diferencia bajo H0 | 0 |
| Error estándar | 4.0497 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico Z | 1.4322 |
| p-valor | 0.1521 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Este procedimiento utiliza una varianza combinada y supone que las dos poblaciones tienen la misma varianza.
La diferencia se calcula en el orden:
\[ \text{Grupo 1}-\text{Grupo 2}. \]
resultado <- ph_dif_medias_t_si(
media1 = media_gr1,
media2 = media_gr2,
s1 = s_gr1,
s2 = s_gr2,
n1 = n_gr1,
n2 = n_gr2,
diferencia0 = 0,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Media (Muestra 1) | 71.4 |
| s (Muestra 1) | 2.2211 |
| n (Muestra 1) | 10 |
| Media (Muestra 2) | 65.6 |
| s (Muestra 2) | 2.2211 |
| n (Muestra 2) | 10 |
| Diferencia observada | 5.8 |
| Diferencia bajo H0 | 0 |
| Varianza combinada | 4.9333 |
| Desviación combinada | 2.2211 |
| Grados de libertad | 18 |
| Error estándar | 0.9933 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico t | 5.8391 |
| p-valor | 0 |
| Decisión | Rechazar H0 |
| Conclusión | Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Cuando no se supone igualdad de varianzas, se utiliza el procedimiento de Welch.
La diferencia se calcula en el orden:
\[ \text{Grupo 1}-\text{Grupo 2}. \]
resultado <- ph_dif_medias_t_no(
media1 = media_gr1,
media2 = media_gr2,
s1 = s_gr1,
s2 = s_gr2,
n1 = n_gr1,
n2 = n_gr2,
diferencia0 = 0,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Media (Muestra 1) | 71.4 |
| s (Muestra 1) | 2.2211 |
| n (Muestra 1) | 10 |
| Media (Muestra 2) | 65.6 |
| s (Muestra 2) | 2.2211 |
| n (Muestra 2) | 10 |
| Diferencia observada | 5.8 |
| Diferencia bajo H0 | 0 |
| Grados de libertad | 18 |
| Error estándar | 0.9933 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico t | 5.8391 |
| p-valor | 0 |
| Decisión | Rechazar H0 |
| Conclusión | Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Se evalúa si la proporción de éxitos es igual en los dos grupos.
Se calcula el número de éxitos y el tamaño muestral dentro de cada grupo.
La diferencia se calcula en el orden:
\[ \text{Grupo 1}-\text{Grupo 2}. \]
# Se calcula el número de éxitos para cada uno de los dos grupos
fumador_gr1 <- sum(datos$fumador[datos$grupo == "Grupo 1"] == "Sí")
fumador_gr2 <- sum(datos$fumador[datos$grupo == "Grupo 2"] == "Sí")
# Se calcula el tamaño muestral para cada uno de los dos grupos
n_gr1 <- sum(datos$grupo == "Grupo 1")
n_gr2 <- sum(datos$grupo == "Grupo 2")
# Realiza la prueba
resultado <- ph_dif_proporciones(
exitos1 = fumador_gr1,
n1 = n_gr1,
exitos2 = fumador_gr2,
n2 = n_gr2,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Éxitos (Muestra 1) | 7 |
| n (Muestra 1) | 10 |
| Proporción (Muestra 1) | 0.7 |
| Éxitos (Muestra 2) | 4 |
| n (Muestra 2) | 10 |
| Proporción (Muestra 2) | 0.4 |
| Diferencia observada | 0.3 |
| Proporción combinada | 0.55 |
| ES bajo H0 | 0.2225 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico Z | 1.3484 |
| p-valor | 0.1775 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Se evalúa si las varianzas poblacionales de x son
iguales en los dos grupos.
La razón se calcula en el orden:
\[ \frac{\text{Grupo 1}} {\text{Grupo 2}}. \]
# Calcula las varianzas para cada uno de los dos grupos
var_gr1 <- var(puntaje1)
var_gr2 <- var(puntaje2)
# Se calcula el tamaño muestral de cada grupo.
n_gr1 <- length(puntaje1)
n_gr2 <- length(puntaje2)
# Realiza la prueba
resultado <- ph_razon_varianzas(
varianza1 = var_gr1,
varianza2 = var_gr2,
n1 = n_gr1,
n2 = n_gr2,
razon0 = 1,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Varianza (Muestra 1) | 4.9333 |
| n (Muestra 1) | 10 |
| Grados de libertad (Muestra 1) | 9 |
| Varianza (Muestra 2) | 4.9333 |
| n (Muestra 2) | 10 |
| Grados de libertad (Muestra 2) | 9 |
| Razón muestral | 1 |
| Razón bajo H0 | 1 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico F | 1 |
| p-valor | 1 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
En esta sección se utiliza el conjunto de datos survey
del paquete lsm, recopilado mediante una encuesta aplicada
a una muestra de estudiantes universitarios. La descripción de sus
variables puede consultarse en este enlace (clic
aquí).
Las estadísticas resumidas se calcularán directamente a partir de las variables de la base de datos.
Para acceder a la base de datos, hacemos:
#Base de datos
datosCompleto <- lsm::survey
# Para los ejemplos de esta sección utilizaremos únicamente las primeras 100 observaciones
df <- datosCompleto[1:100,]
# Dimensión de las dos bases de datos (observaciones, variables)
dim(datosCompleto)
dim(df)
## Dimensión de la base de datos original: 800 observaciones y 66 variables.
## Dimensión del data frame utilizado en los ejemplos: 100 observaciones y 66 variables.
En los siguientes ejemplos utilizaremos las variables
Age, Gender y School.
Age representa la edad del estudiante.
Gender tiene las categorías Female y
male.
School tiene, entre otros, los niveles
Private y Public.
Antes de continuar, se verifican los niveles observados.
unique(df$Gender)
unique(df$School)
## Niveles de Gender: Female Male
## Niveles de School: Private Public
Para ilustrar el procedimiento con \(Z\), se evalúa si la edad media poblacional es igual a 20 años, suponiendo conocida una desviación estándar poblacional de 6 años.
# Elimina los valores perdidos (NA)
edad <- df$Age[!is.na(df$Age)]
# Calcula media y tamaño
media_edad <- mean(edad)
n_edad <- length(edad)
# Realiza la prueba
resultado <- ph_media_z(
media = media_edad,
sigma = 6,
n = n_edad,
mu0 = 20,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Media muestral | 18.9374 |
| Media bajo H0 | 20 |
| σ | 6 |
| n | 100 |
| Error estándar | 0.6 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico Z | -1.771 |
| p-valor | 0.0766 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Como normalmente la desviación estándar poblacional es desconocida,
se utiliza la desviación estándar muestral de la variable
Age. En este ejemplo, se evalúa la misma hipótesis
utilizando la desviación estándar muestral.
# Elimina los valores perdidos (NA)
edad <- df$Age[!is.na(df$Age)]
# Calcula media, desviación y tamaño
media_edad <- mean(edad)
s_edad <- sd(edad)
n_edad <- length(edad)
# Realiza la prueba
resultado <- ph_media_t(
media = media_edad,
s = s_edad,
n = n_edad,
mu0 = 20,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Media muestral | 18.9374 |
| Media bajo H0 | 20 |
| s | 2.0203 |
| n | 100 |
| Grados de libertad | 99 |
| Error estándar | 0.202 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico t | -5.2596 |
| p-valor | 0 |
| Decisión | Rechazar H0 |
| Conclusión | Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
En este ejemplo se evalúa si la proporción poblacional de estudiantes de género Female es igual a 0.50.
Para ello, se estima la proporción poblacional de estudiantes de
género Female.
El número de éxitos corresponde al número de observaciones
clasificadas como Female.
# Elimina los valores perdidos (NA)
genero <- df$Gender[!is.na(df$Gender)]
# Calcula número de estudiantes de género Female (éxitos) y tamaño total de la muestra.
total_fem <- sum(genero == "Female")
n_fem <- length(genero)
# Realiza la prueba
resultado <- ph_proporcion(
exitos = total_fem,
n = n_fem,
p0 = 0.50,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Éxitos | 49 |
| n | 100 |
| Proporción muestral | 0.49 |
| Proporción bajo H0 | 0.5 |
| ES bajo H0 | 0.05 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico Z | -0.2 |
| p-valor | 0.8415 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Se evalúa si la varianza poblacional de las edades es igual a 16. La
varianza muestral de la variable Age se utiliza para
estimar la varianza poblacional de las edades.
# Elimina los valores perdidos (NA)
edad <- df$Age[!is.na(df$Age)]
# Calcula varianza y tamaño
varianza_edad <- var(edad)
n_edad <- length(edad)
# Realiza la prueba
resultado <- ph_varianza(
varianza = varianza_edad,
n = n_edad,
varianza0 = 16,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Varianza muestral | 4.0816 |
| Varianza bajo H0 | 16 |
| n | 100 |
| Grados de libertad | 99 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico chi-cuadrada | 25.2547 |
| p-valor | 0 |
| Decisión | Rechazar H0 |
| Conclusión | Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Primero se eliminan las observaciones con valores faltantes en
Age o School. Luego se conservan únicamente
los estudiantes procedentes de colegios Private y
Public.
# Conservar solo observaciones válidas de Age y School, correspondientes a colegios privados o públicos.
datos_edad <- df[
!is.na(df$Age) &
!is.na(df$School) &
df$School %in% c("Private", "Public"),
]
# Se separan las edades según el tipo de colegio.
edad_private <- datos_edad$Age[datos_edad$School == "Private"]
edad_public <- datos_edad$Age[datos_edad$School == "Public"]
# Se calculan las estadísticas resumidas de cada grupo.
media_private <- mean(edad_private)
media_public <- mean(edad_public)
s_private <- sd(edad_private)
s_public <- sd(edad_public)
n_private <- length(edad_private)
n_public <- length(edad_public)
A partir de estos resultados, se obtiene el siguiente resumen para cada grupo:
tabla_muestras <- data.frame(
Estadística = c(
"Tamaño muestral",
"Media",
"Desviación estándar"
),
Private = c(
n_private,
round(media_private, 2),
round(s_private, 2)
),
Public = c(
n_public,
round(media_public, 2),
round(s_public, 2)
),
check.names = FALSE
)
tabla_muestras
| Estadística | Private | Public |
|---|---|---|
| Tamaño muestral | 50.00 | 50.00 |
| Media | 19.08 | 18.79 |
| Desviación estándar | 2.19 | 1.84 |
Las estadísticas presentadas en la tabla corresponden a los argumentos que se utilizarán posteriormente en las funciones para comparar las medias de los dos grupos:
media1 y media2: medias
muestrales;
s1 y s2: desviaciones estándar
muestrales;
n1 y n2: tamaños muestrales.
En los procedimientos siguientes, el grupo Private se
considerará como la Muestra 1 y el grupo
Public como la Muestra 2.
Se estima la diferencia entre la edad media de los estudiantes procedentes de colegios privados y públicos. Es decir, la diferencia se calcula en el orden:
\[ \text{Private}-\text{Public}. \]
Para ilustrar el procedimiento con \(Z\), se supondrán conocidas desviaciones estándar poblacionales iguales a \(6\) años.
resultado <- ph_dif_medias_z(
media1 = media_private,
media2 = media_public,
sigma1 = 6,
sigma2 = 6,
n1 = n_private,
n2 = n_public,
diferencia0 = 0,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Media (Muestra 1) | 19.0842 |
| σ (Muestra 1) | 6 |
| n (Muestra 1) | 50 |
| Media (Muestra 2) | 18.7906 |
| σ (Muestra 2) | 6 |
| n (Muestra 2) | 50 |
| Diferencia observada | 0.2936 |
| Diferencia bajo H0 | 0 |
| Error estándar | 1.2 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico Z | 0.2447 |
| p-valor | 0.8067 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Este procedimiento compara las edades medias de los dos grupos suponiendo que las varianzas poblacionales son desconocidas, pero iguales.
La diferencia se calcula en el orden:
\[ \text{Private}-\text{Public}. \]
resultado <- ph_dif_medias_t_si(
media1 = media_private,
media2 = media_public,
s1 = s_private,
s2 = s_public,
n1 = n_private,
n2 = n_public,
diferencia0 = 0,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Media (Muestra 1) | 19.0842 |
| s (Muestra 1) | 2.1949 |
| n (Muestra 1) | 50 |
| Media (Muestra 2) | 18.7906 |
| s (Muestra 2) | 1.8398 |
| n (Muestra 2) | 50 |
| Diferencia observada | 0.2936 |
| Diferencia bajo H0 | 0 |
| Varianza combinada | 4.1012 |
| Desviación combinada | 2.0251 |
| Grados de libertad | 98 |
| Error estándar | 0.405 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico t | 0.7249 |
| p-valor | 0.4702 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Cuando no se supone igualdad de varianzas, se utiliza el procedimiento de Welch para comparar las edades medias de los dos grupos.
La diferencia se calcula en el orden:
\[ \text{Private}-\text{Public}. \]
resultado <- ph_dif_medias_t_no(
media1 = media_private,
media2 = media_public,
s1 = s_private,
s2 = s_public,
n1 = n_private,
n2 = n_public,
diferencia0 = 0,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Media (Muestra 1) | 19.0842 |
| s (Muestra 1) | 2.1949 |
| n (Muestra 1) | 50 |
| Media (Muestra 2) | 18.7906 |
| s (Muestra 2) | 1.8398 |
| n (Muestra 2) | 50 |
| Diferencia observada | 0.2936 |
| Diferencia bajo H0 | 0 |
| Grados de libertad | 95.0978 |
| Error estándar | 0.405 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico t | 0.7249 |
| p-valor | 0.4703 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Para comparar la proporción de mujeres entre los estudiantes
procedentes de colegios privados y públicos, primero se eliminan las
observaciones con valores faltantes en las variables Gender
y School. Posteriormente se conservan únicamente los
estudiantes provenientes de colegios Private y
Public.
# Conservar solo observaciones válidas de Gender y School, correspondientes a colegios privados o públicos.
datos_genero <- df[
!is.na(df$Gender) &
!is.na(df$School) &
df$School %in% c("Private", "Public"),
]
# Se separa la variable Gender según el tipo de colegio.
genero_private <- datos_genero$Gender[datos_genero$School == "Private"]
genero_public <- datos_genero$Gender[datos_genero$School == "Public"]
# Se cuenta el número de estudiantes de género Female (éxitos) en cada grupo.
exitos_private <- sum(genero_private == "Female")
exitos_public <- sum(genero_public == "Female")
# Se calcula el tamaño muestral de cada grupo.
n_private_genero <- length(genero_private)
n_public_genero <- length(genero_public)
A partir de estos resultados, se obtiene el siguiente resumen para cada grupo:
tabla_genero <- data.frame(
Estadística = c(
"Tamaño muestral (n)",
"Número de mujeres (éxitos)",
"Proporción de mujeres"
),
Private = c(
n_private_genero,
exitos_private,
round(exitos_private / n_private_genero, 3)
),
Public = c(
n_public_genero,
exitos_public,
round(exitos_public / n_public_genero, 3)
),
check.names = FALSE
)
tabla_genero
| Estadística | Private | Public |
|---|---|---|
| Tamaño muestral (n) | 50.00 | 50.00 |
| Número de mujeres (éxitos) | 26.00 | 23.00 |
| Proporción de mujeres | 0.52 | 0.46 |
Observe que las cantidades Éxitos y
n corresponden exactamente a los argumentos que
posteriormente se utilizarán en la función
ic_dif_proporciones().
Se estima la diferencia entre la proporción de mujeres procedentes de colegios privados y la proporción de mujeres procedentes de colegios públicos.
La diferencia se calcula en el orden:
\[ \text{Private}-\text{Public}. \]
resultado <- ph_dif_proporciones(
exitos1 = exitos_private,
n1 = n_private_genero,
exitos2 = exitos_public,
n2 = n_public_genero,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Éxitos (Muestra 1) | 26 |
| n (Muestra 1) | 50 |
| Proporción (Muestra 1) | 0.52 |
| Éxitos (Muestra 2) | 23 |
| n (Muestra 2) | 50 |
| Proporción (Muestra 2) | 0.46 |
| Diferencia observada | 0.06 |
| Proporción combinada | 0.49 |
| ES bajo H0 | 0.1 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico Z | 0.6001 |
| p-valor | 0.5484 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Se compara la variabilidad de las edades entre los estudiantes procedentes de colegios privados y públicos. En este caso, se evalúa si las varianzas poblacionales de las edades son iguales.
La razón se calcula en el orden:
\[ \frac{\text{Private}} {\text{Public}}. \]
# Calcula varianzas
varianza_private <- var(edad_private)
varianza_public <- var(edad_public)
resultado <- ph_razon_varianzas(
varianza1 = varianza_private,
varianza2 = varianza_public,
n1 = n_private,
n2 = n_public,
razon0 = 1,
alpha = 0.05,
alternative = "two.sided"
)
resultado
| Medida | Valor |
|---|---|
| Varianza (Muestra 1) | 4.8177 |
| n (Muestra 1) | 50 |
| Grados de libertad (Muestra 1) | 49 |
| Varianza (Muestra 2) | 3.3848 |
| n (Muestra 2) | 50 |
| Grados de libertad (Muestra 2) | 49 |
| Razón muestral | 1.4233 |
| Razón bajo H0 | 1 |
| Tipo de prueba | Bilateral |
| Nivel de significancia | 0.05 |
| Estadístico F | 1.4233 |
| p-valor | 0.2202 |
| Decisión | No rechazar H0 |
| Conclusión | No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1 |
Pruebas de hipótesis para uno y dos parámetros.
Aplicar los procedimientos estudiados para formular, ejecutar e interpretar pruebas de hipótesis para uno y dos parámetros poblacionales utilizando un conjunto de datos real.
Utilice el conjunto de datos survey del
paquete lsm, el mismo empleado durante las
clases.
Los lineamientos generales para la elaboración, entrega y evaluación de esta actividad se encuentran disponibles en:
https://rpubs.com/hllinas/R_Lineamiento_EstInf
No es necesario repetir dichos lineamientos en este documento.
Conociendo la base de datos
Responda las siguientes preguntas:
¿Cuántas observaciones tiene la base de datos?
¿Cuántas variables contiene?
Muestre los nombres de todas las variables.
Seleccione:
una variable cuantitativa que utilizará con el fin de realizar pruebas para la media y la varianza;
una variable dicotómica que utilizará con el fin de realizar pruebas para una proporción;
una variable categórica con exactamente dos niveles que utilizará para comparar dos poblaciones.
Justifique brevemente la selección realizada.
Importante:
Selección de una muestra
Construya un nuevo data frame denominado
Muestra con más de 100 observaciones
seleccionadas de la base de datos.
Todas las estimaciones realizadas en la actividad deberán calcularse utilizando únicamente esta muestra.
Intervalos de confianza para un parámetro
Utilizando la muestra seleccionada, realice:
una prueba \(Z\) para la media suponiendo conocida la desviación estándar poblacional.
una prueba \(t\) para la media suponiendo desconocida la desviación estándar poblacional.
una prueba para una proporción.
una prueba para una varianza.
Para cada prueba:
plantee \(H_0\) y \(H_1\);
indique el nivel de significancia utilizado;
justifique el valor propuesto bajo \(H_0\);
presente el estadístico y el p-valor;
tome una decisión;
redacte una conclusión contextualizada.
Preparación de los dos grupos
Utilizando la variable categórica seleccionada:
construya dos subconjuntos correspondientes a cada uno de sus niveles;
obtenga todas las estadísticas resumidas necesarias para realizar la pruebas solicitadas en la siguiente sección.
Pruebas para dos parámetros
Utilizando los dos grupos definidos anteriormente, realice:
una prueba \(Z\) para la diferencia de medias suponiendo conocidas las desviaciones estándar poblacionales.
una prueba \(t\) para la diferencia de medias suponiendo varianzas desconocidas e iguales.
una prueba para la diferencia de medias suponiendo varianzas desconocidas y diferentes.
una prueba para la diferencia de proporciones.
una prueba para la razón de varianzas.
Para cada prueba:
plantee \(H_0\) y \(H_1\);
indique el nivel de significancia utilizado;
justifique el valor propuesto bajo \(H_0\);
presente el estadístico y el p-valor;
tome una decisión;
redacte una conclusión contextualizada.
Comparación entre procedimientos
Responda las siguientes preguntas:
¿Qué diferencias observa entre las pruebas \(Z\) y \(t\) para una media?
¿Los resultadoss obtenidos mediante los dos procedimientos para la diferencia de medias fueron similares? Explique.
¿Qué información aporta el resultado obtenido para la razón de varianzas?
Conclusión
Escriba una conclusión de dos o tres párrafos donde analice los principales resultados obtenidos.
Entre otros aspectos, responda:
¿Qué conclusiones pueden obtenerse sobre la población a partir de los resultados obtenidos?
¿Qué diferencias encontró entre trabajar con estadísticas resumidas y calcularlas directamente desde una base de datos?
¿Qué limitaciones presentan los análisis realizados?
Todas las hipótesis deben escribirse con notación estadística.
Todas las tablas deberán estar numeradas y tituladas.
Todas las afirmaciones deberán sustentarse con los resultados obtenidos.
Todas las decisiones deben justificarse mediante el p-valor y el nivel de significancia.
No escriba “se acepta \(H_0\)“; utilice “no se rechaza \(H_0\)”.
Muestre el código utilizado para obtener las estadísticas resumidas antes de realizar cada prueba.
Justifique cualquier supuesto realizado (por ejemplo, la desviación estándar poblacional utilizada en los procedimientos con el estadístico \(Z\)).
El código debe estar comentado y ejecutarse sin errores.
Recuerde consultar los lineamientos generales del curso para conocer los requisitos de reproducibilidad, entrega y evaluación.
RStudio, R Markdown y R (por lo menos, el capítulo 1): Click derecho aquí.
Lineamientos (actividades de análisis de datos): Click derecho aquí.
Tablas estadísticas: Click derecho aquí.
Tabla de supuestos: Click derecho aquí.
LLinás, H., Rojas, C. (2005). Estadística descriptiva y distribuciones de probabilidad. Barranquilla: Editorial Universidad del Norte.
Consultar mis notas de clase: Estadística inferencial
Consultar el documento RPubs :: Enlace y materiales de ayuda.
Agresti, A., Franklin, C., & Klingenberg, B. (2018). Statistics: The Art and Science of Learning from Data, 4/E.
Puede consultarse mis siguientes documentos:
If you found any ERRORS or have SUGGESTIONS, please report them to my email. Thanks.