A. Una Introducción a la Estadística Inferencial con Aplicaciones en R y Python

01. Introducción

La estadística es, en principio, una ciencia auxiliar. Los procedimientos estadísticos deben ayudar, por lo tanto, a encontrar, verificar y/o rechazar, si es el caso, ciertos aspectos, relaciones, reglas, propiedades, etc., que pueden ser relevantes para algún problema de interés.

Así, el trabajo estadístico de un estadístico:

  • Primer paso. Empieza con un problema práctico de alguna aplicación. Se identificarán ciertas variables de interés para tal problema, considerando una escala adecuada en la cual se deban o puedan medir sus valores: de forma nominal (con etiquetas), ordinal (con orden) o métrica (con distancia); de forma cualitativa (con codificación por símbolos o números) o cuantitativa (con números reales). A veces se distingue, además, entre “variables independientes (\(X\))” (representando causas, por ejemplo) y “variables dependientes (\(Y\))” (representando efectos, por ejemplo).

  • Segundo paso. Consiste en traducir el problema a un modelo probabilístico en el cual las variables de interés se representan por variables aleatorias. Para muchos problemas con variables cualitativas, la elección de una distribución binomial o multinomial es natural. Para otros problemas con variables cuantitativas, puede ser útil y adecuado escoger una distribución normal, por ejemplo. En todo caso, los parámetros \(\theta\) de la distribución deben reflejar los aspectos relevantes de las variables del problema.

  • Muchas veces será necesario asegurarse de que el modelo realmente sea el adecuado, usando diferentes métodos en los pasos posteriores, que se esbozan brevemente a continuación. Puede resultar conveniente cambiar o modificar el modelo escogido inicialmente.

  • Si \(Y\) es la variable aleatoria que representa el problema, su función de densidad o función de distribución de probabilidad \(f_Y(y, \theta)\) se denomina modelo probabilístico.

  • El trabajo propiamente estadístico empieza con el tercer paso. Este consiste en observar \(n\) veces la variable del problema (una sola, por simplicidad), representada por la variable \(Y\) del modelo probabilístico, por lo general de manera independiente.

  • Así se obtiene una muestra \(Y = (Y_1, Y_2, ..., Y_n)\) de tamaño \(n\), cuya distribución (conjunta) es determinada, según el segundo paso, por \(f(y, \theta)\); que es la función de densidad o de probabilidad en la observación \(y = (y_1, y_2, ..., y_n)\), fijando \(\theta\); y que es la función de verosimilitud en el parámetro \(\theta\), fijando \(y\). Se llama a la muestra junto con su distribución modelo estadístico.

02. Las Estadísticas, Estadísticos o Estimadores Puntuales

  • Por lo general, no se trabaja con toda la muestra \(Y\), sino con funciones \(S(Y)\), llamadas estadísticas, que consisten en una reducción de la dimensión de la observación.

  • Las Estadísticas Suficientes son aquellas que permiten una reducción de los datos sin pérdida de información.

  • Los análisis constituyen los núcleos del trabajo estadístico y pueden clasificarse bajo los tres conceptos siguientes:

  1. Una estimación del parámetro \(\theta\) (puntual) es una estadística \(\hat{\theta}(Y)\) cuyo valor \(\hat{\theta}(y)\), evaluado con base en una observación concreta \(y\), debe estimar el valor (no conocido) del parámetro \(\theta\).

  2. Un intervalo de confianza, en cambio, es una estimación que define un intervalo (aleatorio) \(IC(Y)\) alrededor de \(\hat{\theta}(Y)\) que contiene con alta probabilidad, \(1 - \alpha\), al parámetro \(\theta\) (considerado unidimensional, por simplicidad). En este sentido, con base en un dato concreto \(y\), el valor de \(IC(Y)\) es un intervalo real \(IC(y) = \hat{\theta}(y) \pm D(y)\) que da una idea sobre la precisión de la estimación puntual.

  3. Hacer una prueba de hipótesis. \(H_0\) contra una alternativa \(H_1\), sobre el parámetro \(\theta\), es un concepto, en principio, muy diferente de los conceptos de estimación, pero hay una relación muy estrecha entre \((1 - \alpha)\) intervalo de confianza y la región de tales datos posibles \(y\) para los cuales se aceptaría \(H_0\), siendo \(\alpha\) el error (de tipo I) de rechazar \(H_0\) equivocadamente. Esto permitirá construir pruebas de hipótesis a partir de intervalos de confianza y viceversa.

  • En conclusión, los cuatro pasos de un trabajo estadístico, esbozados hasta ahora, son:

\[ \text{Problema} \Rightarrow \text{Modelo} \Rightarrow \text{Datos} \Rightarrow \text{Análisis} \]

  • El esquema anterior debe mantenerse en mente para estudiar y aprender los conceptos fundamentales de Estadística.

  • El esquema no es de una sola dirección; debe volverse siempre a los pasos anteriores, comprobando, verificando, modificando y, finalmente, interpretando los resultados de los análisis en términos del problema original.

B. Distribuciones Muestrales

03. La Distribución Muestral de la Media muestral

  • En esta sección se tratarán funciones de las variables \(Y_1, Y_2, ..., Y_n\) observadas en una muestra aleatoria seleccionada de una población bajo estudio. El supuesto básico es que las variables son independientes y tienen una distribución común. Con frecuencia se usan funciones de las variables aleatorias observadas en una muestra para estimar o para tomar decisiones con respecto a parámetros poblacionales desconocidos.

  • Por ejemplo, si se desea estimar la media de una población \(\mu\), y de ella se toma una muestra aleatoria de \(n\) observaciones \(Y_1, Y_2, ..., Y_n\), se usa el estadístico

\[ \bar{Y} = \frac{1}{n} \sum_{i=1}^n Y_i \]

  • Como estimador de esta cantidad, y el valor estimado se obtiene a partir de las observaciones \(y_1, y_2, ..., y_n\) respectivas, así

\[ \bar{y} = \frac{1}{n} \sum_{i=1}^n y_i. \]

  • La bondad de la estimación depende del comportamiento de las variables aleatorias \(Y_1, Y_2, ..., Y_n\) y el efecto de este comportamiento sobre \(\bar{Y}\).

04. Distribuciones Muestrales Relacionadas con la Distribución Normal

  • Definición.

  • Un estadístico \(S(Y) = S(Y_1, Y_2, ..., Y_n)\) es una función de las variables aleatorias que se pueden observar en una muestra y de las constantes conocidas.

  • Los estadísticos se utilizan para hacer inferencias (estimaciones o decisiones) con respecto a parámetros poblacionales desconocidos.

  • Como el estadístico \(S(Y)\) también es una variable aleatoria, tiene una distribución de probabilidad que llamaremos distribución muestral o simplemente muestreo aleatorio.

  • Teorema. Sea \(Y_1, Y_2, ..., Y_n\) una muestra aleatoria de tamaño \(n\) de una distribución normal con media \(\mu\) y varianza \(\sigma^2\). Entonces \(\bar{Y} = \frac{1}{n} \sum_{i=1}^n Y_i\) tiene una distribución normal con media \(\mu\) y varianza \(\frac{\sigma^2}{n}\).

05. Ejemplo 1. Distribución Muestral de \(\bar{Y}\)

  • Muestreo de medias. Una embotelladora puede regularse de tal manera que llene un promedio de \(\mu\) onzas por botella. Se ha observado que la cantidad de contenido que suministra la máquina presenta una distribución normal con \(\sigma = 1.0\) onza. De la producción de la máquina un cierto día, se obtiene una muestra de \(n = 9\) botellas llenas (todas fueron llenadas con las mismas posiciones del control operativo) y se miden las onzas del contenido de cada una.

    1. Determinar la probabilidad de que la media muestral se encuentre a lo más 0.3 onzas de la media real \(\mu\) para tales posiciones de control.
    1. ¿Cuántas observaciones deben incluirse en la muestra si se desea que \(\bar{Y}\) esté a lo más a 0.3 onzas de \(\mu\) con una probabilidad de 0.95?

Solución.

  • Paso 1. Problema de aplicación.

  • Paso 2. (variable de interés) Sea \(Y :=\) Contenido (en onzas) de una botella.

  • Paso 3. (modelo probabilístico) \(Y \sim N(\mu, \sigma^2)\), \(\sigma^2 = 1\).

  • Paso 4. (modelo estadístico) sea \(Y = (Y_1, Y_2, ..., Y_9)\) una muestra aleatoria. Por un teorema anterior, \(\bar{Y}\) tiene una distribución normal con media \(\mu\) y varianza \(\sigma_{\bar{Y}}^2 = \frac{\sigma^2}{n} = \frac{1}{9}\).

    1. Se desea calcular

\[ P(|\bar{Y} - \mu| \leq 0.3) = P(-0.3 \leq (\bar{Y} - \mu) \leq 0.3) \\ = P\left(-\frac{0.3}{\sigma / \sqrt{n}} \leq \frac{\bar{Y} - \mu}{\sigma / \sqrt{n}} \leq \frac{0.3}{\sigma / \sqrt{n}}\right)\\ = P\left(-\frac{0.3}{1 / \sqrt{9}} \leq Z \leq \frac{0.3}{1 / \sqrt{9}}\right) = P(-0.9 \leq Z \leq 0.9) = 0.6318 \]

  1. Se desea calcular

\[ P(|\bar{Y} - \mu| \leq 0.3) = P(-0.3 \leq (\bar{Y} - \mu) \leq 0.3) = P\left(-\frac{0.3}{\sigma / \sqrt{n}} \leq \frac{\bar{Y} - \mu}{\sigma / \sqrt{n}} \leq \frac{0.3}{\sigma / \sqrt{n}}\right) = 0.95 \]

\[ \Rightarrow \frac{0.3}{1 / \sqrt{n}} = 1.96 \Rightarrow 0.3 \sqrt{n} = 1.96 \Rightarrow n = 42.68 \]

06. Ahora usaremos R

# Parámetros dados
sigma <- 1.0     # Desviación estándar poblacional
n <- 9           # Tamaño de la muestra
delta <- 0.3     # Margen de error (0.3 onzas)
mu <- 0          # Media real (asumimos μ = 0 para la gráfica)

# Error estándar de la media
se <- sigma / sqrt(n)

# Límites del área a sombrear
lower_limit <- mu - delta
upper_limit <- mu + delta

# Crear una secuencia de valores para la distribución normal
x <- seq(mu - 4 * se, mu + 4 * se, length.out = 1000)

# Calcular la densidad de la distribución normal
y <- dnorm(x, mean = mu, sd = se)

# Graficar la distribución normal
plot(x, y, type = "l", lwd = 2, col = "blue",
     xlab = "Media muestral (Ȳ)", ylab = "Densidad",
     main = "Distribución normal de la media muestral -Julio Hurtado")

# Sombrear el área entre lower_limit y upper_limit
x_shade <- seq(lower_limit, upper_limit, length.out = 1000)
y_shade <- dnorm(x_shade, mean = mu, sd = se)
polygon(c(lower_limit, x_shade, upper_limit), c(0, y_shade, 0), col = "lightblue", border = NA)

# Añadir líneas verticales para los límites
abline(v = lower_limit, col = "red", lty = 2, lwd = 2)
abline(v = upper_limit, col = "red", lty = 2, lwd = 2)

# Añadir leyenda
legend("topright", legend = c("Distribución normal", "Área sombreada (P(|Ȳ - μ| ≤ 0.3))"),
       col = c("blue", "lightblue"), lwd = 2, lty = c(1, NA), fill = c(NA, "lightblue"), border = NA)

# Parámetros dados
sigma <- 1.0     # Desviación estándar poblacional
n <- 9           # Tamaño de la muestra (inciso a)
delta <- 0.3     # Margen de error (0.3 onzas)
prob <- 0.95     # Probabilidad deseada (inciso b)

# (a) Probabilidad de que la media muestral esté a lo más 0.3 onzas de μ
z_score <- delta / (sigma / sqrt(n))  # Cálculo del puntaje Z
prob_a <- pnorm(z_score) - pnorm(-z_score)  # Probabilidad usando la distribución normal

# Mostrar resultado del inciso (a)
print(paste("(a) La probabilidad de que la media muestral esté a lo más 0.3 onzas de μ es:", round(prob_a, 4)))
## [1] "(a) La probabilidad de que la media muestral esté a lo más 0.3 onzas de μ es: 0.6319"
# (b) Tamaño de la muestra para que la media esté a lo más 0.3 onzas de μ con probabilidad 0.95
z_alpha <- qnorm((1 + prob) / 2)  # Valor crítico de Z para una probabilidad de 0.95
n_b <- ceiling((z_alpha * sigma / delta)^2)  # Cálculo del tamaño de la muestra

# Mostrar resultado del inciso (b)
print(paste("(b) El tamaño de la muestra necesario para que la media esté a lo más 0.3 onzas de μ con una probabilidad de 0.95 es:", n_b))
## [1] "(b) El tamaño de la muestra necesario para que la media esté a lo más 0.3 onzas de μ con una probabilidad de 0.95 es: 43"

07. Distribución Chi-cuadrada

  • Teorema. Sea \(Y_1, Y_2, ..., Y_n\) una muestra aleatoria de tamaño \(n\) de una distribución normal con media \(\mu\) y varianza \(\sigma^2\). Entonces \(Z_i = \frac{Y_i - \mu}{\sigma}\) son variables aleatorias normales estándar e independientes, \(i = 1, 2, ..., n\) y

\[ \sum_{i=1}^n Z_i^2 = \sum_{i=1}^n \frac{(Y_i - \mu)^2}{\sigma^2} \]

tiene una distribución \(\chi^2\) con \(n\) grados de libertad.

07.1 Ejemplo 2.

  • Si \(Z = (Z_1, Z_2, ..., Z_6)\) denota una muestra aleatoria de una distribución normal estándar, hallar un número \(b\) tal que \(P\left(\sum_{i=1}^6 Z_i^2 \leq b\right) = 0.95\).

Solución.
Por el teorema anterior, \(\sum_{i=1}^6 Z_i^2 \sim \chi^2(6)\). Haciendo uso de la tabla para \(\chi^2\), se tiene que \(P\left(\sum_{i=1}^6 Z_i^2 \leq 12.5916\right) = 0.95\), así que \(b = 12.5916\).

# Parámetros dados
n <- 6           # Tamaño de la muestra (grados de libertad)
prob <- 0.95     # Probabilidad deseada

# Encontrar el valor crítico b usando la distribución chi-cuadrado
b <- qchisq(prob, df = n)

# Mostrar el valor de b
print(paste("El valor de b tal que P(∑Z_i² ≤ b) = 0.95 es:", round(b, 4)))
## [1] "El valor de b tal que P(∑Z_i² ≤ b) = 0.95 es: 12.5916"
# Crear una secuencia de valores para la distribución chi-cuadrado
x <- seq(0, 20, length.out = 1000)

# Calcular la densidad de la distribución chi-cuadrado
y <- dchisq(x, df = n)

# Graficar la distribución chi-cuadrado
plot(x, y, type = "l", lwd = 2, col = "blue",
     xlab = "Valores de ∑Z_i²", ylab = "Densidad",
     main = "Distribución chi-cuadrado con 6 grados de libertad")

# Sombrear el área correspondiente a P(∑Z_i² ≤ b)
x_shade <- seq(0, b, length.out = 1000)
y_shade <- dchisq(x_shade, df = n)
polygon(c(0, x_shade, b), c(0, y_shade, 0), col = "lightblue", border = NA)

# Añadir una línea vertical en el valor crítico b
abline(v = b, col = "red", lty = 2, lwd = 2)

# Añadir leyenda
legend("topright", legend = c("Distribución chi-cuadrado", "Área sombreada (P(∑Zi²≤ b) = 0.95)"),
       col = c("blue", "lightblue"), lwd = 2, lty = c(1, NA), fill = c(NA, "lightblue"), border = NA)

07.2. Teorema: La Distribución Muestral de la Varianza \(S^2\)

  • Sea \(Y_1, Y_2, ..., Y_n\) una muestra aleatoria de tamaño \(n\) de una distribución normal con media \(\mu\) y varianza \(\sigma^2\). Entonces

\[ \frac{1}{\sigma^2} \sum_{i=1}^n (Y_i - \bar{Y})^2 = \frac{(n-1)S^2}{\sigma^2} \]

tiene una distribución \(\chi^2\) con \(n-1\) grados de libertad. \(\bar{Y}\) y \(S^2\) son también variables aleatorias independientes.**

07.3. Ejemplo 3. Muestreo de varianzas usando R

  • Una embotelladora puede regularse de tal manera que llene un promedio de \(\mu\) onzas por botella. Se ha observado que la cantidad de contenido que suministra la máquina presenta una distribución normal con \(\sigma = 1.0\) onza. Supóngase que se desea obtener una muestra aleatoria de 10 botellas y medir el contenido en cada botella. Si se utilizan estas \(n = 10\) observaciones para calcular \(S^2\), encuentre los números \(b_1\) y \(b_2\) tales que \(P(b_1 \leq S^2 \leq b_2) = 0.90\).

Solución.
+ Por el teorema anterior, \(\frac{(n-1)S^2}{\sigma^2} \sim \chi^2_{(n-1)}\). Obsérvese que

\[ P(b_1 \leq S^2 \leq b_2) = P\left(\frac{(n-1)b_1}{\sigma^2} \leq \frac{(n-1)S^2}{\sigma^2} \leq \frac{(n-1)b_2}{\sigma^2}\right)\\ = P\left(\frac{(10-1)b_1}{1} \leq \chi^2(9) \leq \frac{(10-1)b_2}{1}\right)\\ = P(9b_1 \leq \chi^2(9) \leq 9b_2) = 0.90 \]

Usando la tabla para \(\chi^2(9)\), se tiene que \(P(3.325 \leq \chi^2(9) \leq 16.919) = 0.90\), luego \(b_1 = \frac{3.325}{9} = 0.369\) y \(b_2 = \frac{16.919}{9} = 1.880\).

07.4. Usando R

# Parámetros dados
n <- 10          # Tamaño de la muestra
sigma <- 1.0     # Desviación estándar poblacional
alpha <- 0.10    # Nivel de significancia (1 - 0.90)

# Grados de libertad
df <- n - 1

# Encontrar los valores críticos de la distribución chi-cuadrado
b1 <- qchisq(alpha / 2, df) * sigma^2 / df
b2 <- qchisq(1 - alpha / 2, df) * sigma^2 / df

# Mostrar los resultados
print(paste("El valor de b1 es:", round(b1, 4)))
## [1] "El valor de b1 es: 0.3695"
print(paste("El valor de b2 es:", round(b2, 4)))
## [1] "El valor de b2 es: 1.8799"
# Crear una secuencia de valores para la distribución chi-cuadrado
x <- seq(0, 30, length.out = 1000)

# Calcular la densidad de la distribución chi-cuadrado
y <- dchisq(x, df = df)

# Graficar la distribución chi-cuadrado
plot(x, y, type = "l", lwd = 2, col = "blue",
     xlab = "Varianza muestral (S²)", ylab = "Densidad",
     main = "Distribución chi-cuadrado con 9 grados de libertad")

# Sombrear el área correspondiente a P(b1 ≤ S² ≤ b2)
x_shade <- seq(b1, b2, length.out = 1000)
y_shade <- dchisq(x_shade, df = df)
polygon(c(b1, x_shade, b2), c(0, y_shade, 0), col = "lightblue", border = NA)

# Añadir líneas verticales para los límites
abline(v = b1, col = "red", lty = 2, lwd = 2)
abline(v = b2, col = "red", lty = 2, lwd = 2)

# Añadir leyenda
legend("topright", legend = c("Distribución chi-cuadrado", "Área sombreada (P(b1 ≤ S² ≤ b2) = 0.90)"),
       col = c("blue", "lightblue"), lwd = 2, lty = c(1, NA), fill = c(NA, "lightblue"), border = NA)

08. Distribución t de Student

08.1. Definición.

  • Sea \(Z\) una variable aleatoria estándar y sea \(\chi^2\) una variable aleatoria chi-cuadrada con \(\nu\) grados de libertad. Entonces, si \(Z\) y \(\chi^2\) son independientes,

\[ T = \frac{Z}{\sqrt{\chi^2 / \nu}} \]

  • se dice que tiene una distribución \(t\) de Student con \(\nu\) grados de libertad.

08.2. Ejemplo 4.

  • La resistencia a la tensión para cierto tipo de alambre se distribuye normalmente con una media desconocida \(\mu\) y una varianza \(\sigma^2\). Se seleccionan al azar seis segmentos de alambre de un rollo grande y se midió \(Y_i :=\) la resistencia a la tensión para el segmento \(i\), en donde \(i = 1, 2, ..., 6\). La media de la población \(\mu\) y la varianza \(\sigma^2\) se pueden estimar por \(\bar{Y}\) y \(S^2\), respectivamente. Así, \(\sigma_{\bar{Y}}^2\) se puede estimar por \(S^2 / n\). Obtener la probabilidad aproximada de que \(\bar{Y}\) esté a lo más a \(2S / \sqrt{n}\) de la verdadera media poblacional \(\mu\).

###Solución.

  • De la definición anterior, \(\frac{\bar{Y} - \mu}{S / \sqrt{n}} \sim T_{(n-1)}\). Se desea encontrar

\[ P(|\bar{Y} - \mu| \leq 2S / \sqrt{n}) = P\left(-2 \leq \frac{\bar{Y} - \mu}{S / \sqrt{n}} \leq 2\right) = P(-2 \leq T_{(5)} \leq 2) = 0.8980. \]

  • Nótese que si se conociese \(\sigma^2\), se tendría:

\[ P(|\bar{Y} - \mu| \leq 2\sigma / \sqrt{n}) = P\left(-2 \leq \frac{\bar{Y} - \mu}{\sigma / \sqrt{n}} \leq 2\right) = P(-2 \leq Z \leq 2) = 0.9544. \] ### 08.3. Usando R

# Parámetros dados
n <- 6           # Tamaño de la muestra
k <- 2           # Factor de escala (2 en este caso)

# Grados de libertad
df <- n - 1

# Calcular la probabilidad usando la distribución t de Student
prob <- pt(k, df = df) - pt(-k, df = df)

# Mostrar la probabilidad
print(paste("La probabilidad de que Ȳ esté a lo más a 2S/√n de μ es:", round(prob, 4)))
## [1] "La probabilidad de que Ȳ esté a lo más a 2S/√n de μ es: 0.8981"
# Crear una secuencia de valores para la distribución t de Student
x <- seq(-4, 4, length.out = 1000)

# Calcular la densidad de la distribución t de Student
y <- dt(x, df = df)

# Graficar la distribución t de Student
plot(x, y, type = "l", lwd = 2, col = "blue",
     xlab = "Valores de t", ylab = "Densidad",
     main = "Distribución t de Student con 5 grados de libertad")

# Sombrear el área correspondiente a P(-2 ≤ t ≤ 2)
x_shade <- seq(-k, k, length.out = 1000)
y_shade <- dt(x_shade, df = df)
polygon(c(-k, x_shade, k), c(0, y_shade, 0), col = "lightblue", border = NA)

# Añadir líneas verticales para los límites
abline(v = -k, col = "red", lty = 2, lwd = 2)
abline(v = k, col = "red", lty = 2, lwd = 2)

# Añadir leyenda
legend("topright", legend = c("Distribución t de Student", "Área sombreada (P(-2 ≤ t ≤ 2))"),
       col = c("blue", "lightblue"), lwd = 2, lty = c(1, NA), fill = c(NA, "lightblue"), border = NA)

09. Distribución F

09.1. Definición.

  • Sean \(\chi_1^2\) y \(\chi_2^2\) variables aleatorias chi-cuadrada con \(\nu_1\) y \(\nu_2\) grados de libertad, respectivamente. Entonces, si \(\chi_1^2\) y \(\chi_2^2\) son independientes,

\[ F = \frac{\chi_1^2 / \nu_1}{\chi_2^2 / \nu_2} \]

  • se dice que tiene una distribución \(F\) con \(\nu_1\) grados de libertad del numerador y \(\nu_2\) grados de libertad del denominador.

09.2. Ejemplo 5.

  • Si tomamos dos muestras independientes de tamaño \(n_1 = 6\) y \(n_2 = 10\) de dos poblaciones normales con la misma varianza poblacional, encuentre el número \(b\) tal que

\[ P\left(\frac{S_1^2}{S_2^2} \leq b\right) = 0.95 \]


Solución:

Si tomamos dos muestras independientes de tamaño \(n_1 = 6\) y \(n_2 = 10\) de dos poblaciones normales con la misma varianza poblacional, encuentre el número \(b\) tal que:

\[ P\left(\frac{S_1^2}{S_2^2} \leq b\right) = 0.95, \]

donde \(S_1^2\) y \(S_2^2\) son las varianzas muestrales de las dos muestras.


Pasos:

  1. Distribución de la razón de varianzas:

    La razón de varianzas muestrales \(\frac{S_1^2}{S_2^2}\) sigue una distribución \(F\) con \((n_1 - 1)\) y \((n_2 - 1)\) grados de libertad. Es decir:

    \[ F = \frac{S_1^2}{S_2^2} \sim F_{(n_1 - 1, n_2 - 1)}. \]

    En este caso, \(n_1 = 6\) y \(n_2 = 10\), por lo que los grados de libertad son \((5, 9)\).

  2. Valor crítico \(b\):

    Buscamos el valor \(b\) tal que:

    \[ P\left(F \leq b\right) = 0.95. \]

    Esto corresponde al percentil \(0.95\) de la distribución \(F\) con \((5, 9)\) grados de libertad.

  3. Uso de la tabla \(F\):

    Para encontrar \(b\), consultamos la tabla de la distribución \(F\) con \((5, 9)\) grados de libertad y buscamos el valor correspondiente al percentil \(0.95\).

    • En la tabla \(F\), el valor crítico \(F_{0.95}(5, 9)\) es aproximadamente 3.48.
  4. Resultado:

    Por lo tanto, el número \(b\) que satisface la condición es:

    \[ b = 3.48. \]


Respuesta final:

El valor de \(b\) tal que \(P\left(\frac{S_1^2}{S_2^2} \leq b\right) = 0.95\) es:

\[ \boxed{b = 3.48} \]


09.3. Usando R

# Parámetros dados
n1 <- 6           # Tamaño de la primera muestra
n2 <- 10          # Tamaño de la segunda muestra
prob <- 0.95      # Probabilidad deseada

# Grados de libertad
df1 <- n1 - 1     # Grados de libertad para S1²
df2 <- n2 - 1     # Grados de libertad para S2²

# Encontrar el valor crítico b usando la distribución F
b <- qf(prob, df1 = df1, df2 = df2)

# Mostrar el valor de b
print(paste("El valor de b tal que P(S1²/S2² ≤ b) = 0.95 es:", round(b, 4)))
## [1] "El valor de b tal que P(S1²/S2² ≤ b) = 0.95 es: 3.4817"
# Crear una secuencia de valores para la distribución F
x <- seq(0, 5, length.out = 1000)

# Calcular la densidad de la distribución F
y <- df(x, df1 = df1, df2 = df2)

# Graficar la distribución F
plot(x, y, type = "l", lwd = 2, col = "blue",
     xlab = "Valores de F = S1²/S2²", ylab = "Densidad",
     main = "Distribución F con (5, 9) grados de libertad")

# Sombrear el área correspondiente a P(F ≤ b)
x_shade <- seq(0, b, length.out = 1000)
y_shade <- df(x_shade, df1 = df1, df2 = df2)
polygon(c(0, x_shade, b), c(0, y_shade, 0), col = "lightblue", border = NA)

# Añadir una línea vertical en el valor crítico b
abline(v = b, col = "red", lty = 2, lwd = 2)

# Añadir leyenda
legend("topright", legend = c("Distribución F", "Área sombreada (P(F ≤ b) = 0.95)"),
       col = c("blue", "lightblue"), lwd = 2, lty = c(1, NA), fill = c(NA, "lightblue"), border = NA)

# Parámetros dados
n1 <- 6           # Tamaño de la primera muestra
n2 <- 10          # Tamaño de la segunda muestra
prob <- 0.95      # Probabilidad deseada

# Grados de libertad
df1 <- n1 - 1     # Grados de libertad para S1²
df2 <- n2 - 1     # Grados de libertad para S2²

# Encontrar el valor crítico b usando la distribución F
b <- qf(prob, df1 = df1, df2 = df2)

# Mostrar el valor de b
print(paste("El valor de b tal que P(S1²/S2² ≤ b) = 0.95 es:", round(b, 4)))
## [1] "El valor de b tal que P(S1²/S2² ≤ b) = 0.95 es: 3.4817"
# Crear una secuencia de valores para la distribución F
x <- seq(0, 5, length.out = 1000)

# Calcular la densidad de la distribución F
y <- df(x, df1 = df1, df2 = df2)

# Graficar la distribución F
plot(x, y, type = "l", lwd = 2, col = "blue",
     xlab = "Valores de F = S1²/S2²", ylab = "Densidad",
     main = "Distribución F con (5, 9) grados de libertad")

# Sombrear el área correspondiente a P(F ≤ b)
x_shade <- seq(0, b, length.out = 1000)
y_shade <- df(x_shade, df1 = df1, df2 = df2)
polygon(c(0, x_shade, b), c(0, y_shade, 0), col = "lightblue", border = NA)

# Añadir una línea vertical en el valor crítico b
abline(v = b, col = "red", lty = 2, lwd = 2)

# Añadir leyenda
legend("topright", legend = c("Distribución F", "Área sombreada (P(F ≤ b) = 0.95)"),
       col = c("blue", "lightblue"), lwd = 2, lty = c(1, NA), fill = c(NA, "lightblue"), border = NA)

C. Teorema Límites de la estadística

10. Teorema del Límite Central (TLC)

  • El Teorema del Límite Central (TLC) es uno de los resultados más importantes en estadística y probabilidad. Establece que, bajo ciertas condiciones, la distribución de la media muestral de una muestra aleatoria se aproxima a una distribución normal, independientemente de la forma de la distribución de la población original, siempre que el tamaño de la muestra sea suficientemente grande.

10.1. Enunciado formal del TLC:

  • Sean \(Y_1, Y_2, \dots, Y_n\) variables aleatorias independientes e idénticamente distribuidas (i.i.d.) con media \(\mu\) y varianza \(\sigma^2 < \infty\). Definimos la media muestral como:

\[ \bar{Y} = \frac{1}{n} \sum_{i=1}^n Y_i. \]

  • Entonces, la variable estandarizada:

\[ U_n = \frac{\bar{Y} - \mu}{\sigma / \sqrt{n}}, \]

  • converge en distribución a una distribución normal estándar \(N(0, 1)\) cuando \(n \to \infty\). Es decir:

\[ U_n \xrightarrow{d} N(0, 1). \]


10.2. Interpretación:

  1. Distribución de la media muestral:
    • La media muestral \(\bar{Y}\) tiene una distribución que se aproxima a una distribución normal con media \(\mu\) y varianza \(\frac{\sigma^2}{n}\).
    • Esto es cierto incluso si la población original no sigue una distribución normal.
  2. Tamaño de la muestra:
    • Cuanto mayor sea el tamaño de la muestra \(n\), mejor será la aproximación a la distribución normal.
    • En la práctica, se considera que \(n \geq 30\) es suficiente para una buena aproximación, aunque esto puede variar dependiendo de la forma de la distribución original.
  3. Aplicaciones:
    • El TLC es fundamental en inferencia estadística, ya que permite hacer inferencias sobre la media poblacional \(\mu\) incluso cuando la distribución de la población es desconocida.
    • También es la base para muchos métodos estadísticos, como intervalos de confianza y pruebas de hipótesis.

10.3. Ejemplo 6. Ilustración del TLC:

  • A continuación, se presenta una ilustración del TLC utilizando una población no normal (por ejemplo, una distribución exponencial) y mostrando cómo la distribución de la media muestral se aproxima a una distribución normal a medida que aumenta el tamaño de la muestra.

Código en R para la ilustración:

# Parámetros
set.seed(123)  # Para reproducibilidad
mu <- 1        # Media de la distribución exponencial
n_sim <- 1000  # Número de simulaciones
sample_sizes <- c(5, 30, 100)  # Tamaños de muestra

# Función para simular medias muestrales
simulate_sample_means <- function(n) {
  sapply(1:n_sim, function(i) mean(rexp(n, rate = 1/mu)))
}

# Crear gráficos
par(mfrow = c(1, 3))  # 1 fila, 3 columnas
for (n in sample_sizes) {
  sample_means <- simulate_sample_means(n)
  hist(sample_means, breaks = 30, freq = FALSE, main = paste("n =", n),
       xlab = "Media muestral", col = "lightblue", border = "white")
  curve(dnorm(x, mean = mu, sd = mu/sqrt(n)), add = TRUE, col = "red", lwd = 2)
}

Conclusión:

  • El TLC es una herramienta poderosa que permite aproximar la distribución de la media muestral a una distribución normal, incluso cuando la población original no es normal. Esto es fundamental en estadística, ya que simplifica el análisis y la inferencia en muchos casos prácticos.

10.4. Aproximación normal de la distribución binomial

  • Supongamos que \(Y \sim B(n, p)\), donde \(Y\) es el número de éxitos en \(n\) pruebas. Consideremos \(Y = \sum_{i=1}^n X_i\), donde:

\[ X_i = \begin{cases} 1, & \text{si el resultado de la } i\text{-ésima prueba es éxito} \\ 0, & \text{si es fracaso} \end{cases} \]

y \(X_i\) (\(i = 1, 2, \dots, n\)) son independientes. Por consiguiente, cuando \(n\) es grande, por el TLC, la proporción de éxitos en la muestra:

\[ \frac{Y}{n} = \frac{1}{n} \sum_{i=1}^n X_i = \bar{X} \]

tendrá aproximadamente una distribución normal con media \(\mu = E(\bar{X}) = p\) y varianza \(V(\bar{X}) = \frac{p(1-p)}{n}\).

10.5. Ejemplo 8. Aproximación normal de la distribución binomial

###Problema:
+ El candidato A considera que puede ganar una elección en una ciudad si obtiene al menos 55% de los votos en el distrito I. Además, supone que alrededor del 50% de los votantes en la ciudad están a su favor. Si \(n = 100\) votantes vienen a votar en el distrito I, ¿cuál es la probabilidad de que el candidato A pueda ganar la elección?

Solución:

  1. Variable de interés:
    \(Y =\) número de votantes en el distrito I a favor del candidato A.

  2. Modelo probabilístico:
    \(Y \sim B(n, p)\), donde \(p = 0.5\) y \(n = 100\).

  3. Modelo estadístico:
    \(Y = (X_1, X_2, \dots, X_{100})\), donde:

    \[ X_i = \begin{cases} 1, & \text{si el } i\text{-ésimo votante vota por el candidato A} \\ 0, & \text{otro caso} \end{cases} \]

  4. Respuesta a la pregunta:
    Calculamos la probabilidad de que la proporción de votos a favor sea al menos 55%:

    \[ P\left( \frac{Y}{n} \geq 0.55 \right) = P\left( \frac{\frac{Y}{n} - p}{\sqrt{p(1-p)/n}} \geq \frac{0.55 - 0.5}{\sqrt{0.5(0.5)/100}} \right) \approx P(Z \geq 1) = 0.1587 \]

  • La probabilidad de que el candidato A pueda ganar la elección es del 15.87%.

10.6. Ejemplo 6: Distribución de la media muestral para poblaciones desconocidas con muestras grandes

Problema:

Los resultados de las pruebas finales de todos los alumnos de último año de las preparatorias de cierto estado tienen una media de 60 y una varianza de 64. Una generación específica de cierta preparatoria de \(n = 100\) alumnos tuvo una media de 58. ¿Puede afirmarse que esta preparatoria sea inferior?

  • Solución:
  1. Variable de interés:
    \(Y =\) resultado en la prueba final de un alumno de último año.

  2. Modelo probabilístico:
    \(Y \sim f_Y(y, \theta)\), donde \(\theta = (\mu, \sigma^2) = (60, 64)\).

  3. Modelo estadístico:
    \(Y = (Y_1, Y_2, \dots, Y_{100})\). El estadístico de interés es \(\bar{Y} \approx N(\mu, \sigma^2 / n)\).

  4. Respuesta a la pregunta:
    Para determinar si esta preparatoria es inferior, calculamos la probabilidad \(P(\bar{Y} \leq 58)\):

    \[ P(\bar{Y} \leq 58) = P\left( \frac{\bar{Y} - \mu}{\sigma / \sqrt{n}} \leq \frac{58 - 60}{8 / \sqrt{100}} \right) \approx P(Z \leq -2.5) = 0.0062 \]

  • Esta probabilidad es muy baja (0.62%). Por tanto, puede afirmarse que la calificación promedio para esta preparatoria es menor que el promedio global \(\mu = 60\).


10.6.1. Código en R:

# Parámetros dados
mu_poblacion <- 60      # Media poblacional
var_poblacion <- 64     # Varianza poblacional
n <- 100                # Tamaño de la muestra
media_muestral <- 58    # Media muestral

# Error estándar de la media
se <- sqrt(var_poblacion / n)

# Estadístico de prueba Z
z <- (media_muestral - mu_poblacion) / se

# Valor p (prueba de una cola, cola inferior)
p_valor <- pnorm(z)

# Mostrar resultados
print(paste("Estadístico de prueba Z:", round(z, 4)))
## [1] "Estadístico de prueba Z: -2.5"
print(paste("Valor p:", round(p_valor, 4)))
## [1] "Valor p: 0.0062"
# Conclusión
alpha <- 0.05  # Nivel de significancia
if (p_valor < alpha) {
  print("Rechazamos la hipótesis nula: La preparatoria es inferior.")
} else {
  print("No rechazamos la hipótesis nula: No hay evidencia suficiente para afirmar que la preparatoria es inferior.")
}
## [1] "Rechazamos la hipótesis nula: La preparatoria es inferior."
# Gráfica de la distribución normal estándar
x <- seq(-4, 4, length.out = 1000)  # Rango de valores para Z
y <- dnorm(x)                       # Densidad de la distribución normal estándar

# Crear la gráfica
plot(x, y, type = "l", lwd = 2, col = "blue", xlab = "Z", ylab = "Densidad",
     main = "Distribución normal estándar y región de rechazo")

# Sombrear la región correspondiente al valor p (cola inferior)
x_shade <- seq(-4, z, length.out = 1000)
y_shade <- dnorm(x_shade)
polygon(c(-4, x_shade, z), c(0, y_shade, 0), col = "lightblue", border = NA)

# Añadir una línea vertical en el estadístico de prueba Z
abline(v = z, col = "red", lty = 2, lwd = 2)

# Añadir leyenda
legend("topright", legend = c("Distribución normal", "Región de rechazo (Valor p)", "Estadístico Z"),
       col = c("blue", "lightblue", "red"), lwd = 2, lty = c(1, NA, 2), fill = c(NA, "lightblue", NA))

10.6.2. El enunciado en R

# Cargar librería para gráficos
#install.packages("ggplot2")
library(ggplot2)

# Parámetros
media_poblacion <- 60
desviacion_estandar <- 8 / sqrt(100)  # Error estándar
nivel_significancia <- 0.05
valor_critico <- qnorm(nivel_significancia)  # Valor crítico Z

# Crear un rango de valores para la distribución
x <- seq(media_poblacion - 4 * desviacion_estandar, 
         media_poblacion + 4 * desviacion_estandar, 
         length.out = 1000)
y <- dnorm(x, mean = media_poblacion, sd = desviacion_estandar)

# Crear un data frame para ggplot
datos <- data.frame(x = x, y = y)

# Gráfico
ggplot(datos, aes(x = x, y = y)) +
  geom_line(color = "blue", size = 1) +  # Curva de la distribución
  geom_area(data = subset(datos, x <= media_poblacion + valor_critico * desviacion_estandar), 
            aes(x = x, y = y), 
            fill = "red", alpha = 0.5) +  # Región de rechazo
  geom_vline(xintercept = media_poblacion + valor_critico * desviacion_estandar, 
             color = "black", linetype = "dashed", size = 1) +  # Línea del valor crítico
  annotate("text", x = media_poblacion + valor_critico * desviacion_estandar, 
           y = 0.1, label = "Z crítico = -1.645", 
           hjust = 1.2, color = "black") +  # Etiqueta del valor crítico
  labs(title = "Región de rechazo para prueba de una cola (cola izquierda)",
       x = "Media muestral",
       y = "Densidad") +
  theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.


10.7. Ejemplo 7: Distribución de la media muestral para poblaciones desconocidas con muestras grandes

Problema:

  • Los tiempos de espera para los clientes que pasan por una caja registradora a la salida de una tienda de menudeo son variables aleatorias independientes con una media de 1.5 minutos y una varianza de 1.0. ¿Cuál es la probabilidad de que se pueda atender a 100 clientes en menos de 2 horas?

Solución:

  1. Variable de interés:
    \(Y =\) tiempo (en minutos) de espera de un cliente para pasar a una caja registradora.

  2. Modelo probabilístico:
    \(Y \sim f_Y(y, \theta)\), donde \(\theta = (\mu, \sigma^2) = (1.5, 1.0)\).

  3. Modelo estadístico:
    \(Y = (Y_1, Y_2, \dots, Y_{100})\), donde \(Y_i =\) tiempo de espera del cliente \(i\).

  4. Respuesta a la pregunta:
    Calculamos la probabilidad de que el tiempo total de espera para 100 clientes sea menor o igual a 120 minutos:

    \[ P\left( \sum_{i=1}^{100} Y_i \leq 120 \right) = P\left( \frac{1}{100} \sum_{i=1}^{100} Y_i \leq \frac{120}{100} \right) = P(\bar{Y} \leq 1.20) \]

    Aplicando el TLC:

    \[ P(\bar{Y} \leq 1.20) = P\left( \frac{\bar{Y} - \mu}{\sigma / \sqrt{n}} \leq \frac{1.20 - 1.5}{1.0 / \sqrt{100}} \right) \approx P(Z \leq -3.0) = 0.0013 \]

    Esta pequeña probabilidad (0.13%) indica que es prácticamente imposible atender a 100 clientes en menos de 2 horas.

D. Estimación de parámetros poblacionales

11. Estimación de parámetros poblacionales

11.1. Introducción

  • El objetivo de la estadística es obtener una inferencia con respecto a la población basándose en la información contenida en una muestra. Como las poblaciones se describen mediante medidas numéricas denominadas parámetros**, la mayoría de las investigaciones se conducen en deducir inferencias acerca de ellos. Los procedimientos de la inferencia estadística involucran ya sea la _estimación__ o la Prueba de Hipótesis, las cuales tienen muchas aplicaciones prácticas.**

11.2. Estimadores Puntuales y sus Propiedades

  • Básicamente, para que un estimador sea bueno, se desea que la varianza del estimador sea lo más pequeña posible, mientras que la distribución de muestreo debe concentrarse alrededor del valor del parámetro.

Definición

  • Un estimador \(\hat{\theta}\) de un parámetro poblacional \(\theta\) es una regla que establece cómo calcular una estimación del parámetro basada en las mediciones contenidas en una muestra aleatoria. Comúnmente, el estimador se expresa mediante una fórmula. Por ejemplo, la media de la muestra:

\[ \bar{Y} = \frac{1}{n} \sum_{i=1}^n Y_i \]

  • es un posible estimador puntual para la media poblacional \(\mu\). Es evidente que \(\bar{Y}\) es una regla y una fórmula al mismo tiempo.

11.3. Estimadores Insesgados

Se dice que la estadística \(\hat{\theta} = H(X_1, X_2, \dots, X_n)\) es un estimador insesgado del parámetro \(\theta\) si:

\[ E(\hat{\theta}) = \theta \]

Es decir, si los valores del estimador se centran alrededor del parámetro en cuestión. En caso contrario, se dice que es sesgado.


11.4. Estimadores Insesgados Comunes

En inferencia estadística, los estimadores puntuales insesgados más utilizados son:

Parámetro objetivo: \(\theta\) Tamaño Estimador: \(\hat{\theta}\) \(E(\hat{\theta})\) \(V(\hat{\theta})\)
\(\mu\) \(n\) \(\bar{Y}\) \(\mu\) \(\frac{\sigma^2}{n}\)
\(p\) \(n\) \(\hat{p} = \frac{Y}{n}\) \(p\) \(\frac{pq}{n}\)
\(\mu_1 - \mu_2\) \(n_1\) y \(n_2\) \(\bar{Y}_1 - \bar{Y}_2\) \(\mu_1 - \mu_2\) \(\frac{\sigma_1^2}{n_1} + \frac{\sigma_2^2}{n_2}\)
\(p_1 - p_2\) \(n_1\) y \(n_2\) \(\hat{p}_1 - \hat{p}_2\) \(p_1 - p_2\) \(\frac{p_1 q_1}{n_1} + \frac{p_2 q_2}{n_2}\)

11.5. Ejemplo: Estimadores Insesgados y Sesgados

Sea \(Y_1, Y_2, \dots, Y_n\) una muestra aleatoria con \(E(Y_i) = \mu\) y \(V(Y_i) = \sigma^2\). Demuestre que:

  1. \(S^{*2} = \frac{1}{n} \sum_{i=1}^n (Y_i - \bar{Y})^2\) es un estimador sesgado para \(\sigma^2\).
  2. \(S^2 = \frac{1}{n-1} \sum_{i=1}^n (Y_i - \bar{Y})^2\) es un estimador insesgado para \(\sigma^2\).

Solución:

  1. Paso 1: Expresamos \((Y_i - \bar{Y})^2\) como: \[ (Y_i - \bar{Y})^2 = Y_i^2 - 2Y_i \bar{Y} + \bar{Y}^2 \]

  2. Paso 2: Sumamos sobre todas las observaciones: \[ \sum_{i=1}^n (Y_i - \bar{Y})^2 = \sum_{i=1}^n Y_i^2 - 2n \bar{Y}^2 + n \bar{Y}^2 = \sum_{i=1}^n Y_i^2 - n \bar{Y}^2 \]

  3. Paso 3: Calculamos la esperanza: \[ E\left( \sum_{i=1}^n (Y_i - \bar{Y})^2 \right) = E\left( \sum_{i=1}^n Y_i^2 - n \bar{Y}^2 \right) = \sum_{i=1}^n E(Y_i^2) - n E(\bar{Y}^2) \]

  4. Paso 4: Recordamos que: \[ E(Y_i^2) = \sigma^2 + \mu^2 \quad \text{y} \quad E(\bar{Y}^2) = \frac{\sigma^2}{n} + \mu^2 \]

  5. Paso 5: Sustituimos: \[ E\left( \sum_{i=1}^n (Y_i - \bar{Y})^2 \right) = n(\sigma^2 + \mu^2) - n\left( \frac{\sigma^2}{n} + \mu^2 \right) = (n-1)\sigma^2 \]

  6. Paso 6: Por tanto: \[ E(S^{*2}) = \frac{1}{n} E\left( \sum_{i=1}^n (Y_i - \bar{Y})^2 \right) = \frac{(n-1)\sigma^2}{n} \] Esto muestra que \(S^{*2}\) es sesgado.

  7. Paso 7: Para \(S^2\): \[ E(S^2) = \frac{1}{n-1} E\left( \sum_{i=1}^n (Y_i - \bar{Y})^2 \right) = \sigma^2 \] Por tanto, \(S^2\) es insesgado.


11.6. Estimadores Consistentes

  • Es razonable esperar que un buen estimador de un parámetro \(\theta\) sea cada vez mejor conforme crece el tamaño de la muestra y la información se vuelve más completa. La distribución de muestreo de un buen estimador se encuentra cada vez más concentrada alrededor del parámetro \(\theta\). Si un estimador es consistente, converge en probabilidad al valor del parámetro que está intentando estimar conforme el tamaño de la muestra crece. Esto implica que la varianza de un estimador consistente disminuye conforme \(n\) crece.

  • Se dice que \(\hat{\theta}\) es un estimador consistente de \(\theta\) si:

\[ \lim_{n \to \infty} \hat{\theta} = \theta \]

  • que es equivalente a:

\[ \lim_{n \to \infty} V(\hat{\theta}) = 0 \]


11.7. Estimadores Eficientes (Insesgados de Varianza Mínima)

  • El hecho de que un estimador sea centrado no garantiza que sus realizaciones caigan cerca del valor del parámetro; hace falta además que tenga la varianza pequeña. La varianza de un estimador insesgado es la cantidad más importante para decidir qué tan bueno es el estimador para estimar el parámetro \(\theta\).

  • Sean \(\hat{\theta}_1\) y \(\hat{\theta}_2\) cualesquiera dos estimadores insesgados de \(\theta\). Se dice que \(\hat{\theta}_1\) es un estimador más eficiente de \(\theta\) que \(\hat{\theta}_2\) si:

\[ V(\hat{\theta}_1) \leq V(\hat{\theta}_2) \]

  • El cociente:

\[ e = \frac{V(\hat{\theta}_1)}{V(\hat{\theta}_2)} \]

  • se llama eficiencia relativa de \(\hat{\theta}_1\) respecto a \(\hat{\theta}_2\), y su valor está entre 0 y 1 (\(0 \leq e \leq 1\)). Si \(e\) está próximo a 0, \(\hat{\theta}_1\) es mejor que \(\hat{\theta}_2\).

11.8. Bondad de un Estimador

  • El error de estimación \(\epsilon\) es la distancia entre un estimador y su parámetro objetivo. Es decir:

\[ \epsilon = |\hat{\theta} - \theta| \]

  • Ya que el error de estimación es una cantidad aleatoria, no podemos afirmar qué tan grande o pequeño será para una estimación en particular, pero se pueden establecer enunciados probabilísticos al respecto. Si se conoce la distribución de probabilidad de \(\hat{\theta}\), se pueden elegir dos puntos \((\theta - b)\) y \((\theta + b)\) localizados cerca de las colas de la distribución de manera que:

\[ P(\epsilon < b) = P(\theta - b < \hat{\theta} < \theta + b) \]

  • y \(b\) se puede considerar como el límite probabilístico del error de estimación con una alta probabilidad.

11.9. Ejemplo: Estimación de una Proporción

  • Una muestra de \(n = 1000\) votantes, obtenida al azar de una ciudad, mostró \(y = 560\) a favor del candidato Gómez. Estime \(p\), la fracción de votantes en la población que están a favor de Gómez, y utilice un límite de dos desviaciones estándar para el error de estimación.

Solución:

  1. Utilizamos el estimador \(\hat{p} = \frac{Y}{n}\) para estimar \(p\). Así, la estimación de \(p\) es:

    \[ \hat{p} = \frac{560}{1000} = 0.56 \]

  2. La distribución de probabilidad de \(\hat{p}\) se aproxima con bastante exactitud mediante la distribución normal para muestras tan grandes como \(n = 1000\). Entonces, cuando \(b = 2\sigma_{\hat{p}}\), se tiene que \(P(\epsilon < b) \approx 0.95\).

  3. Calculamos \(b\):

    \[ b = 2\sigma_{\hat{p}} = 2\sqrt{\frac{pq}{n}} \]

    Como no conocemos \(p\), usamos \(\hat{p}\) para aproximar:

    \[ b \approx 2\sqrt{\frac{(0.56)(0.44)}{1000}} = 0.03 \]

  4. Este resultado significa que la probabilidad de que el error de estimación sea menor que 0.03 es aproximadamente 0.95.

E. Estimación de parámetros por Intervalos de Confianza

12. Estimación de parámetros por Intervalos de Confianza

  • El objetivo es encontrar un estimador por intervalos que genere intervalos angostos que contengan a \(\theta\) con una alta probabilidad. La probabilidad de que un intervalo de confianza contenga a \(\theta\) se conoce como coeficiente de confianza.

12.1. Intervalo de Confianza Bilateral - Deducción del Intervalo de Confianza para la Media con Desviación Poblacional Conocida

12.2. Contexto

Supongamos que tenemos una población con: - Media poblacional desconocida: \(\mu\). - Desviación estándar poblacional conocida: \(\sigma\). - Una muestra aleatoria de tamaño \(n\) con media muestral \(\overline{X}\).

Queremos construir un intervalo de confianza para \(\mu\) con un nivel de confianza \((1 - \alpha) \times 100\%\).

12.3. Paso 1: Distribución de la Media Muestral

Por el Teorema del Límite Central, si \(n\) es suficientemente grande o la población es normal, la media muestral \(\overline{X}\) sigue una distribución normal: \[ \overline{X} \sim \mathcal{N}\left(\mu, \frac{\sigma}{\sqrt{n}}\right). \] Esto implica que: \[ Z = \frac{\overline{X} - \mu}{\sigma / \sqrt{n}} \sim \mathcal{N}(0, 1). \]

12.4. Paso 2: Probabilidad Acumulada y Valor Crítico

Queremos un intervalo simétrico alrededor de \(\mu\) tal que: \[ P\left(-z_{\alpha/2} \leq Z \leq z_{\alpha/2}\right) = 1 - \alpha, \] donde: - \(z_{\alpha/2}\) es el valor crítico de la distribución normal estándar que deja \(\alpha/2\) en la cola superior. - \(1 - \alpha\) es el nivel de confianza (ej. 95% si \(\alpha = 0.05\)).

12.5. Paso 3: Despejar \(\mu\) en la Desigualdad

Reescribimos la desigualdad en términos de \(\mu\): \[ -z_{\alpha/2} \leq \frac{\overline{X} - \mu}{\sigma / \sqrt{n}} \leq z_{\alpha/2}. \] Multiplicamos por \(\sigma / \sqrt{n}\): \[ -z_{\alpha/2} \cdot \frac{\sigma}{\sqrt{n}} \leq \overline{X} - \mu \leq z_{\alpha/2} \cdot \frac{\sigma}{\sqrt{n}}. \] Restamos \(\overline{X}\): \[ -\overline{X} - z_{\alpha/2} \cdot \frac{\sigma}{\sqrt{n}} \leq -\mu \leq -\overline{X} + z_{\alpha/2} \cdot \frac{\sigma}{\sqrt{n}}. \] Multiplicamos por \(-1\) (cambiando el sentido de las desigualdades): \[ \overline{X} - z_{\alpha/2} \cdot \frac{\sigma}{\sqrt{n}} \leq \mu \leq \overline{X} + z_{\alpha/2} \cdot \frac{\sigma}{\sqrt{n}}. \]

12.6. Fórmula Final del Intervalo de Confianza

El intervalo de confianza para \(\mu\) al \((1 - \alpha) \times 100\%\) es: \[ \boxed{ \left( \overline{X} - z_{\alpha/2} \cdot \frac{\sigma}{\sqrt{n}}, \quad \overline{X} + z_{\alpha/2} \cdot \frac{\sigma}{\sqrt{n}} \right) } \]

12.7. Componentes Clave:

  1. Media muestral: \(\overline{X}\) (estimador puntual de \(\mu\)).
  2. Margen de error: \(E = z_{\alpha/2} \cdot \frac{\sigma}{\sqrt{n}}\).
  3. Valor crítico: \(z_{\alpha/2}\) (ejemplo: \(z_{0.025} \approx 1.96\) para 95% de confianza).

2.8. Ejemplo en R

  • Si \(\overline{X} = 50\), \(\sigma = 5\), \(n = 30\), y \(\alpha = 0.05\) (95% de confianza):
media_muestral <- 50
sigma <- 5
n <- 30
alpha <- 0.05
z_critico <- qnorm(1 - alpha / 2)  # ≈ 1.96

margen_error <- z_critico * sigma / sqrt(n)
intervalo <- c(media_muestral - margen_error, media_muestral + margen_error)

cat("Intervalo de confianza al 95%:", intervalo, "\n")
## Intervalo de confianza al 95%: 48.21081 51.78919

Resultado:
El intervalo es \((48.21, 51.79)\).

Interpretación

Con un 95% de confianza, la media poblacional \(\mu\) está entre \(\overline{X} \pm E\).
- Precisión: A mayor \(n\) o menor \(\sigma\), el margen de error \(E\) disminuye.
- Validez: Requiere que \(\sigma\) sea conocido y la muestra sea aleatoria.

13. Ejemplo: Intervalo de Confianza para la Media con muestras grandes

  • Problema. Se registraron los tiempos utilizados en la compra para \(n = 64\) clientes seleccionados al azar en el supermercado local. La media y la varianza de los 64 tiempos de compra fueron 33 minutos y 256, respectivamente. Estimar el promedio real, \(\mu\), del tiempo utilizado por los clientes en la compra, con un coeficiente de confianza de \(1 - \alpha = 0.90\).

Solución:

  1. En este caso, nos interesa el parámetro \(\theta = \mu\). Por lo tanto, \(\hat{\theta} = \bar{Y}\).

  2. Como la varianza poblacional \(\sigma^2\) se desconoce, usamos \(S^2\) para estimarla:

    \[ \sigma_{\bar{Y}} \approx \frac{S}{\sqrt{n}} = \frac{16}{8} = 2 \]

  3. El intervalo de confianza para \(\mu\) es:

    \[ \text{IC}(\mu) = \bar{Y} \pm z_{\alpha/2} \cdot \sigma_{\bar{Y}} \approx 33 \pm 1.645 \cdot 2 = (29.71, 36.29) \]

  4. Interpretación: Hay una certeza del 90% de que el tiempo medio real de atención de los clientes en un supermercado local se encuentra entre 29.71 y 36.29 minutos.

14. Deducción del Intervalo de Confianza para la Media con Muestras Pequeñas y \(\sigma\) Desconocida

14.1. Contexto

  • Cuando tenemos:

  • Muestra pequeña (\(n < 30\))

  • Desviación poblacional desconocida (\(\sigma\))

  • Población aproximadamente normal

Usamos la distribución t de Student para construir el intervalo.

14.2. Paso 1: Estadístico t

El estadístico de prueba es:

\[ T = \frac{\bar{X} - \mu}{s/\sqrt{n}} \sim t_{n-1} \]

donde: - \(\bar{X}\) = media muestral - \(s\) = desviación estándar muestral - \(n\) = tamaño muestral - \(t_{n-1}\) = distribución t con \(n-1\) grados de libertad

14.3. Paso 2: Intervalo de Confianza

Para un nivel de confianza \((1-\alpha)\times 100\%\), el intervalo es:

\[ P\left(-t_{\alpha/2,n-1} \leq \frac{\bar{X}-\mu}{s/\sqrt{n}} \leq t_{\alpha/2,n-1}\right) = 1-\alpha \]

Despejando \(\mu\):

\[ \bar{X} - t_{\alpha/2,n-1}\frac{s}{\sqrt{n}} \leq \mu \leq \bar{X} + t_{\alpha/2,n-1}\frac{s}{\sqrt{n}} \]

14.4. Fórmula Final

El intervalo de confianza es:

\[ \boxed{IC_{1-\alpha}(\mu) = \left(\bar{X} - t_{\alpha/2,n-1}\frac{s}{\sqrt{n}},\ \bar{X} + t_{\alpha/2,n-1}\frac{s}{\sqrt{n}}\right)} \]

14.5. Ejemplo en R

# Datos
x_bar <- 50    # media muestral
s <- 5         # desviación estándar muestral
n <- 10        # tamaño muestral
alpha <- 0.05  # nivel de significancia

# Cálculo
t_crit <- qt(1 - alpha/2, df = n-1)
margen <- t_crit * s / sqrt(n)
IC <- c(x_bar - margen, x_bar + margen)

cat("Intervalo al 95% de confianza: (", IC[1], ", ", IC[2], ")\n", sep = "")
## Intervalo al 95% de confianza: (46.42322, 53.57678)

14.6. Comparación con \(\sigma\) conocido

Caso Distribución Fórmula
\(\sigma\) conocido Normal (\(Z\)) \(\bar{X} \pm z_{\alpha/2}\frac{\sigma}{\sqrt{n}}\)
\(\sigma\) desconocido \(t\)-Student \(\bar{X} \pm t_{\alpha/2,n-1}\frac{s}{\sqrt{n}}\)

14.7. Notas clave

  1. La distribución \(t\) tiene colas más pesadas que la normal
  2. Cuando \(n \geq 30\), \(t \approx Z\)
  3. Requiere normalidad de los datos para \(n\) pequeño

15. Ejemplo: Intervalo de Confianza para la Media con Muestra Pequeña

  • Un fabricante de pólvora desarrolló una nueva fórmula, que se probó con ocho granadas. Las velocidades iniciales resultantes, en pies por segundo, fueron las siguientes: 3005, 2995, 2925, 3005, 2935, 2937, 2965, 2905. Hallar un intervalo de confianza para medir la media real de las velocidades para granadas de este tipo, con coeficiente de confianza de 0.95. Suponga que las velocidades iniciales tienen aproximadamente una distribución normal.

Solución:

  1. Calculamos la media y la desviación estándar de la muestra:

    \[ \bar{Y} = 2959, \quad S = 39.1 \]

  2. Para \(n = 8\) y \(\alpha = 0.05\), el valor crítico de \(t\) es \(t_{0.025, 7} = 2.365\).

  3. El intervalo de confianza es:

    \[ \text{IC}(\mu) = 2959 \pm 2.365 \cdot \frac{39.1}{\sqrt{8}} = 2959 \pm 32.7 \]

  4. Interpretación: El intervalo de confianza para la media real de las velocidades es \((2926.3, 2991.7)\) pies por segundo.

16. Deducción del Intervalo de Confianza para la Proporción Poblacional

16.1. Contexto

Sea: - \(p\) = proporción poblacional desconocida - \(\hat{p} = \frac{X}{n}\) = proporción muestral (estimador de \(p\)) - \(n\) = tamaño muestral - \(X\) = número de éxitos en la muestra

Queremos construir un intervalo de confianza \((1-\alpha)\times 100\%\) para \(p\).

16.2. Paso 1: Distribución Muestral

Para \(n\) grande (usando el TLC), la proporción muestral sigue aproximadamente:

\[ \hat{p} \sim N\left(p, \sqrt{\frac{p(1-p)}{n}}\right) \]

Estandarizando:

\[ Z = \frac{\hat{p}-p}{\sqrt{\frac{p(1-p)}{n}}} \sim N(0,1) \]

16.3. Paso 2: Intervalo de Confianza

Queremos encontrar \(p\) tal que:

\[ P\left(-z_{\alpha/2} \leq \frac{\hat{p}-p}{\sqrt{\frac{p(1-p)}{n}}} \leq z_{\alpha/2}\right) = 1-\alpha \]

Despejando \(p\):

\[ \hat{p} - z_{\alpha/2}\sqrt{\frac{p(1-p)}{n}} \leq p \leq \hat{p} + z_{\alpha/2}\sqrt{\frac{p(1-p)}{n}} \]

16.4. Paso 3: Aproximación del Error Estándar

Como \(p\) es desconocido, aproximamos \(\sqrt{\frac{p(1-p)}{n}}\) con \(\sqrt{\frac{\hat{p}(1-\hat{p})}{n}}\):

\[ \boxed{IC_{1-\alpha}(p) = \left(\hat{p} - z_{\alpha/2}\sqrt{\frac{\hat{p}(1-\hat{p})}{n}},\ \hat{p} + z_{\alpha/2}\sqrt{\frac{\hat{p}(1-\hat{p})}{n}}\right)} \]

16.5. Condiciones de Aplicabilidad

  1. Muestra grande: \(n\hat{p} \geq 5\) y \(n(1-\hat{p}) \geq 5\)
  2. Muestreo aleatorio
  3. Observaciones independientes
# Datos
x <- 45     # número de éxitos
n <- 100    # tamaño muestral
alpha <- 0.05

# Cálculos
p_hat <- x/n
z <- qnorm(1 - alpha/2)
margen <- z * sqrt(p_hat*(1-p_hat)/n)
IC <- c(p_hat - margen, p_hat + margen)

cat("Intervalo al 95% de confianza para p: (", 
    round(IC[1],4), ", ", round(IC[2],4), ")\n", sep="")
## Intervalo al 95% de confianza para p: (0.3525, 0.5475)

16.6. Versión Conservadora (Máxima Varianza)

Cuando no se tiene información previa, se usa \(p=0.5\) para obtener el intervalo más conservador:

\[ \boxed{IC_{1-\alpha}(p) = \left(\hat{p} - z_{\alpha/2}\sqrt{\frac{0.25}{n}},\ \hat{p} + z_{\alpha/2}\sqrt{\frac{0.25}{n}}\right)} \]

16.7. Corrección para Muestras Pequeñas

Cuando \(n\) es pequeño, se recomienda la corrección de continuidad de Yates:

\[ \hat{p}_{corr} = \frac{X + 0.5z_{\alpha/2}^2}{n + z_{\alpha/2}^2} \]

\[ n_{efectivo} = n + z_{\alpha/2}^2 \]

Y el intervalo se calcula con estos valores ajustados.

16.8. Comparación de Métodos

Método Fórmula Cuando usar
Estándar \(\hat{p} \pm z_{\alpha/2}\sqrt{\frac{\hat{p}(1-\hat{p})}{n}}\) \(n\hat{p} \geq 5\) y \(n(1-\hat{p}) \geq 5\)
Conservador \(\hat{p} \pm z_{\alpha/2}\sqrt{\frac{0.25}{n}}\) Cuando no se tiene información previa
Corrección \(\frac{X + 0.5z^2}{n + z^2} \pm z\sqrt{\frac{\hat{p}(1-\hat{p}) + z^2/4n}{n}}\) Muestras pequeñas

17. Intervalos de Confianza para Diferencia de Medias

A continuación presento los casos principales para construir intervalos de confianza para la diferencia de medias poblacionales \(\mu_1 - \mu_2\):

17.1. Caso 1: Varianzas Poblacionales Conocidas (\(\sigma_1^2\), \(\sigma_2^2\) conocidas)

Fórmula: \[ \boxed{IC_{1-\alpha}(\mu_1 - \mu_2) = (\bar{X}_1 - \bar{X}_2) \pm z_{\alpha/2}\sqrt{\frac{\sigma_1^2}{n_1} + \frac{\sigma_2^2}{n_2}}} \]

Supuestos: - Poblaciones normales o \(n_1, n_2 \geq 30\) (por TLC) - Muestras independientes - Varianzas poblacionales conocidas

17.2. Varianzas Desconocidas pero Iguales (\(\sigma_1^2 = \sigma_2^2\))

Fórmula: \[ \boxed{IC_{1-\alpha}(\mu_1 - \mu_2) = (\bar{X}_1 - \bar{X}_2) \pm t_{\alpha/2, n_1+n_2-2}\cdot s_p\sqrt{\frac{1}{n_1} + \frac{1}{n_2}}} \] donde \(s_p^2 = \frac{(n_1-1)s_1^2 + (n_2-1)s_2^2}{n_1+n_2-2}\) es la varianza combinada.

Supuestos: - Poblaciones aproximadamente normales - Muestras independientes - Varianzas homogéneas (verificable con test F)

17.3. Ejemplo: Comparación de dos métodos de entrenamiento

Problema:
Se compararon dos métodos de entrenamiento para empleados en una fábrica. Los tiempos de montaje (en minutos) para cada grupo fueron:

  • Método Estándar: 32, 37, 35, 28, 41, 44, 35, 31, 34
  • Método Nuevo: 35, 31, 29, 25, 34, 40, 27, 32, 31

Estime la diferencia real de las medias \((\mu_1 - \mu_2)\) con un coeficiente de confianza de 0.95. Suponga que los tiempos de montaje tienen aproximadamente una distribución normal y que las varianzas son aproximadamente iguales para los dos métodos.

Solución:

  1. Cálculo de las medias y varianzas muestrales:

    • Para el método estándar: \[ \bar{Y}_1 = 35.22, \quad S_1^2 = 195.56 \]
    • Para el método nuevo: \[ \bar{Y}_2 = 31.56, \quad S_2^2 = 160.22 \]
  2. Cálculo de la varianza combinada \(S_p^2\): \[ S_p^2 = \frac{(n_1 - 1)S_1^2 + (n_2 - 1)S_2^2}{n_1 + n_2 - 2} = \frac{(9-1)195.56 + (9-1)160.22}{9 + 9 - 2} = 22.24 \]

  3. Cálculo del intervalo de confianza para \(\mu_1 - \mu_2\):

    • El valor crítico de \(t\) para \(\alpha = 0.05\) y \(16\) grados de libertad es \(t_{0.025, 16} = 2.12\).
    • El intervalo de confianza es: \[ \text{IC}(\mu_1 - \mu_2) = (\bar{Y}_1 - \bar{Y}_2) \pm t_{\alpha/2, n_1 + n_2 - 2} \cdot S_p \sqrt{\frac{1}{n_1} + \frac{1}{n_2}} \] Sustituyendo los valores: \[ \text{IC}(\mu_1 - \mu_2) = (35.22 - 31.56) \pm 2.12 \cdot 4.71 \cdot \sqrt{\frac{1}{9} + \frac{1}{9}} = 3.66 \pm 4.71 \]
  4. Interpretación:
    El intervalo de confianza para la diferencia de medias es \((-1.05, 8.37)\). Este intervalo incluye tanto valores positivos como negativos, lo que indica que no hay evidencia estadística significativa para afirmar que haya una diferencia entre ambos procedimientos.


17.4. Varianzas Desconocidas y Diferentes (\(\sigma_1^2 \neq \sigma_2^2\))

Fórmula (aproximación de Welch): \[ \boxed{IC_{1-\alpha}(\mu_1 - \mu_2) = (\bar{X}_1 - \bar{X}_2) \pm t_{\alpha/2, \nu}\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}} \] con grados de libertad \(\nu\) aproximados por: \[ \nu = \frac{\left(\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}\right)^2}{\frac{(s_1^2/n_1)^2}{n_1-1} + \frac{(s_2^2/n_2)^2}{n_2-1}} \]

Supuestos: - Poblaciones aproximadamente normales - Muestras independientes - Varianzas heterogéneas

17.5. Caso 4: Muestras Pareadas (Datos Dependientes)

Fórmula: \[ \boxed{IC_{1-\alpha}(\mu_D) = \bar{D} \pm t_{\alpha/2, n-1}\frac{s_D}{\sqrt{n}}} \] donde \(D_i = X_{1i} - X_{2i}\) son las diferencias pareadas.

Supuestos: - Diferencias normalmente distribuidas - Observaciones apareadas/dependientes

17.6. Resumen Comparativo

Caso Varianzas Muestras Fórmula Clave Grados Libertad
1 Conocidas Independientes \(z\sqrt{\frac{\sigma_1^2}{n_1} + \frac{\sigma_2^2}{n_2}}\) -
2 Iguales Independientes \(t s_p\sqrt{\frac{1}{n_1} + \frac{1}{n_2}}\) \(n_1+n_2-2\)
3 Diferentes Independientes \(t\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}\) \(\nu\) (Welch)
4 - Pareadas \(t \frac{s_D}{\sqrt{n}}\) \(n-1\)

19.7. Selección del Método Adecuado

  1. Verificar si las muestras son independientes o pareadas
  2. Para muestras independientes:
    • Si varianzas conocidas → Caso 1
    • Si varianzas desconocidas:
      • Realizar prueba de igualdad de varianzas (F-test o Levene)
      • Si varianzas iguales → Caso 2
      • Si varianzas diferentes → Caso 3
  3. Para muestras pareadas → Caso 4

18. Ejemplos Prácticos para Cada Caso de Diferencia de Medias

18.1. Caso 1: Varianzas Poblacionales Conocidas

Contexto:
Comparación del rendimiento de 2 máquinas. Se conocen las varianzas históricas: - Máquina 1: \(\sigma_1^2 = 4\), \(n_1 = 30\), \(\bar{X}_1 = 100\) unidades/hora - Máquina 2: \(\sigma_2^2 = 9\), \(n_2 = 35\), \(\bar{X}_2 = 98\) unidades/hora - Nivel de confianza: 95%

Cálculo en R:

# Parámetros
sigma1 <- 2  # sqrt(4)
sigma2 <- 3  # sqrt(9)
n1 <- 30; xbar1 <- 100
n2 <- 35; xbar2 <- 98
alpha <- 0.05

# Valor crítico
z <- qnorm(1 - alpha/2)

# Margen de error
margen <- z * sqrt(sigma1^2/n1 + sigma2^2/n2)

# Intervalo
IC <- c((xbar1 - xbar2) - margen, (xbar1 - xbar2) + margen)

cat("IC 95% para diferencia de medias (varianzas conocidas): [", 
    round(IC[1], 2), ", ", round(IC[2], 2), "]\n", sep = "")
## IC 95% para diferencia de medias (varianzas conocidas): [0.78, 3.22]

18.2. Caso 2: Varianzas Desconocidas pero Iguales

Contexto:
Comparación de calificaciones en 2 grupos de estudiantes (misma prueba): - Grupo A: \(n_1 = 20\), \(\bar{X}_1 = 78\), \(s_1 = 5\) - Grupo B: \(n_2 = 25\), \(\bar{X}_2 = 75\), \(s_2 = 6\) - Test F confirma varianzas iguales (\(p = 0.45\)) - Nivel de confianza: 99%

Cálculo en R:

# Datos
n1 <- 20; xbar1 <- 78; s1 <- 5
n2 <- 25; xbar2 <- 75; s2 <- 6
alpha <- 0.01

# Varianza combinada
sp <- sqrt(((n1-1)*s1^2 + (n2-1)*s2^2)/(n1 + n2 - 2))

# Valor crítico t
t <- qt(1 - alpha/2, df = n1 + n2 - 2)

# Margen de error
margen <- t * sp * sqrt(1/n1 + 1/n2)

# Intervalo
IC <- c((xbar1 - xbar2) - margen, (xbar1 - xbar2) + margen)

cat("IC 99% para diferencia de medias (varianzas iguales): [", 
    round(IC[1], 2), ", ", round(IC[2], 2), "]\n", sep = "")
## IC 99% para diferencia de medias (varianzas iguales): [-1.51, 7.51]

18.3. Caso 3: Varianzas Desconocidas y Diferentes (Welch)

Contexto:
Tiempos de respuesta de 2 algoritmos: - Algoritmo X: \(n_1 = 15\), \(\bar{X}_1 = 120\) ms, \(s_1 = 25\) ms - Algoritmo Y: \(n_2 = 20\), \(\bar{X}_2 = 110\) ms, \(s_2 = 15\) ms - Test F rechaza igualdad de varianzas (\(p = 0.02\)) - Nivel de confianza: 90%

Cálculo en R:

# Datos
n1 <- 15; xbar1 <- 120; s1 <- 25
n2 <- 20; xbar2 <- 110; s2 <- 15
alpha <- 0.10

# Grados de libertad (Welch-Satterthwaite)
nu <- (s1^2/n1 + s2^2/n2)^2 / 
      ((s1^2/n1)^2/(n1-1) + (s2^2/n2)^2/(n2-1))

# Valor crítico t
t <- qt(1 - alpha/2, df = nu)

# Margen de error
margen <- t * sqrt(s1^2/n1 + s2^2/n2)

# Intervalo
IC <- c((xbar1 - xbar2) - margen, (xbar1 - xbar2) + margen)

cat("IC 90% para diferencia de medias (Welch): [", 
    round(IC[1], 2), ", ", round(IC[2], 2), "]\n", sep = "")
## IC 90% para diferencia de medias (Welch): [-2.51, 22.51]

18.4. Caso 4: Muestras Pareadas

Contexto:
Presión arterial antes/después de un tratamiento (10 pacientes):

Paciente Antes Después Diferencia
1 140 132 -8
10 135 128 -7
  • Media diferencias: \(\bar{D} = -6.5\)
  • Desviación diferencias: \(s_D = 2.5\)
  • Nivel de confianza: 95%

Cálculo en R:

# Datos
n <- 10
D_bar <- -6.5
s_D <- 2.5
alpha <- 0.05

# Valor crítico t
t <- qt(1 - alpha/2, df = n-1)

# Margen de error
margen <- t * s_D / sqrt(n)

# Intervalo
IC <- c(D_bar - margen, D_bar + margen)

cat("IC 95% para diferencia pareada: [", 
    round(IC[1], 2), ", ", round(IC[2], 2), "]\n", sep = "")
## IC 95% para diferencia pareada: [-8.29, -4.71]

19. Intervalo de Confianza para el Cociente de Varianzas

19.1. Definición

  • El intervalo de confianza para el cociente de dos varianzas poblacionales (\(\sigma_1^2/\sigma_2^2\)) se construye utilizando la distribución F. Sean \(s_1^2\) y \(s_2^2\) las varianzas muestrales de dos muestras independientes de tamaños \(n_1\) y \(n_2\) respectivamente, extraídas de poblaciones normales.

19.2. Construcción del Intervalo

  • El intervalo de confianza del \((1-\alpha)\times 100\%\) para \(\frac{\sigma_1^2}{\sigma_2^2}\) está dado por:

\[ \left( \frac{s_1^2}{s_2^2} \cdot \frac{1}{F_{\alpha/2, n_1-1, n_2-1}}, \frac{s_1^2}{s_2^2} \cdot F_{\alpha/2, n_2-1, n_1-1} \right) \]

Donde: - \(F_{\alpha/2, n_1-1, n_2-1}\) es el valor crítico superior de la distribución F con \(n_1-1\) grados de libertad en el numerador y \(n_2-1\) grados de libertad en el denominador - \(F_{\alpha/2, n_2-1, n_1-1}\) es el valor crítico superior con los grados de libertad invertidos

19.3. Ejemplo práctico

Datos del Problema

Tenemos los siguientes datos muestrales: - Desviación estándar muestra 1 (\(s_1\)): 5.2 - Desviación estándar muestra 2 (\(s_2\)): 4.8 - Tamaño muestra 1 (\(n_1\)): 30 - Tamaño muestra 2 (\(n_2\)): 25 - Nivel de confianza: 95%

Paso 1: Calcular el cociente de varianzas muestrales

El cociente observado es:

\[ \frac{s_1^2}{s_2^2} = \frac{5.2^2}{4.8^2} = \frac{27.04}{23.04} = 1.1736111 \]

ratio_observado <- s1^2 / s2^2
ratio_observado
## [1] 1.173611

Paso 2: Encontrar los valores críticos F

Necesitamos los percentiles de la distribución F con: - Grados de libertad numerador: \(n_1-1 = 29\) - Grados de libertad denominador: \(n_2-1 = 24\)

Para \(\alpha = 1 - 0.95 = 0.05\):

\[ F_{\alpha/2, n_1-1, n_2-1} = F_{0.025, 29, 24} = 2.2174427 \]

\[ F_{\alpha/2, n_2-1, n_1-1} = F_{0.025, 24, 29} = 2.154006 \]

alpha <- 1 - conf.level
f_lower <- qf(alpha/2, n1-1, n2-1, lower.tail = FALSE)
f_upper <- qf(alpha/2, n2-1, n1-1, lower.tail = FALSE)
f_lower;f_upper
## [1] 2.217443
## [1] 2.154006

Paso 3: Construir el intervalo de confianza

El intervalo se calcula como:

\[ \left( \frac{s_1^2}{s_2^2} \cdot \frac{1}{F_{\alpha/2, n_2-1, n_1-1}}, \frac{s_1^2}{s_2^2} \cdot F_{\alpha/2, n_1-1, n_2-1} \right) \]

Sustituyendo valores:

\[ \left( 1.1736111 \times \frac{1}{2.154006}, 1.1736111 \times 2.2174427 \right) = (0.5448504, 2.6024154) \]

lower_bound <- ratio_observado / f_upper
upper_bound <- ratio_observado * f_lower
lower_bound
## [1] 0.5448504
upper_bound
## [1] 2.602415

Paso 4: Resultado Final

  • El intervalo de confianza del 95% para \(\frac{\sigma_1^2}{\sigma_2^2}\) es:

\[ (0.545, 2.602) \]

Paso 5: Visualización Gráfica

library(ggplot2)

df <- data.frame(
  Estadistico = "Cociente varianzas",
  Valor = ratio_observado,
  Lower = lower_bound,
  Upper = upper_bound
)

ggplot(df, aes(x = Estadistico, y = Valor)) +
  geom_point(size = 3, color = "blue") +
  geom_errorbar(aes(ymin = Lower, ymax = Upper), width = 0.2, color = "red", linewidth = 1) +
  geom_hline(yintercept = 1, linetype = "dashed", color = "darkgreen") +
  labs(title = "Intervalo de confianza para el cociente de varianzas",
       subtitle = paste0("Nivel de confianza del ", conf.level*100, "%"),
       y = expression(frac(sigma[1]^2, sigma[2]^2)),
       x = "") +
  theme_minimal() +
  scale_y_continuous(limits = c(0, max(upper_bound)*1.1))

Interpretación

  • Con una confianza del 95%, podemos afirmar que el verdadero cociente de varianzas poblacionales \(\frac{\sigma_1^2}{\sigma_2^2}\) se encuentra entre 0.545 y 2.602.

  • La línea verde discontinua representa el valor 1 (igualdad de varianzas). Como nuestro intervalo incluye el valor 1, por lo que no podemos rechazar la hipótesis de igualdad de varianzas.

Implementación Ejemplo práctico en R

# Ejemplo práctico en R
varianza_intervalo <- function(s1, s2, n1, n2, conf.level = 0.95) {
  alpha <- 1 - conf.level
  ratio <- s1^2 / s2^2
  f_lower <- qf(alpha/2, n1-1, n2-1, lower.tail = TRUE)
  f_upper <- qf(alpha/2, n2-1, n1-1, lower.tail = FALSE)
  
  lower_bound <- ratio * (1/f_upper)
  upper_bound <- ratio * (1/f_lower)
  
  c(lower = lower_bound, upper = upper_bound)
}

# Ejemplo con datos
s1 <- 5.2
s2 <- 4.8
n1 <- 30
n2 <- 25
conf.level <- 0.95

intervalo <- varianza_intervalo(s1, s2, n1, n2, conf.level)
intervalo
##     lower     upper 
## 0.5448504 2.5279654

Interpretación

Para el ejemplo con \(s_1 = 5.2\), \(s_2 = 4.8\), \(n_1 = 30\) y \(n_2 = 25\), el intervalo de confianza del 95% para \(\frac{\sigma_1^2}{\sigma_2^2}\) es:

\[ (0.545, 2.528) \]

Esto significa que podemos estar un 95% seguros de que el verdadero cociente de varianzas poblacionales se encuentra entre 0.545 y 2.528.

19.6. Supuestos

  1. Ambas muestras provienen de poblaciones normalmente distribuidas
  2. Las muestras son independientes entre sí
  3. Las varianzas son finitas y positivas

20. Ejemplo práctico de Intervalo de confianza para el Cociente de Varianzas y la Diferencia de Medias

  • Problema. Se quiere comparar la variacion de cierta sustancia toxica en dos rios, cuyas aguas sufren contaminación industrial, con el fin de vigilar la calidad del agua para la cría de peces. Se eligen 10 muestras de agua del primer río y 7 del segundo. Los niveles de la sustancia tóxica determinados en el laboratorio, en ppm, se recogen en la siguiente tabla: Río 1: 9, 8, 10, 12, 13, 12, 10,14,10,12; Río 2: 7, 10, 8,8,9,10,8. Suponga que el muestreo se hizo con dos poblaciones independientes distribuidas normalmente: (a) Dar un intervalo de confianza del 95% para el cociente de varianzas poblacionales, y responda si se puede admitir que las dos varianzas son diferentes. (b) Dar un intervalo de confianza para la diferencia de medias poblacionales y responda si se puede admitir que las dos medias son diferentes.

20.1. Solución del Problema

Datos:

  • Río 1: 9, 8, 10, 12, 13, 12, 10, 14, 10, 12
    Tamaño de muestra (\(n_1\)): 10
    Media muestral (\(\bar{X}_1\)):
    \[ \bar{X}_1 = \frac{9 + 8 + 10 + 12 + 13 + 12 + 10 + 14 + 10 + 12}{10} = \frac{110}{10} = 11 \text{ ppm} \]
    Varianza muestral (\(S_1^2\)):
    \[ S_1^2 = \frac{\sum (X_i - \bar{X}_1)^2}{n_1 - 1} = \frac{(9-11)^2 + (8-11)^2 + \dots + (12-11)^2}{9} = \frac{34}{9} \approx 3.7778 \text{ ppm}^2 \]

  • Río 2: 7, 10, 8, 8, 9, 10, 8
    Tamaño de muestra (\(n_2\)): 7
    Media muestral (\(\bar{X}_2\)):
    \[ \bar{X}_2 = \frac{7 + 10 + 8 + 8 + 9 + 10 + 8}{7} = \frac{60}{7} \approx 8.5714 \text{ ppm} \]
    Varianza muestral (\(S_2^2\)):
    \[ S_2^2 = \frac{\sum (Y_i - \bar{X}_2)^2}{n_2 - 1} = \frac{(7-8.5714)^2 + \dots + (8-8.5714)^2}{6} \approx \frac{8.8571}{6} \approx 1.4762 \text{ ppm}^2 \]


20.2. (a) Intervalo de Confianza para el Cociente de Varianzas (\(\sigma_1^2 / \sigma_2^2\))

  • Suponiendo que las poblaciones son normales e independientes, el intervalo de confianza del 95% para el cociente de varianzas está dado por:
    \[ \left( \frac{S_1^2 / S_2^2}{F_{\alpha/2, n_1-1, n_2-1}}, \frac{S_1^2 / S_2^2}{F_{1-\alpha/2, n_1-1, n_2-1}} \right) \]

  • \(\alpha = 0.05\), \(\alpha/2 = 0.025\)

  • \(S_1^2 / S_2^2 = 3.7778 / 1.4762 \approx 2.5598\)

  • Valores críticos de la distribución \(F\):

    • \(F_{0.025, 9, 6} \approx 5.1116\) (percentil superior)
    • \(F_{0.975, 9, 6} = 1 / F_{0.025, 6, 9} \approx 1 / 4.3197 \approx 0.2315\)

Intervalo de confianza:
\[ \left( \frac{2.5598}{5.1116}, \frac{2.5598}{0.2315} \right) \approx (0.5008, 11.056) \]

Conclusión:
Como el intervalo incluye el valor 1, no se puede rechazar la hipótesis de que las varianzas son iguales (no hay evidencia suficiente para afirmar que son diferentes).


20.3. (b) Intervalo de Confianza para la Diferencia de Medias (\(\mu_1 - \mu_2\))

  • Dado que en (a) no se rechaza la igualdad de varianzas, usamos el intervalo de confianza basado en la distribución \(t\) con varianzas iguales (agrupadas).

  • Varianza agrupada (\(S_p^2\)):
    \[ S_p^2 = \frac{(n_1 - 1)S_1^2 + (n_2 - 1)S_2^2}{n_1 + n_2 - 2} = \frac{9 \times 3.7778 + 6 \times 1.4762}{15} \approx \frac{34 + 8.8571}{15} \approx 2.8571 \]

  • Error estándar de la diferencia:
    \[ SE = \sqrt{S_p^2 \left( \frac{1}{n_1} + \frac{1}{n_2} \right)} = \sqrt{2.8571 \left( \frac{1}{10} + \frac{1}{7} \right)} \approx \sqrt{2.8571 \times 0.2429} \approx 0.8333 \]

  • Grados de libertad: \(n_1 + n_2 - 2 = 15\)

  • Valor crítico \(t_{0.025, 15} \approx 2.1314\)

  • Intervalo de confianza: \[ (\bar{X}_1 - \bar{X}_2) \pm t_{\alpha/2, df} \times SE = (11 - 8.5714) \pm 2.1314 \times 0.8333 \approx 2.4286 \pm 1.776 \]

  • Límites: \((0.6526, 4.2046)\)

Conclusión:
Como el intervalo no incluye el 0, hay evidencia de que las medias son diferentes (\(\mu_1 > \mu_2\)).


20.4. Solución en R

# Datos
rio1 <- c(9, 8, 10, 12, 13, 12, 10, 14, 10, 12)
rio2 <- c(7, 10, 8, 8, 9, 10, 8)

# (a) Intervalo para el cociente de varianzas
var_test <- var.test(rio1, rio2, conf.level = 0.95)
cat("Intervalo de confianza para el cociente de varianzas (σ1²/σ2²):\n")
## Intervalo de confianza para el cociente de varianzas (σ1²/σ2²):
print(var_test$conf.int)
## [1]  0.5006751 11.9458974
## attr(,"conf.level")
## [1] 0.95
# (b) Intervalo para la diferencia de medias (asumiendo varianzas iguales)
t_test <- t.test(rio1, rio2, var.equal = TRUE, conf.level = 0.95)
cat("\nIntervalo de confianza para la diferencia de medias (μ1 - μ2):\n")
## 
## Intervalo de confianza para la diferencia de medias (μ1 - μ2):
print(t_test$conf.int)
## [1] 0.719429 4.137714
## attr(,"conf.level")
## [1] 0.95

20.5. Solución en R - completa

# Datos
rio1 <- c(9, 8, 10, 12, 13, 12, 10, 14, 10, 12)
rio2 <- c(7, 10, 8, 8, 9, 10, 8)

# (a) Intervalo para el cociente de varianzas
var_test <- var.test(rio1, rio2, conf.level = 0.95)
cat("Intervalo de confianza para el cociente de varianzas (σ1²/σ2²):\n")
## Intervalo de confianza para el cociente de varianzas (σ1²/σ2²):
print(var_test$conf.int)
## [1]  0.5006751 11.9458974
## attr(,"conf.level")
## [1] 0.95
# (b) Intervalo para la diferencia de medias (asumiendo varianzas iguales)
t_test <- t.test(rio1, rio2, var.equal = TRUE, conf.level = 0.95)
cat("\nIntervalo de confianza para la diferencia de medias (μ1 - μ2):\n")
## 
## Intervalo de confianza para la diferencia de medias (μ1 - μ2):
print(t_test$conf.int)
## [1] 0.719429 4.137714
## attr(,"conf.level")
## [1] 0.95
# --- Gráficos ---
par(mfrow = c(1, 2))  # Divide la ventana gráfica en 1 fila y 2 columnas

# Gráfico 1: Boxplot para comparar las distribuciones de los datos
boxplot(list(Río1 = rio1, Río2 = rio2), 
        col = c("lightblue", "lightgreen"),
        main = "Niveles de sustancia tóxica (ppm)",
        xlab = "Río", ylab = "Concentración (ppm)")

# Gráfico 2: Intervalos de confianza
# Preparamos los datos para el gráfico de intervalos
ic_var <- var_test$conf.int
ic_medias <- t_test$conf.int

plot(1, type = "n", xlim = c(0.5, 2.5), ylim = c(0, max(ic_var, ic_medias) + 2),
     main = "Intervalos de Confianza del 95%",
     xlab = "", ylab = "Valor", xaxt = "n")
axis(1, at = c(1, 2), labels = c("IC(σ1²/σ2²)", "IC(μ1 - μ2)"))

# Intervalo para el cociente de varianzas
segments(1, ic_var[1], 1, ic_var[2], lwd = 2, col = "blue")
points(1, var_test$estimate, pch = 19, col = "blue")
text(1, max(ic_var) + 1, labels = paste0("(", round(ic_var[1], 2), ", ", round(ic_var[2], 2), ")"), cex = 0.8)

# Intervalo para la diferencia de medias
segments(2, ic_medias[1], 2, ic_medias[2], lwd = 2, col = "red")
points(2, t_test$estimate[1] - t_test$estimate[2], pch = 19, col = "red")
text(2, max(ic_medias) + 1, labels = paste0("(", round(ic_medias[1], 2), ", ", round(ic_medias[2], 2), ")"), cex = 0.8)

# Línea de referencia para el cociente de varianzas (1 = varianzas iguales)
abline(h = 1, lty = 2, col = "green")

# Línea de referencia para la diferencia de medias (0 = no diferencia)
abline(h = 0, lty = 2, col = "orange")

20.6. Aplicación del Intervalo para el cociente de varianza

Problema

Usted trabaja para una compañía que fabrica propulsores para uso en motores de turbina y se desempeña como ingeniero de producción. La compañía le ha encomendado la tarea de seleccionar el proceso que tenga la menor variabilidad en la rugosidad de la superficie. Para ello, usted toma una muestra de \(𝑛_1 = 16\) partes del primer proceso, la cual tiene una desviación estándar de \(4.7\) micropulgadas, y una muestra aleatoria de \(𝑛_2 = 16\) partes del segundo proceso, la cual tiene una desviación estándar de \(5.1\) micropulgadas. Use un intervalo de confianza de 90% para responder a la tarea que le fue encargada

Solución al Problema de Comparación de Variabilidad en Procesos

1. Planteamiento del Problema

Se desea determinar cuál de dos procesos de fabricación de propulsores tiene menor variabilidad en la rugosidad de la superficie, utilizando un intervalo de confianza del 90% para el cociente de varianzas (\(\sigma_1^2 / \sigma_2^2\)).

Datos:
- Proceso 1:
- Tamaño de muestra (\(n_1\)): \(16\) partes.
- Desviación estándar muestral (\(s_1\)): \(4.7\) micropulgadas.
- Varianza muestral (\(s_1^2\)): \(4.7^2 = 22.09\).

  • Proceso 2:
    • Tamaño de muestra (\(n_2\)): \(16\) partes.
    • Desviación estándar muestral (\(s_2\)): \(5.1\) micropulgadas.
    • Varianza muestral (\(s_2^2\)): \(5.1^2 = 26.01\).

2. Método Estadístico

Para comparar la variabilidad de dos poblaciones normales independientes, se utiliza un intervalo de confianza para el cociente de varianzas basado en la distribución \(F\) de Fisher-Snedecor:
\[ \left( \frac{s_1^2 / s_2^2}{F_{\alpha/2, n_1-1, n_2-1}}, \frac{s_1^2 / s_2^2}{F_{1-\alpha/2, n_1-1, n_2-1}} \right) \]
- Nivel de confianza: \(90\%\) (\(\alpha = 0.10\)).
- Grados de libertad: \(df_1 = n_1 - 1 = 15\), \(df_2 = n_2 - 1 = 15\).


3. Cálculo del Intervalo de Confianza

Paso 1: Calcular el cociente de varianzas muestrales:
\[ \frac{s_1^2}{s_2^2} = \frac{22.09}{26.01} \approx 0.849. \]

Paso 2: Obtener los valores críticos de la distribución \(F\):
- \(F_{0.05, 15, 15}\) (percentil superior al \(5\%\)): \(2.40\).
- \(F_{0.95, 15, 15}\) (percentil inferior al \(5\%\)):
\[ F_{0.95, 15, 15} = \frac{1}{F_{0.05, 15, 15}} = \frac{1}{2.40} \approx 0.4167. \]

Paso 3: Construir el intervalo:
\[ \left( \frac{0.849}{2.40}, \frac{0.849}{0.4167} \right) = \left( 0.354, 2.037 \right). \]


4. Interpretación del Resultado

  • El intervalo de confianza del \(90\%\) para \(\sigma_1^2 / \sigma_2^2\) es \((0.354, 2.037)\).
  • Incluye el valor \(1\): Esto indica que no hay evidencia estadística para afirmar que las varianzas poblacionales son diferentes al \(90\%\) de confianza.
  • Conclusión:
    • Ambos procesos tienen variabilidades estadísticamente equivalentes en rugosidad superficial.
    • Si se busca minimizar la variabilidad, no hay preferencia entre los procesos basada en estos datos.

5. Verificación en R

# Datos
n1 <- 16; s1 <- 4.7; var1 <- s1^2
n2 <- 16; s2 <- 5.1; var2 <- s2^2
confianza <- 0.90
alpha <- 1 - confianza

# Cociente de varianzas
cociente <- var1 / var2

# Valores críticos de F
F_sup <- qf(1 - alpha/2, df1 = n1-1, df2 = n2-1)  # 2.40
F_inf <- qf(alpha/2, df1 = n1-1, df2 = n2-1)      # 0.4167

# Intervalo de confianza
IC_inf <- cociente / F_sup
IC_sup <- cociente / F_inf

cat("Intervalo del 90% para σ1²/σ2²:", round(IC_inf, 3), "-", round(IC_sup, 3))
## Intervalo del 90% para σ1²/σ2²: 0.353 - 2.041

6. Recomendación para la Compañía

  • Acción: Realizar un análisis con muestras más grandes o un nivel de confianza mayor (ej: \(95\%\)) para aumentar la potencia estadística.
  • Alternativa: Evaluar otros parámetros de calidad (ej: media de rugosidad, costos) para decidir entre procesos.

Nota: Si el intervalo no hubiera incluido el \(1\) (ej: si el límite superior fuera \(< 1\)), el Proceso \(1\) tendría menor variabilidad. En este caso, no se puede afirmar.

21. Intervalo de Confianza para la Varianza Poblacional (\(\sigma^2\))

21.1. Con Media Conocida

  • En estadística, cuando se conoce la media poblacional (\(\mu\)) y se desea estimar la varianza poblacional (\(\sigma^2\)), se utiliza una distribución basada en la suma de cuadrados de las desviaciones respecto a la media verdadera. A continuación, se presenta la teoría y la metodología para construir este intervalo de confianza.

21.2. Supuestos

  1. Población normal: Los datos provienen de una distribución normal, es decir, \(X \sim N(\mu, \sigma^2)\).
  2. Media conocida (\(\mu\)): El valor de la media poblacional es conocido.
  3. Muestra aleatoria: Se tiene una muestra de \(n\) observaciones independientes e idénticamente distribuidas (i.i.d.).

21.3. Estadístico Pivotal

  • Para construir el intervalo de confianza, se utiliza el estadístico: \[ Q = \frac{\sum_{i=1}^n (X_i - \mu)^2}{\sigma^2} \] Este estadístico sigue una distribución chi-cuadrado (\(\chi^2\)) con \(n\) grados de libertad (no \(n-1\), porque \(\mu\) es conocido): \[ Q \sim \chi^2(n) \]

21.4. Intervalo de Confianza para \(\sigma^2\)

Dado un nivel de confianza \((1 - \alpha) \times 100\%\), el intervalo se construye como: \[ P\left( \chi^2_{1-\alpha/2, n} \leq \frac{\sum (X_i - \mu)^2}{\sigma^2} \leq \chi^2_{\alpha/2, n} \right) = 1 - \alpha \] Despejando \(\sigma^2\), se obtiene: \[ \sigma^2 \in \left( \frac{\sum (X_i - \mu)^2}{\chi^2_{\alpha/2, n}}, \frac{\sum (X_i - \mu)^2}{\chi^2_{1-\alpha/2, n}} \right) \]

21.5. Pasos para Calcular el Intervalo

  1. Calcular la suma de cuadrados: \[ S_{\mu}^2 = \sum_{i=1}^n (X_i - \mu)^2 \]
  2. Obtener los cuantiles de la distribución \(\chi^2\):
    • \(\chi^2_{\alpha/2, n}\): Cuantil superior \(\alpha/2\) con \(n\) grados de libertad.
    • \(\chi^2_{1-\alpha/2, n}\): Cuantil inferior \(1 - \alpha/2\) con \(n\) grados de libertad.
  3. Construir el intervalo: \[ \left( \frac{S_{\mu}^2}{\chi^2_{\alpha/2, n}}, \frac{S_{\mu}^2}{\chi^2_{1-\alpha/2, n}} \right) \]

21.6. Ejemplo Numérico

Supongamos que: - Media conocida (\(\mu\)): 10. - Muestra: \(X = \{9, 11, 10, 8, 12\}\) (\(n = 5\)). - Nivel de confianza: 95% (\(\alpha = 0.05\)).

Cálculos

  1. Suma de cuadrados: \[ S_{\mu}^2 = (9-10)^2 + (11-10)^2 + (10-10)^2 + (8-10)^2 + (12-10)^2 = 1 + 1 + 0 + 4 + 4 = 10 \]
  2. Cuantiles \(\chi^2\) (con \(n = 5\)):
    • \(\chi^2_{0.025, 5} \approx 12.833\) (límite superior).
    • \(\chi^2_{0.975, 5} \approx 0.831\) (límite inferior).
  3. Intervalo para \(\sigma^2\): \[ \left( \frac{10}{12.833}, \frac{10}{0.831} \right) \approx (0.78, 12.03) \]

Interpretación: Con un 95% de confianza, la varianza poblacional \(\sigma^2\) está entre \(0.78\) y \(12.03\).


Implementación en R

# Datos
mu <- 10
muestra <- c(9, 11, 10, 8, 12)
n <- length(muestra)
confianza <- 0.95
alpha <- 1 - confianza

# Suma de cuadrados respecto a mu
S2_mu <- sum((muestra - mu)^2)

# Cuantiles chi-cuadrado
chi_sup <- qchisq(1 - alpha/2, df = n)
chi_inf <- qchisq(alpha/2, df = n)

# Intervalo de confianza
IC_inf <- S2_mu / chi_sup
IC_sup <- S2_mu / chi_inf

cat("Intervalo de confianza al 95% para σ²:", IC_inf, ",", IC_sup)
## Intervalo de confianza al 95% para σ²: 0.7792713 , 12.03063

22. Intervalo de Confianza para la Varianza Poblacional (\(\sigma^2\)) con Media Desconocida

Cuando la media poblacional (\(\mu\)) no es conocida, se utiliza la cuasivarianza muestral (\(S^2\)) como estimador de \(\sigma^2\), y la distribución de referencia cambia. A continuación, se detalla la teoría y metodología para este caso común en la práctica estadística.


22.1. Supuestos Clave

  1. Población normal: \(X \sim N(\mu, \sigma^2)\).
  2. Media desconocida (\(\mu\)): Se estima mediante la media muestral \(\bar{X}\).
  3. Muestra aleatoria: \(X_1, X_2, \dots, X_n\) son i.i.d.

22.2. Estadístico Pivotal

El estadístico pivotal se basa en la cuasivarianza muestral (\(S^2\)): \[ S^2 = \frac{1}{n-1} \sum_{i=1}^n (X_i - \bar{X})^2 \] Bajo los supuestos, la cantidad: \[ Q = \frac{(n-1)S^2}{\sigma^2} \sim \chi^2(n-1) \] sigue una distribución chi-cuadrado con \(n-1\) grados de libertad (no \(n\), porque se estimó \(\mu\) con \(\bar{X}\)).


22.3. Intervalo de Confianza para \(\sigma^2\)

Para un nivel de confianza \((1-\alpha) \times 100\%\), el intervalo se deriva de: \[ P\left( \chi^2_{1-\alpha/2, n-1} \leq \frac{(n-1)S^2}{\sigma^2} \leq \chi^2_{\alpha/2, n-1} \right) = 1 - \alpha \] Despejando \(\sigma^2\): \[ \sigma^2 \in \left( \frac{(n-1)S^2}{\chi^2_{\alpha/2, n-1}}, \frac{(n-1)S^2}{\chi^2_{1-\alpha/2, n-1}} \right) \]

22.4. Pasos para Construir el Intervalo

  1. Calcular la media muestral (\(\bar{X}\)) y la cuasivarianza (\(S^2\)).
  2. Obtener los cuantiles de \(\chi^2\) con \(n-1\) grados de libertad:
    • \(\chi^2_{\alpha/2, n-1}\): Cuantil superior.
    • \(\chi^2_{1-\alpha/2, n-1}\): Cuantil inferior.
  3. Aplicar la fórmula del intervalo.

22.5. Ejemplo Numérico

Supongamos: - Muestra: \(X = \{12, 15, 10, 11, 14\}\) (\(n = 5\)). - Nivel de confianza: 95% (\(\alpha = 0.05\)).

22.6. Cálculos

  1. Media muestral (\(\bar{X}\)): \[ \bar{X} = \frac{12 + 15 + 10 + 11 + 14}{5} = 12.4 \]
  2. Cuasivarianza (\(S^2\)): \[ S^2 = \frac{(12-12.4)^2 + (15-12.4)^2 + \dots + (14-12.4)^2}{4} = \frac{17.2}{4} = 4.3 \]
  3. Cuantiles \(\chi^2\) (con \(n-1 = 4\) grados de libertad):
    • \(\chi^2_{0.025, 4} \approx 11.143\) (superior).
    • \(\chi^2_{0.975, 4} \approx 0.484\) (inferior).
  4. Intervalo para \(\sigma^2\): \[ \left( \frac{4 \times 4.3}{11.143}, \frac{4 \times 4.3}{0.484} \right) \approx (1.54, 35.54) \]

Interpretación: Con 95% de confianza, \(\sigma^2\) está entre 1.54 y 35.54.


22.7. Implementación en R

# Datos
muestra <- c(12, 15, 10, 11, 14)
n <- length(muestra)
confianza <- 0.95
alpha <- 1 - confianza

# Media y cuasivarianza muestral
X_bar <- mean(muestra)
S2 <- var(muestra)  # Función que calcula S² = Σ(Xi - X̄)²/(n-1)

# Cuantiles chi-cuadrado
chi_sup <- qchisq(1 - alpha/2, df = n-1)
chi_inf <- qchisq(alpha/2, df = n-1)

# Intervalo de confianza
IC_inf <- (n-1) * S2 / chi_sup
IC_sup <- (n-1) * S2 / chi_inf

cat("Intervalo al 95% para σ²:", round(IC_inf, 2), ",", round(IC_sup, 2))
## Intervalo al 95% para σ²: 1.54 , 35.51

23. Comparación con Media Conocida vs. Desconocida

Caso Distribución Usada Grados de Libertad Intervalo para \(\sigma^2\)
Media conocida (\(\mu\)) \(\chi^2(n)\) \(n\) \(\left( \frac{S_{\mu}^2}{\chi^2_{\alpha/2, n}}, \frac{S_{\mu}^2}{\chi^2_{1-\alpha/2, n}} \right)\)
Media desconocida \(\chi^2(n-1)\) \(n-1\) \(\left( \frac{(n-1)S^2}{\chi^2_{\alpha/2, n-1}}, \frac{(n-1)S^2}{\chi^2_{1-\alpha/2, n-1}} \right)\)

24. Notas Clave

  1. Sensibilidad a la normalidad: Si los datos no son normales, el intervalo puede ser inexacto (usar pruebas de normalidad como Shapiro-Wilk).
  2. Tamaño de muestra pequeño: Para \(n < 30\), el intervalo es amplio y asimétrico. Para \(n \geq 30\), la distribución \(\chi^2\) se aproxima a una normal.
  3. Aplicaciones: Control de calidad, análisis de riesgos financieros, estudios médicos.

25. Fórmulas Esenciales

  • Cuasivarianza muestral: \[ S^2 = \frac{1}{n-1} \sum_{i=1}^n (X_i - \bar{X})^2 \]

  • Intervalo de confianza: \[ \sigma^2 \in \left( \frac{(n-1)S^2}{\chi^2_{\alpha/2, n-1}}, \frac{(n-1)S^2}{\chi^2_{1-\alpha/2, n-1}} \right) \]

  • Este método es fundamental en experimentos científicos donde \(\mu\) no se conoce a priori y se requiere estimar la variabilidad de los datos.

F. Tamaño de la Muestra

26. Tamaño de Muestra en Inferencia Estadística

En inferencia estadística, seleccionar un tamaño de muestra adecuado es crucial para garantizar que los resultados sean confiables y precisos. A continuación, se presenta la teoría para determinar el tamaño de muestra en los casos de media poblacional y proporción poblacional.


27. Tamaño de Muestra para Estimar la Media Poblacional (\(\mu\))

  • Cuando se desea estimar la media poblacional (\(\mu\)) con un nivel de confianza \((1 - \alpha)\) y un margen de error máximo permitido (\(E\)), el tamaño de muestra (\(n\)) se calcula según si la desviación estándar poblacional (\(\sigma\)) es conocida o desconocida.

Caso 1: \(\sigma\) conocida (Población normal o \(n \geq 30\))

Si la desviación estándar poblacional es conocida, usamos la distribución normal (Z): \[ n = \left( \frac{z_{\alpha/2} \cdot \sigma}{E} \right)^2 \] donde: - \(z_{\alpha/2}\) = valor crítico de la distribución normal estándar para un nivel de confianza \((1 - \alpha)\). - \(\sigma\) = desviación estándar poblacional. - \(E\) = margen de error (precisión deseada).

Ejemplo:

Si queremos estimar la media con un 95% de confianza (\(z_{0.025} = 1.96\)), \(\sigma = 5\) y \(E = 1\): \[ n = \left( \frac{1.96 \cdot 5}{1} \right)^2 = 96.04 \approx 97 \text{ (redondeado hacia arriba)}. \]


Caso 2: \(\sigma\) desconocida

Si \(\sigma\) es desconocida, se usa la distribución \(t\) de Student y una estimación inicial de la desviación estándar (\(S\)) a partir de una muestra piloto: \[ n = \left( \frac{t_{\alpha/2, n-1} \cdot S}{E} \right)^2 \] - Como \(t_{\alpha/2, n-1}\) depende de \(n\), el cálculo requiere iteraciones.
- En la práctica, si \(n\) es grande (\(n \geq 30\)), se aproxima con \(z_{\alpha/2}\).


28. Tamaño de Muestra para Estimar una Proporción Poblacional (\(p\))

Para estimar una proporción poblacional (\(p\)) con margen de error \(E\) y nivel de confianza \((1 - \alpha)\), usamos la aproximación normal (válida si \(np \geq 5\) y \(n(1-p) \geq 5\)): \[ n = \left( \frac{z_{\alpha/2}}{E} \right)^2 \cdot p(1 - p) \] - Si \(p\) es desconocido, se usa el valor más conservador \(p = 0.5\) (maximiza la varianza): \[ n = \left( \frac{z_{\alpha/2}}{2E} \right)^2 \]

Ejemplo:

Para estimar una proporción con un 95% de confianza (\(z_{0.025} = 1.96\)), \(E = 0.03\) y \(p\) desconocido: \[ n = \left( \frac{1.96}{2 \cdot 0.03} \right)^2 = 1067.11 \approx 1068 \text{ personas}. \]


29. Consideraciones Adicionales

  1. Población finita: Si la población (\(N\)) es pequeña, se aplica un factor de corrección: \[ n_{\text{ajustado}} = \frac{n}{1 + \frac{n - 1}{N}} \]
  2. Margen de error (\(E\)): Define la precisión deseada (e.g., \(E = 2\%\) para encuestas electorales).
  3. Nivel de confianza: Usualmente 90%, 95% o 99% (\(\alpha = 0.10\), \(0.05\), \(0.01\)).

Resumen de Fórmulas

Parámetro Fórmula (Población Infinita) Caso Conservador (\(p\) desconocido)
Media (\(\mu\)) \[n = \left( \frac{z_{\alpha/2} \cdot \sigma}{E} \right)^2\] No aplica.
Proporción (\(p\)) \[n = \left( \frac{z_{\alpha/2}}{E} \right)^2 p(1 - p)\] \[n = \left( \frac{z_{\alpha/2}}{2E} \right)^2\]

30. Aplicación para selección del Tamaño de la Muestra de la proporción poblacional

Ejemplo. La reacción de un individuo con respecto a un estímulo en un experimento psicológico puede adoptar una de dos formas, A o B. Si un experimentador quiere estimar la probabilidad \(p\) de que una persona reaccione de manera A, ¿cuántas personas deben incluirse en el experimento? Supóngase que el experimentador estará satisfecho si el error de estimación es menor que 0.04 con una probabilidad igual a 0.90. Considere también que él espera que \(p\) tenga un valor alrededor de 0.6.

Solución paso a paso:

  1. El intervalo de confianza para \(p\) es:

    \[ \text{IC}(p) = \hat{p} \pm z_{\alpha/2} \cdot \sqrt{\frac{p(1-p)}{n}} = \hat{p} \pm \epsilon \]

  2. Para \(\alpha = 0.10\), se tiene \(z_{\alpha/2} = z_{0.05} = 1.645\).

  3. Como \(\epsilon = z_{\alpha/2} \cdot \sqrt{\frac{p(1-p)}{n}}\), se tiene:

    \[ 0.04 = 1.645 \cdot \sqrt{\frac{0.6 \cdot 0.4}{n}} \]

  4. Resolviendo para \(n\):

    \[ n = \left( \frac{1.645 \cdot \sqrt{0.24}}{0.04} \right)^2 \approx 406 \]

    Si no se conoce \(p\), se utiliza \(p = 0.5\), lo que daría \(n = 423\).

En R si se tiene información de \(p=0.6\)

# Parámetros dados
E <- 0.04            # Margen de error
confianza <- 0.90     # Nivel de confianza (90%)
p <- 0.6             # Proporción esperada

# Cálculo del valor crítico z_(α/2)
alpha <- 1 - confianza
z_critico <- qnorm(1 - alpha/2)  # qnorm() devuelve el cuantil de la normal estándar

# Cálculo del tamaño de muestra
n <- ( (z_critico / E)^2 ) * p * (1 - p)

# Redondeamos hacia arriba (porque el tamaño de muestra debe ser entero)
n_final <- ceiling(n)

# Resultado
cat("Tamaño de muestra requerido (n):", n_final, "\n")
## Tamaño de muestra requerido (n): 406

En R si no se tiene información de \(p=0.5\)

n_conservador <- ( (z_critico / (2 * E))^2 )
ceiling(n_conservador)  # Resultado: 423
## [1] 423

G. Prueba de Hipótesis: Conceptos Generales

31. Prueba de Hipótesis: Conceptos Generales

La prueba de hipótesis es un procedimiento estadístico formal utilizado para determinar si existe suficiente evidencia en una muestra de datos para inferir que ciertas condiciones son válidas para toda una población. Se basa en la formulación de dos hipótesis mutuamente excluyentes sobre un parámetro de la población.

31.1. Generalidades

  • Parámetro Poblacional: Es una característica numérica que describe a toda la población (e.g., la media poblacional \(\mu\), la proporción poblacional \(p\), la varianza poblacional \(\sigma^2\)). Generalmente es desconocido.
  • Estadístico Muestral: Es una característica numérica que describe a una muestra de datos (e.g., la media muestral \(\bar{x}\), la proporción muestral \(\hat{p}\), la varianza muestral \(s^2\)). Se utiliza para hacer inferencias sobre el parámetro poblacional.
  • Hipótesis Nula (\(H_0\)): Es una afirmación sobre el parámetro poblacional que se asume como verdadera hasta que haya evidencia estadística convincente para rechazarla. A menudo representa el “status quo” o la ausencia de un efecto. Se formula con signos de igualdad, desigualdad menor o igual, o desigualdad mayor o igual (e.g., \(H_0: \mu = \mu_0\), \(H_0: p \le p_0\)).
  • Hipótesis Alternativa (\(H_1\) o \(H_a\)): Es una afirmación sobre el parámetro poblacional que se considera verdadera si se rechaza la hipótesis nula. Representa lo que el investigador sospecha o quiere probar. Se formula con signos de desigualdad, desigualdad mayor, o desigualdad menor (e.g., \(H_1: \mu \neq \mu_0\), \(H_1: p > p_0\)).
  • Error de Tipo I (\(\alpha\)): Es la probabilidad de rechazar la hipótesis nula cuando en realidad es verdadera (falso positivo). El nivel de significancia \(\alpha\) es la probabilidad máxima aceptable de cometer un error de Tipo I (comúnmente 0.05).
  • Error de Tipo II (\(\beta\)): Es la probabilidad de no rechazar la hipótesis nula cuando en realidad es falsa (falso negativo).
  • Potencia de la Prueba (\(1 - \beta\)): Es la probabilidad de rechazar correctamente la hipótesis nula cuando es falsa. Una prueba con alta potencia es deseable.
  • Estadístico de Prueba: Es un valor calculado a partir de los datos de la muestra que se utiliza para determinar si hay suficiente evidencia para rechazar la hipótesis nula. Su distribución se conoce (al menos aproximadamente) bajo la hipótesis nula. Ejemplos incluyen el estadístico \(t\), el estadístico \(z\), el estadístico \(\chi^2\), y el estadístico \(F\).
  • Valor p (p-value): Es la probabilidad de obtener un estadístico de prueba tan extremo (o más extremo) como el observado en la muestra, asumiendo que la hipótesis nula es verdadera. Un valor p pequeño (típicamente menor que \(\alpha\)) proporciona evidencia en contra de la hipótesis nula.
  • Región de Rechazo (o Región Crítica): Es el conjunto de valores del estadístico de prueba para los cuales se rechaza la hipótesis nula. El tamaño de esta región está determinado por el nivel de significancia \(\alpha\).
  • Región de No Rechazo: Es el conjunto de valores del estadístico de prueba para los cuales no se rechaza la hipótesis nula.

31.2. Pasos de una Prueba de Hipótesis

  1. Formular las hipótesis nula (\(H_0\)) y alternativa (\(H_1\)).

    • La hipótesis nula siempre debe contener una igualdad.
    • La hipótesis alternativa puede ser de dos colas (\(\neq\)), cola superior (\(>\)), o cola inferior (\(<\)).
  2. Elegir el nivel de significancia (\(\alpha\)).

    • Comúnmente se usa \(\alpha = 0.05\), pero puede variar según el contexto.
  3. Seleccionar el estadístico de prueba apropiado.

    • La elección depende del parámetro de interés, la distribución de la población (si se conoce), y el tamaño de la muestra.
  4. Calcular el valor del estadístico de prueba a partir de los datos de la muestra.

  5. Determinar el valor p o la región crítica.

    • Valor p: Calcular la probabilidad de obtener un estadístico de prueba tan extremo (o más extremo) como el observado, asumiendo que \(H_0\) es verdadera.
    • Región Crítica: Determinar los valores del estadístico de prueba que llevarían al rechazo de \(H_0\) basados en \(\alpha\) y la distribución del estadístico de prueba bajo \(H_0\).
  6. Tomar una decisión:

    • Usando el valor p: Si el valor p es menor o igual al nivel de significancia (\(\text{valor p} \le \alpha\)), se rechaza \(H_0\). Si el valor p es mayor que \(\alpha\), no se rechaza \(H_0\).
    • Usando la región crítica: Si el valor del estadístico de prueba cae dentro de la región crítica, se rechaza \(H_0\). Si cae fuera de la región crítica, no se rechaza \(H_0\).
  7. Formular una conclusión en el contexto del problema.

    • La conclusión debe indicar si hay suficiente evidencia estadística para rechazar la hipótesis nula y qué implica esto sobre la hipótesis alternativa.

32. Prueba de la Media de una Distribución Normal (Varianza Poblacional Conocida) - Método del Valor p

  • Cuando queremos realizar una prueba de hipótesis sobre la media (\(\mu\)) de una población que se distribuye normalmente (o aproximadamente normal, gracias al Teorema del Límite Central si la muestra es grande), y la varianza poblacional (\(\sigma^2\)) es conocida, podemos utilizar la distribución normal estándar para realizar la prueba. El método del valor p es una forma común de tomar una decisión en estas pruebas.

32.1. Conceptos Clave

  • Hipótesis Nula (\(H_0\)): Una afirmación sobre la media poblacional, generalmente de la forma \(H_0: \mu = \mu_0\), \(H_0: \mu \le \mu_0\), o \(H_0: \mu \ge \mu_0\).
  • Hipótesis Alternativa (\(H_1\) o \(H_a\)): La afirmación que se intenta probar, de la forma \(H_1: \mu \neq \mu_0\), \(H_1: \mu > \mu_0\), o \(H_1: \mu < \mu_0\). La forma de \(H_1\) determina si la prueba es de dos colas, cola superior, o cola inferior.
  • Estadístico de Prueba: Para la prueba de la media con varianza poblacional conocida, el estadístico de prueba es el estadístico z: \[z = \frac{\bar{x} - \mu_0}{\sigma / \sqrt{n}}\] donde \(\bar{x}\) es la media muestral, \(\mu_0\) es el valor de la media bajo la hipótesis nula, \(\sigma\) es la desviación estándar poblacional conocida, y \(n\) es el tamaño de la muestra.
  • Valor p (p-value): Es la probabilidad de obtener un estadístico de prueba tan extremo (o más extremo) como el valor calculado a partir de la muestra, asumiendo que la hipótesis nula es verdadera. La forma de calcular el valor p depende de la hipótesis alternativa:
    • Para \(H_1: \mu \neq \mu_0\) (dos colas): \(p = 2 \times P(Z \ge |z_{obs}|)\)
    • Para \(H_1: \mu > \mu_0\) (cola superior): \(p = P(Z \ge z_{obs})\)
    • Para \(H_1: \mu < \mu_0\) (cola inferior): \(p = P(Z \le z_{obs})\) donde \(z_{obs}\) es el valor calculado del estadístico de prueba y \(Z\) es una variable aleatoria con distribución normal estándar.
  • Nivel de Significancia (\(\alpha\)): Es la probabilidad máxima aceptable de rechazar la hipótesis nula cuando es verdadera (Error de Tipo I). Se elige antes de realizar la prueba (comúnmente 0.05).
  • Decisión: Se compara el valor p con el nivel de significancia \(\alpha\).
    • Si \(p \le \alpha\), se rechaza la hipótesis nula (\(H_0\)).
    • Si \(p > \alpha\), no se rechaza la hipótesis nula (\(H_0\)).
  • Conclusión: Se interpreta la decisión en el contexto del problema.

32.2. Pasos para la Prueba de Hipótesis (Método del Valor p)

  1. Formular las hipótesis nula (\(H_0\)) y alternativa (\(H_1\)).
  2. Especificar el nivel de significancia (\(\alpha\)).
  3. Calcular el estadístico de prueba \(z\).
  4. Calcular el valor p basado en la hipótesis alternativa.
  5. Tomar la decisión comparando el valor p con \(\alpha\).
  6. Formular la conclusión en el contexto del problema.

33. Ejemplos Resueltos - Prueba de dos colas

Problema: Se sabe que la desviación estándar de la altura de los estudiantes universitarios es de 6 cm. Se toma una muestra aleatoria de 64 estudiantes y se encuentra que la altura media es de 170 cm. ¿Hay evidencia suficiente para decir que la altura media de todos los estudiantes universitarios es diferente de 168 cm, a un nivel de significancia de \(\alpha = 0.05\)?

Solución en Markdown:

1. Definición de las Hipótesis:

  • Hipótesis Nula (\(H_0\)): La altura media de todos los estudiantes universitarios es igual a 168 cm. \[H_0: \mu = 168\]
  • Hipótesis Alternativa (\(H_1\)): La altura media de todos los estudiantes universitarios es diferente de 168 cm. (Esta es una prueba de dos colas). \[H_1: \mu \neq 168\]

2. Nivel de Significancia (\(\alpha\)):

El nivel de significancia dado es \(\alpha = 0.05\).

3. Datos del Problema:

  • Desviación estándar de la población (\(\sigma\)) = 6 cm
  • Tamaño de la muestra (\(n\)) = 64
  • Media muestral (\(\bar{x}\)) = 170 cm
  • Media hipotética (\(\mu_0\)) = 168 cm
  • Nivel de significancia (\(\alpha\)) = 0.05

4. Cálculo del Estadístico de Prueba Z:

Dado que conocemos la desviación estándar de la población y la muestra es suficientemente grande (n > 30), podemos usar el estadístico de prueba Z:

\[Z = \frac{\bar{x} - \mu_0}{\frac{\sigma}{\sqrt{n}}}\]

Sustituyendo los valores:

\[Z = \frac{170 - 168}{\frac{6}{\sqrt{64}}} = \frac{2}{\frac{6}{8}} = \frac{2}{0.75} \approx 2.67\]

El valor del estadístico de prueba Z es aproximadamente 2.67.

5. Cálculo del Valor p:

Para una prueba de dos colas, el valor p es la probabilidad de observar un estadístico de prueba tan extremo (en cualquier dirección) como el calculado, asumiendo que la hipótesis nula es verdadera. Se calcula como el doble de la probabilidad de la cola más pequeña.

\[p\text{-valor} = 2 \times P(Z \geq |2.67|) = 2 \times (1 - P(Z < 2.67))\]

En R, podemos calcular esto usando la función pnorm():

z_calculado <- 2.67
p_valor <- 2 * (1 - pnorm(abs(z_calculado)))
cat("Valor p:", p_valor, "\n")
## Valor p: 0.007585125

El valor p será aproximadamente 0.0076.

6. Decisión:

Comparamos el valor p con el nivel de significancia (\(\alpha = 0.05\)):

\[0.0076 < 0.05\]

Dado que el valor p es menor que el nivel de significancia, rechazamos la hipótesis nula.

7. Conclusión:

Con un nivel de significancia de \(\alpha = 0.05\), existe evidencia estadística suficiente para decir que la altura media de todos los estudiantes universitarios es diferente de 168 cm.


Solución en R (Código Completo y Visualización):

# Datos del problema
desviacion_estandar <- 6
tamano_muestra <- 64
media_muestra <- 170
media_hipotetica <- 168
alfa <- 0.05

# Calcular el estadístico de prueba Z
z_calculado <- (media_muestra - media_hipotetica) / (desviacion_estandar / sqrt(tamano_muestra))
cat("Estadístico de prueba Z:", z_calculado, "\n")
## Estadístico de prueba Z: 2.666667
# Calcular el valor p (prueba de dos colas)
p_valor <- 2 * (1 - pnorm(abs(z_calculado)))
cat("Valor p:", p_valor, "\n")
## Valor p: 0.007660761
# Calcular los valores críticos para una prueba de dos colas
z_critico_superior <- qnorm(1 - alfa / 2)
z_critico_inferior <- qnorm(alfa / 2)
cat("Valor crítico Z (superior):", z_critico_superior, "\n")
## Valor crítico Z (superior): 1.959964
cat("Valor crítico Z (inferior):", z_critico_inferior, "\n")
## Valor crítico Z (inferior): -1.959964
# Decisión
if (p_valor < alfa) {
  cat("El valor p es menor que alfa. Se rechaza la hipótesis nula.\n")
} else {
  cat("El valor p no es menor que alfa. No se rechaza la hipótesis nula.\n")
}
## El valor p es menor que alfa. Se rechaza la hipótesis nula.
# Visualización de la región crítica y el estadístico de prueba
library(ggplot2)

# Crear datos para la curva normal estándar
x <- seq(-4, 4, length.out = 200)
y <- dnorm(x)
df <- data.frame(x = x, y = y)

# Crear el gráfico
ggplot(df, aes(x = x, y = y)) +
  geom_line() +
  geom_area(aes(x = ifelse(x < z_critico_inferior | x > z_critico_superior, x, NA)), fill = "red", alpha = 0.5) +
  geom_vline(xintercept = z_critico_inferior, linetype = "dashed", color = "red") +
  geom_vline(xintercept = z_critico_superior, linetype = "dashed", color = "red") +
  geom_vline(xintercept = z_calculado, color = "blue") +
  labs(title = "Prueba de Hipótesis (Dos Colas)",
       subtitle = paste("Alfa =", alfa),
       x = "Z",
       y = "Densidad") +
  annotate("text", x = z_critico_inferior - 0.5, y = 0.1, label = paste("Z crítico =", round(z_critico_inferior, 3)), color = "red") +
  annotate("text", x = z_critico_superior + 0.5, y = 0.1, label = paste("Z crítico =", round(z_critico_superior, 3)), color = "red") +
  annotate("text", x = z_calculado + 0.5, y = 0.05, label = paste("Z calculado =", round(z_calculado, 2)), color = "blue") +
  annotate("text", x = -3, y = 0.3, label = "Región Crítica", color = "red") +
  annotate("text", x = 3, y = 0.3, label = "Región Crítica", color = "red") +
  annotate("text", x = z_calculado, y = 0.2, label = paste("p-valor =", round(p_valor, 4)), color = "blue") +
  theme_minimal()
## Warning: Removed 98 rows containing non-finite outside the scale range
## (`stat_align()`).

Interpretación de la Salida de R:

La salida de R mostrará el valor del estadístico de prueba Z (aproximadamente 2.67), el valor p (aproximadamente 0.0076) y los valores críticos para una prueba de dos colas (aproximadamente -1.96 y 1.96). El gráfico visualizará la curva normal estándar con las dos regiones críticas (áreas rojas en las colas) y la ubicación del estadístico de prueba calculado (línea azul). Verás que la línea azul cae fuera de la región entre los valores críticos, lo que lleva al rechazo de la hipótesis nula. El valor p también se indicará visualmente (aunque no como un área sombreada en este gráfico específico).

Conclusión Final:

Con un nivel de significancia de \(\alpha = 0.05\), existe evidencia estadística suficiente para concluir que la altura media de todos los estudiantes universitarios es diferente de 168 cm.

Región: El gráfico muestra la distribución normal estándar. Las áreas rojas en las colas representan la región crítica. La línea azul indica el estadístico z observado. Las áreas amarillas en las colas representan el valor p.

34. Ejemplo 2: Prueba de cola superior

Problema: Una compañía afirma que el tiempo promedio que tardan sus empleados en completar una tarea es de 15 minutos. Se toma una muestra aleatoria de 36 empleados y se encuentra que el tiempo medio es de 16 minutos. Se sabe que la desviación estándar poblacional es de 3 minutos. ¿Hay evidencia suficiente para decir que el tiempo promedio para completar la tarea es mayor de 15 minutos, a un nivel de significancia de \(\alpha = 0.01\)?

1. Definición de las Hipótesis:

  • Hipótesis Nula (\(H_0\)): El tiempo promedio que tardan los empleados en completar la tarea es de 15 minutos. \[H_0: \mu = 15\]
  • Hipótesis Alternativa (\(H_1\)): El tiempo promedio para completar la tarea es mayor de 15 minutos. (Esta es una prueba de cola derecha). \[H_1: \mu > 15\]

2. Nivel de Significancia (\(\alpha\)):

El nivel de significancia dado es \(\alpha = 0.01\).

3. Datos del Problema:

  • Desviación estándar de la población (\(\sigma\)) = 3 minutos
  • Tamaño de la muestra (\(n\)) = 36
  • Media muestral (\(\bar{x}\)) = 16 minutos
  • Media hipotética (\(\mu_0\)) = 15 minutos
  • Nivel de significancia (\(\alpha\)) = 0.01

4. Cálculo del Estadístico de Prueba Z:

Utilizamos el estadístico de prueba Z:

\[Z = \frac{\bar{x} - \mu_0}{\frac{\sigma}{\sqrt{n}}}\]

Sustituyendo los valores:

\[Z = \frac{16 - 15}{\frac{3}{\sqrt{36}}} = \frac{1}{\frac{3}{6}} = \frac{1}{0.5} = 2\]

El valor del estadístico de prueba Z es 2.

5. Cálculo del Valor p:

Para una prueba de cola derecha, el valor p es la probabilidad de observar un estadístico de prueba tan extremo (o más extremo hacia la derecha) como el calculado, asumiendo que la hipótesis nula es verdadera.

\[p\text{-valor} = P(Z \geq 2) = 1 - P(Z < 2)\]

En R, podemos calcular esto usando la función pnorm():

z_calculado <- 2
p_valor <- 1 - pnorm(z_calculado)
cat("Valor p:", p_valor, "\n")
## Valor p: 0.02275013

El valor p será aproximadamente 0.0228.

6. Decisión:

Comparamos el valor p con el nivel de significancia (\(\alpha = 0.01\)):

\[0.0228 > 0.01\]

Dado que el valor p es mayor que el nivel de significancia, no rechazamos la hipótesis nula.

7. Conclusión:

Con un nivel de significancia de \(\alpha = 0.01\), no hay evidencia estadística suficiente para decir que el tiempo promedio para completar la tarea es mayor de 15 minutos.


Solución en R (Código Completo y Visualización):

# Datos del problema
desviacion_estandar <- 3
tamano_muestra <- 36
media_muestra <- 16
media_hipotetica <- 15
alfa <- 0.01

# Calcular el estadístico de prueba Z
z_calculado <- (media_muestra - media_hipotetica) / (desviacion_estandar / sqrt(tamano_muestra))
cat("Estadístico de prueba Z:", z_calculado, "\n")
## Estadístico de prueba Z: 2
# Calcular el valor p (prueba de cola derecha)
p_valor <- 1 - pnorm(z_calculado)
cat("Valor p:", p_valor, "\n")
## Valor p: 0.02275013
# Calcular el valor crítico para una prueba de cola derecha
z_critico <- qnorm(1 - alfa)
cat("Valor crítico Z (cola derecha):", z_critico, "\n")
## Valor crítico Z (cola derecha): 2.326348
# Decisión
if (p_valor < alfa) {
  cat("El valor p es menor que alfa. Se rechaza la hipótesis nula.\n")
} else {
  cat("El valor p no es menor que alfa. No se rechaza la hipótesis nula.\n")
}
## El valor p no es menor que alfa. No se rechaza la hipótesis nula.
# Visualización de la región crítica y el estadístico de prueba
library(ggplot2)

# Crear datos para la curva normal estándar
x <- seq(-4, 4, length.out = 200)
y <- dnorm(x)
df <- data.frame(x = x, y = y)

# Crear el gráfico
ggplot(df, aes(x = x, y = y)) +
  geom_line() +
  geom_area(aes(x = ifelse(x > z_critico, x, NA)), fill = "red", alpha = 0.5) +
  geom_vline(xintercept = z_critico, linetype = "dashed", color = "red") +
  geom_vline(xintercept = z_calculado, color = "blue") +
  labs(title = "Prueba de Hipótesis (Cola Derecha)",
       subtitle = paste("Alfa =", alfa),
       x = "Z",
       y = "Densidad") +
  annotate("text", x = z_critico + 0.5, y = 0.1, label = paste("Z crítico =", round(z_critico, 3)), color = "red") +
  annotate("text", x = z_calculado - 0.5, y = 0.05, label = paste("Z calculado =", round(z_calculado, 2)), color = "blue") +
  annotate("text", x = 3, y = 0.3, label = "Región Crítica", color = "red") +
  annotate("text", x = z_calculado, y = 0.2, label = paste("p-valor =", round(p_valor, 4)), color = "blue") +
  theme_minimal()
## Warning: Removed 158 rows containing non-finite outside the scale range
## (`stat_align()`).

Interpretación de la Salida de R:

La salida de R mostrará el valor del estadístico de prueba Z (2), el valor p (aproximadamente 0.0228) y el valor crítico para una prueba de cola derecha (aproximadamente 2.33). El gráfico visualizará la curva normal estándar con la región crítica (área roja en la cola derecha) y la ubicación del estadístico de prueba calculado (línea azul). Verás que la línea azul no cae en la región crítica. El valor p (el área a la derecha de la línea azul) es mayor que el área de la región crítica (alfa).

Conclusión Final:

Con un nivel de significancia de \(\alpha = 0.01\), no hay evidencia estadística suficiente para decir que el tiempo promedio para completar la tarea es mayor de 15 minutos.

35. Ejemplo 3: Prueba de cola inferior

Problema: Un estudio afirma que el peso promedio de los recién nacidos es de 3.5 kg. Se toma una muestra aleatoria de 100 recién nacidos y se encuentra que el peso medio es de 3.4 kg. Se sabe que la desviación estándar poblacional es de 0.4 kg. ¿Hay evidencia suficiente para decir que el peso promedio de los recién nacidos es menor de 3.5 kg, a un nivel de significancia de \(\alpha = 0.05\)?

1. Definición de las Hipótesis:

  • Hipótesis Nula (\(H_0\)): El peso promedio de los recién nacidos es de 3.5 kg. \[H_0: \mu = 3.5\]
  • Hipótesis Alternativa (\(H_1\)): El peso promedio de los recién nacidos es menor de 3.5 kg. (Esta es una prueba de cola izquierda). \[H_1: \mu < 3.5\]

2. Nivel de Significancia (\(\alpha\)):

El nivel de significancia dado es \(\alpha = 0.05\).

3. Datos del Problema:

  • Desviación estándar de la población (\(\sigma\)) = 0.4 kg
  • Tamaño de la muestra (\(n\)) = 100
  • Media muestral (\(\bar{x}\)) = 3.4 kg
  • Media hipotética (\(\mu_0\)) = 3.5 kg
  • Nivel de significancia (\(\alpha\)) = 0.05

4. Cálculo del Estadístico de Prueba Z:

Utilizamos el estadístico de prueba Z:

\[Z = \frac{\bar{x} - \mu_0}{\frac{\sigma}{\sqrt{n}}}\]

Sustituyendo los valores:

\[Z = \frac{3.4 - 3.5}{\frac{0.4}{\sqrt{100}}} = \frac{-0.1}{\frac{0.4}{10}} = \frac{-0.1}{0.04} = -2.5\]

El valor del estadístico de prueba Z es -2.5.

5. Cálculo del Valor p:

Para una prueba de cola izquierda, el valor p es la probabilidad de observar un estadístico de prueba tan extremo (o más extremo hacia la izquierda) como el calculado, asumiendo que la hipótesis nula es verdadera.

\[p\text{-valor} = P(Z \leq -2.5)\]

En R, podemos calcular esto usando la función pnorm():

z_calculado <- -2.5
p_valor <- pnorm(z_calculado)
cat("Valor p:", p_valor, "\n")
## Valor p: 0.006209665

El valor p será aproximadamente 0.0062.

6. Decisión:

Comparamos el valor p con el nivel de significancia (\(\alpha = 0.05\)):

\[0.0062 < 0.05\]

Dado que el valor p es menor que el nivel de significancia, rechazamos la hipótesis nula.

7. Conclusión:

Con un nivel de significancia de \(\alpha = 0.05\), existe evidencia estadística suficiente para decir que el peso promedio de los recién nacidos es menor de 3.5 kg.


Solución en R (Código Completo y Visualización):

# Datos del problema
desviacion_estandar <- 0.4
tamano_muestra <- 100
media_muestra <- 3.4
media_hipotetica <- 3.5
alfa <- 0.05

# Calcular el estadístico de prueba Z
z_calculado <- (media_muestra - media_hipotetica) / (desviacion_estandar / sqrt(tamano_muestra))
cat("Estadístico de prueba Z:", z_calculado, "\n")
## Estadístico de prueba Z: -2.5
# Calcular el valor p (prueba de cola izquierda)
p_valor <- pnorm(z_calculado)
cat("Valor p:", p_valor, "\n")
## Valor p: 0.006209665
# Calcular el valor crítico para una prueba de cola izquierda
z_critico <- qnorm(alfa)
cat("Valor crítico Z (cola izquierda):", z_critico, "\n")
## Valor crítico Z (cola izquierda): -1.644854
# Decisión
if (p_valor < alfa) {
  cat("El valor p es menor que alfa. Se rechaza la hipótesis nula.\n")
} else {
  cat("El valor p no es menor que alfa. No se rechaza la hipótesis nula.\n")
}
## El valor p es menor que alfa. Se rechaza la hipótesis nula.
# Visualización de la región crítica y el estadístico de prueba
library(ggplot2)

# Crear datos para la curva normal estándar
x <- seq(-4, 4, length.out = 200)
y <- dnorm(x)
df <- data.frame(x = x, y = y)

# Crear el gráfico
ggplot(df, aes(x = x, y = y)) +
  geom_line() +
  geom_area(aes(x = ifelse(x < z_critico, x, NA)), fill = "red", alpha = 0.5) +
  geom_vline(xintercept = z_critico, linetype = "dashed", color = "red") +
  geom_vline(xintercept = z_calculado, color = "blue") +
  labs(title = "Prueba de Hipótesis (Cola Izquierda)",
       subtitle = paste("Alfa =", alfa),
       x = "Z",
       y = "Densidad") +
  annotate("text", x = z_critico - 0.5, y = 0.1, label = paste("Z crítico =", round(z_critico, 3)), color = "red") +
  annotate("text", x = z_calculado + 0.5, y = 0.05, label = paste("Z calculado =", round(z_calculado, 2)), color = "blue") +
  annotate("text", x = -3, y = 0.3, label = "Región Crítica", color = "red") +
  annotate("text", x = z_calculado - 0.5, y = 0.2, label = paste("p-valor =", round(p_valor, 4)), color = "blue") +
  theme_minimal()
## Warning: Removed 141 rows containing non-finite outside the scale range
## (`stat_align()`).

Interpretación de la Salida de R:

La salida de R mostrará el valor del estadístico de prueba Z (-2.5), el valor p (aproximadamente 0.0062) y el valor crítico para una prueba de cola izquierda (aproximadamente -1.645). El gráfico visualizará la curva normal estándar con la región crítica (área roja en la cola izquierda) y la ubicación del estadístico de prueba calculado (línea azul). Verás que la línea azul cae dentro de la región crítica. El valor p (el área a la izquierda de la línea azul) es menor que el área de la región crítica (alfa).

Conclusión Final:

Con un nivel de significancia de \(\alpha = 0.05\), existe evidencia estadística suficiente para decir que el peso promedio de los recién nacidos es menor de 3.5 kg.

¡Espero que esta solución te sea útil en esta mañana desde Cartagena! ¿Hay algún otro ejercicio de prueba de hipótesis que te gustaría resolver?

36. Prueba de la Media de una Distribución Normal (Varianza Poblacional Desconocida) - Método del Valor p

  • Cuando queremos realizar una prueba de hipótesis sobre la media (\(\mu\)) de una población que se distribuye normalmente (o aproximadamente normal) y la varianza poblacional (\(\sigma^2\)) es desconocida, debemos estimarla utilizando la varianza muestral (\(s^2\)) y utilizar la distribución t de Student para realizar la prueba. El método del valor p sigue siendo una forma fundamental de tomar una decisión.

Conceptos Clave

  • Hipótesis Nula (\(H_0\)): Una afirmación sobre la media poblacional, generalmente de la forma \(H_0: \mu = \mu_0\), \(H_0: \mu \le \mu_0\), o \(H_0: \mu \ge \mu_0\).
  • Hipótesis Alternativa (\(H_1\) o \(H_a\)): La afirmación que se intenta probar, de la forma \(H_1: \mu \neq \mu_0\), \(H_1: \mu > \mu_0\), o \(H_1: \mu < \mu_0\). La forma de \(H_1\) determina si la prueba es de dos colas, cola superior, o cola inferior.
  • Estadístico de Prueba: Para la prueba de la media con varianza poblacional desconocida, el estadístico de prueba es el estadístico t: \[t = \frac{\bar{x} - \mu_0}{s / \sqrt{n}}\] donde \(\bar{x}\) es la media muestral, \(\mu_0\) es el valor de la media bajo la hipótesis nula, \(s\) es la desviación estándar muestral, y \(n\) es el tamaño de la muestra. Este estadístico sigue una distribución t de Student con \(n-1\) grados de libertad (\(gl = n-1\)) bajo la hipótesis nula.
  • Valor p (p-value): Es la probabilidad de obtener un estadístico de prueba tan extremo (o más extremo) como el valor calculado a partir de la muestra, asumiendo que la hipótesis nula es verdadera y que el estadístico de prueba sigue una distribución t de Student con \(n-1\) grados de libertad. La forma de calcular el valor p depende de la hipótesis alternativa:
    • Para \(H_1: \mu \neq \mu_0\) (dos colas): \(p = 2 \times P(|T_{n-1}| \ge |t_{obs}|)\)
    • Para \(H_1: \mu > \mu_0\) (cola superior): \(p = P(T_{n-1} \ge t_{obs})\)
    • Para \(H_1: \mu < \mu_0\) (cola inferior): \(p = P(T_{n-1} \le t_{obs})\) donde \(t_{obs}\) es el valor calculado del estadístico de prueba y \(T_{n-1}\) es una variable aleatoria con distribución t de Student con \(n-1\) grados de libertad.
  • Nivel de Significancia (\(\alpha\)): Es la probabilidad máxima aceptable de rechazar la hipótesis nula cuando es verdadera (Error de Tipo I). Se elige antes de realizar la prueba (comúnmente 0.05).
  • Decisión: Se compara el valor p con el nivel de significancia \(\alpha\).
    • Si \(p \le \alpha\), se rechaza la hipótesis nula (\(H_0\)).
    • Si \(p > \alpha\), no se rechaza la hipótesis nula (\(H_0\)).
  • Conclusión: Se interpreta la decisión en el contexto del problema.

Pasos para la Prueba de Hipótesis (Método del Valor p, Varianza Desconocida)

  1. Formular las hipótesis nula (\(H_0\)) y alternativa (\(H_1\)).
  2. Especificar el nivel de significancia (\(\alpha\)).
  3. Calcular el estadístico de prueba \(t\).
  4. Determinar los grados de libertad (\(gl = n-1\)).
  5. Calcular el valor p basado en la hipótesis alternativa y la distribución t con \(n-1\) grados de libertad.
  6. Tomar la decisión comparando el valor p con \(\alpha\).
  7. Formular la conclusión en el contexto del problema.

36.1. Ejemplos Resueltos - Ejemplo 1: Prueba de dos colas

Problema: Un fabricante afirma que el contenido promedio de un cierto producto es de 50 ml. Se toma una muestra aleatoria de 25 unidades y se encuentra que el contenido medio es de 49 ml con una desviación estándar muestral de 2 ml. ¿Hay evidencia suficiente para rechazar la afirmación del fabricante a un nivel de significancia de \(\alpha = 0.05\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: \mu = 50\)
    • \(H_1: \mu \neq 50\)
  2. Nivel de significancia: \(\alpha = 0.05\)

  3. Estadístico de prueba: \[\bar{x} = 49, \mu_0 = 50, s = 2, n = 25\] \[t = \frac{49 - 50}{2 / \sqrt{25}} = \frac{-1}{2 / 5} = \frac{-1}{0.4} = -2.5\]

  4. Grados de libertad: \(gl = n - 1 = 25 - 1 = 24\)

  5. Valor p: Para una prueba de dos colas, \(p = 2 \times P(|T_{24}| \ge |-2.5|) = 2 \times P(T_{24} \ge 2.5)\). Usando una tabla t o software, \(P(T_{24} \ge 2.5) \approx 0.0124\). \[p = 2 \times 0.0124 = 0.0248\]

  6. Decisión: Como \(p = 0.0248 \le \alpha = 0.05\), rechazamos \(H_0\).

  7. Conclusión: Hay evidencia estadística suficiente al nivel de significancia de 0.05 para rechazar la afirmación del fabricante de que el contenido promedio del producto es de 50 ml. La media del contenido parece ser diferente de 50 ml.

Solución en R:

# Datos
media_muestra <- 49
media_nula <- 50
desviacion_estandar_muestra <- 2
tamano_muestra <- 25
alfa <- 0.05
grados_libertad <- tamano_muestra - 1

# Calcular el estadístico de prueba t
t_estadistico <- (media_muestra - media_nula) / (desviacion_estandar_muestra / sqrt(tamano_muestra))
cat("Estadístico t:", t_estadistico, "\n")
## Estadístico t: -2.5
# Calcular el valor p (prueba de dos colas)
p_valor <- 2 * pt(abs(t_estadistico), df = grados_libertad, lower.tail = FALSE)
cat("Valor p:", p_valor, "\n")
## Valor p: 0.01965418
# Decisión
if (p_valor <= alfa) {
  cat("Rechazamos la hipótesis nula.\n")
} else {
  cat("No rechazamos la hipótesis nula.\n")
}
## Rechazamos la hipótesis nula.
# Visualización de la región crítica y el valor p
library(ggplot2)
library(dplyr) # Se añade dplyr para el operador %>%
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# Crear el gráfico
data.frame(x = seq(-4, 4, 0.01)) %>%
  ggplot(aes(x = x)) +
  stat_function(fun = dt, args = list(df = grados_libertad)) +
  # Región crítica
  stat_function(fun = dt, args = list(df = grados_libertad),
                geom = "area", fill = "red", alpha = 0.3,
                xlim = c(-4, -qt(1 - alfa/2, df = grados_libertad))) +
  stat_function(fun = dt, args = list(df = grados_libertad),
                geom = "area", fill = "red", alpha = 0.3,
                xlim = c(qt(1 - alfa/2, df = grados_libertad), 4)) +
  # Valor p
  stat_function(fun = dt, args = list(df = grados_libertad),
                geom = "area", fill = "blue", alpha = 0.3,
                xlim = c(-4, -abs(t_estadistico))) +
  stat_function(fun = dt, args = list(df = grados_libertad),
                geom = "area", fill = "blue", alpha = 0.3,
                xlim = c(abs(t_estadistico), 4)) +
  # Líneas críticas
  geom_vline(xintercept = c(-qt(1 - alfa/2, df = grados_libertad), 
             qt(1 - alfa/2, df = grados_libertad)), 
             linetype = "dashed", color = "red") +
  # Línea del estadístico observado
  geom_vline(xintercept = t_estadistico, color = "darkgreen", linewidth = 1.5) +
  # Anotaciones
  annotate("text", x = -2.5, y = 0.1, label = "Región crítica", color = "red") +
  annotate("text", x = 2.5, y = 0.1, label = paste("Valor p =", round(p_valor, 4)), color = "blue") +
  annotate("text", x = t_estadistico, y = 0.2, 
           label = paste("t =", round(t_estadistico, 2)), 
           color = "darkgreen", vjust = -0.5) +
  labs(title = "Prueba t de Student (dos colas)",
       subtitle = paste("Distribución t con", grados_libertad, "grados de libertad"),
       x = "Valor t", y = "Densidad de probabilidad") +
  theme_minimal()

Región: El gráfico muestra la distribución t con 24 grados de libertad. Las áreas rojas en las colas representan la región crítica. La línea azul indica el estadístico t observado. Las áreas amarillas en las colas representan el valor p.

36.2. Ejemplo 2: Prueba de cola inferior

Problema: Un entrenador personal cree que sus clientes pueden correr una milla en menos de 8 minutos en promedio después de 6 semanas de entrenamiento. Se toma una muestra aleatoria de 16 clientes y se encuentra que el tiempo medio para correr una milla es de 7.8 minutos con una desviación estándar muestral de 0.5 minutos. ¿Hay evidencia suficiente para apoyar la creencia del entrenador a un nivel de significancia de \(\alpha = 0.01\)? (Nota: la hipótesis del entrenador es que la media es menor de 8, así que esta será una prueba de cola inferior en realidad. El problema original tenía una inconsistencia).

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: \mu \ge 8\)
    • \(H_1: \mu < 8\)
  2. Nivel de significancia: \(\alpha = 0.01\)

  3. Estadístico de prueba: \[\bar{x} = 7.8, \mu_0 = 8, s = 0.5, n = 16\] \[t = \frac{7.8 - 8}{0.5 / \sqrt{16}} = \frac{-0.2}{0.5 / 4} = \frac{-0.2}{0.125} = -1.6\]

  4. Grados de libertad: \(gl = n - 1 = 16 - 1 = 15\)

  5. Valor p: Para una prueba de cola inferior, \(p = P(T_{15} \le -1.6)\). Usando una tabla t o software, \(P(T_{15} \le -1.6) \approx 0.0655\).

  6. Decisión: Como \(p = 0.0655 > \alpha = 0.01\), no rechazamos \(H_0\).

  7. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.01 para apoyar la creencia del entrenador de que sus clientes pueden correr una milla en menos de 8 minutos en promedio después de 6 semanas de entrenamiento.

Solución en R:

# Datos
media_muestra <- 7.8
media_nula <- 8
desviacion_estandar_muestra <- 0.5
tamano_muestra <- 16
alfa <- 0.01
grados_libertad <- tamano_muestra - 1

# Calcular el estadístico de prueba t
t_estadistico <- (media_muestra - media_nula) / (desviacion_estandar_muestra / sqrt(tamano_muestra))
cat("Estadístico t:", round(t_estadistico, 4), "\n")
## Estadístico t: -1.6
# Calcular el valor p (prueba de cola inferior)
p_valor <- pt(t_estadistico, df = grados_libertad, lower.tail = TRUE)
cat("Valor p:", round(p_valor, 6), "\n")  # Más decimales para valores pequeños
## Valor p: 0.065223
# Decisión
if (p_valor <= alfa) {
  cat("Rechazamos la hipótesis nula.\n")
} else {
  cat("No rechazamos la hipótesis nula.\n")
}
## No rechazamos la hipótesis nula.
# Visualización mejorada
library(ggplot2)
library(dplyr)

# Calcular valor crítico
t_critico <- qt(alfa, df = grados_libertad)

# Crear gráfico con mejor formato
data.frame(x = seq(-5, 3, 0.01)) %>%  # Rango ajustado para mejor visualización
  ggplot(aes(x = x)) +
  # Distribución base
  stat_function(fun = dt, args = list(df = grados_libertad), 
                color = "gray40", linewidth = 0.8) +
  
  # Región crítica (rojo)
  stat_function(fun = dt, args = list(df = grados_libertad),
                geom = "area", fill = "red", alpha = 0.4,
                xlim = c(-5, t_critico)) +
  
  # Área del valor p (azul)
  stat_function(fun = dt, args = list(df = grados_libertad),
                geom = "area", fill = "blue", alpha = 0.3,
                xlim = c(-5, t_estadistico)) +
  
  # Línea crítica
  geom_vline(xintercept = t_critico, 
             linetype = "dashed", color = "red", linewidth = 1) +
  
  # Línea del estadístico observado
  geom_vline(xintercept = t_estadistico, 
             color = "darkgreen", linewidth = 1.5) +
  
  # Anotaciones mejor posicionadas
  annotate("text", x = t_critico - 0.8, y = 0.1, 
           label = paste0("t crítico\n(", round(t_critico, 3), ")"), 
           color = "red", size = 3.5, hjust = 1) +
  
  annotate("text", x = t_estadistico, y = 0.2, 
           label = paste0("t = ", round(t_estadistico, 2)), 
           color = "darkgreen", vjust = -0.5, size = 4) +
  
  annotate("text", x = -3.5, y = 0.15, 
           label = paste0("Valor p = ", format.pval(p_valor, digits = 3)), 
           color = "blue", size = 4.5, fontface = "bold") +
  
  # Etiquetas y tema mejorado
  labs(title = "Prueba t de Student (cola inferior)",
       subtitle = paste0("H₀: μ ≥ ", media_nula, " vs H₁: μ < ", media_nula, 
                        " (α = ", alfa, "; gl = ", grados_libertad, ")"),
       x = "Estadístico t", y = "Densidad de probabilidad") +
  
  theme_minimal(base_size = 12) +
  theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
        plot.subtitle = element_text(hjust = 0.5, size = 11),
        panel.grid.major = element_line(color = "gray90"),
        panel.grid.minor = element_blank(),
        axis.title = element_text(size = 12),
        axis.text = element_text(size = 10)) +
  
  scale_x_continuous(breaks = seq(-5, 3, 1), limits = c(-5, 3)) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.1)))  # Ajuste del espacio superior

Región: El gráfico muestra la distribución t con 15 grados de libertad. El área roja en la cola izquierda representa la región crítica. La línea azul indica el estadístico t observado. El área amarilla en la cola izquierda representa el valor p.

36.3. Ejemplo 3: Prueba de cola superior

Problema: Una empresa de software afirma que el tiempo promedio que tardan los usuarios en aprender a usar su nueva aplicación es de 20 minutos. Se toma una muestra aleatoria de 10 usuarios y se encuentra que el tiempo medio es de 22 minutos con una desviación estándar muestral de 3 minutos. ¿Hay evidencia suficiente para decir que el tiempo promedio es mayor de 20 minutos, a un nivel de significancia de \(\alpha = 0.10\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: \mu \le 20\)
    • \(H_1: \mu > 20\)
  2. Nivel de significancia: \(\alpha = 0.10\)

  3. Estadístico de prueba: \[\bar{x} = 22, \mu_0 = 20, s = 3, n = 10\] \[t = \frac{22 - 20}{3 / \sqrt{10}} = \frac{2}{3 / 3.162} = \frac{2}{0.949} \approx 2.11\]

  4. Grados de libertad: \(gl = n - 1 = 10 - 1 = 9\)

  5. Valor p: Para una prueba de cola superior, \(p = P(T_{9} \ge 2.11)\). Usando una tabla t o software, \(P(T_{9} \ge 2.11) \approx 0.031\).

  6. Decisión: Como \(p = 0.031 \le \alpha = 0.10\), rechazamos \(H_0\).

  7. Conclusión: Hay evidencia estadística suficiente al nivel de significancia de 0.10 para decir que el tiempo promedio que tardan los usuarios en aprender a usar la nueva aplicación es mayor de 20 minutos.

Solución en R:

# Datos del análisis
media_muestra <- 22
media_nula <- 20
desviacion_estandar_muestra <- 3
tamano_muestra <- 10
alfa <- 0.10
grados_libertad <- tamano_muestra - 1

# Cálculo del estadístico t
t_estadistico <- (media_muestra - media_nula) / (desviacion_estandar_muestra / sqrt(tamano_muestra))
cat("Estadístico t calculado:", round(t_estadistico, 4), "\n")
## Estadístico t calculado: 2.1082
# Cálculo del valor p (prueba unilateral derecha)
p_valor <- pt(t_estadistico, df = grados_libertad, lower.tail = FALSE)
cat("Valor p obtenido:", format.pval(p_valor, digits = 4), "\n")
## Valor p obtenido: 0.03213
# Toma de decisión
decision <- ifelse(p_valor <= alfa, 
                  "Rechazamos la hipótesis nula (p ≤ α)",
                  "No rechazamos la hipótesis nula (p > α)")
cat("Conclusión:", decision, "\n")
## Conclusión: Rechazamos la hipótesis nula (p ≤ α)
# Visualización mejorada
library(ggplot2)
library(dplyr)

# Valores críticos
t_critico <- qt(1 - alfa, df = grados_libertad)

# Creación del gráfico con mejoras sustanciales
data.frame(x = seq(-3, 5, 0.01)) %>%  # Rango ajustado
  ggplot(aes(x = x)) +
  
  # 1. Distribución base
  stat_function(fun = dt, args = list(df = grados_libertad), 
                color = "gray30", linewidth = 0.8) +
  
  # 2. Región crítica (rojo semitransparente)
  stat_function(fun = dt, args = list(df = grados_libertad),
                geom = "area", fill = "#FF6B6B", alpha = 0.4,
                xlim = c(t_critico, 5)) +
  
  # 3. Área del valor p (azul semitransparente)
  stat_function(fun = dt, args = list(df = grados_libertad),
                geom = "area", fill = "#4E79A7", alpha = 0.5,
                xlim = c(t_estadistico, 5)) +
  
  # 4. Líneas de referencia
  geom_vline(xintercept = t_critico, 
             linetype = "dashed", color = "#D32F2F", linewidth = 1.2) +
  
  geom_vline(xintercept = t_estadistico, 
             color = "#2E7D32", linewidth = 1.5) +
  
  # 5. Anotaciones profesionales
  annotate("text", x = t_critico + 0.3, y = 0.1, 
           label = sprintf("t crítico = %.2f", t_critico), 
           color = "#D32F2F", size = 4, hjust = 0) +
  
  annotate("text", x = t_estadistico, y = 0.25, 
           label = sprintf("t observado = %.2f", t_estadistico), 
           color = "#2E7D32", vjust = -0.5, size = 4.5) +
  
  annotate("text", x = 4, y = 0.15, 
           label = sprintf("Valor p = %.4f", p_valor), 
           color = "#4E79A7", size = 5, fontface = "bold") +
  
  # 6. Elementos estéticos y formato
  labs(title = "Prueba t de Student (Unilateral Derecha)",
       subtitle = sprintf("H₀: μ ≤ %.1f vs H₁: μ > %.1f | α = %.2f | gl = %d", 
                         media_nula, media_nula, alfa, grados_libertad),
       x = "Valor del estadístico t", 
       y = "Densidad de probabilidad") +
  
  theme_minimal(base_size = 13) +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 15),
    plot.subtitle = element_text(hjust = 0.5, size = 12),
    panel.grid.major = element_line(color = "gray92"),
    panel.grid.minor = element_blank(),
    axis.title = element_text(size = 13),
    axis.text = element_text(size = 11),
    plot.margin = margin(15, 15, 15, 15)
  ) +
  
  scale_x_continuous(breaks = seq(-3, 5, 1), limits = c(-3, 5)) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.1)))

37. Prueba de la Proporción Poblacional (Grandes Muestras) - Método del Valor p

  • Cuando queremos realizar una prueba de hipótesis sobre la proporción (\(p\)) de una población, y el tamaño de la muestra (\(n\)) es suficientemente grande (generalmente \(np_0 \ge 10\) y \(n(1-p_0) \ge 10\) bajo la hipótesis nula), podemos utilizar la distribución normal estándar como una aproximación a la distribución binomial. El método del valor p es una herramienta clave para tomar decisiones en estas pruebas.

37.1 Conceptos Clave

  • Hipótesis Nula (\(H_0\)): Una afirmación sobre la proporción poblacional, generalmente de la forma \(H_0: p = p_0\), \(H_0: p \le p_0\), o \(H_0: p \ge p_0\).
  • Hipótesis Alternativa (\(H_1\) o \(H_a\)): La afirmación que se intenta probar, de la forma \(H_1: p \neq p_0\), \(H_1: p > p_0\), o \(H_1: p < p_0\). La forma de \(H_1\) determina si la prueba es de dos colas, cola superior, o cola inferior.
  • Estadístico de Prueba: Para la prueba de la proporción poblacional (grandes muestras), el estadístico de prueba es el estadístico z: \[z = \frac{\hat{p} - p_0}{\sqrt{\frac{p_0(1 - p_0)}{n}}}\] donde \(\hat{p} = x/n\) es la proporción muestral (con \(x\) siendo el número de éxitos en la muestra de tamaño \(n\)), y \(p_0\) es el valor de la proporción bajo la hipótesis nula.
  • Valor p (p-value): Es la probabilidad de obtener una proporción muestral tan extrema (o más extrema) como la observada, asumiendo que la hipótesis nula es verdadera y que el estadístico de prueba sigue una distribución normal estándar. La forma de calcular el valor p depende de la hipótesis alternativa:
    • Para \(H_1: p \neq p_0\) (dos colas): \(p = 2 \times P(Z \ge |z_{obs}|)\)
    • Para \(H_1: p > p_0\) (cola superior): \(p = P(Z \ge z_{obs})\)
    • Para \(H_1: p < p_0\) (cola inferior): \(p = P(Z \le z_{obs})\) donde \(z_{obs}\) es el valor calculado del estadístico de prueba y \(Z\) es una variable aleatoria con distribución normal estándar.
  • Nivel de Significancia (\(\alpha\)): Es la probabilidad máxima aceptable de rechazar la hipótesis nula cuando es verdadera (Error de Tipo I). Se elige antes de realizar la prueba (comúnmente 0.05).
  • Decisión: Se compara el valor p con el nivel de significancia \(\alpha\).
    • Si \(p \le \alpha\), se rechaza la hipótesis nula (\(H_0\)).
    • Si \(p > \alpha\), no se rechaza la hipótesis nula (\(H_0\)).
  • Conclusión: Se interpreta la decisión en el contexto del problema.

37.2. Pasos para la Prueba de Hipótesis (Método del Valor p, Proporción Poblacional - Grandes Muestras)

  1. Formular las hipótesis nula (\(H_0\)) y alternativa (\(H_1\)).
  2. Especificar el nivel de significancia (\(\alpha\)).
  3. Verificar las condiciones para la aproximación normal (grandes muestras: \(np_0 \ge 10\) y \(n(1-p_0) \ge 10\)).
  4. Calcular la proporción muestral \(\hat{p}\).
  5. Calcular el estadístico de prueba \(z\).
  6. Calcular el valor p basado en la hipótesis alternativa y la distribución normal estándar.
  7. Tomar la decisión comparando el valor p con \(\alpha\).
  8. Formular la conclusión en el contexto del problema.

37.3 Ejemplo 1: Prueba de dos colas**

Problema: Una encuesta anterior reveló que el 60% de los adultos en una ciudad apoyaba una cierta política. Después de una campaña informativa, se realiza una nueva encuesta a 400 adultos y se encuentra que el 66% ahora apoya la política. ¿Hay evidencia suficiente para decir que la proporción de adultos que apoya la política ha cambiado significativamente a un nivel de significancia de \(\alpha = 0.05\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: p = 0.60\)
    • \(H_1: p \neq 0.60\)
  2. Nivel de significancia: \(\alpha = 0.05\)

  3. Verificación de condiciones: \(n = 400\), \(p_0 = 0.60\). \(np_0 = 400 \times 0.60 = 240 \ge 10\), \(n(1-p_0) = 400 \times 0.40 = 160 \ge 10\). Las condiciones se cumplen.

  4. Proporción muestral: \(\hat{p} = 0.66\)

  5. Estadístico de prueba: \[z = \frac{0.66 - 0.60}{\sqrt{\frac{0.60(1 - 0.60)}{400}}} = \frac{0.06}{\sqrt{\frac{0.24}{400}}} = \frac{0.06}{\sqrt{0.0006}} = \frac{0.06}{0.0245} \approx 2.45\]

  6. Valor p: Para una prueba de dos colas, \(p = 2 \times P(Z \ge |2.45|) = 2 \times P(Z \ge 2.45)\). Usando una tabla Z o software, \(P(Z \ge 2.45) \approx 1 - 0.9929 = 0.0071\). \[p = 2 \times 0.0071 = 0.0142\]

  7. Decisión: Como \(p = 0.0142 \le \alpha = 0.05\), rechazamos \(H_0\).

  8. Conclusión: Hay evidencia estadística suficiente al nivel de significancia de 0.05 para decir que la proporción de adultos que apoya la política ha cambiado significativamente.

Solución en R:

# Datos del análisis
proporcion_muestra <- 0.66
proporcion_nula <- 0.60
tamano_muestra <- 400
alfa <- 0.05

# Verificación de condiciones para prueba z
if (tamano_muestra * proporcion_nula < 10 | tamano_muestra * (1 - proporcion_nula) < 10) {
  warning("Las condiciones para la aproximación normal no se cumplen")
}

# Cálculo del estadístico z
error_estandar <- sqrt((proporcion_nula * (1 - proporcion_nula)) / tamano_muestra)
z_estadistico <- (proporcion_muestra - proporcion_nula) / error_estandar
cat("Estadístico z calculado:", round(z_estadistico, 4), "\n")
## Estadístico z calculado: 2.4495
cat("Error estándar:", round(error_estandar, 5), "\n")
## Error estándar: 0.02449
# Cálculo del valor p (prueba bilateral)
p_valor <- 2 * pnorm(abs(z_estadistico), lower.tail = FALSE)
cat("Valor p obtenido:", format.pval(p_valor, digits = 4), "\n")
## Valor p obtenido: 0.01431
# Toma de decisión
decision <- ifelse(p_valor <= alfa, 
                  "Rechazamos la hipótesis nula (p ≤ α)",
                  "No rechazamos la hipótesis nula (p > α)")
cat("Conclusión:", decision, "\n")
## Conclusión: Rechazamos la hipótesis nula (p ≤ α)
# Visualización mejorada
library(ggplot2)
library(dplyr)

# Valores críticos
z_critico <- qnorm(1 - alfa/2)

# Creación del gráfico profesional
data.frame(x = seq(-4, 4, 0.01)) %>%
  ggplot(aes(x = x)) +
  
  # 1. Distribución normal estándar
  stat_function(fun = dnorm, color = "gray40", linewidth = 0.8) +
  
  # 2. Regiones críticas (rojo)
  stat_function(fun = dnorm, geom = "area",
                fill = "#E74C3C", alpha = 0.4,
                xlim = c(-4, -z_critico)) +
  
  stat_function(fun = dnorm, geom = "area",
                fill = "#E74C3C", alpha = 0.4,
                xlim = c(z_critico, 4)) +
  
  # 3. Áreas del valor p (azul)
  stat_function(fun = dnorm, geom = "area",
                fill = "#3498DB", alpha = 0.5,
                xlim = c(-4, -abs(z_estadistico))) +
  
  stat_function(fun = dnorm, geom = "area",
                fill = "#3498DB", alpha = 0.5,
                xlim = c(abs(z_estadistico), 4)) +
  
  # 4. Líneas de referencia
  geom_vline(xintercept = c(-z_critico, z_critico), 
             linetype = "dashed", color = "#C0392B", linewidth = 1) +
  
  geom_vline(xintercept = z_estadistico, 
             color = "#27AE60", linewidth = 1.5) +
  
  # 5. Anotaciones profesionales
  annotate("text", x = -z_critico - 0.5, y = 0.1, 
           label = sprintf("-z crítico\n(%.2f)", -z_critico), 
           color = "#C0392B", size = 3.8) +
  
  annotate("text", x = z_critico + 0.5, y = 0.1, 
           label = sprintf("z crítico\n(%.2f)", z_critico), 
           color = "#C0392B", size = 3.8) +
  
  annotate("text", x = z_estadistico, y = 0.2, 
           label = sprintf("z = %.2f", z_estadistico), 
           color = "#27AE60", vjust = -0.8, size = 4.2) +
  
  annotate("text", x = 0, y = 0.3, 
           label = sprintf("Valor p = %.4f", p_valor), 
           color = "#3498DB", size = 4.5, fontface = "bold") +
  
  # 6. Elementos estéticos y formato
  labs(title = "Prueba Z para Proporciones (Bilateral)",
       subtitle = sprintf("H₀: π = %.2f vs H₁: π ≠ %.2f | α = %.2f | n = %d", 
                         proporcion_nula, proporcion_nula, alfa, tamano_muestra),
       x = "Estadístico Z", 
       y = "Densidad de probabilidad") +
  
  theme_minimal(base_size = 13) +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 15),
    plot.subtitle = element_text(hjust = 0.5, size = 12),
    panel.grid.major = element_line(color = "gray92"),
    panel.grid.minor = element_blank(),
    axis.title = element_text(size = 13),
    axis.text = element_text(size = 11),
    plot.margin = margin(15, 15, 15, 15)
  ) +
  
  scale_x_continuous(breaks = seq(-4, 4, 1)) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.1)))

Región: El gráfico muestra la distribución normal estándar. Las áreas rojas en las colas representan la región crítica. La línea azul indica el estadístico z observado. Las áreas amarillas en las colas representan el valor p.

37.4 Ejemplo 2: Prueba de cola inferior

Problema: Una compañía afirma que al menos el 80% de sus clientes están satisfechos con su producto. Se toma una muestra aleatoria de 250 clientes y se encuentra que el 76% está satisfecho. ¿Hay evidencia suficiente para rechazar la afirmación de la compañía a un nivel de significancia de \(\alpha = 0.01\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: p \ge 0.80\)
    • \(H_1: p < 0.80\)
  2. Nivel de significancia: \(\alpha = 0.01\)

  3. Verificación de condiciones: \(n = 250\), \(p_0 = 0.80\). \(np_0 = 250 \times 0.80 = 200 \ge 10\), \(n(1-p_0) = 250 \times 0.20 = 50 \ge 10\). Las condiciones se cumplen.

  4. Proporción muestral: \(\hat{p} = 0.76\)

  5. Estadístico de prueba: \[z = \frac{0.76 - 0.80}{\sqrt{\frac{0.80(1 - 0.80)}{250}}} = \frac{-0.04}{\sqrt{\frac{0.16}{250}}} = \frac{-0.04}{\sqrt{0.00064}} = \frac{-0.04}{0.0253} \approx -1.58\]

  6. Valor p: Para una prueba de cola inferior, \(p = P(Z \le -1.58)\). Usando una tabla Z o software, \(P(Z \le -1.58) \approx 0.0571\).

  7. Decisión: Como \(p = 0.0571 > \alpha = 0.01\), no rechazamos \(H_0\).

  8. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.01 para rechazar la afirmación de la compañía de que al menos el 80% de sus clientes están satisfechos.

Solución en R:

# Datos del análisis
proporcion_muestra <- 0.76
proporcion_nula <- 0.80
tamano_muestra <- 250
alfa <- 0.01

# Verificación de condiciones para prueba z
if (tamano_muestra * proporcion_nula < 10 | tamano_muestra * (1 - proporcion_nula) < 10) {
  warning("Advertencia: Las condiciones para la aproximación normal no se cumplen")
}

# Cálculo del estadístico z
error_estandar <- sqrt((proporcion_nula * (1 - proporcion_nula)) / tamano_muestra)
z_estadistico <- (proporcion_muestra - proporcion_nula) / error_estandar
cat("Estadístico z calculado:", round(z_estadistico, 4), "\n")
## Estadístico z calculado: -1.5811
cat("Error estándar:", round(error_estandar, 5), "\n")
## Error estándar: 0.0253
# Cálculo del valor p (prueba unilateral inferior)
p_valor <- pnorm(z_estadistico, lower.tail = TRUE)
cat("Valor p obtenido:", format.pval(p_valor, digits = 4), "\n")
## Valor p obtenido: 0.05692
# Toma de decisión
decision <- ifelse(p_valor <= alfa, 
                  "Rechazamos la hipótesis nula (p ≤ α)",
                  "No rechazamos la hipótesis nula (p > α)")
cat("Conclusión:", decision, "\n")
## Conclusión: No rechazamos la hipótesis nula (p > α)
# Visualización mejorada
library(ggplot2)
library(dplyr)

# Valor crítico
z_critico <- qnorm(alfa)

# Creación del gráfico profesional
data.frame(x = seq(-4, 4, 0.01)) %>%
  ggplot(aes(x = x)) +
  
  # 1. Distribución normal base
  stat_function(fun = dnorm, color = "gray40", linewidth = 0.8) +
  
  # 2. Región crítica (rojo)
  stat_function(fun = dnorm, geom = "area",
                fill = "#E74C3C", alpha = 0.4,
                xlim = c(-4, z_critico)) +
  
  # 3. Área del valor p (azul)
  stat_function(fun = dnorm, geom = "area",
                fill = "#3498DB", alpha = 0.5,
                xlim = c(-4, z_estadistico)) +
  
  # 4. Líneas de referencia
  geom_vline(xintercept = z_critico, 
             linetype = "dashed", color = "#C0392B", linewidth = 1.2) +
  
  geom_vline(xintercept = z_estadistico, 
             color = "#27AE60", linewidth = 1.5) +
  
  # 5. Anotaciones profesionales
  annotate("text", x = z_critico - 0.5, y = 0.1, 
           label = sprintf("z crítico\n= %.2f", z_critico), 
           color = "#C0392B", size = 4, hjust = 1) +
  
  annotate("text", x = z_estadistico, y = 0.2, 
           label = sprintf("z = %.2f", z_estadistico), 
           color = "#27AE60", vjust = -0.8, size = 4.5) +
  
  annotate("text", x = -2.5, y = 0.15, 
           label = sprintf("Valor p = %.4f", p_valor), 
           color = "#3498DB", size = 5, fontface = "bold") +
  
  # 6. Elementos estéticos y formato
  labs(title = "Prueba Z para Proporciones (Unilateral Inferior)",
       subtitle = sprintf("H₀: π ≥ %.2f vs H₁: π < %.2f | α = %.2f | n = %d", 
                         proporcion_nula, proporcion_nula, alfa, tamano_muestra),
       x = "Estadístico Z", 
       y = "Densidad de probabilidad") +
  
  theme_minimal(base_size = 13) +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 15),
    plot.subtitle = element_text(hjust = 0.5, size = 12),
    panel.grid.major = element_line(color = "gray92"),
    panel.grid.minor = element_blank(),
    axis.title = element_text(size = 13),
    axis.text = element_text(size = 11),
    plot.margin = margin(15, 15, 15, 15)
  ) +
  
  scale_x_continuous(breaks = seq(-4, 4, 1)) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.1)))

Región: El gráfico muestra la distribución normal estándar. El área roja en la cola izquierda representa la región crítica. La línea azul indica el estadístico z observado. El área amarilla en la cola izquierda representa el valor p.

37.5. Ejemplo 3: Prueba de cola superior

Problema: Un político cree que su tasa de aprobación es mayor del 45%. Se realiza una encuesta a 300 votantes y se encuentra que 141 lo aprueban. ¿Hay evidencia suficiente para apoyar su creencia a un nivel de significancia de \(\alpha = 0.10\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: p \le 0.45\)
    • \(H_1: p > 0.45\)
  2. Nivel de significancia: \(\alpha = 0.10\)

  3. Verificación de condiciones: \(n = 300\), \(p_0 = 0.45\). \(np_0 = 300 \times 0.45 = 135 \ge 10\), \(n(1-p_0) = 300 \times 0.55 = 165 \ge 10\). Las condiciones se cumplen.

  4. Proporción muestral: \(\hat{p} = 141 / 300 = 0.47\)

  5. Estadístico de prueba: \[z = \frac{0.47 - 0.45}{\sqrt{\frac{0.45(1 - 0.45)}{300}}} = \frac{0.02}{\sqrt{\frac{0.2475}{300}}} = \frac{0.02}{\sqrt{0.000825}} = \frac{0.02}{0.0287} \approx 0.70\]

  6. Valor p: Para una prueba de cola superior, \(p = P(Z \ge 0.70)\). Usando una tabla Z o software, \(P(Z \ge 0.70) \approx 1 - 0.7580 = 0.2420\).

  7. Decisión: Como \(p = 0.2420 > \alpha = 0.10\), no rechazamos \(H_0\).

  8. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.10 para apoyar la creencia del político de que su tasa de aprobación es mayor del 45%.

Solución en R:

# Datos del análisis
proporcion_muestra <- 141 / 300  # 141 éxitos en 300 ensayos
proporcion_nula <- 0.45
tamano_muestra <- 300
alfa <- 0.10

# Verificación de condiciones para prueba z
np <- tamano_muestra * proporcion_nula
nq <- tamano_muestra * (1 - proporcion_nula)
if (np < 10 | nq < 10) {
  warning("Advertencia: Las condiciones para la aproximación normal no se cumplen (np = ", 
          round(np, 1), ", nq = ", round(nq, 1), ")")
} else {
  cat("Condiciones para aproximación normal cumplidas (np =", round(np, 1), ", nq =", round(nq, 1), ")\n")
}
## Condiciones para aproximación normal cumplidas (np = 135 , nq = 165 )
# Cálculos intermedios
error_estandar <- sqrt((proporcion_nula * (1 - proporcion_nula)) / tamano_muestra)
cat("Proporción muestral:", round(proporcion_muestra, 4), "\n")
## Proporción muestral: 0.47
cat("Error estándar:", round(error_estandar, 5), "\n")
## Error estándar: 0.02872
# Cálculo del estadístico z
z_estadistico <- (proporcion_muestra - proporcion_nula) / error_estandar
cat("Estadístico z calculado:", round(z_estadistico, 4), "\n")
## Estadístico z calculado: 0.6963
# Cálculo del valor p (prueba unilateral superior)
p_valor <- pnorm(z_estadistico, lower.tail = FALSE)
cat("Valor p obtenido:", format.pval(p_valor, digits = 4), "\n")
## Valor p obtenido: 0.2431
# Toma de decisión
decision <- ifelse(p_valor <= alfa,
                  paste("Rechazamos H₀ (p =", round(p_valor, 4), "≤ α =", alfa, ")"),
                  paste("No rechazamos H₀ (p =", round(p_valor, 4), "> α =", alfa, ")"))
cat("Conclusión:", decision, "\n")
## Conclusión: No rechazamos H₀ (p = 0.2431 > α = 0.1 )
# Visualización mejorada
library(ggplot2)
library(dplyr)

# Valor crítico
z_critico <- qnorm(1 - alfa)

# Creación del gráfico profesional
data.frame(x = seq(-3, 4, 0.01)) %>%  # Rango ajustado
  ggplot(aes(x = x)) +
  
  # 1. Distribución normal base
  stat_function(fun = dnorm, color = "gray40", linewidth = 0.8) +
  
  # 2. Región crítica (rojo)
  stat_function(fun = dnorm, geom = "area",
                fill = "#e63946", alpha = 0.4,
                xlim = c(z_critico, 4)) +
  
  # 3. Área del valor p (azul)
  stat_function(fun = dnorm, geom = "area",
                fill = "#457b9d", alpha = 0.5,
                xlim = c(z_estadistico, 4)) +
  
  # 4. Líneas de referencia
  geom_vline(xintercept = z_critico, 
             linetype = "dashed", color = "#d62828", linewidth = 1.2) +
  
  geom_vline(xintercept = z_estadistico, 
             color = "#2a9d8f", linewidth = 1.5) +
  
  # 5. Anotaciones profesionales
  annotate("text", x = z_critico + 0.3, y = 0.1, 
           label = sprintf("z crítico = %.2f", z_critico), 
           color = "#d62828", size = 4, hjust = 0) +
  
  annotate("text", x = z_estadistico, y = 0.25, 
           label = sprintf("z = %.2f", z_estadistico), 
           color = "#2a9d8f", vjust = -0.8, size = 4.5) +
  
  annotate("text", x = 2.5, y = 0.15, 
           label = sprintf("Valor p = %.4f", p_valor), 
           color = "#457b9d", size = 5, fontface = "bold") +
  
  # 6. Elementos estéticos y formato
  labs(title = "Prueba Z para Proporciones (Unilateral Superior)",
       subtitle = sprintf("H₀: π ≤ %.2f  vs  H₁: π > %.2f  |  α = %.2f  |  n = %d", 
                         proporcion_nula, proporcion_nula, alfa, tamano_muestra),
       x = "Estadístico Z", 
       y = "Densidad de probabilidad") +
  
  theme_minimal(base_size = 13) +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 15),
    plot.subtitle = element_text(hjust = 0.5, size = 12),
    panel.grid.major = element_line(color = "gray92"),
    panel.grid.minor = element_blank(),
    axis.title = element_text(size = 13),
    axis.text = element_text(size = 11),
    plot.margin = margin(15, 15, 15, 15)
  ) +
  
  scale_x_continuous(breaks = seq(-3, 4, 1)) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.1)))

38. Prueba de la Diferencia entre Dos Medias Poblacionales (Datos Pareados) - Método del Valor p

  • Cuando se tienen datos pareados (también conocidos como datos relacionados o de medidas repetidas), donde cada observación en una muestra está naturalmente emparejada con una observación en la otra muestra, la prueba de la diferencia de medias se enfoca en la diferencia individual dentro de cada par. Si estas diferencias se distribuyen normalmente (o aproximadamente normal), podemos realizar una prueba t de Student sobre la media de estas diferencias.

38.1. Conceptos Clave

  • Datos Pareados: Datos donde cada punto en una muestra tiene una correspondencia directa con un punto en la otra muestra.
  • Diferencia Individual (\(d_i\)): Para cada par \(i\), la diferencia se calcula como \(d_i = x_{1i} - x_{2i}\), donde \(x_{1i}\) es la observación del primer grupo y \(x_{2i}\) es la observación del segundo grupo.
  • Media de las Diferencias Muestrales (\(\bar{d}\)): La media de todas las diferencias individuales: \[\bar{d} = \frac{\sum_{i=1}^{n} d_i}{n}\] donde \(n\) es el número de pares.
  • Desviación Estándar de las Diferencias Muestrales (\(s_d\)): La desviación estándar de las diferencias individuales: \[s_d = \sqrt{\frac{\sum_{i=1}^{n} (d_i - \bar{d})^2}{n - 1}}\]
  • Hipótesis Nula (\(H_0\)): Una afirmación sobre la diferencia media poblacional (\(\mu_d\)), generalmente de la forma \(H_0: \mu_d = 0\), \(H_0: \mu_d \le 0\), o \(H_0: \mu_d \ge 0\).
  • Hipótesis Alternativa (\(H_1\) o \(H_a\)): La afirmación que se intenta probar, de la forma \(H_1: \mu_d \neq 0\), \(H_1: \mu_d > 0\), o \(H_1: \mu_d < 0\).
  • Estadístico de Prueba: Para la prueba de la diferencia de medias con datos pareados, el estadístico de prueba es el estadístico t: \[t = \frac{\bar{d} - \mu_{d0}}{s_d / \sqrt{n}}\] donde \(\mu_{d0}\) es el valor de la diferencia media bajo la hipótesis nula (comúnmente 0). Este estadístico sigue una distribución t de Student con \(n-1\) grados de libertad (\(gl = n-1\)) bajo la hipótesis nula.
  • Valor p (p-value): Es la probabilidad de obtener un estadístico de prueba tan extremo (o más extremo) como el valor calculado a partir de la muestra, asumiendo que la hipótesis nula es verdadera y que el estadístico de prueba sigue una distribución t de Student con \(n-1\) grados de libertad. La forma de calcular el valor p depende de la hipótesis alternativa:
    • Para \(H_1: \mu_d \neq 0\) (dos colas): \(p = 2 \times P(|T_{n-1}| \ge |t_{obs}|)\)
    • Para \(H_1: \mu_d > 0\) (cola superior): \(p = P(T_{n-1} \ge t_{obs})\)
    • Para \(H_1: \mu_d < 0\) (cola inferior): \(p = P(T_{n-1} \le t_{obs})\) donde \(t_{obs}\) es el valor calculado del estadístico de prueba y \(T_{n-1}\) es una variable aleatoria con distribución t de Student con \(n-1\) grados de libertad.
  • Nivel de Significancia (\(\alpha\)): Es la probabilidad máxima aceptable de rechazar la hipótesis nula cuando es verdadera (Error de Tipo I).
  • Decisión: Se compara el valor p con el nivel de significancia \(\alpha\).
    • Si \(p \le \alpha\), se rechaza la hipótesis nula (\(H_0\)).
    • Si \(p > \alpha\), no se rechaza la hipótesis nula (\(H_0\)).
  • Conclusión: Se interpreta la decisión en el contexto del problema.

38.2. Pasos para la Prueba de Hipótesis (Datos Pareados, Método del Valor p)

  1. Calcular las diferencias individuales (\(d_i\)) para cada par.
  2. Formular las hipótesis nula (\(H_0\)) y alternativa (\(H_1\)) sobre la diferencia media poblacional (\(\mu_d\)).
  3. Especificar el nivel de significancia (\(\alpha\)).
  4. Calcular la media de las diferencias muestrales (\(\bar{d}\)) y la desviación estándar de las diferencias muestrales (\(s_d\)).
  5. Calcular el estadístico de prueba \(t\).
  6. Determinar los grados de libertad (\(gl = n-1\)).
  7. Calcular el valor p basado en la hipótesis alternativa y la distribución t con \(n-1\) grados de libertad.
  8. Tomar la decisión comparando el valor p con \(\alpha\).
  9. Formular la conclusión en el contexto del problema.

Como usar R en colab

# Instalar R y rpy2
#!apt-get install -y r-base
!pip install rpy2
# Importar rpy2 para ejecutar código en R
#%load_ext rpy2.ipython
#%%R

38.3. Ejemplo 1: Prueba de dos colas

Problema: Se quiere evaluar la efectividad de un nuevo programa de entrenamiento. Se midió el tiempo (en segundos) que tardaron 10 atletas en correr 400 metros antes y después del programa. Los datos son:

Atleta Antes Después Diferencia (Antes - Después)
1 55.2 54.1 1.1
2 56.8 55.5 1.3
3 57.1 56.9 0.2
4 58.0 57.2 0.8
5 54.9 54.9 0.0
6 56.3 55.8 0.5
7 55.5 55.0 0.5
8 57.5 56.6 0.9
9 56.0 55.9 0.1
10 57.8 57.0 0.8

¿Hay evidencia suficiente para decir que el programa de entrenamiento tiene un efecto significativo en el tiempo de carrera a un nivel de significancia de \(\alpha = 0.05\)?

Solución en Markdown:

  1. Diferencias individuales: (Calculadas en la tabla)

  2. Hipótesis:

    • \(H_0: \mu_d = 0\) (No hay diferencia media en el tiempo de carrera)
    • \(H_1: \mu_d \neq 0\) (Hay una diferencia media en el tiempo de carrera)
  3. Nivel de significancia: \(\alpha = 0.05\)

  4. Estadísticos muestrales de las diferencias:

    • \(\bar{d} = (1.1 + 1.3 + 0.2 + 0.8 + 0.0 + 0.5 + 0.5 + 0.9 + 0.1 + 0.8) / 10 = 6.2 / 10 = 0.62\)
    • \(s_d = \sqrt{\frac{\sum (d_i - \bar{d})^2}{9}} = \sqrt{\frac{(1.1-0.62)^2 + \dots + (0.8-0.62)^2}{9}} \approx \sqrt{\frac{1.1856}{9}} \approx 0.363\)
  5. Estadístico de prueba: \[t = \frac{0.62 - 0}{0.363 / \sqrt{10}} = \frac{0.62}{0.1147} \approx 5.405\]

  6. Grados de libertad: \(gl = n - 1 = 10 - 1 = 9\)

  7. Valor p: Para una prueba de dos colas, \(p = 2 \times P(|T_{9}| \ge |5.405|) = 2 \times P(T_{9} \ge 5.405)\). Usando software, \(P(T_{9} \ge 5.405) \approx 0.0002\). \[p = 2 \times 0.0002 = 0.0004\]

  8. Decisión: Como \(p = 0.0004 \le \alpha = 0.05\), rechazamos \(H_0\).

  9. Conclusión: Hay evidencia estadística suficiente al nivel de significancia de 0.05 para decir que el programa de entrenamiento tiene un efecto significativo en el tiempo de carrera de los atletas.

Solución en R:

# Datos
antes <- c(55.2, 56.8, 57.1, 58.0, 54.9, 56.3, 55.5, 57.5, 56.0, 57.8)
despues <- c(54.1, 55.5, 56.9, 57.2, 54.9, 55.8, 55.0, 56.6, 55.9, 57.0)
diferencias <- antes - despues
n <- length(diferencias)
media_d <- mean(diferencias)
sd_d <- sd(diferencias)
alfa <- 0.05
gl <- n - 1

# Calcular el estadístico de prueba t
t_estadistico <- (media_d - 0) / (sd_d / sqrt(n))
cat("Estadístico t:", t_estadistico, "\n")
## Estadístico t: 4.516479
# Calcular el valor p (prueba de dos colas)
p_valor <- 2 * pt(abs(t_estadistico), df = gl, lower.tail = FALSE)
cat("Valor p:", p_valor, "\n")
## Valor p: 0.001454121
# Decisión
if (p_valor <= alfa) {
  cat("Rechazamos la hipótesis nula.\n")
} else {
  cat("No rechazamos la hipótesis nula.\n")
}
## Rechazamos la hipótesis nula.
# Visualización de la región crítica y el valor p
library(ggplot2)
library(dplyr)

# Crear el gráfico
df <- data.frame(x = seq(-4, 4, 0.01))
t_critico <- qt(1 - alfa/2, df = gl)

ggplot(df, aes(x = x)) +
  stat_function(fun = dt, args = list(df = gl)) +
  # Región crítica (roja)
  geom_area(data = subset(df, x < -t_critico),
            aes(y = dt(x, df = gl)), fill = "red", alpha = 0.5) +
  geom_area(data = subset(df, x > t_critico),
            aes(y = dt(x, df = gl)), fill = "red", alpha = 0.5) +
  # Valor p (amarillo)
  geom_area(data = subset(df, x > abs(t_estadistico)),
            aes(y = dt(x, df = gl)), fill = "yellow", alpha = 0.5) +
  geom_area(data = subset(df, x < -abs(t_estadistico)),
            aes(y = dt(x, df = gl)), fill = "yellow", alpha = 0.5) +
  # Líneas críticas
  geom_vline(xintercept = c(-t_critico, t_critico), linetype = "dashed", color = "red") +
  # Línea del estadístico observado
  geom_vline(xintercept = t_estadistico, color = "blue", linewidth = 1) +
  # Anotaciones
  annotate("text", x = -t_critico - 0.5, y = 0.05, label = "-t crítico", color = "red") +
  annotate("text", x = t_critico + 0.5, y = 0.05, label = "t crítico", color = "red") +
  annotate("text", x = t_estadistico + 0.5, y = 0.1, label = "t observado", color = "blue") +
  annotate("text", x = 0, y = 0.2, label = paste("Valor p =", round(p_valor, 4)), color = "black") +
  labs(title = "Prueba t para la diferencia de medias (pareadas, dos colas)",
       x = "Estadístico t",
       y = "Densidad") +
  theme_minimal()

Región: El gráfico muestra la distribución t con 9 grados de libertad. Las áreas rojas en las colas representan la región crítica. La línea azul indica el estadístico t observado. Las áreas amarillas en las colas representan el valor p.

38.4. Ejemplo 2: Prueba de cola superior

Problema: Se quiere saber si un nuevo método de enseñanza aumenta la puntuación de los estudiantes en un examen. Se midió la puntuación de 15 estudiantes antes y después de aplicar el método. Se calcula la diferencia (Después - Antes) para cada estudiante. La media de las diferencias es \(\bar{d} = 3.5\) y la desviación estándar de las diferencias es \(s_d = 2.0\). ¿Hay evidencia suficiente para decir que el método aumenta las puntuaciones a un nivel de significancia de \(\alpha = 0.01\)?

Solución en Markdown:

  1. Diferencias individuales: (Resumidas por \(\bar{d}\) y \(s_d\))

  2. Hipótesis:

    • \(H_0: \mu_d \le 0\) (El método no aumenta las puntuaciones o las disminuye)
    • \(H_1: \mu_d > 0\) (El método aumenta las puntuaciones)
  3. Nivel de significancia: \(\alpha = 0.01\)

  4. Estadísticos muestrales de las diferencias: \(\bar{d} = 3.5\), \(s_d = 2.0\), \(n = 15\)

  5. Estadístico de prueba: \[t = \frac{3.5 - 0}{2.0 / \sqrt{15}} = \frac{3.5}{0.516} \approx 6.783\]

  6. Grados de libertad: \(gl = n - 1 = 15 - 1 = 14\)

  7. Valor p: Para una prueba de cola superior, \(p = P(T_{14} \ge 6.783)\). Usando software, \(P(T_{14} \ge 6.783) \approx 0.000003\).

  8. Decisión: Como \(p \approx 0.000003 \le \alpha = 0.01\), rechazamos \(H_0\).

  9. Conclusión: Hay evidencia estadística suficiente al nivel de significancia de 0.01 para decir que el nuevo método de enseñanza aumenta significativamente las puntuaciones de los estudiantes en el examen.

Solución en R:

# Datos resumidos
media_d <- 3.5
sd_d <- 2.0
n <- 15
alfa <- 0.01
gl <- n - 1

# Calcular el estadístico de prueba t
t_estadistico <- (media_d - 0) / (sd_d / sqrt(n))
cat("Estadístico t:", round(t_estadistico, 4), "\n")
## Estadístico t: 6.7777
# Calcular el valor p (prueba de cola superior)
p_valor <- pt(t_estadistico, df = gl, lower.tail = FALSE)
cat("Valor p:", format.pval(p_valor, digits = 4), "\n")
## Valor p: 4.456e-06
# Decisión
if (p_valor <= alfa) {
  cat("Rechazamos la hipótesis nula.\n")
} else {
  cat("No rechazamos la hipótesis nula.\n")
}
## Rechazamos la hipótesis nula.
# Visualización de la región crítica y el valor p
library(ggplot2)

# Calculamos valores importantes
t_critico <- qt(1 - alfa, df = gl)
x_vals <- seq(-4, max(4, t_estadistico + 1), 0.01)  # Ajustamos el rango según el t observado

ggplot(data.frame(x = x_vals), aes(x = x)) +
  # Distribución base
  stat_function(fun = dt, args = list(df = gl)) +
  
  # Región crítica (roja)
  geom_area(data = subset(data.frame(x = x_vals), x > t_critico),
            aes(y = dt(x, df = gl)), fill = "red", alpha = 0.3) +
  
  # Valor p (amarillo)
  geom_area(data = subset(data.frame(x = x_vals), x > t_estadistico),
            aes(y = dt(x, df = gl)), fill = "yellow", alpha = 0.3) +
  
  # Líneas de referencia
  geom_vline(xintercept = t_critico, linetype = "dashed", color = "red", linewidth = 0.8) +
  geom_vline(xintercept = t_estadistico, color = "blue", linewidth = 1.2) +
  geom_vline(xintercept = 0, color = "gray50", linetype = "dotted") +
  
  # Anotaciones
  annotate("text", x = t_critico, y = 0.1, 
           label = paste("t crítico =", round(t_critico, 3)), 
           color = "red", hjust = 1.1) +
  
  annotate("text", x = t_estadistico, y = 0.15, 
           label = paste("t =", round(t_estadistico, 3)), 
           color = "blue", hjust = -0.1) +
  
  annotate("text", x = mean(c(t_estadistico, max(x_vals))), y = 0.05, 
           label = paste("Valor p =", format.pval(p_valor, digits = 3)), 
           color = "darkgoldenrod", size = 4) +
  
  # Configuración del gráfico
  labs(title = "Prueba t de una cola (cola superior)",
       subtitle = paste("Grados de libertad =", gl),
       x = "Valor del estadístico t",
       y = "Densidad de probabilidad") +
  
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),
        plot.subtitle = element_text(hjust = 0.5))

Región: El gráfico muestra la distribución t con 14 grados de libertad. El área roja en la cola derecha representa la región crítica. La línea azul indica el estadístico t observado. El área amarilla en la cola derecha representa el valor p.

38.5. Ejemplo 3: Prueba de cola inferior

Problema: Se mide la presión arterial sistólica de 8 pacientes antes y después de tomar un nuevo medicamento. Se calcula la diferencia (Después - Antes). La media de las diferencias es \(\bar{d} = -2.5\) mmHg y la desviación estándar de las diferencias es \(s_d = 1.5\) mmHg. ¿Hay evidencia suficiente para decir que el medicamento reduce la presión arterial a un nivel de significancia de \(\alpha = 0.05\)?

Solución en Markdown:

  1. Diferencias individuales: (Resumidas por \(\bar{d}\) y \(s_d\))

  2. Hipótesis:

    • \(H_0: \mu_d \ge 0\) (El medicamento no reduce la presión arterial o la aumenta)
    • \(H_1: \mu_d < 0\) (El medicamento reduce la presión arterial)
  3. Nivel de significancia: \(\alpha = 0.05\)

  4. Estadísticos muestrales de las diferencias: \(\bar{d} = -2.5\), \(s_d = 1.5\), \(n = 8\)

  5. Estadístico de prueba: \[t = \frac{-2.5 - 0}{1.5 / \sqrt{8}} = \frac{-2.5}{0.530} \approx -4.717\]

  6. Grados de libertad: \(gl = n - 1 = 8 - 1 = 7\)

  7. Valor p: Para una prueba de cola inferior, \(p = P(T_{7} \le -4.717)\). Usando software, \(P(T_{7} \le -4.717) \approx 0.0014\).

  8. Decisión: Como \(p \approx 0.0014 \le \alpha = 0.05\), rechazamos \(H_0\).

  9. Conclusión: Hay evidencia estadística suficiente al nivel de significancia de 0.05 para decir que el medicamento reduce significativamente la presión arterial sistólica de los pacientes.

Solución en R:

# Datos resumidos
media_d <- -2.5
sd_d <- 1.5
n <- 8
alfa <- 0.05
gl <- n - 1

# Calcular el estadístico de prueba t
t_estadistico <- (media_d - 0) / (sd_d / sqrt(n))
cat("Estadístico t:", round(t_estadistico, 4), "\n")
## Estadístico t: -4.714
# Calcular el valor p (prueba de cola inferior)
p_valor <- pt(t_estadistico, df = gl, lower.tail = TRUE)
cat("Valor p:", format.pval(p_valor, digits = 4), "\n")
## Valor p: 0.001086
# Decisión
if (p_valor <= alfa) {
  cat("Rechazamos la hipótesis nula.\n")
} else {
  cat("No rechazamos la hipótesis nula.\n")
}
## Rechazamos la hipótesis nula.
# Visualización mejorada
library(ggplot2)

# Calculamos valores importantes
t_critico <- qt(alfa, df = gl)
x_vals <- seq(min(-4, t_estadistico - 1), max(4, abs(t_estadistico) + 1), 0.01)

ggplot(data.frame(x = x_vals), aes(x = x)) +
  # Distribución base
  stat_function(fun = dt, args = list(df = gl)) +
  
  # Región crítica (roja)
  geom_area(data = subset(data.frame(x = x_vals), x < t_critico),
            aes(y = dt(x, df = gl)), fill = "red", alpha = 0.3) +
  
  # Valor p (amarillo)
  geom_area(data = subset(data.frame(x = x_vals), x < t_estadistico),
            aes(y = dt(x, df = gl)), fill = "yellow", alpha = 0.3) +
  
  # Líneas de referencia
  geom_vline(xintercept = t_critico, linetype = "dashed", color = "red", linewidth = 0.8) +
  geom_vline(xintercept = t_estadistico, color = "blue", linewidth = 1.2) +
  geom_vline(xintercept = 0, color = "gray50", linetype = "dotted") +
  
  # Anotaciones
  annotate("text", x = t_critico, y = 0.1, 
           label = paste("t crítico =", round(t_critico, 3)), 
           color = "red", hjust = -0.1) +
  
  annotate("text", x = t_estadistico, y = 0.15, 
           label = paste("t =", round(t_estadistico, 3)), 
           color = "blue", hjust = 1.1) +
  
  annotate("text", x = mean(c(min(x_vals), t_estadistico)), y = 0.05, 
           label = paste("Valor p =", format.pval(p_valor, digits = 3)), 
           color = "darkgoldenrod", size = 4) +
  
  # Configuración del gráfico
  labs(title = "Prueba t de una cola (cola inferior)",
       subtitle = paste("Grados de libertad =", gl),
       x = "Valor del estadístico t",
       y = "Densidad de probabilidad") +
  
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),
        plot.subtitle = element_text(hjust = 0.5))

Región: El gráfico muestra la distribución t con 7 grados de libertad. El área roja en la cola izquierda representa la región crítica. La línea azul indica el estadístico t observado. El área amarilla en la cola izquierda representa el valor p.

38.6. Ejemplo 4: Prueba con hipótesis nula diferente de cero

Problema: Un estudio evalúa si un nuevo tipo de neumático mejora el rendimiento de combustible en al menos 2 km/litro. Se midió el rendimiento de 6 vehículos con los neumáticos antiguos y los nuevos, y se calculó la diferencia (Nuevo - Antiguo). La media de las diferencias es \(\bar{d} = 2.3\) km/litro y la desviación estándar de las diferencias es \(s_d = 0.8\) km/litro. ¿Hay evidencia suficiente para apoyar la afirmación a un nivel de significancia de \(\alpha = 0.10\)?

Solución en Markdown:

  1. Diferencias individuales: (Resumidas por \(\bar{d}\) y \(s_d\))

  2. Hipótesis:

    • \(H_0: \mu_d \le 2\) (La mejora en el rendimiento es menor o igual a 2 km/litro)
    • \(H_1: \mu_d > 2\) (La mejora en el rendimiento es mayor de 2 km/litro)
  3. Nivel de significancia: \(\alpha = 0.10\)

  4. Estadísticos muestrales de las diferencias: \(\bar{d} = 2.3\), \(s_d = 0.8\), \(n = 6\)

  5. Estadístico de prueba: \[t = \frac{2.3 - 2}{0.8 / \sqrt{6}} = \frac{0.3}{0.327} \approx 0.917\]

  6. Grados de libertad: \(gl = n - 1 = 6 - 1 = 5\)

  7. Valor p: Para una prueba de cola superior, \(p = P(T_{5} \ge 0.917)\). Usando software, \(P(T_{5} \ge 0.917) \approx 0.204\).

  8. Decisión: Como \(p \approx 0.204 > \alpha = 0.10\), no rechazamos \(H_0\).

  9. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.10 para apoyar la afirmación de que el nuevo tipo de neumático mejora el rendimiento de combustible en más de 2 km/litro en promedio.

Solución en R:

# Datos resumidos
# Parámetros del problema
media_d <- 2.3
sd_d <- 0.8
n <- 6
mu_d0 <- 2
alfa <- 0.10
gl <- n - 1

# Calcular el estadístico de prueba t
t_estadistico <- (media_d - mu_d0) / (sd_d / sqrt(n))
cat("Estadístico t:", round(t_estadistico, 4), "\n")
## Estadístico t: 0.9186
# Calcular el valor p (prueba de cola superior)
p_valor <- pt(t_estadistico, df = gl, lower.tail = FALSE)
cat("Valor p:", format.pval(p_valor, digits = 3), "\n")
## Valor p: 0.2
# Decisión
if (p_valor <= alfa) {
  cat("Rechazamos la hipótesis nula (hay evidencia de que μ_d >", mu_d0, ").\n")
} else {
  cat("No rechazamos la hipótesis nula (no hay evidencia suficiente de que μ_d >", mu_d0, ").\n")
}
## No rechazamos la hipótesis nula (no hay evidencia suficiente de que μ_d > 2 ).
# Visualización mejorada
library(ggplot2)

# Valores críticos
t_critico <- qt(1 - alfa, df = gl)
x_max <- max(4, t_estadistico + 1, t_critico + 1)  # Rango dinámico

ggplot(data.frame(x = seq(-3, x_max, 0.01)), aes(x = x)) +
  # Distribución t
  stat_function(fun = dt, args = list(df = gl)) +
  
  # Región crítica (roja)
  geom_area(data = data.frame(x = seq(t_critico, x_max, 0.01)),
            aes(y = dt(x, df = gl)), fill = "#FF6B6B", alpha = 0.4) +
  
  # Valor p (amarillo)
  geom_area(data = data.frame(x = seq(t_estadistico, x_max, 0.01)),
            aes(y = dt(x, df = gl)), fill = "#FFD166", alpha = 0.5) +
  
  # Líneas de referencia
  geom_vline(xintercept = t_critico, linetype = "dashed", color = "red", linewidth = 0.8) +
  geom_vline(xintercept = t_estadistico, color = "blue", linewidth = 1.2) +
  geom_vline(xintercept = 0, color = "gray50", linetype = "dotted") +
  
  # Anotaciones
  annotate("text", x = t_critico, y = 0.1, 
           label = paste("t crítico =", round(t_critico, 3)), 
           color = "red", hjust = -0.1, size = 3.5) +
  
  annotate("text", x = t_estadistico, y = 0.15, 
           label = paste("t =", round(t_estadistico, 3)), 
           color = "blue", hjust = -0.1, size = 3.5) +
  
  annotate("text", x = (t_estadistico + x_max)/2, y = 0.02, 
           label = paste("Valor p =", format.pval(p_valor, digits = 3)), 
           color = "darkorange3", size = 4) +
  
  # Configuración del gráfico
  labs(title = "Prueba t de una cola superior",
       subtitle = paste("Hipótesis: μ_d >", mu_d0, "| Grados libertad =", gl),
       x = "Estadístico t",
       y = "Densidad de probabilidad",
       caption = paste("Media observada =", media_d, "| Desviación estándar =", sd_d)) +
  
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),
        plot.subtitle = element_text(hjust = 0.5),
        plot.caption = element_text(hjust = 1, size = 9, color = "gray30"))

Región: El gráfico muestra la distribución t con 5 grados de libertad. El área roja en la cola derecha representa la región crítica. La línea azul indica el estadístico t observado. El área amarilla en la cola derecha representa el valor p.

39. Prueba de la Diferencia entre Dos Medias Poblacionales (Muestras Independientes, Varianzas Poblacionales Conocidas) - Método del Valor p

Cuando se tienen dos muestras independientes y se conoce la varianza de cada población, podemos realizar una prueba z para comparar las medias de estas dos poblaciones. La independencia de las muestras significa que las observaciones en un grupo no están relacionadas con las observaciones en el otro grupo.

39.1. Conceptos Clave

  • Muestras Independientes: Las observaciones en una muestra no influyen ni están relacionadas con las observaciones en la otra muestra.
  • Media Muestral (\(\bar{x}_1, \bar{x}_2\)): Las medias calculadas a partir de las dos muestras.
  • Tamaño de la Muestra (\(n_1, n_2\)): El número de observaciones en cada muestra.
  • Varianza Poblacional (\(\sigma_1^2, \sigma_2^2\)): Las varianzas conocidas de las dos poblaciones.
  • Hipótesis Nula (\(H_0\)): Una afirmación sobre la diferencia entre las medias poblacionales (\(\mu_1 - \mu_2\)), generalmente de la forma \(H_0: \mu_1 - \mu_2 = 0\) (o \(\mu_1 = \mu_2\)), \(H_0: \mu_1 - \mu_2 \le 0\) (o \(\mu_1 \le \mu_2\)), o \(H_0: \mu_1 - \mu_2 \ge 0\) (o \(\mu_1 \ge \mu_2\)).
  • Hipótesis Alternativa (\(H_1\) o \(H_a\)): La afirmación que se intenta probar, de la forma \(H_1: \mu_1 - \mu_2 \neq 0\) (o \(\mu_1 \neq \mu_2\)), \(H_1: \mu_1 - \mu_2 > 0\) (o \(\mu_1 > \mu_2\)), o \(H_1: \mu_1 - \mu_2 < 0\) (o \(\mu_1 < \mu_2\)).
  • Estadístico de Prueba: Para la diferencia de medias con muestras independientes y varianzas poblacionales conocidas, el estadístico de prueba es el estadístico z: \[z = \frac{(\bar{x}_1 - \bar{x}_2) - (\mu_{10} - \mu_{20})}{\sqrt{\frac{\sigma_1^2}{n_1} + \frac{\sigma_2^2}{n_2}}}\] donde \((\mu_{10} - \mu_{20})\) es la diferencia de medias bajo la hipótesis nula (comúnmente 0). Este estadístico sigue una distribución normal estándar (\(Z \sim N(0, 1)\)) bajo la hipótesis nula.
  • Valor p (p-value): Es la probabilidad de obtener una diferencia muestral tan extrema (o más extrema) como la observada, asumiendo que la hipótesis nula es verdadera y que el estadístico de prueba sigue una distribución normal estándar. La forma de calcular el valor p depende de la hipótesis alternativa:
    • Para \(H_1: \mu_1 - \mu_2 \neq 0\) (dos colas): \(p = 2 \times P(Z \ge |z_{obs}|)\)
    • Para \(H_1: \mu_1 - \mu_2 > 0\) (cola superior): \(p = P(Z \ge z_{obs})\)
    • Para \(H_1: \mu_1 - \mu_2 < 0\) (cola inferior): \(p = P(Z \le z_{obs})\) donde \(z_{obs}\) es el valor calculado del estadístico de prueba y \(Z\) es una variable aleatoria con distribución normal estándar.
  • Nivel de Significancia (\(\alpha\)): Es la probabilidad máxima aceptable de rechazar la hipótesis nula cuando es verdadera (Error de Tipo I).
  • Decisión: Se compara el valor p con el nivel de significancia \(\alpha\).
    • Si \(p \le \alpha\), se rechaza la hipótesis nula (\(H_0\)).
    • Si \(p > \alpha\), no se rechaza la hipótesis nula (\(H_0\)).
  • Conclusión: Se interpreta la decisión en el contexto del problema.

39.2. Pasos para la Prueba de Hipótesis (Muestras Independientes, Varianzas Conocidas, Método del Valor p)

  1. Formular las hipótesis nula (\(H_0\)) y alternativa (\(H_1\)) sobre la diferencia entre las medias poblacionales (\(\mu_1 - \mu_2\)).
  2. Especificar el nivel de significancia (\(\alpha\)).
  3. Conocer las varianzas poblacionales (\(\sigma_1^2, \sigma_2^2\)) y obtener las medias muestrales (\(\bar{x}_1, \bar{x}_2\)) y los tamaños de muestra (\(n_1, n_2\)).
  4. Calcular el estadístico de prueba \(z\).
  5. Calcular el valor p basado en la hipótesis alternativa y la distribución normal estándar.
  6. Tomar la decisión comparando el valor p con \(\alpha\).
  7. Formular la conclusión en el contexto del problema.

39.3. Ejemplo 1: Prueba de dos colas

  • Problema: Se quiere comparar el rendimiento promedio de dos tipos de gasolina. Se tomaron muestras aleatorias de los kilómetros por litro obtenidos por automóviles que utilizaron cada tipo de gasolina. Para el tipo 1, se midieron 35 automóviles con una media de \(\bar{x}_1 = 10.5\) km/litro. Para el tipo 2, se midieron 40 automóviles con una media de \(\bar{x}_2 = 10.2\) km/litro. Se sabe que las desviaciones estándar poblacionales son \(\sigma_1 = 0.8\) km/litro y \(\sigma_2 = 0.6\) km/litro. ¿Hay una diferencia significativa en el rendimiento promedio de los dos tipos de gasolina a un nivel de significancia de \(\alpha = 0.05\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: \mu_1 - \mu_2 = 0\) (No hay diferencia en el rendimiento promedio)
    • \(H_1: \mu_1 - \mu_2 \neq 0\) (Hay una diferencia en el rendimiento promedio)
  2. Nivel de significancia: \(\alpha = 0.05\)

  3. Estadísticos muestrales y poblacionales:

    • \(\bar{x}_1 = 10.5\), \(n_1 = 35\), \(\sigma_1 = 0.8\)
    • \(\bar{x}_2 = 10.2\), \(n_2 = 40\), \(\sigma_2 = 0.6\)
  4. Estadístico de prueba: \[z = \frac{(10.5 - 10.2) - 0}{\sqrt{\frac{0.8^2}{35} + \frac{0.6^2}{40}}} = \frac{0.3}{\sqrt{\frac{0.64}{35} + \frac{0.36}{40}}} = \frac{0.3}{\sqrt{0.0183 + 0.009}} = \frac{0.3}{\sqrt{0.0273}} \approx \frac{0.3}{0.165} \approx 1.818\]

  5. Valor p: Para una prueba de dos colas, \(p = 2 \times P(Z \ge |1.818|) = 2 \times P(Z \ge 1.818)\). Usando una tabla Z o software, \(P(Z \ge 1.818) \approx 1 - 0.9655 = 0.0345\). \[p = 2 \times 0.0345 = 0.0690\]

  6. Decisión: Como \(p = 0.0690 > \alpha = 0.05\), no rechazamos \(H_0\).

  7. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.05 para decir que hay una diferencia significativa en el rendimiento promedio de los dos tipos de gasolina.

Solución en R:

# Datos
media_muestra1 <- 10.5
n1 <- 35
sigma1 <- 0.8
media_muestra2 <- 10.2
n2 <- 40
sigma2 <- 0.6
alfa <- 0.05

# Calcular el estadístico de prueba z
diferencia_medias <- media_muestra1 - media_muestra2
error_estandar <- sqrt((sigma1^2 / n1) + (sigma2^2 / n2))
z_estadistico <- diferencia_medias / error_estandar

cat("Diferencia de medias:", round(diferencia_medias, 4), "\n")
## Diferencia de medias: 0.3
cat("Error estándar:", round(error_estandar, 4), "\n")
## Error estándar: 0.1652
cat("Estadístico z:", round(z_estadistico, 4), "\n")
## Estadístico z: 1.8162
# Calcular el valor p (prueba de dos colas)
p_valor <- 2 * pnorm(abs(z_estadistico), lower.tail = FALSE)
cat("Valor p:", format.pval(p_valor, digits = 4), "\n")
## Valor p: 0.06935
# Decisión
if (p_valor <= alfa) {
  cat("Rechazamos la hipótesis nula (existe diferencia significativa entre las medias).\n")
} else {
  cat("No rechazamos la hipótesis nula (no hay evidencia suficiente de diferencia).\n")
}
## No rechazamos la hipótesis nula (no hay evidencia suficiente de diferencia).
# Visualización mejorada
library(ggplot2)

# Valores críticos
z_critico <- qnorm(1 - alfa/2)
x_lim <- max(4, abs(z_estadistico) + 1)  # Límite dinámico del gráfico

# Crear dataframe para las áreas
df <- data.frame(x = seq(-x_lim, x_lim, 0.01))
df$y <- dnorm(df$x)

# Gráfico
ggplot(df, aes(x = x)) +
  # Distribución normal
  geom_line(aes(y = y)) +
  
  # Regiones críticas (rojo)
  geom_area(data = subset(df, x < -z_critico), 
            aes(y = y), fill = "#FF6B6B", alpha = 0.4) +
  geom_area(data = subset(df, x > z_critico), 
            aes(y = y), fill = "#FF6B6B", alpha = 0.4) +
  
  # Valor p (amarillo)
  geom_area(data = subset(df, x < -abs(z_estadistico)), 
            aes(y = y), fill = "#FFD166", alpha = 0.5) +
  geom_area(data = subset(df, x > abs(z_estadistico)), 
            aes(y = y), fill = "#FFD166", alpha = 0.5) +
  
  # Líneas de referencia
  geom_vline(xintercept = c(-z_critico, z_critico), 
             linetype = "dashed", color = "red", linewidth = 0.8) +
  geom_vline(xintercept = z_estadistico, color = "blue", linewidth = 1.2) +
  geom_vline(xintercept = 0, color = "gray50", linetype = "dotted") +
  
  # Anotaciones
  annotate("text", x = -z_critico, y = 0.05, 
           label = paste("-z* =", round(-z_critico, 3)), 
           color = "red", hjust = 1.1, size = 3.5) +
  annotate("text", x = z_critico, y = 0.05, 
           label = paste("z* =", round(z_critico, 3)), 
           color = "red", hjust = -0.1, size = 3.5) +
  annotate("text", x = z_estadistico, y = 0.15, 
           label = paste("z =", round(z_estadistico, 3)), 
           color = "blue", hjust = ifelse(z_estadistico > 0, -0.1, 1.1), size = 3.5) +
  annotate("text", x = 0, y = 0.3, 
           label = paste("Valor p =", format.pval(p_valor, digits = 3)), 
           color = "darkorange3", size = 4) +
  
  # Configuración del gráfico
  labs(title = "Prueba Z para diferencia de medias (dos colas)",
       subtitle = paste("Comparación de dos muestras independientes (α =", alfa, ")"),
       x = "Estadístico Z",
       y = "Densidad de probabilidad",
       caption = paste("Muestra 1: n =", n1, "media =", media_muestra1, "σ =", sigma1,
                      "\nMuestra 2: n =", n2, "media =", media_muestra2, "σ =", sigma2)) +
  
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),
        plot.subtitle = element_text(hjust = 0.5),
        plot.caption = element_text(hjust = 0, size = 9, color = "gray30"),
        panel.grid.major = element_line(color = "gray90"),
        panel.grid.minor = element_blank())

Región: El gráfico muestra la distribución normal estándar. Las áreas rojas en las colas representan la región crítica. La línea azul indica el estadístico z observado. Las áreas amarillas en las colas representan el valor p.

39.4. Ejemplo 2: Prueba de cola superior

Problema: Un fabricante afirma que las baterías de su nueva línea duran más en promedio que las de su línea anterior. Se tomaron muestras aleatorias de la duración (en horas) de ambas líneas. Para la nueva línea (muestra 1), se midieron 20 baterías con una media de \(\bar{x}_1 = 25.5\) horas. Para la línea anterior (muestra 2), se midieron 25 baterías con una media de \(\bar{x}_2 = 24.8\) horas. Se sabe que las desviaciones estándar poblacionales son \(\sigma_1 = 1.2\) horas y \(\sigma_2 = 1.5\) horas. ¿Hay evidencia suficiente para apoyar la afirmación del fabricante a un nivel de significancia de \(\alpha = 0.01\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: \mu_1 - \mu_2 \le 0\) (La nueva línea no dura más o dura menos)
    • \(H_1: \mu_1 - \mu_2 > 0\) (La nueva línea dura más)
  2. Nivel de significancia: \(\alpha = 0.01\)

  3. Estadísticos muestrales y poblacionales:

    • \(\bar{x}_1 = 25.5\), \(n_1 = 20\), \(\sigma_1 = 1.2\)
    • \(\bar{x}_2 = 24.8\), \(n_2 = 25\), \(\sigma_2 = 1.5\)
  4. Estadístico de prueba: \[z = \frac{(25.5 - 24.8) - 0}{\sqrt{\frac{1.2^2}{20} + \frac{1.5^2}{25}}} = \frac{0.7}{\sqrt{\frac{1.44}{20} + \frac{2.25}{25}}} = \frac{0.7}{\sqrt{0.072 + 0.09}} = \frac{0.7}{\sqrt{0.162}} \approx \frac{0.7}{0.402} \approx 1.741\]

  5. Valor p: Para una prueba de cola superior, \(p = P(Z \ge 1.741)\). Usando una tabla Z o software, \(P(Z \ge 1.741) \approx 1 - 0.9592 = 0.0408\).

  6. Decisión: Como \(p = 0.0408 > \alpha = 0.01\), no rechazamos \(H_0\).

  7. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.01 para apoyar la afirmación del fabricante de que la nueva línea de baterías dura más en promedio.

Solución en R:

# Datos
media_muestra1 <- 25.5
n1 <- 20
sigma1 <- 1.2
media_muestra2 <- 24.8
n2 <- 25
sigma2 <- 1.5
alfa <- 0.01

# 1. Cálculos estadísticos
diferencia <- media_muestra1 - media_muestra2
error_estandar <- sqrt((sigma1^2/n1) + (sigma2^2/n2))
z_estadistico <- diferencia / error_estandar
z_critico <- qnorm(1 - alfa)

# 2. Resultados numéricos
cat("--- Resultados de la prueba Z ---\n")
## --- Resultados de la prueba Z ---
cat(sprintf("Diferencia de medias: %.3f\n", diferencia))
## Diferencia de medias: 0.700
cat(sprintf("Error estándar: %.3f\n", error_estandar))
## Error estándar: 0.402
cat(sprintf("Estadístico z: %.3f\n", z_estadistico))
## Estadístico z: 1.739
cat(sprintf("Valor crítico (z*): %.3f\n", z_critico))
## Valor crítico (z*): 2.326
# 3. Valor p y decisión
p_valor <- pnorm(z_estadistico, lower.tail = FALSE)
cat(sprintf("Valor p: %.4f\n", p_valor))
## Valor p: 0.0410
if(p_valor <= alfa) {
  cat("Conclusión: Rechazamos H0 (p =", format.pval(p_valor), "< α =", alfa, ")\n")
  cat("Hay evidencia suficiente para concluir que μ1 > μ2\n")
} else {
  cat("Conclusión: No rechazamos H0 (p =", format.pval(p_valor), "> α =", alfa, ")\n")
  cat("No hay evidencia suficiente para concluir que μ1 > μ2\n")
}
## Conclusión: No rechazamos H0 (p = 0.041003 > α = 0.01 )
## No hay evidencia suficiente para concluir que μ1 > μ2
# 4. Visualización mejorada
library(ggplot2)

# Ajustar límites del gráfico
lim_superior <- max(4, z_estadistico + 1, z_critico + 1)
x_vals <- seq(-3, lim_superior, 0.01)

ggplot(data.frame(x = x_vals), aes(x = x)) +
  # Distribución normal
  stat_function(fun = dnorm, color = "black") +
  
  # Región crítica (rojo)
  geom_area(data = subset(data.frame(x = x_vals), x > z_critico),
            aes(y = dnorm(x)), fill = "red", alpha = 0.3) +
  
  # Valor p (amarillo)
  geom_area(data = subset(data.frame(x = x_vals), x > z_estadistico),
            aes(y = dnorm(x)), fill = "yellow", alpha = 0.4) +
  
  # Líneas de referencia
  geom_vline(xintercept = z_critico, linetype = "dashed", color = "red", linewidth = 0.8) +
  geom_vline(xintercept = z_estadistico, color = "blue", linewidth = 1.2) +
  geom_vline(xintercept = 0, color = "gray50", linetype = "dotted") +
  
  # Anotaciones
  annotate("text", x = z_critico, y = 0.05, 
           label = paste("z* =", round(z_critico, 3)), 
           color = "red", hjust = -0.1) +
  
  annotate("text", x = z_estadistico, y = 0.1, 
           label = paste("z =", round(z_estadistico, 3)), 
           color = "blue", hjust = -0.1) +
  
  annotate("label", x = mean(c(z_estadistico, lim_superior)), y = 0.02,
           label = paste("Valor p =", format.pval(p_valor, digits = 3)), 
           fill = "yellow", alpha = 0.7) +
  
  # Configuración del gráfico
  labs(title = "Prueba Z de cola superior para diferencia de medias",
       subtitle = paste("Comparación: μ1 =", media_muestra1, "vs μ2 =", media_muestra2),
       x = "Estadístico Z",
       y = "Densidad",
       caption = paste("n1 =", n1, "σ1 =", sigma1, "| n2 =", n2, "σ2 =", sigma2)) +
  
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),
        plot.subtitle = element_text(hjust = 0.5),
        plot.caption = element_text(hjust = 0.5, size = 9))

40. Prueba de la Diferencia entre Dos Medias Poblacionales (Muestras Independientes, Varianzas Desconocidas Iguales) - Método del Valor p

Cuando se tienen dos muestras independientes y las varianzas poblacionales son desconocidas pero se asume que son iguales (\(\sigma_1^2 = \sigma_2^2 = \sigma^2\)), se utiliza una prueba t de Student con grados de libertad combinados (pooled).

40.1. Conceptos Clave

  • Muestras Independientes: Las observaciones en una muestra no influyen ni están relacionadas con las observaciones en la otra muestra.
  • Media Muestral (\(\bar{x}_1, \bar{x}_2\)): Las medias calculadas a partir de las dos muestras.
  • Tamaño de la Muestra (\(n_1, n_2\)): El número de observaciones en cada muestra.
  • Desviación Estándar Muestral (\(s_1, s_2\)): Las desviaciones estándar calculadas a partir de las dos muestras.
  • Varianza Combinada (\(s_p^2\)): Una estimación ponderada de la varianza poblacional común, calculada como: \[s_p^2 = \frac{(n_1 - 1)s_1^2 + (n_2 - 1)s_2^2}{n_1 + n_2 - 2}\]
  • Hipótesis Nula (\(H_0\)): Una afirmación sobre la diferencia entre las medias poblacionales (\(\mu_1 - \mu_2\)), generalmente de la forma \(H_0: \mu_1 - \mu_2 = 0\) (o \(\mu_1 = \mu_2\)), \(H_0: \mu_1 - \mu_2 \le 0\) (o \(\mu_1 \le \mu_2\)), o \(H_0: \mu_1 - \mu_2 \ge 0\) (o \(\mu_1 \ge \mu_2\)).
  • Hipótesis Alternativa (\(H_1\) o \(H_a\)): La afirmación que se intenta probar, de la forma \(H_1: \mu_1 - \mu_2 \neq 0\) (o \(\mu_1 \neq \mu_2\)), \(H_1: \mu_1 - \mu_2 > 0\) (o \(\mu_1 > \mu_2\)), o \(H_1: \mu_1 - \mu_2 < 0\) (o \(\mu_1 < \mu_2\)).
  • Estadístico de Prueba: Para la diferencia de medias con muestras independientes y varianzas desconocidas iguales, el estadístico de prueba es el estadístico t: \[t = \frac{(\bar{x}_1 - \bar{x}_2) - (\mu_{10} - \mu_{20})}{s_p \sqrt{\frac{1}{n_1} + \frac{1}{n_2}}}\] donde \((\mu_{10} - \mu_{20})\) es la diferencia de medias bajo la hipótesis nula (comúnmente 0). Este estadístico sigue una distribución t de Student con \(n_1 + n_2 - 2\) grados de libertad (\(gl = n_1 + n_2 - 2\)) bajo la hipótesis nula.
  • Valor p (p-value): Es la probabilidad de obtener una diferencia muestral tan extrema (o más extrema) como la observada, asumiendo que la hipótesis nula es verdadera y que el estadístico de prueba sigue una distribución t de Student con \(n_1 + n_2 - 2\) grados de libertad. La forma de calcular el valor p depende de la hipótesis alternativa:
    • Para \(H_1: \mu_1 - \mu_2 \neq 0\) (dos colas): \(p = 2 \times P(|T_{gl}| \ge |t_{obs}|)\)
    • Para \(H_1: \mu_1 - \mu_2 > 0\) (cola superior): \(p = P(T_{gl} \ge t_{obs})\)
    • Para \(H_1: \mu_1 - \mu_2 < 0\) (cola inferior): \(p = P(T_{gl} \le t_{obs})\) donde \(t_{obs}\) es el valor calculado del estadístico de prueba y \(T_{gl}\) es una variable aleatoria con distribución t de Student con \(gl = n_1 + n_2 - 2\) grados de libertad.
  • Nivel de Significancia (\(\alpha\)): Es la probabilidad máxima aceptable de rechazar la hipótesis nula cuando es verdadera (Error de Tipo I).
  • Decisión: Se compara el valor p con el nivel de significancia \(\alpha\).
    • Si \(p \le \alpha\), se rechaza la hipótesis nula (\(H_0\)).
    • Si \(p > \alpha\), no se rechaza la hipótesis nula (\(H_0\)).
  • Conclusión: Se interpreta la decisión en el contexto del problema.

40.2. Pasos para la Prueba de Hipótesis (Muestras Independientes, Varianzas Desconocidas Iguales, Método del Valor p)

  1. Formular las hipótesis nula (\(H_0\)) y alternativa (\(H_1\)) sobre la diferencia entre las medias poblacionales (\(\mu_1 - \mu_2\)).
  2. Especificar el nivel de significancia (\(\alpha\)).
  3. Obtener las medias muestrales (\(\bar{x}_1, \bar{x}_2\)) y las desviaciones estándar muestrales (\(s_1, s_2\)) y los tamaños de muestra (\(n_1, n_2\)).
  4. Calcular la varianza combinada (\(s_p^2\)).
  5. Calcular el estadístico de prueba \(t\).
  6. Determinar los grados de libertad (\(gl = n_1 + n_2 - 2\)).
  7. Calcular el valor p basado en la hipótesis alternativa y la distribución t con \(gl\) grados de libertad.
  8. Tomar la decisión comparando el valor p con \(\alpha\).
  9. Formular la conclusión en el contexto del problema.

40.3. Ejemplo 1: Prueba de dos colas

Problema: Se quiere comparar el rendimiento promedio en una prueba de dos grupos de estudiantes que utilizaron diferentes métodos de estudio. El grupo 1 (n=15) tuvo una media de \(\bar{x}_1 = 82\) y una desviación estándar de \(s_1 = 6\). El grupo 2 (n=12) tuvo una media de \(\bar{x}_2 = 78\) y una desviación estándar de \(s_2 = 8\). Asumiendo que las varianzas de las poblaciones son iguales, ¿hay una diferencia significativa en el rendimiento promedio de los dos métodos de estudio a un nivel de significancia de \(\alpha = 0.05\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: \mu_1 - \mu_2 = 0\)
    • \(H_1: \mu_1 - \mu_2 \neq 0\)
  2. Nivel de significancia: \(\alpha = 0.05\)

  3. Estadísticos muestrales:

    • \(\bar{x}_1 = 82\), \(s_1 = 6\), \(n_1 = 15\)
    • \(\bar{x}_2 = 78\), \(s_2 = 8\), \(n_2 = 12\)
  4. Varianza combinada: \[s_p^2 = \frac{(15 - 1)6^2 + (12 - 1)8^2}{15 + 12 - 2} = \frac{14 \times 36 + 11 \times 64}{25} = \frac{504 + 704}{25} = \frac{1208}{25} = 48.32\] \[s_p = \sqrt{48.32} \approx 6.951\]

  5. Estadístico de prueba: \[t = \frac{(82 - 78) - 0}{6.951 \sqrt{\frac{1}{15} + \frac{1}{12}}} = \frac{4}{6.951 \sqrt{0.0667 + 0.0833}} = \frac{4}{6.951 \sqrt{0.15}} = \frac{4}{6.951 \times 0.387} \approx \frac{4}{2.69} \approx 1.487\]

  6. Grados de libertad: \(gl = 15 + 12 - 2 = 25\)

  7. Valor p: Para una prueba de dos colas, \(p = 2 \times P(|T_{25}| \ge |1.487|) = 2 \times P(T_{25} \ge 1.487)\). Usando software, \(P(T_{25} \ge 1.487) \approx 0.074\). \[p = 2 \times 0.074 = 0.148\]

  8. Decisión: Como \(p = 0.148 > \alpha = 0.05\), no rechazamos \(H_0\).

  9. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.05 para decir que hay una diferencia significativa en el rendimiento promedio de los dos métodos de estudio (asumiendo varianzas iguales).

Solución en R:

# Datos
media_muestra1 <- 82
sd_muestra1 <- 6
n1 <- 15
media_muestra2 <- 78
sd_muestra2 <- 8
n2 <- 12
alfa <- 0.05
gl <- n1 + n2 - 2  # Grados de libertad

# 1. Cálculos preliminares
sp_cuadrado <- ((n1 - 1) * sd_muestra1^2 + (n2 - 1) * sd_muestra2^2) / gl
sp <- sqrt(sp_cuadrado)
error_estandar <- sp * sqrt(1/n1 + 1/n2)
diferencia <- media_muestra1 - media_muestra2

cat("--- Resultados de la prueba t ---\n")
## --- Resultados de la prueba t ---
cat(sprintf("Varianza combinada (sp²): %.3f\n", sp_cuadrado))
## Varianza combinada (sp²): 48.320
cat(sprintf("Desviación estándar combinada (sp): %.3f\n", sp))
## Desviación estándar combinada (sp): 6.951
cat(sprintf("Diferencia de medias: %.2f\n", diferencia))
## Diferencia de medias: 4.00
cat(sprintf("Error estándar: %.3f\n", error_estandar))
## Error estándar: 2.692
# 2. Estadístico de prueba y valor p
t_estadistico <- diferencia / error_estandar
t_critico <- qt(1 - alfa/2, df = gl)
p_valor <- 2 * pt(abs(t_estadistico), df = gl, lower.tail = FALSE)

cat(sprintf("\nEstadístico t: %.3f\n", t_estadistico))
## 
## Estadístico t: 1.486
cat(sprintf("Valores críticos: ±%.3f\n", t_critico))
## Valores críticos: ±2.060
cat(sprintf("Valor p: %.4f\n", p_valor))
## Valor p: 0.1498
# 3. Decisión
if(p_valor <= alfa) {
  cat("\nConclusión: Rechazamos H0 (p =", format.pval(p_valor), "< α =", alfa, ")")
  cat("\nExiste evidencia significativa de diferencia entre las medias poblacionales")
} else {
  cat("\nConclusión: No rechazamos H0 (p =", format.pval(p_valor), "> α =", alfa, ")")
  cat("\nNo hay evidencia suficiente de diferencia entre las medias poblacionales")
}
## 
## Conclusión: No rechazamos H0 (p = 0.14984 > α = 0.05 )
## No hay evidencia suficiente de diferencia entre las medias poblacionales
# 4. Visualización mejorada
library(ggplot2)

# Ajustar límites del gráfico
x_lim <- max(4, abs(t_estadistico) + 1, t_critico + 1)
x_vals <- seq(-x_lim, x_lim, length.out = 500)

ggplot(data.frame(x = x_vals), aes(x = x)) +
  # Distribución t
  stat_function(fun = dt, args = list(df = gl)) +
  
  # Regiones críticas (rojo)
  geom_area(data = subset(data.frame(x = x_vals), x < -t_critico),
            aes(y = dt(x, df = gl)), fill = "#FF6B6B", alpha = 0.3) +
  geom_area(data = subset(data.frame(x = x_vals), x > t_critico),
            aes(y = dt(x, df = gl)), fill = "#FF6B6B", alpha = 0.3) +
  
  # Valor p (amarillo)
  geom_area(data = subset(data.frame(x = x_vals), x < -abs(t_estadistico)),
            aes(y = dt(x, df = gl)), fill = "#FFD166", alpha = 0.4) +
  geom_area(data = subset(data.frame(x = x_vals), x > abs(t_estadistico)),
            aes(y = dt(x, df = gl)), fill = "#FFD166", alpha = 0.4) +
  
  # Líneas de referencia
  geom_vline(xintercept = c(-t_critico, t_critico), 
             linetype = "dashed", color = "red", linewidth = 0.8) +
  geom_vline(xintercept = t_estadistico, color = "blue", linewidth = 1.2) +
  geom_vline(xintercept = 0, color = "gray50", linetype = "dotted") +
  
  # Anotaciones
  annotate("text", x = -t_critico, y = 0.05, 
           label = paste("t* =", round(-t_critico, 2)), 
           color = "red", hjust = 1.1, size = 3.5) +
  annotate("text", x = t_critico, y = 0.05, 
           label = paste("t* =", round(t_critico, 2)), 
           color = "red", hjust = -0.1, size = 3.5) +
  annotate("text", x = t_estadistico, y = 0.12, 
           label = paste("t =", round(t_estadistico, 2)), 
           color = "blue", hjust = ifelse(t_estadistico > 0, -0.1, 1.1), size = 3.5) +
  annotate("text", x = 0, y = 0.25, 
           label = paste("Valor p =", format.pval(p_valor, digits = 3)), 
           color = "darkorange3", size = 4) +
  
  # Configuración del gráfico
  labs(title = "Prueba t para dos muestras independientes",
       subtitle = "Hipótesis: μ1 ≠ μ2 (dos colas) | Varianzas iguales",
       x = "Estadístico t",
       y = "Densidad de probabilidad",
       caption = sprintf("Muestra 1: n = %d, media = %.1f, sd = %.1f\nMuestra 2: n = %d, media = %.1f, sd = %.1f",
                        n1, media_muestra1, sd_muestra1, n2, media_muestra2, sd_muestra2)) +
  
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),
        plot.subtitle = element_text(hjust = 0.5),
        plot.caption = element_text(hjust = 0.5, size = 9),
        panel.grid.major = element_line(color = "gray90"),
        panel.grid.minor = element_blank())

Región: El gráfico muestra la distribución t con 25 grados de libertad. Las áreas rojas en las colas representan la región crítica. La línea azul indica el estadístico t observado. Las áreas amarillas en las colas representan el valor p.

40.4. Ejemplo 2: Prueba de cola superior

Problema: Un estudio compara el tiempo de reacción (en milisegundos) de dos grupos de personas ante un estímulo visual. El grupo A (n=20) tuvo una media de \(\bar{x}_1 = 250\) ms y una desviación estándar de \(s_1 = 25\) ms. El grupo B (n=18) tuvo una media de \(\bar{x}_2 = 235\) ms y una desviación estándar de \(s_2 = 30\) ms. Asumiendo varianzas iguales, ¿hay evidencia suficiente para decir que el tiempo de reacción promedio del grupo A es mayor que el del grupo B a un nivel de significancia de \(\alpha = 0.01\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: \mu_1 - \mu_2 \le 0\)
    • \(H_1: \mu_1 - \mu_2 > 0\)
  2. Nivel de significancia: \(\alpha = 0.01\)

  3. Estadísticos muestrales:

    • \(\bar{x}_1 = 250\), \(s_1 = 25\), \(n_1 = 20\)
    • \(\bar{x}_2 = 235\), \(s_2 = 30\), \(n_2 = 18\)
  4. Varianza combinada: \[s_p^2 = \frac{(20 - 1)25^2 + (18 - 1)30^2}{20 + 18 - 2} = \frac{19 \times 625 + 17 \times 900}{36} = \frac{11875 + 15300}{36} = \frac{27175}{36} \approx 754.86\] \[s_p = \sqrt{754.86} \approx 27.475\]

  5. Estadístico de prueba: \[t = \frac{(250 - 235) - 0}{27.475 \sqrt{\frac{1}{20} + \frac{1}{18}}} = \frac{15}{27.475 \sqrt{0.05 + 0.0556}} = \frac{15}{27.475 \sqrt{0.1056}} = \frac{15}{27.475 \times 0.325} \approx \frac{15}{8.92} \approx 1.682\]

  6. Grados de libertad: \(gl = 20 + 18 - 2 = 36\)

  7. Valor p: Para una prueba de cola superior, \(p = P(T_{36} \ge 1.682)\). Usando software, \(P(T_{36} \ge 1.682) \approx 0.050\).

  8. Decisión: Como \(p = 0.050 > \alpha = 0.01\), no rechazamos \(H_0\).

  9. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.01 para decir que el tiempo de reacción promedio del grupo A es significativamente mayor que el del grupo B (asumiendo varianzas iguales).

Solución en R:

# Datos completos
media_muestra1 <- 245  # Valor faltante en el código original
sd_muestra1 <- 28      # Valor faltante en el código original
n1 <- 20
media_muestra2 <- 235
sd_muestra2 <- 30
n2 <- 18
alfa <- 0.01
gl <- n1 + n2 - 2

# 1. Cálculos preliminares
sp_cuadrado <- ((n1 - 1) * sd_muestra1^2 + (n2 - 1) * sd_muestra2^2) / gl
sp <- sqrt(sp_cuadrado)
error_estandar <- sp * sqrt(1/n1 + 1/n2)
diferencia <- media_muestra1 - media_muestra2

cat("--- Resultados de la prueba t ---\n")
## --- Resultados de la prueba t ---
cat(sprintf("Varianza combinada (sp²): %.2f\n", sp_cuadrado))
## Varianza combinada (sp²): 838.78
cat(sprintf("Desviación estándar combinada (sp): %.2f\n", sp))
## Desviación estándar combinada (sp): 28.96
cat(sprintf("Diferencia de medias: %.1f\n", diferencia))
## Diferencia de medias: 10.0
cat(sprintf("Error estándar: %.2f\n", error_estandar))
## Error estándar: 9.41
# 2. Estadístico de prueba y valor p
t_estadistico <- diferencia / error_estandar
t_critico <- qt(1 - alfa, df = gl)
p_valor <- pt(t_estadistico, df = gl, lower.tail = FALSE)

cat(sprintf("\nEstadístico t: %.3f\n", t_estadistico))
## 
## Estadístico t: 1.063
cat(sprintf("Valor crítico: %.3f\n", t_critico))
## Valor crítico: 2.434
cat(sprintf("Valor p: %.5f\n", p_valor))
## Valor p: 0.14748
# 3. Decisión
if(p_valor <= alfa) {
  cat("\nConclusión: Rechazamos H0 (p =", format.pval(p_valor), "< α =", alfa, ")")
  cat("\nHay evidencia suficiente para concluir que μ1 > μ2")
} else {
  cat("\nConclusión: No rechazamos H0 (p =", format.pval(p_valor), "> α =", alfa, ")")
  cat("\nNo hay evidencia suficiente para concluir que μ1 > μ2")
}
## 
## Conclusión: No rechazamos H0 (p = 0.14748 > α = 0.01 )
## No hay evidencia suficiente para concluir que μ1 > μ2
# 4. Visualización mejorada
library(ggplot2)

# Ajustar límites del gráfico dinámicamente
x_lim_inf <- min(-3, t_estadistico - 1)
x_lim_sup <- max(4, t_estadistico + 1, t_critico + 1)
x_vals <- seq(x_lim_inf, x_lim_sup, length.out = 500)

ggplot(data.frame(x = x_vals), aes(x = x)) +
  # Distribución t
  stat_function(fun = dt, args = list(df = gl)) +
  
  # Región crítica (rojo)
  geom_area(data = subset(data.frame(x = x_vals), x > t_critico),
            aes(y = dt(x, df = gl)), fill = "#FF6B6B", alpha = 0.3) +
  
  # Valor p (amarillo)
  geom_area(data = subset(data.frame(x = x_vals), x > t_estadistico),
            aes(y = dt(x, df = gl)), fill = "#FFD166", alpha = 0.4) +
  
  # Líneas de referencia
  geom_vline(xintercept = t_critico, linetype = "dashed", color = "red", linewidth = 0.8) +
  geom_vline(xintercept = t_estadistico, color = "blue", linewidth = 1.2) +
  geom_vline(xintercept = 0, color = "gray50", linetype = "dotted") +
  
  # Anotaciones
  annotate("text", x = t_critico, y = 0.05, 
           label = paste("t* =", round(t_critico, 2)), 
           color = "red", hjust = -0.1, size = 3.5) +
  
  annotate("text", x = t_estadistico, y = 0.12, 
           label = paste("t =", round(t_estadistico, 2)), 
           color = "blue", hjust = -0.1, size = 3.5) +
  
  annotate("text", x = mean(c(t_estadistico, x_lim_sup)), y = 0.02, 
           label = paste("Valor p =", format.pval(p_valor, digits = 3)), 
           color = "darkorange3", size = 4) +
  
  # Configuración del gráfico
  labs(title = "Prueba t para dos muestras independientes (cola superior)",
       subtitle = "Hipótesis: μ1 > μ2 | Varianzas iguales",
       x = "Estadístico t",
       y = "Densidad de probabilidad",
       caption = sprintf("Muestra 1: n = %d, media = %.1f, sd = %.1f\nMuestra 2: n = %d, media = %.1f, sd = %.1f",
                        n1, media_muestra1, sd_muestra1, n2, media_muestra2, sd_muestra2)) +
  
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),
        plot.subtitle = element_text(hjust = 0.5),
        plot.caption = element_text(hjust = 0.5, size = 9),
        panel.grid.major = element_line(color = "gray90"),
        panel.grid.minor = element_blank())

Región: El gráfico muestra la distribución t con 36 grados de libertad. El área roja en la cola derecha representa la región crítica. La línea azul indica el estadístico t observado. El área amarilla en la cola derecha representa el valor p.

40.5. Ejemplo 3: Prueba de cola inferior

Problema: Se compara el rendimiento de dos tipos de fertilizante en el crecimiento de plantas. El fertilizante A (n=10) produjo una altura media de \(\bar{x}_1 = 45\) cm con una desviación estándar de \(s_1 = 5\) cm. El fertilizante B (n=14) produjo una altura media de \(\bar{x}_2 = 48\) cm con una desviación estándar de \(s_2 = 6\) cm. Asumiendo varianzas iguales, ¿hay evidencia suficiente para decir que el fertilizante A produce una altura promedio menor que el fertilizante B a un nivel de significancia de \(\alpha = 0.05\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: \mu_1 - \mu_2 \ge 0\)
    • \(H_1: \mu_1 - \mu_2 < 0\)
  2. Nivel de significancia: \(\alpha = 0.05\)

  3. Estadísticos muestrales:

    • \(\bar{x}_1 = 45\), \(s_1 = 5\), \(n_1 = 10\)
    • \(\bar{x}_2 = 48\), \(s_2 = 6\), \(n_2 = 14\)
  4. Varianza combinada: \[s_p^2 = \frac{(10 - 1)5^2 + (14 - 1)6^2}{10 + 14 - 2} = \frac{9 \times 25 + 13 \times 36}{22} = \frac{225 + 468}{22} = \frac{693}{22} \approx 31.5\] \[s_p = \sqrt{31.5} \approx 5.612\]

  5. Estadístico de prueba: \[t = \frac{(45 - 48) - 0}{5.612 \sqrt{\frac{1}{10} + \frac{1}{14}}} = \frac{-3}{5.612 \sqrt{0.1 + 0.0714}} = \frac{-3}{5.612 \sqrt{0.1714}} = \frac{-3}{5.612 \times 0.414} \approx \frac{-3}{2.323} \approx -1.291\]

  6. Grados de libertad: \(gl = 10 + 14 - 2 = 22\)

  7. Valor p: Para una prueba de cola inferior, \(p = P(T_{22} \le -1.291)\). Usando software, \(P(T_{22} \le -1.291) \approx 0.105\).

  8. Decisión: Como \(p = 0.105 > \alpha = 0.05\), no rechazamos \(H_0\).

  9. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.05 para decir que el fertilizante A produce una altura promedio menor que el fertilizante B (asumiendo varianzas iguales).

Solución en R:

# Datos
media_muestra1 <- 45
sd_muestra1 <- 5
n1 <- 10
media_muestra2 <- 48
sd_muestra2 <- 6
n2 <- 14
alfa <- 0.05
gl <- n1 + n2 - 2

# 1. Cálculos preliminares
sp_cuadrado <- ((n1 - 1) * sd_muestra1^2 + (n2 - 1) * sd_muestra2^2) / gl
sp <- sqrt(sp_cuadrado)
error_estandar <- sp * sqrt(1/n1 + 1/n2)
diferencia <- media_muestra1 - media_muestra2

cat("--- Resultados de la prueba t ---\n")
## --- Resultados de la prueba t ---
cat(sprintf("Varianza combinada (sp²): %.2f\n", sp_cuadrado))
## Varianza combinada (sp²): 31.50
cat(sprintf("Desviación estándar combinada (sp): %.2f\n", sp))
## Desviación estándar combinada (sp): 5.61
cat(sprintf("Diferencia de medias: %.1f\n", diferencia))
## Diferencia de medias: -3.0
cat(sprintf("Error estándar: %.3f\n", error_estandar))
## Error estándar: 2.324
# 2. Estadístico de prueba y valor p
t_estadistico <- diferencia / error_estandar
t_critico <- qt(alfa, df = gl)  # Valor crítico para cola inferior
p_valor <- pt(t_estadistico, df = gl)  # Cola inferior

cat(sprintf("\nEstadístico t: %.3f\n", t_estadistico))
## 
## Estadístico t: -1.291
cat(sprintf("Valor crítico: %.3f\n", t_critico))
## Valor crítico: -1.717
cat(sprintf("Valor p: %.4f\n", p_valor))
## Valor p: 0.1051
# 3. Decisión
if(p_valor <= alfa) {
  cat("\nConclusión: Rechazamos H0 (p =", format.pval(p_valor), "≤ α =", alfa, ")")
  cat("\nHay evidencia suficiente para concluir que μ1 < μ2")
} else {
  cat("\nConclusión: No rechazamos H0 (p =", format.pval(p_valor), "> α =", alfa, ")")
  cat("\nNo hay evidencia suficiente para concluir que μ1 < μ2")
}
## 
## Conclusión: No rechazamos H0 (p = 0.10505 > α = 0.05 )
## No hay evidencia suficiente para concluir que μ1 < μ2
# 4. Visualización mejorada
library(ggplot2)

# Ajustar límites del gráfico dinámicamente
x_lim_inf <- min(-4, t_estadistico - 1, t_critico - 1)
x_lim_sup <- max(4, -t_estadistico + 1)
x_vals <- seq(x_lim_inf, x_lim_sup, length.out = 500)

ggplot(data.frame(x = x_vals), aes(x = x)) +
  # Distribución t
  stat_function(fun = dt, args = list(df = gl)) +
  
  # Región crítica (rojo - cola inferior)
  geom_area(data = subset(data.frame(x = x_vals), x < t_critico),
            aes(y = dt(x, df = gl)), fill = "#FF6B6B", alpha = 0.3) +
  
  # Valor p (amarillo)
  geom_area(data = subset(data.frame(x = x_vals), x < t_estadistico),
            aes(y = dt(x, df = gl)), fill = "#FFD166", alpha = 0.4) +
  
  # Líneas de referencia
  geom_vline(xintercept = t_critico, linetype = "dashed", color = "red", linewidth = 0.8) +
  geom_vline(xintercept = t_estadistico, color = "blue", linewidth = 1.2) +
  geom_vline(xintercept = 0, color = "gray50", linetype = "dotted") +
  
  # Anotaciones
  annotate("text", x = t_critico, y = 0.05, 
           label = paste("t* =", round(t_critico, 2)), 
           color = "red", hjust = 1.1, size = 3.5) +
  
  annotate("text", x = t_estadistico, y = 0.12, 
           label = paste("t =", round(t_estadistico, 2)), 
           color = "blue", hjust = ifelse(t_estadistico < 0, -0.1, 1.1), size = 3.5) +
  
  annotate("text", x = mean(c(x_lim_inf, t_estadistico)), y = 0.02, 
           label = paste("Valor p =", format.pval(p_valor, digits = 3)), 
           color = "darkorange3", size = 4) +
  
  # Configuración del gráfico
  labs(title = "Prueba t para dos muestras independientes (cola inferior)",
       subtitle = "Hipótesis: μ1 < μ2 | Varianzas iguales",
       x = "Estadístico t",
       y = "Densidad de probabilidad",
       caption = sprintf("Muestra 1: n = %d, media = %.1f, sd = %.1f\nMuestra 2: n = %d, media = %.1f, sd = %.1f",
                        n1, media_muestra1, sd_muestra1, n2, media_muestra2, sd_muestra2)) +
  
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),
        plot.subtitle = element_text(hjust = 0.5),
        plot.caption = element_text(hjust = 0.5, size = 9),
        panel.grid.major = element_line(color = "gray90"),
        panel.grid.minor = element_blank())

Región: El gráfico muestra la distribución t con 22 grados de libertad. El área roja en la cola izquierda representa la región crítica. La línea azul indica el estadístico t observado. El área amarilla en la cola izquierda representa el valor p.

40.6. Ejemplo 4: Prueba con hipótesis nula diferente de cero

Problema: Una compañía afirma que la diferencia en el tiempo promedio de ensamblaje de un producto utilizando dos métodos diferentes es de al menos 5 minutos (Método 1 - Método 2 \(\ge\) 5). Se toman muestras: Método 1 (n=18, \(\bar{x}_1 = 32\) min, \(s_1 = 4\) min) y Método 2 (n=20, \(\bar{x}_2 = 26\) min, \(s_2 = 5\) min). Asumiendo varianzas iguales, ¿hay evidencia suficiente para rechazar la afirmación de la compañía a un nivel de significancia de \(\alpha = 0.10\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: \mu_1 - \mu_2 \ge 5\)
    • \(H_1: \mu_1 - \mu_2 < 5\)
  2. Nivel de significancia: \(\alpha = 0.10\)

  3. Estadísticos muestrales:

    • \(\bar{x}_1 = 32\), \(s_1 = 4\), \(n_1 = 18\)
    • \(\bar{x}_2 = 26\), \(s_2 = 5\), \(n_2 = 20\)
    • \(\mu_{10} - \mu_{20} = 5\)
  4. Varianza combinada: \[s_p^2 = \frac{(18 - 1)4^2 + (20 - 1)5^2}{18 + 20 - 2} = \frac{17 \times 16 + 19 \times 25}{36} = \frac{272 + 475}{36} = \frac{747}{36} \approx 20.75\] \[s_p = \sqrt{20.75} \approx 4.555\]

  5. Estadístico de prueba: \[t = \frac{(32 - 26) - 5}{4.555 \sqrt{\frac{1}{18} + \frac{1}{20}}} = \frac{1}{4.555 \sqrt{0.0556 + 0.05}} = \frac{1}{4.555 \sqrt{0.1056}} = \frac{1}{4.555 \times 0.325} \approx \frac{1}{1.479} \approx 0.676\]

  6. Grados de libertad: \(gl = 18 + 20 - 2 = 36\)

  7. Valor p: Para una prueba de cola inferior, \(p = P(T_{36} \le 0.676)\). Usando software, \(P(T_{36} \le 0.676) \approx 0.75\).

  8. Decisión: Como \(p = 0.75 > \alpha = 0.10\), no rechazamos \(H_0\).

  9. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.10 para rechazar la afirmación de la compañía de que la diferencia en el tiempo promedio de ensamblaje es de al menos 5 minutos.

Solución en R:

# Datos
media_muestra1 <- 32
sd_muestra1 <- 4
n1 <- 18
media_muestra2 <- 26
sd_muestra2 <- 5
n2 <- 20
mu_diff0 <- 5  # Diferencia hipotética bajo H0
alfa <- 0.10
gl <- n1 + n2 - 2

# 1. Cálculos preliminares
sp_cuadrado <- ((n1 - 1) * sd_muestra1^2 + (n2 - 1) * sd_muestra2^2) / gl
sp <- sqrt(sp_cuadrado)
error_estandar <- sp * sqrt(1/n1 + 1/n2)
diferencia_observada <- media_muestra1 - media_muestra2

cat("--- Resultados de la prueba t ---\n")
## --- Resultados de la prueba t ---
cat(sprintf("Varianza combinada (sp²): %.3f\n", sp_cuadrado))
## Varianza combinada (sp²): 20.750
cat(sprintf("Desviación estándar combinada (sp): %.3f\n", sp))
## Desviación estándar combinada (sp): 4.555
cat(sprintf("Diferencia observada: %.2f\n", diferencia_observada))
## Diferencia observada: 6.00
cat(sprintf("Diferencia hipotética (μ_diff0): %.2f\n", mu_diff0))
## Diferencia hipotética (μ_diff0): 5.00
cat(sprintf("Error estándar: %.3f\n", error_estandar))
## Error estándar: 1.480
# 2. Estadístico de prueba y valor p
t_estadistico <- (diferencia_observada - mu_diff0) / error_estandar
t_critico <- qt(alfa, df = gl)  # Valor crítico para cola inferior
p_valor <- pt(t_estadistico, df = gl)  # Cola inferior

cat(sprintf("\nEstadístico t: %.3f\n", t_estadistico))
## 
## Estadístico t: 0.676
cat(sprintf("Valor crítico: %.3f\n", t_critico))
## Valor crítico: -1.306
cat(sprintf("Valor p: %.4f\n", p_valor))
## Valor p: 0.7482
# 3. Decisión
if(p_valor <= alfa) {
  cat("\nConclusión: Rechazamos H0 (p =", format.pval(p_valor), "≤ α =", alfa, ")")
  cat("\nHay evidencia suficiente para concluir que μ1 - μ2 <", mu_diff0)
} else {
  cat("\nConclusión: No rechazamos H0 (p =", format.pval(p_valor), "> α =", alfa, ")")
  cat("\nNo hay evidencia suficiente para concluir que μ1 - μ2 <", mu_diff0)
}
## 
## Conclusión: No rechazamos H0 (p = 0.74822 > α = 0.1 )
## No hay evidencia suficiente para concluir que μ1 - μ2 < 5
# 4. Visualización mejorada
library(ggplot2)

# Ajustar límites del gráfico dinámicamente
x_lim_inf <- min(-4, t_estadistico - 1, t_critico - 1)
x_lim_sup <- max(4, -t_estadistico + 1)
x_vals <- seq(x_lim_inf, x_lim_sup, length.out = 500)

ggplot(data.frame(x = x_vals), aes(x = x)) +
  # Distribución t
  stat_function(fun = dt, args = list(df = gl)) +
  
  # Región crítica (rojo - cola inferior)
  geom_area(data = subset(data.frame(x = x_vals), x < t_critico),
            aes(y = dt(x, df = gl)), fill = "#FF6B6B", alpha = 0.3) +
  
  # Valor p (amarillo)
  geom_area(data = subset(data.frame(x = x_vals), x < t_estadistico),
            aes(y = dt(x, df = gl)), fill = "#FFD166", alpha = 0.4) +
  
  # Líneas de referencia
  geom_vline(xintercept = t_critico, linetype = "dashed", color = "red", linewidth = 0.8) +
  geom_vline(xintercept = t_estadistico, color = "blue", linewidth = 1.2) +
  geom_vline(xintercept = 0, color = "gray50", linetype = "dotted") +
  
  # Anotaciones
  annotate("text", x = t_critico, y = 0.05, 
           label = paste("t* =", round(t_critico, 2)), 
           color = "red", hjust = 1.1, size = 3.5) +
  
  annotate("text", x = t_estadistico, y = 0.12, 
           label = paste("t =", round(t_estadistico, 2)), 
           color = "blue", hjust = ifelse(t_estadistico < 0, -0.1, 1.1), size = 3.5) +
  
  annotate("text", x = mean(c(x_lim_inf, t_estadistico)), y = 0.02, 
           label = paste("Valor p =", format.pval(p_valor, digits = 3)), 
           color = "darkorange3", size = 4) +
  
  # Configuración del gráfico
  labs(title = "Prueba t para diferencia de medias (cola inferior)",
       subtitle = bquote("Hipótesis:" ~ mu[1] - mu[2] < .(mu_diff0) ~ "| Varianzas iguales"),
       x = "Estadístico t",
       y = "Densidad de probabilidad",
       caption = sprintf("Muestra 1: n = %d, media = %.1f, sd = %.1f\nMuestra 2: n = %d, media = %.1f, sd = %.1f",
                        n1, media_muestra1, sd_muestra1, n2, media_muestra2, sd_muestra2)) +
  
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),
        plot.subtitle = element_text(hjust = 0.5),
        plot.caption = element_text(hjust = 0.5, size = 9),
        panel.grid.major = element_line(color = "gray90"),
        panel.grid.minor = element_blank())

Región: El gráfico muestra la distribución t con 36 grados de libertad. El área roja en la cola izquierda representa la región crítica. La línea azul indica el estadístico t observado. El área amarilla en la cola izquierda representa el valor p.

41. Prueba de la Diferencia entre Dos Medias Poblacionales (Muestras Independientes, Varianzas Desconocidas Desiguales) - Método del Valor p

Cuando se tienen dos muestras independientes y las varianzas poblacionales son desconocidas y no se asume que sean iguales (\(\sigma_1^2 \neq \sigma_2^2\)), se utiliza una prueba t de Student con una corrección en los grados de libertad, a menudo referida como la prueba t de Welch o prueba t de Satterthwaite.

41.1. Conceptos Clave

  • Muestras Independientes: Las observaciones en una muestra no influyen ni están relacionadas con las observaciones en la otra muestra.
  • Media Muestral (\(\bar{x}_1, \bar{x}_2\)): Las medias calculadas a partir de las dos muestras.
  • Tamaño de la Muestra (\(n_1, n_2\)): El número de observaciones en cada muestra.
  • Desviación Estándar Muestral (\(s_1, s_2\)): Las desviaciones estándar calculadas a partir de las dos muestras.
  • Grados de Libertad (aproximados, \(gl\)): Para la prueba t de Welch, los grados de libertad se aproximan usando la fórmula de Welch-Satterthwaite: \[gl \approx \frac{\left(\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}\right)^2}{\frac{(s_1^2/n_1)^2}{n_1 - 1} + \frac{(s_2^2/n_2)^2}{n_2 - 1}}\] Este valor de \(gl\) generalmente no es un entero, por lo que se redondea al entero más cercano o se utiliza el valor fraccionario.
  • Hipótesis Nula (\(H_0\)): Una afirmación sobre la diferencia entre las medias poblacionales (\(\mu_1 - \mu_2\)), generalmente de la forma \(H_0: \mu_1 - \mu_2 = 0\) (o \(\mu_1 = \mu_2\)), \(H_0: \mu_1 - \mu_2 \le 0\) (o \(\mu_1 \le \mu_2\)), o \(H_0: \mu_1 - \mu_2 \ge 0\) (o \(\mu_1 \ge \mu_2\)).
  • Hipótesis Alternativa (\(H_1\) o \(H_a\)): La afirmación que se intenta probar, de la forma \(H_1: \mu_1 - \mu_2 \neq 0\) (o \(\mu_1 \neq \mu_2\)), \(H_1: \mu_1 - \mu_2 > 0\) (o \(\mu_1 > \mu_2\)), o \(H_1: \mu_1 - \mu_2 < 0\) (o \(\mu_1 < \mu_2\)).
  • Estadístico de Prueba: Para la diferencia de medias con muestras independientes y varianzas desconocidas desiguales, el estadístico de prueba es el estadístico t: \[t = \frac{(\bar{x}_1 - \bar{x}_2) - (\mu_{10} - \mu_{20})}{\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}}\] donde \((\mu_{10} - \mu_{20})\) es la diferencia de medias bajo la hipótesis nula (comúnmente 0). Este estadístico se aproxima a una distribución t de Student con los grados de libertad calculados por la fórmula de Welch-Satterthwaite.
  • Valor p (p-value): Es la probabilidad de obtener una diferencia muestral tan extrema (o más extrema) como la observada, asumiendo que la hipótesis nula es verdadera y que el estadístico de prueba sigue una distribución t de Student con los grados de libertad aproximados. La forma de calcular el valor p depende de la hipótesis alternativa:
    • Para \(H_1: \mu_1 - \mu_2 \neq 0\) (dos colas): \(p = 2 \times P(|T_{gl}| \ge |t_{obs}|)\)
    • Para \(H_1: \mu_1 - \mu_2 > 0\) (cola superior): \(p = P(T_{gl} \ge t_{obs})\)
    • Para \(H_1: \mu_1 - \mu_2 < 0\) (cola inferior): \(p = P(T_{gl} \le t_{obs})\) donde \(t_{obs}\) es el valor calculado del estadístico de prueba y \(T_{gl}\) es una variable aleatoria con distribución t de Student con los grados de libertad aproximados.
  • Nivel de Significancia (\(\alpha\)): Es la probabilidad máxima aceptable de rechazar la hipótesis nula cuando es verdadera (Error de Tipo I).
  • Decisión: Se compara el valor p con el nivel de significancia \(\alpha\).
    • Si \(p \le \alpha\), se rechaza la hipótesis nula (\(H_0\)).
    • Si \(p > \alpha\), no se rechaza la hipótesis nula (\(H_0\)).
  • Conclusión: Se interpreta la decisión en el contexto del problema.

41.2 Pasos para la Prueba de Hipótesis (Muestras Independientes, Varianzas Desconocidas Desiguales, Método del Valor p)

  1. Formular las hipótesis nula (\(H_0\)) y alternativa (\(H_1\)) sobre la diferencia entre las medias poblacionales (\(\mu_1 - \mu_2\)).
  2. Especificar el nivel de significancia (\(\alpha\)).
  3. Obtener las medias muestrales (\(\bar{x}_1, \bar{x}_2\)) y las desviaciones estándar muestrales (\(s_1, s_2\)) y los tamaños de muestra (\(n_1, n_2\)).
  4. Calcular el estadístico de prueba \(t\).
  5. Calcular los grados de libertad (\(gl\)) utilizando la fórmula de Welch-Satterthwaite.
  6. Calcular el valor p basado en la hipótesis alternativa y la distribución t con los grados de libertad aproximados.
  7. Tomar la decisión comparando el valor p con \(\alpha\).
  8. Formular la conclusión en el contexto del problema.

41.3. Ejemplo 1: Prueba de dos colas

Problema: Se quiere comparar el salario promedio de empleados en dos empresas diferentes. En la empresa A (n=20), el salario medio muestral es \(\bar{x}_1 = \$55,000\) con una desviación estándar muestral de \(s_1 = \$5,000\). En la empresa B (n=15), el salario medio muestral es \(\bar{x}_2 = \$52,000\) con una desviación estándar muestral de \(s_2 = \$6,000\). Asumiendo que las varianzas de los salarios en las dos empresas no son iguales, ¿hay una diferencia significativa en los salarios promedio a un nivel de significancia de \(\alpha = 0.05\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: \mu_1 - \mu_2 = 0\)
    • \(H_1: \mu_1 - \mu_2 \neq 0\)
  2. Nivel de significancia: \(\alpha = 0.05\)

  3. Estadísticos muestrales:

    • \(\bar{x}_1 = 55000\), \(s_1 = 5000\), \(n_1 = 20\)
    • \(\bar{x}_2 = 52000\), \(s_2 = 6000\), \(n_2 = 15\)
  4. Estadístico de prueba: \[t = \frac{(55000 - 52000) - 0}{\sqrt{\frac{5000^2}{20} + \frac{6000^2}{15}}} = \frac{3000}{\sqrt{\frac{25000000}{20} + \frac{36000000}{15}}} = \frac{3000}{\sqrt{1250000 + 2400000}} = \frac{3000}{\sqrt{3650000}} \approx \frac{3000}{1910.5} \approx 1.570\]

  5. Grados de libertad: \[gl \approx \frac{\left(\frac{5000^2}{20} + \frac{6000^2}{15}\right)^2}{\frac{(5000^2/20)^2}{20 - 1} + \frac{(6000^2/15)^2}{15 - 1}} = \frac{(1250000 + 2400000)^2}{\frac{(1250000)^2}{19} + \frac{(2400000)^2}{14}} = \frac{(3650000)^2}{82236842.1 + 411428571.4} = \frac{1.33225 \times 10^{13}}{493665413.5} \approx 27.0\] Redondeando, \(gl \approx 27\).

  6. Valor p: Para una prueba de dos colas, \(p = 2 \times P(|T_{27}| \ge |1.570|) = 2 \times P(T_{27} \ge 1.570)\). Usando software, \(P(T_{27} \ge 1.570) \approx 0.064\). \[p = 2 \times 0.064 = 0.128\]

  7. Decisión: Como \(p = 0.128 > \alpha = 0.05\), no rechazamos \(H_0\).

  8. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.05 para decir que hay una diferencia significativa en los salarios promedio de los empleados en las dos empresas (asumiendo varianzas desiguales).

Solución en R:

# Datos
media_muestra1 <- 55000
sd_muestra1 <- 5000
n1 <- 20
media_muestra2 <- 52000
sd_muestra2 <- 6000
n2 <- 15
alfa <- 0.05

# 1. Cálculo del estadístico t de Welch
diferencia <- media_muestra1 - media_muestra2
error_estandar <- sqrt((sd_muestra1^2/n1) + (sd_muestra2^2/n2))
t_estadistico <- diferencia / error_estandar

# 2. Cálculo de grados de libertad (aproximación Welch-Satterthwaite)
gl_numerador <- (sd_muestra1^2/n1 + sd_muestra2^2/n2)^2
gl_denominador <- (sd_muestra1^2/n1)^2/(n1-1) + (sd_muestra2^2/n2)^2/(n2-1)
gl <- gl_numerador / gl_denominador

# Redondear los grados de libertad (la aproximación produce valores no enteros)
gl <- round(gl)

# 3. Cálculo del valor p (dos colas)
t_critico <- qt(1 - alfa/2, df = gl)
p_valor <- 2 * pt(abs(t_estadistico), df = gl, lower.tail = FALSE)

# 4. Resultados
cat("--- Prueba t de Welch para dos muestras independientes ---\n")
## --- Prueba t de Welch para dos muestras independientes ---
cat(sprintf("Diferencia de medias: %.2f\n", diferencia))
## Diferencia de medias: 3000.00
cat(sprintf("Error estándar: %.2f\n", error_estandar))
## Error estándar: 1910.50
cat(sprintf("Estadístico t: %.3f (gl = %.1f)\n", t_estadistico, gl))
## Estadístico t: 1.570 (gl = 27.0)
cat(sprintf("Valores críticos: ±%.3f\n", t_critico))
## Valores críticos: ±2.052
cat(sprintf("Valor p: %.5f\n", p_valor))
## Valor p: 0.12800
# 5. Decisión
if(p_valor <= alfa) {
  cat("\nConclusión: Rechazamos H0 (p =", format.pval(p_valor), "≤ α =", alfa, ")")
  cat("\nExiste evidencia significativa de diferencia entre las medias poblacionales")
} else {
  cat("\nConclusión: No rechazamos H0 (p =", format.pval(p_valor), "> α =", alfa, ")")
  cat("\nNo hay evidencia suficiente de diferencia entre las medias poblacionales")
}
## 
## Conclusión: No rechazamos H0 (p = 0.128 > α = 0.05 )
## No hay evidencia suficiente de diferencia entre las medias poblacionales
# 6. Visualización mejorada
library(ggplot2)

# Ajustar límites del gráfico dinámicamente
x_lim <- max(4, abs(t_estadistico) + 1, t_critico + 1)
x_vals <- seq(-x_lim, x_lim, length.out = 500)

ggplot(data.frame(x = x_vals), aes(x = x)) +
  # Distribución t con gl aproximados
  stat_function(fun = dt, args = list(df = gl)) +
  
  # Regiones críticas (rojo)
  geom_area(data = subset(data.frame(x = x_vals), x < -t_critico),
            aes(y = dt(x, df = gl)), fill = "#FF6B6B", alpha = 0.3) +
  geom_area(data = subset(data.frame(x = x_vals), x > t_critico),
            aes(y = dt(x, df = gl)), fill = "#FF6B6B", alpha = 0.3) +
  
  # Valor p (amarillo)
  geom_area(data = subset(data.frame(x = x_vals), x < -abs(t_estadistico)),
            aes(y = dt(x, df = gl)), fill = "#FFD166", alpha = 0.4) +
  geom_area(data = subset(data.frame(x = x_vals), x > abs(t_estadistico)),
            aes(y = dt(x, df = gl)), fill = "#FFD166", alpha = 0.4) +
  
  # Líneas de referencia
  geom_vline(xintercept = c(-t_critico, t_critico), 
             linetype = "dashed", color = "red", linewidth = 0.8) +
  geom_vline(xintercept = t_estadistico, color = "blue", linewidth = 1.2) +
  geom_vline(xintercept = 0, color = "gray50", linetype = "dotted") +
  
  # Anotaciones
  annotate("text", x = -t_critico, y = 0.05, 
           label = paste("t* =", round(-t_critico, 2)), 
           color = "red", hjust = 1.1, size = 3.5) +
  annotate("text", x = t_critico, y = 0.05, 
           label = paste("t* =", round(t_critico, 2)), 
           color = "red", hjust = -0.1, size = 3.5) +
  annotate("text", x = t_estadistico, y = 0.12, 
           label = paste("t =", round(t_estadistico, 2)), 
           color = "blue", hjust = ifelse(t_estadistico > 0, -0.1, 1.1), size = 3.5) +
  annotate("text", x = 0, y = 0.25, 
           label = paste("Valor p =", format.pval(p_valor, digits = 3)), 
           color = "darkorange3", size = 4) +
  
  # Configuración del gráfico
  labs(title = "Prueba t de Welch para diferencia de medias",
       subtitle = "Hipótesis: μ1 ≠ μ2 (dos colas) | Varianzas desiguales",
       x = "Estadístico t",
       y = "Densidad de probabilidad",
       caption = sprintf("Muestra 1: n = %d, media = %.0f, sd = %.0f\nMuestra 2: n = %d, media = %.0f, sd = %.0f",
                        n1, media_muestra1, sd_muestra1, n2, media_muestra2, sd_muestra2)) +
  
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),
        plot.subtitle = element_text(hjust = 0.5),
        plot.caption = element_text(hjust = 0.5, size = 9),
        panel.grid.major = element_line(color = "gray90"),
        panel.grid.minor = element_blank())

Región: El gráfico muestra la distribución t con los grados de libertad aproximados. Las áreas rojas en las colas representan la región crítica. La línea azul indica el estadístico t observado. Las áreas amarillas en las colas representan el valor p.

41.4 Ejemplo 2: Prueba de cola superior

Problema: Se compara el rendimiento de combustible (en km/litro) de dos marcas de automóviles. Para la marca X (n=25), la media muestral es \(\bar{x}_1 = 12.5\) km/litro con una desviación estándar muestral de \(s_1 = 1.5\) km/litro. Para la marca Y (n=30), la media muestral es \(\bar{x}_2 = 12.0\) km/litro con una desviación estándar muestral de \(s_2 = 1.0\) km/litro. Asumiendo varianzas desiguales, ¿hay evidencia suficiente para decir que la marca X tiene un rendimiento promedio mayor que la marca Y a un nivel de significancia de \(\alpha = 0.01\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: \mu_1 - \mu_2 \le 0\)
    • \(H_1: \mu_1 - \mu_2 > 0\)
  2. Nivel de significancia: \(\alpha = 0.01\)

  3. Estadísticos muestrales:

    • \(\bar{x}_1 = 12.5\), \(s_1 = 1.5\), \(n_1 = 25\)
    • \(\bar{x}_2 = 12.0\), \(s_2 = 1.0\), \(n_2 = 30\)
  4. Estadístico de prueba: \[t = \frac{(12.5 - 12.0) - 0}{\sqrt{\frac{1.5^2}{25} + \frac{1.0^2}{30}}} = \frac{0.5}{\sqrt{\frac{2.25}{25} + \frac{1}{30}}} = \frac{0.5}{\sqrt{0.09 + 0.0333}} = \frac{0.5}{\sqrt{0.1233}} \approx \frac{0.5}{0.351} \approx 1.425\]

  5. Grados de libertad: \[gl \approx \frac{\left(\frac{1.5^2}{25} + \frac{1.0^2}{30}\right)^2}{\frac{(1.5^2/25)^2}{25 - 1} + \frac{(1.0^2/30)^2}{30 - 1}} = \frac{(0.09 + 0.0333)^2}{\frac{(0.09)^2}{24} + \frac{(0.0333)^2}{29}} = \frac{(0.12 (0.1233)^2}{\frac{0.0081}{24} + \frac{0.001109}{29}} = \frac{0.0152}{\frac{0.0003375}{1} + \frac{0.0000382}{1}} = \frac{0.0152}{0.0003757} \approx 40.46\]

  • Redondeando, \(gl \approx 40\).
  1. Valor p: Para una prueba de cola superior, \(p = P(T_{40} \ge 1.425)\). Usando software, \(P(T_{40} \ge 1.425) \approx 0.080\).

  2. Decisión: Como \(p = 0.080 > \alpha = 0.01\), no rechazamos \(H_0\).

  3. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.01 para decir que la marca X tiene un rendimiento promedio de combustible significativamente mayor que la marca Y (asumiendo varianzas desiguales).

Solución en R (continuación):

# Datos completos
media_muestra1 <- 13.5  # Valor faltante en el código original
sd_muestra1 <- 1.2      # Valor faltante en el código original
n1 <- 25
media_muestra2 <- 12.0
sd_muestra2 <- 1.0
n2 <- 30
alfa <- 0.01

# 1. Cálculos preliminares
diferencia <- media_muestra1 - media_muestra2
error_estandar <- sqrt((sd_muestra1^2/n1) + (sd_muestra2^2/n2))
t_estadistico <- diferencia / error_estandar

# 2. Grados de libertad (Welch-Satterthwaite)
gl_numerador <- (sd_muestra1^2/n1 + sd_muestra2^2/n2)^2
gl_denominador <- (sd_muestra1^2/n1)^2/(n1-1) + (sd_muestra2^2/n2)^2/(n2-1)
gl <- gl_numerador / gl_denominador
gl <- round(gl)  # Redondear a entero más cercano

# 3. Valor p y valor crítico (cola superior)
t_critico <- qt(1 - alfa, df = gl)
p_valor <- pt(t_estadistico, df = gl, lower.tail = FALSE)

# 4. Resultados
cat("--- Prueba t de Welch para dos muestras independientes ---\n")
## --- Prueba t de Welch para dos muestras independientes ---
cat(sprintf("Diferencia de medias: %.2f\n", diferencia))
## Diferencia de medias: 1.50
cat(sprintf("Error estándar: %.3f\n", error_estandar))
## Error estándar: 0.302
cat(sprintf("Estadístico t: %.3f (gl = %.0f)\n", t_estadistico, gl))
## Estadístico t: 4.974 (gl = 47)
cat(sprintf("Valor crítico: %.3f\n", t_critico))
## Valor crítico: 2.408
cat(sprintf("Valor p: %.5f\n", p_valor))
## Valor p: 0.00000
# 5. Decisión
if(p_valor <= alfa) {
  cat("\nConclusión: Rechazamos H0 (p =", format.pval(p_valor), "≤ α =", alfa, ")")
  cat("\nHay evidencia suficiente para concluir que μ1 > μ2")
} else {
  cat("\nConclusión: No rechazamos H0 (p =", format.pval(p_valor), "> α =", alfa, ")")
  cat("\nNo hay evidencia suficiente para concluir que μ1 > μ2")
}
## 
## Conclusión: Rechazamos H0 (p = 4.5881e-06 ≤ α = 0.01 )
## Hay evidencia suficiente para concluir que μ1 > μ2
# 6. Visualización mejorada
library(ggplot2)

# Ajustar límites del gráfico dinámicamente
x_lim_sup <- max(4, t_estadistico + 1, t_critico + 1)
x_vals <- seq(-3, x_lim_sup, length.out = 500)

ggplot(data.frame(x = x_vals), aes(x = x)) +
  # Distribución t
  stat_function(fun = dt, args = list(df = gl)) +
  
  # Región crítica (rojo - cola superior)
  geom_area(data = subset(data.frame(x = x_vals), x > t_critico),
            aes(y = dt(x, df = gl)), fill = "#FF6B6B", alpha = 0.3) +
  
  # Valor p (amarillo)
  geom_area(data = subset(data.frame(x = x_vals), x > t_estadistico),
            aes(y = dt(x, df = gl)), fill = "#FFD166", alpha = 0.4) +
  
  # Líneas de referencia
  geom_vline(xintercept = t_critico, linetype = "dashed", color = "red", linewidth = 0.8) +
  geom_vline(xintercept = t_estadistico, color = "blue", linewidth = 1.2) +
  geom_vline(xintercept = 0, color = "gray50", linetype = "dotted") +
  
  # Anotaciones
  annotate("text", x = t_critico, y = 0.05, 
           label = paste("t* =", round(t_critico, 2)), 
           color = "red", hjust = -0.1, size = 3.5) +
  
  annotate("text", x = t_estadistico, y = 0.12, 
           label = paste("t =", round(t_estadistico, 2)), 
           color = "blue", hjust = -0.1, size = 3.5) +
  
  annotate("text", x = mean(c(t_estadistico, x_lim_sup)), y = 0.02, 
           label = paste("Valor p =", format.pval(p_valor, digits = 3)), 
           color = "darkorange3", size = 4) +
  
  # Configuración del gráfico
  labs(title = "Prueba t de Welch para diferencia de medias",
       subtitle = "Hipótesis: μ1 > μ2 (cola superior) | Varianzas desiguales",
       x = "Estadístico t",
       y = "Densidad de probabilidad",
       caption = sprintf("Muestra 1: n = %d, media = %.1f, sd = %.1f\nMuestra 2: n = %d, media = %.1f, sd = %.1f",
                        n1, media_muestra1, sd_muestra1, n2, media_muestra2, sd_muestra2)) +
  
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),
        plot.subtitle = element_text(hjust = 0.5),
        plot.caption = element_text(hjust = 0.5, size = 9),
        panel.grid.major = element_line(color = "gray90"),
        panel.grid.minor = element_blank())

Región: El gráfico muestra la distribución t con los grados de libertad aproximados. El área roja en la cola derecha representa la región crítica. La línea azul indica el estadístico t observado. El área amarilla en la cola derecha representa el valor p.

41.5. Ejemplo 3: Prueba de cola inferior

Problema: Se compara la efectividad de dos métodos de enseñanza en las calificaciones de un examen. El método A (n=18) tuvo una media de \(\bar{x}_1 = 78\) con una desviación estándar de \(s_1 = 7\). El método B (n=22) tuvo una media de \(\bar{x}_2 = 82\) con una desviación estándar de \(s_2 = 9\). Asumiendo varianzas desiguales, ¿hay evidencia suficiente para decir que el método A resulta en calificaciones promedio más bajas que el método B a un nivel de significancia de \(\alpha = 0.05\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: \mu_1 - \mu_2 \ge 0\)
    • \(H_1: \mu_1 - \mu_2 < 0\)
  2. Nivel de significancia: \(\alpha = 0.05\)

  3. Estadísticos muestrales:

    • \(\bar{x}_1 = 78\), \(s_1 = 7\), \(n_1 = 18\)
    • \(\bar{x}_2 = 82\), \(s_2 = 9\), \(n_2 = 22\)
  4. Estadístico de prueba: \[t = \frac{(78 - 82) - 0}{\sqrt{\frac{7^2}{18} + \frac{9^2}{22}}} = \frac{-4}{\sqrt{\frac{49}{18} + \frac{81}{22}}} = \frac{-4}{\sqrt{2.722 + 3.682}} = \frac{-4}{\sqrt{6.404}} \approx \frac{-4}{2.531} \approx -1.580\]

  5. Grados de libertad: \[gl \approx \frac{\left(\frac{7^2}{18} + \frac{9^2}{22}\right)^2}{\frac{(7^2/18)^2}{18 - 1} + \frac{(9^2/22)^2}{22 - 1}} = \frac{(2.722 + 3.682)^2}{\frac{(2.722)^2}{17} + \frac{(3.682)^2}{21}} = \frac{(6.404)^2}{\frac{7.419}{17} + \frac{13.557}{21}} = \frac{41.01}{0.436 + 0.646} = \frac{41.01}{1.082} \approx 37.9\] Redondeando, \(gl \approx 38\).

  6. Valor p: Para una prueba de cola inferior, \(p = P(T_{38} \le -1.580)\). Usando software, \(P(T_{38} \le -1.580) \approx 0.061\).

  7. Decisión: Como \(p = 0.061 > \alpha = 0.05\), no rechazamos \(H_0\).

  8. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.05 para decir que el método A resulta en calificaciones promedio más bajas que el método B (asumiendo varianzas desiguales).

Solución en R:

# Datos
media_muestra1 <- 78
sd_muestra1 <- 7
n1 <- 18
media_muestra2 <- 82
sd_muestra2 <- 9
n2 <- 22
alfa <- 0.05

# 1. Cálculos preliminares
diferencia <- media_muestra1 - media_muestra2
error_estandar <- sqrt((sd_muestra1^2/n1) + (sd_muestra2^2/n2))
t_estadistico <- diferencia / error_estandar

# 2. Grados de libertad (Welch-Satterthwaite)
gl_numerador <- (sd_muestra1^2/n1 + sd_muestra2^2/n2)^2
gl_denominador <- (sd_muestra1^2/n1)^2/(n1-1) + (sd_muestra2^2/n2)^2/(n2-1)
gl <- gl_numerador / gl_denominador
gl <- round(gl)  # Redondear a entero más cercano

# 3. Valor p y valor crítico (cola inferior)
t_critico <- qt(alfa, df = gl)
p_valor <- pt(t_estadistico, df = gl, lower.tail = TRUE)

# 4. Resultados
cat("--- Prueba t de Welch para dos muestras independientes ---\n")
## --- Prueba t de Welch para dos muestras independientes ---
cat(sprintf("Diferencia de medias: %.2f\n", diferencia))
## Diferencia de medias: -4.00
cat(sprintf("Error estándar: %.3f\n", error_estandar))
## Error estándar: 2.531
cat(sprintf("Estadístico t: %.3f (gl = %.0f)\n", t_estadistico, gl))
## Estadístico t: -1.581 (gl = 38)
cat(sprintf("Valor crítico: %.3f\n", t_critico))
## Valor crítico: -1.686
cat(sprintf("Valor p: %.5f\n", p_valor))
## Valor p: 0.06112
# 5. Decisión
if(p_valor <= alfa) {
  cat("\nConclusión: Rechazamos H0 (p =", format.pval(p_valor), "≤ α =", alfa, ")")
  cat("\nHay evidencia suficiente para concluir que μ1 < μ2")
} else {
  cat("\nConclusión: No rechazamos H0 (p =", format.pval(p_valor), "> α =", alfa, ")")
  cat("\nNo hay evidencia suficiente para concluir que μ1 < μ2")
}
## 
## Conclusión: No rechazamos H0 (p = 0.061125 > α = 0.05 )
## No hay evidencia suficiente para concluir que μ1 < μ2
# 6. Visualización mejorada
library(ggplot2)

# Ajustar límites del gráfico dinámicamente
x_lim_inf <- min(-4, t_estadistico - 1, t_critico - 1)
x_lim_sup <- max(4, abs(t_estadistico) + 1)
x_vals <- seq(x_lim_inf, x_lim_sup, length.out = 500)

ggplot(data.frame(x = x_vals), aes(x = x)) +
  # Distribución t
  stat_function(fun = dt, args = list(df = gl)) +
  
  # Región crítica (rojo - cola inferior)
  geom_area(data = subset(data.frame(x = x_vals), x < t_critico),
            aes(y = dt(x, df = gl)), fill = "#FF6B6B", alpha = 0.3) +
  
  # Valor p (amarillo)
  geom_area(data = subset(data.frame(x = x_vals), x < t_estadistico),
            aes(y = dt(x, df = gl)), fill = "#FFD166", alpha = 0.4) +
  
  # Líneas de referencia
  geom_vline(xintercept = t_critico, linetype = "dashed", color = "red", linewidth = 0.8) +
  geom_vline(xintercept = t_estadistico, color = "blue", linewidth = 1.2) +
  geom_vline(xintercept = 0, color = "gray50", linetype = "dotted") +
  
  # Anotaciones
  annotate("text", x = t_critico, y = 0.05, 
           label = paste("t* =", round(t_critico, 2)), 
           color = "red", hjust = 1.1, size = 3.5) +
  
  annotate("text", x = t_estadistico, y = 0.12, 
           label = paste("t =", round(t_estadistico, 2)), 
           color = "blue", hjust = ifelse(t_estadistico < 0, -0.1, 1.1), size = 3.5) +
  
  annotate("text", x = mean(c(x_lim_inf, t_estadistico)), y = 0.02, 
           label = paste("Valor p =", format.pval(p_valor, digits = 3)), 
           color = "darkorange3", size = 4) +
  
  # Configuración del gráfico
  labs(title = "Prueba t de Welch para diferencia de medias",
       subtitle = "Hipótesis: μ1 < μ2 (cola inferior) | Varianzas desiguales",
       x = "Estadístico t",
       y = "Densidad de probabilidad",
       caption = sprintf("Muestra 1: n = %d, media = %.1f, sd = %.1f\nMuestra 2: n = %d, media = %.1f, sd = %.1f",
                        n1, media_muestra1, sd_muestra1, n2, media_muestra2, sd_muestra2)) +
  
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),
        plot.subtitle = element_text(hjust = 0.5),
        plot.caption = element_text(hjust = 0.5, size = 9),
        panel.grid.major = element_line(color = "gray90"),
        panel.grid.minor = element_blank())

Región: El gráfico muestra la distribución t con los grados de libertad aproximados. El área roja en la cola izquierda representa la región crítica. La línea azul indica el estadístico t observado. El área amarilla en la cola izquierda representa el valor p.

41.6. Ejemplo 4: Prueba con hipótesis nula diferente de cero

Problema: Una compañía desarrolla un nuevo proceso de fabricación que afirma reduce el tiempo de producción en más de 3 minutos. Se toman muestras del tiempo de producción con el proceso antiguo (n=12, \(\bar{x}_1 = 25\) min, \(s_1 = 3\) min) y el nuevo proceso (n=15, \(\bar{x}_2 = 20\) min, \(s_2 = 4\) min). Asumiendo varianzas desiguales, ¿hay evidencia suficiente para apoyar la afirmación de la compañía a un nivel de significancia de \(\alpha = 0.01\)? (Aquí, \(\mu_1\) es la media del proceso antiguo y \(\mu_2\) es la media del proceso nuevo, por lo que queremos probar \(H_1: \mu_1 - \mu_2 > 3\)).

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: \mu_1 - \mu_2 \le 3\)
    • \(H_1: \mu_1 - \mu_2 > 3\)
  2. Nivel de significancia: \(\alpha = 0.01\)

  3. Estadísticos muestrales:

    • \(\bar{x}_1 = 25\), \(s_1 = 3\), \(n_1 = 12\)
    • \(\bar{x}_2 = 20\), \(s_2 = 4\), \(n_2 = 15\)
    • \(\mu_{10} - \mu_{20} = 3\)
  4. Estadístico de prueba: \[t = \frac{(25 - 20) - 3}{\sqrt{\frac{3^2}{12} + \frac{4^2}{15}}} = \frac{2}{\sqrt{\frac{9}{12} + \frac{16}{15}}} = \frac{2}{\sqrt{0.75 + 1.067}} = \frac{2}{\sqrt{1.817}} \approx \frac{2}{1.348} \approx 1.484\]

  5. Grados de libertad: \[gl \approx \frac{\left(\frac{3^2}{12} + \frac{4^2}{15}\right)^2}{\frac{(3^2/12)^2}{12 - 1} + \frac{(4^2/15)^2}{15 - 1}} = \frac{(0.75 + 1.067)^2}{\frac{(0.75)^2}{11} + \frac{(1.067)^2}{14}} = \frac{(1.817)^2}{\frac{0.5625}{11} + \frac{1.1385}{14}} = \frac{3.3015}{0.0511 + 0.0813} = \frac{3.3015}{0.1324} \approx 24.9\] Redondeando, \(gl \approx 25\).

  6. Valor p: Para una prueba de cola superior, \(p = P(T_{25} \ge 1.484)\). Usando software, \(P(T_{25} \ge 1.484) \approx 0.075\).

  7. Decisión: Como \(p = 0.075 > \alpha = 0.01\), no rechazamos \(H_0\).

  8. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.01 para apoyar la afirmación de la compañía de que el nuevo proceso reduce el tiempo de producción en más de 3 minutos en promedio (asumiendo varianzas desiguales).

Solución en R:

# Datos
media_muestra1 <- 25
sd_muestra1 <- 3
n1 <- 12
media_muestra2 <- 20
sd_muestra2 <- 4
n2 <- 15
mu_diff0 <- 3  # Diferencia hipotética bajo H0
alfa <- 0.01

# 1. Cálculos preliminares
diferencia_observada <- media_muestra1 - media_muestra2
error_estandar <- sqrt((sd_muestra1^2/n1) + (sd_muestra2^2/n2))
t_estadistico <- (diferencia_observada - mu_diff0) / error_estandar

# 2. Grados de libertad (Welch-Satterthwaite)
gl_numerador <- (sd_muestra1^2/n1 + sd_muestra2^2/n2)^2
gl_denominador <- (sd_muestra1^2/n1)^2/(n1-1) + (sd_muestra2^2/n2)^2/(n2-1)
gl <- gl_numerador / gl_denominador
gl <- round(gl)  # Redondear a entero más cercano

# 3. Valor p y valor crítico (cola superior)
t_critico <- qt(1 - alfa, df = gl)
p_valor <- pt(t_estadistico, df = gl, lower.tail = FALSE)

# 4. Resultados
cat("--- Prueba t de Welch para dos muestras independientes ---\n")
## --- Prueba t de Welch para dos muestras independientes ---
cat(sprintf("Diferencia observada: %.2f\n", diferencia_observada))
## Diferencia observada: 5.00
cat(sprintf("Diferencia hipotética (μ_diff0): %.2f\n", mu_diff0))
## Diferencia hipotética (μ_diff0): 3.00
cat(sprintf("Error estándar: %.3f\n", error_estandar))
## Error estándar: 1.348
cat(sprintf("Estadístico t: %.3f (gl = %.0f)\n", t_estadistico, gl))
## Estadístico t: 1.484 (gl = 25)
cat(sprintf("Valor crítico: %.3f\n", t_critico))
## Valor crítico: 2.485
cat(sprintf("Valor p: %.5f\n", p_valor))
## Valor p: 0.07517
# 5. Decisión
if(p_valor <= alfa) {
  cat("\nConclusión: Rechazamos H0 (p =", format.pval(p_valor), "≤ α =", alfa, ")")
  cat("\nHay evidencia suficiente para concluir que μ1 - μ2 >", mu_diff0)
} else {
  cat("\nConclusión: No rechazamos H0 (p =", format.pval(p_valor), "> α =", alfa, ")")
  cat("\nNo hay evidencia suficiente para concluir que μ1 - μ2 >", mu_diff0)
}
## 
## Conclusión: No rechazamos H0 (p = 0.075173 > α = 0.01 )
## No hay evidencia suficiente para concluir que μ1 - μ2 > 3
# 6. Visualización mejorada
library(ggplot2)

# Ajustar límites del gráfico dinámicamente
x_lim_sup <- max(4, t_estadistico + 1, t_critico + 1)
x_vals <- seq(min(-3, t_estadistico - 1), x_lim_sup, length.out = 500)

ggplot(data.frame(x = x_vals), aes(x = x)) +
  # Distribución t
  stat_function(fun = dt, args = list(df = gl)) +
  
  # Región crítica (rojo - cola superior)
  geom_area(data = subset(data.frame(x = x_vals), x > t_critico),
            aes(y = dt(x, df = gl)), fill = "#FF6B6B", alpha = 0.3) +
  
  # Valor p (amarillo)
  geom_area(data = subset(data.frame(x = x_vals), x > t_estadistico),
            aes(y = dt(x, df = gl)), fill = "#FFD166", alpha = 0.4) +
  
  # Líneas de referencia
  geom_vline(xintercept = t_critico, linetype = "dashed", color = "red", linewidth = 0.8) +
  geom_vline(xintercept = t_estadistico, color = "blue", linewidth = 1.2) +
  geom_vline(xintercept = 0, color = "gray50", linetype = "dotted") +
  
  # Anotaciones
  annotate("text", x = t_critico, y = 0.05, 
           label = paste("t* =", round(t_critico, 2)), 
           color = "red", hjust = -0.1, size = 3.5) +
  
  annotate("text", x = t_estadistico, y = 0.12, 
           label = paste("t =", round(t_estadistico, 2)), 
           color = "blue", hjust = -0.1, size = 3.5) +
  
  annotate("text", x = mean(c(t_estadistico, x_lim_sup)), y = 0.02, 
           label = paste("Valor p =", format.pval(p_valor, digits = 3)), 
           color = "darkorange3", size = 4) +
  
  # Configuración del gráfico
  labs(title = "Prueba t de Welch para diferencia de medias",
       subtitle = bquote("Hipótesis:" ~ mu[1] - mu[2] > .(mu_diff0) ~ "(cola superior) | Varianzas desiguales"),
       x = "Estadístico t",
       y = "Densidad de probabilidad",
       caption = sprintf("Muestra 1: n = %d, media = %.1f, sd = %.1f\nMuestra 2: n = %d, media = %.1f, sd = %.1f",
                        n1, media_muestra1, sd_muestra1, n2, media_muestra2, sd_muestra2)) +
  
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),
        plot.subtitle = element_text(hjust = 0.5),
        plot.caption = element_text(hjust = 0.5, size = 9),
        panel.grid.major = element_line(color = "gray90"),
        panel.grid.minor = element_blank())

42. Prueba de la Diferencia entre Dos Proporciones Poblacionales (Grandes Muestras) - Método del Valor p

Cuando se tienen dos muestras independientes y los tamaños de muestra son suficientemente grandes (generalmente \(n_1p_1 \ge 10\), \(n_1(1-p_1) \ge 10\), \(n_2p_2 \ge 10\), y \(n_2(1-p_2) \ge 10\)), podemos utilizar una prueba z para comparar las proporciones de dos poblaciones.

42.1 Conceptos Clave

  • Muestras Independientes: Las observaciones en una muestra no influyen ni están relacionadas con las observaciones en la otra muestra.
  • Proporción Muestral (\(\hat{p}_1, \hat{p}_2\)): Las proporciones de éxito observadas en las dos muestras, calculadas como \(\hat{p}_1 = x_1 / n_1\) y \(\hat{p}_2 = x_2 / n_2\), donde \(x_1\) y \(x_2\) son el número de éxitos en las muestras de tamaño \(n_1\) y \(n_2\) respectivamente.
  • Tamaño de la Muestra (\(n_1, n_2\)): El número de observaciones en cada muestra.
  • Hipótesis Nula (\(H_0\)): Una afirmación sobre la diferencia entre las proporciones poblacionales (\(p_1 - p_2\)), generalmente de la forma \(H_0: p_1 - p_2 = 0\) (o \(p_1 = p_2\)), \(H_0: p_1 - p_2 \le 0\) (o \(p_1 \le p_2\)), o \(H_0: p_1 - p_2 \ge 0\) (o \(p_1 \ge p_2\)).
  • Hipótesis Alternativa (\(H_1\) o \(H_a\)): La afirmación que se intenta probar, de la forma \(H_1: p_1 - p_2 \neq 0\) (o \(p_1 \neq p_2\)), \(H_1: p_1 - p_2 > 0\) (o \(p_1 > p_2\)), o \(H_1: p_1 - p_2 < 0\) (o \(p_1 < p_2\)).
  • Estimador de la Proporción Poblacional Combinada (\(\hat{p}\)): Bajo la hipótesis nula de que \(p_1 = p_2 = p\), se utiliza un estimador combinado de la proporción poblacional: \[\hat{p} = \frac{x_1 + x_2}{n_1 + n_2}\]
  • Estadístico de Prueba: Para la diferencia de proporciones con grandes muestras, el estadístico de prueba es el estadístico z: \[z = \frac{(\hat{p}_1 - \hat{p}_2) - (p_{10} - p_{20})}{\sqrt{\hat{p}(1 - \hat{p})\left(\frac{1}{n_1} + \frac{1}{n_2}\right)}}\] donde \((p_{10} - p_{20})\) es la diferencia de proporciones bajo la hipótesis nula (comúnmente 0). Este estadístico sigue una distribución normal estándar (\(Z \sim N(0, 1)\)) bajo la hipótesis nula.
  • Valor p (p-value): Es la probabilidad de obtener una diferencia muestral tan extrema (o más extrema) como la observada, asumiendo que la hipótesis nula es verdadera y que el estadístico de prueba sigue una distribución normal estándar. La forma de calcular el valor p depende de la hipótesis alternativa:
    • Para \(H_1: p_1 - p_2 \neq 0\) (dos colas): \(p = 2 \times P(Z \ge |z_{obs}|)\)
    • Para \(H_1: p_1 - p_2 > 0\) (cola superior): \(p = P(Z \ge z_{obs})\)
    • Para \(H_1: p_1 - p_2 < 0\) (cola inferior): \(p = P(Z \le z_{obs})\) donde \(z_{obs}\) es el valor calculado del estadístico de prueba y \(Z\) es una variable aleatoria con distribución normal estándar.
  • Nivel de Significancia (\(\alpha\)): Es la probabilidad máxima aceptable de rechazar la hipótesis nula cuando es verdadera (Error de Tipo I).
  • Decisión: Se compara el valor p con el nivel de significancia \(\alpha\).
    • Si \(p \le \alpha\), se rechaza la hipótesis nula (\(H_0\)).
    • Si \(p > \alpha\), no se rechaza la hipótesis nula (\(H_0\)).
  • Conclusión: Se interpreta la decisión en el contexto del problema.

42.2 Pasos para la Prueba de Hipótesis (Diferencia de Proporciones, Grandes Muestras, Método del Valor p)

  1. Formular las hipótesis nula (\(H_0\)) y alternativa (\(H_1\)) sobre la diferencia entre las proporciones poblacionales (\(p_1 - p_2\)).
  2. Especificar el nivel de significancia (\(\alpha\)).
  3. Obtener el número de éxitos (\(x_1, x_2\)) y los tamaños de muestra (\(n_1, n_2\)) para ambos grupos, y calcular las proporciones muestrales (\(\hat{p}_1, \hat{p}_2\)).
  4. Calcular la proporción muestral combinada (\(\hat{p}\)).
  5. Calcular el estadístico de prueba \(z\).
  6. Calcular el valor p basado en la hipótesis alternativa y la distribución normal estándar.
  7. Tomar la decisión comparando el valor p con \(\alpha\).
  8. Formular la conclusión en el contexto del problema.

42.3. Ejemplo 1: Prueba de dos colas

Problema: Se quiere comparar la proporción de votantes que prefieren a dos candidatos en una elección. En una encuesta aleatoria de 200 votantes, 110 prefieren al candidato A. En otra encuesta aleatoria independiente de 250 votantes, 120 prefieren al candidato B. ¿Hay una diferencia significativa en la proporción de votantes que prefieren a cada candidato a un nivel de significancia de \(\alpha = 0.05\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: p_1 - p_2 = 0\)
    • \(H_1: p_1 - p_2 \neq 0\)
  2. Nivel de significancia: \(\alpha = 0.05\)

  3. Estadísticos muestrales:

    • \(x_1 = 110\), \(n_1 = 200\), \(\hat{p}_1 = 110 / 200 = 0.55\)
    • \(x_2 = 120\), \(n_2 = 250\), \(\hat{p}_2 = 120 / 250 = 0.48\)
  4. Proporción muestral combinada: \[\hat{p} = \frac{110 + 120}{200 + 250} = \frac{230}{450} \approx 0.511\]

  5. Estadístico de prueba: \[z = \frac{(0.55 - 0.48) - 0}{\sqrt{0.511(1 - 0.511)\left(\frac{1}{200} + \frac{1}{250}\right)}} = \frac{0.07}{\sqrt{0.511 \times 0.489 \times (0.005 + 0.004)}} = \frac{0.07}{\sqrt{0.2498 \times 0.009}} = \frac{0.07}{\sqrt{0.002248}} \approx \frac{0.07}{0.0474} \approx 1.477\]

  6. Valor p: Para una prueba de dos colas, \(p = 2 \times P(Z \ge |1.477|) = 2 \times P(Z \ge 1.477)\). Usando software, \(P(Z \ge 1.477) \approx 1 - 0.9303 = 0.0697\). \[p = 2 \times 0.0697 = 0.1394\]

  7. Decisión: Como \(p = 0.1394 > \alpha = 0.05\), no rechazamos \(H_0\).

  8. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.05 para decir que hay una diferencia significativa en la proporción de votantes que prefieren a cada candidato.

Solución en R:

# Datos
x1 <- 110    # Éxitos en muestra 1
n1 <- 200    # Tamaño muestra 1
x2 <- 120    # Éxitos en muestra 2
n2 <- 250    # Tamaño muestra 2
alfa <- 0.05 # Nivel de significancia

# 1. Cálculo de proporciones muestrales
p_hat1 <- x1 / n1
p_hat2 <- x2 / n2
diferencia <- p_hat1 - p_hat2

# 2. Proporción combinada bajo H0
p_pooled <- (x1 + x2) / (n1 + n2)

# 3. Estadístico de prueba z
error_estandar <- sqrt(p_pooled * (1 - p_pooled) * (1/n1 + 1/n2))
z_estadistico <- diferencia / error_estandar

# 4. Valor p (dos colas)
z_critico <- qnorm(1 - alfa/2)
p_valor <- 2 * pnorm(abs(z_estadistico), lower.tail = FALSE)

# 5. Resultados
cat("--- Prueba z para diferencia de proporciones ---\n")
## --- Prueba z para diferencia de proporciones ---
cat(sprintf("Proporción muestra 1: %.4f\n", p_hat1))
## Proporción muestra 1: 0.5500
cat(sprintf("Proporción muestra 2: %.4f\n", p_hat2))
## Proporción muestra 2: 0.4800
cat(sprintf("Diferencia observada: %.4f\n", diferencia))
## Diferencia observada: 0.0700
cat(sprintf("Proporción combinada: %.4f\n", p_pooled))
## Proporción combinada: 0.5111
cat(sprintf("Error estándar: %.4f\n", error_estandar))
## Error estándar: 0.0474
cat(sprintf("\nEstadístico z: %.3f\n", z_estadistico))
## 
## Estadístico z: 1.476
cat(sprintf("Valores críticos: ±%.3f\n", z_critico))
## Valores críticos: ±1.960
cat(sprintf("Valor p: %.5f\n", p_valor))
## Valor p: 0.13992
# 6. Decisión
if(p_valor <= alfa) {
  cat("\nConclusión: Rechazamos H0 (p =", format.pval(p_valor), "≤ α =", alfa, ")")
  cat("\nExiste evidencia significativa de diferencia entre las proporciones poblacionales")
} else {
  cat("\nConclusión: No rechazamos H0 (p =", format.pval(p_valor), "> α =", alfa, ")")
  cat("\nNo hay evidencia suficiente de diferencia entre las proporciones poblacionales")
}
## 
## Conclusión: No rechazamos H0 (p = 0.13992 > α = 0.05 )
## No hay evidencia suficiente de diferencia entre las proporciones poblacionales
# 7. Visualización mejorada
library(ggplot2)

# Ajustar límites del gráfico dinámicamente
x_lim <- max(4, abs(z_estadistico) + 1, z_critico + 1)
x_vals <- seq(-x_lim, x_lim, length.out = 500)

ggplot(data.frame(x = x_vals), aes(x = x)) +
  # Distribución normal estándar
  stat_function(fun = dnorm) +
  
  # Regiones críticas (rojo)
  geom_area(data = subset(data.frame(x = x_vals), x < -z_critico),
            aes(y = dnorm(x)), fill = "#FF6B6B", alpha = 0.3) +
  geom_area(data = subset(data.frame(x = x_vals), x > z_critico),
            aes(y = dnorm(x)), fill = "#FF6B6B", alpha = 0.3) +
  
  # Valor p (amarillo)
  geom_area(data = subset(data.frame(x = x_vals), x < -abs(z_estadistico)),
            aes(y = dnorm(x)), fill = "#FFD166", alpha = 0.4) +
  geom_area(data = subset(data.frame(x = x_vals), x > abs(z_estadistico)),
            aes(y = dnorm(x)), fill = "#FFD166", alpha = 0.4) +
  
  # Líneas de referencia
  geom_vline(xintercept = c(-z_critico, z_critico), 
             linetype = "dashed", color = "red", linewidth = 0.8) +
  geom_vline(xintercept = z_estadistico, color = "blue", linewidth = 1.2) +
  geom_vline(xintercept = 0, color = "gray50", linetype = "dotted") +
  
  # Anotaciones
  annotate("text", x = -z_critico, y = 0.05, 
           label = paste("-z* =", round(-z_critico, 2)), 
           color = "red", hjust = 1.1, size = 3.5) +
  annotate("text", x = z_critico, y = 0.05, 
           label = paste("z* =", round(z_critico, 2)), 
           color = "red", hjust = -0.1, size = 3.5) +
  annotate("text", x = z_estadistico, y = 0.12, 
           label = paste("z =", round(z_estadistico, 2)), 
           color = "blue", hjust = ifelse(z_estadistico > 0, -0.1, 1.1), size = 3.5) +
  annotate("text", x = 0, y = 0.25, 
           label = paste("Valor p =", format.pval(p_valor, digits = 3)), 
           color = "darkorange3", size = 4) +
  
  # Configuración del gráfico
  labs(title = "Prueba z para diferencia de proporciones",
       subtitle = "Hipótesis: p1 ≠ p2 (dos colas)",
       x = "Estadístico z",
       y = "Densidad de probabilidad",
       caption = sprintf("Muestra 1: %d/%d (%.1f%%)\nMuestra 2: %d/%d (%.1f%%)",
                        x1, n1, p_hat1*100, x2, n2, p_hat2*100)) +
  
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),
        plot.subtitle = element_text(hjust = 0.5),
        plot.caption = element_text(hjust = 0.5, size = 9),
        panel.grid.major = element_line(color = "gray90"),
        panel.grid.minor = element_blank())

Región: El gráfico muestra la distribución normal estándar. Las áreas rojas en las colas representan la región crítica. La línea azul indica el estadístico z observado. Las áreas amarillas en las colas representan el valor p.

42.4. Ejemplo 2: Prueba de cola superior

Problema: Una compañía farmacéutica cree que la proporción de pacientes que experimentan alivio con su nuevo medicamento es mayor que con el medicamento estándar. En un ensayo clínico con 150 pacientes que recibieron el nuevo medicamento, 90 experimentaron alivio. En un ensayo independiente con 200 pacientes que recibieron el medicamento estándar, 110 experimentaron alivio. ¿Hay evidencia suficiente para apoyar la creencia de la compañía a un nivel de significancia de \(\alpha = 0.01\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: p_1 - p_2 \le 0\)
    • \(H_1: p_1 - p_2 > 0\)
  2. Nivel de significancia: \(\alpha = 0.01\)

  3. Estadísticos muestrales:

    • \(x_1 = 90\), \(n_1 = 150\), \(\hat{p}_1 = 90 / 150 = 0.60\)
    • \(x_2 = 110\), \(n_2 = 200\), \(\hat{p}_2 = 110 / 200 = 0.55\)
  4. Proporción muestral combinada: \[\hat{p} = \frac{90 + 110}{150 + 200} = \frac{200}{350} \approx 0.571\]

  5. Estadístico de prueba: \[z = \frac{(0.60 - 0.55) - 0}{\sqrt{0.571(1 - 0.571)\left(\frac{1}{150} + \frac{1}{200}\right)}} = \frac{0.05}{\sqrt{0.571 \times 0.429 \times (0.0067 + 0.005)}} = \frac{0.05}{\sqrt{0.245 \times 0.0117}} = \frac{0.05}{\sqrt{0.002867}} \approx \frac{0.05}{0.0535} \approx 0.935\]

  6. Valor p: Para una prueba de cola superior, \(p = P(Z \ge 0.935)\). Usando software, \(P(Z \ge 0.935) \approx 1 - 0.8251 = 0.1749\).

  7. Decisión: Como \(p = 0.1749 > \alpha = 0.01\), no rechazamos \(H_0\).

  8. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.01 para apoyar la creencia de la compañía de que la proporción de pacientes que experimentan alivio con el nuevo medicamento es mayor que con el medicamento estándar.

Solución en R:

# Datos
x1 <- 90      # Éxitos en grupo 1
n1 <- 150     # Tamaño grupo 1
x2 <- 110     # Éxitos en grupo 2
n2 <- 200     # Tamaño grupo 2
alfa <- 0.01  # Nivel de significancia

# 1. Cálculo de proporciones muestrales
p_hat1 <- x1 / n1
p_hat2 <- x2 / n2
diferencia <- p_hat1 - p_hat2

# 2. Proporción combinada bajo H0
p_pooled <- (x1 + x2) / (n1 + n2)

# 3. Estadístico de prueba z
error_estandar <- sqrt(p_pooled * (1 - p_pooled) * (1/n1 + 1/n2))
z_estadistico <- diferencia / error_estandar

# 4. Valor p (cola superior)
z_critico <- qnorm(1 - alfa)
p_valor <- pnorm(z_estadistico, lower.tail = FALSE)

# 5. Resultados
cat("--- Prueba z para diferencia de proporciones (cola superior) ---\n")
## --- Prueba z para diferencia de proporciones (cola superior) ---
cat(sprintf("Proporción grupo 1: %.4f (%.0f/%d)\n", p_hat1, x1, n1))
## Proporción grupo 1: 0.6000 (90/150)
cat(sprintf("Proporción grupo 2: %.4f (%.0f/%d)\n", p_hat2, x2, n2))
## Proporción grupo 2: 0.5500 (110/200)
cat(sprintf("Diferencia observada: %.4f\n", diferencia))
## Diferencia observada: 0.0500
cat(sprintf("Proporción combinada: %.4f\n", p_pooled))
## Proporción combinada: 0.5714
cat(sprintf("Error estándar: %.4f\n", error_estandar))
## Error estándar: 0.0535
cat(sprintf("\nEstadístico z: %.3f\n", z_estadistico))
## 
## Estadístico z: 0.935
cat(sprintf("Valor crítico: %.3f\n", z_critico))
## Valor crítico: 2.326
cat(sprintf("Valor p: %.5f\n", p_valor))
## Valor p: 0.17479
# 6. Decisión
if(p_valor <= alfa) {
  cat("\nConclusión: Rechazamos H0 (p =", format.pval(p_valor), "≤ α =", alfa, ")")
  cat("\nHay evidencia suficiente para concluir que p1 > p2")
} else {
  cat("\nConclusión: No rechazamos H0 (p =", format.pval(p_valor), "> α =", alfa, ")")
  cat("\nNo hay evidencia suficiente para concluir que p1 > p2")
}
## 
## Conclusión: No rechazamos H0 (p = 0.17479 > α = 0.01 )
## No hay evidencia suficiente para concluir que p1 > p2
# 7. Visualización mejorada
library(ggplot2)

# Ajustar límites del gráfico dinámicamente
x_lim_inf <- min(-3, z_estadistico - 1)
x_lim_sup <- max(4, z_estadistico + 1, z_critico + 1)
x_vals <- seq(x_lim_inf, x_lim_sup, length.out = 500)

ggplot(data.frame(x = x_vals), aes(x = x)) +
  # Distribución normal estándar
  stat_function(fun = dnorm) +
  
  # Región crítica (rojo)
  geom_area(data = subset(data.frame(x = x_vals), x > z_critico),
            aes(y = dnorm(x)), fill = "#FF6B6B", alpha = 0.3) +
  
  # Valor p (amarillo)
  geom_area(data = subset(data.frame(x = x_vals), x > z_estadistico),
            aes(y = dnorm(x)), fill = "#FFD166", alpha = 0.4) +
  
  # Líneas de referencia
  geom_vline(xintercept = z_critico, linetype = "dashed", color = "red", linewidth = 0.8) +
  geom_vline(xintercept = z_estadistico, color = "blue", linewidth = 1.2) +
  geom_vline(xintercept = 0, color = "gray50", linetype = "dotted") +
  
  # Anotaciones
  annotate("text", x = z_critico, y = 0.05, 
           label = paste("z* =", round(z_critico, 2)), 
           color = "red", hjust = -0.1, size = 3.5) +
  
  annotate("text", x = z_estadistico, y = 0.12, 
           label = paste("z =", round(z_estadistico, 2)), 
           color = "blue", hjust = -0.1, size = 3.5) +
  
  annotate("text", x = mean(c(z_estadistico, x_lim_sup)), y = 0.02, 
           label = paste("Valor p =", format.pval(p_valor, digits = 3)), 
           color = "darkorange3", size = 4) +
  
  # Configuración del gráfico
  labs(title = "Prueba z para diferencia de proporciones",
       subtitle = "Hipótesis: p1 > p2 (cola superior)",
       x = "Estadístico z",
       y = "Densidad de probabilidad",
       caption = sprintf("Grupo 1: %d/%d (%.1f%%)\nGrupo 2: %d/%d (%.1f%%)",
                        x1, n1, p_hat1*100, x2, n2, p_hat2*100)) +
  
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),
        plot.subtitle = element_text(hjust = 0.5),
        plot.caption = element_text(hjust = 0.5, size = 9),
        panel.grid.major = element_line(color = "gray90"),
        panel.grid.minor = element_blank())

Región: El gráfico muestra la distribución normal estándar. El área roja en la cola derecha representa la región crítica. La línea azul indica el estadístico z observado. El área amarilla en la cola derecha representa el valor p.

42.5. Ejemplo 3: Prueba de cola inferior

Problema: Un analista cree que la proporción de clientes satisfechos con un nuevo servicio es menor que la proporción de clientes satisfechos con el servicio anterior. En una encuesta a 180 clientes del nuevo servicio, 110 estaban satisfechos. En una encuesta independiente a 220 clientes del servicio anterior, 150 estaban satisfechos. ¿Hay evidencia suficiente para apoyar la creencia del analista a un nivel de significancia de \(\alpha = 0.05\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: p_1 - p_2 \ge 0\)
    • \(H_1: p_1 - p_2 < 0\)
  2. Nivel de significancia: \(\alpha = 0.05\)

  3. Estadísticos muestrales:

    • \(x_1 = 110\), \(n_1 = 180\), \(\hat{p}_1 = 110 / 180 \approx 0.611\)
    • \(x_2 = 150\), \(n_2 = 220\), \(\hat{p}_2 = 150 / 220 \approx 0.682\)
  4. Proporción muestral combinada: \[\hat{p} = \frac{110 + 150}{180 + 220} = \frac{260}{400} = 0.65\]

  5. Estadístico de prueba: \[z = \frac{(0.611 - 0.682) - 0}{\sqrt{0.65(1 - 0.65)\left(\frac{1}{180} + \frac{1}{220}\right)}} = \frac{-0.071}{\sqrt{0.65 \times 0.35 \times (0.0056 + 0.0045)}} = \frac{-0.071}{\sqrt{0.2275 \times 0.0101}} = \frac{-0.071}{\sqrt{0.0023}} \approx \frac{-0.071}{0.048} \approx -1.479\]

  6. Valor p: Para una prueba de cola inferior, \(p = P(Z \le -1.479)\). Usando software, \(P(Z \le -1.479) \approx 0.0695\).

  7. Decisión: Como \(p = 0.0695 > \alpha = 0.05\), no rechazamos \(H_0\).

  8. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.05 para apoyar la creencia del analista de que la proporción de clientes satisfechos con el nuevo servicio es menor que con el servicio anterior.

Solución en R:

# Datos
x1 <- 110      # Éxitos en grupo 1
n1 <- 180      # Tamaño grupo 1
x2 <- 150      # Éxitos en grupo 2
n2 <- 220      # Tamaño grupo 2
alfa <- 0.05   # Nivel de significancia

# 1. Cálculo de proporciones muestrales
p_hat1 <- x1 / n1
p_hat2 <- x2 / n2
diferencia <- p_hat1 - p_hat2

# 2. Proporción combinada bajo H0
p_pooled <- (x1 + x2) / (n1 + n2)

# 3. Estadístico de prueba z
error_estandar <- sqrt(p_pooled * (1 - p_pooled) * (1/n1 + 1/n2))
z_estadistico <- diferencia / error_estandar

# 4. Valor p (cola inferior)
z_critico <- qnorm(alfa)
p_valor <- pnorm(z_estadistico)

# 5. Resultados
cat("--- Prueba z para diferencia de proporciones (cola inferior) ---\n")
## --- Prueba z para diferencia de proporciones (cola inferior) ---
cat(sprintf("Proporción grupo 1: %.4f (%.0f/%d = %.1f%%)\n", p_hat1, x1, n1, p_hat1*100))
## Proporción grupo 1: 0.6111 (110/180 = 61.1%)
cat(sprintf("Proporción grupo 2: %.4f (%.0f/%d = %.1f%%)\n", p_hat2, x2, n2, p_hat2*100))
## Proporción grupo 2: 0.6818 (150/220 = 68.2%)
cat(sprintf("Diferencia observada (p1 - p2): %.4f\n", diferencia))
## Diferencia observada (p1 - p2): -0.0707
cat(sprintf("Proporción combinada: %.4f\n", p_pooled))
## Proporción combinada: 0.6500
cat(sprintf("Error estándar: %.4f\n", error_estandar))
## Error estándar: 0.0479
cat(sprintf("\nEstadístico z: %.3f\n", z_estadistico))
## 
## Estadístico z: -1.475
cat(sprintf("Valor crítico: %.3f\n", z_critico))
## Valor crítico: -1.645
cat(sprintf("Valor p: %.5f\n", p_valor))
## Valor p: 0.07011
# 6. Decisión
if(p_valor <= alfa) {
  cat("\nConclusión: Rechazamos H0 (p =", format.pval(p_valor), "≤ α =", alfa, ")")
  cat("\nHay evidencia suficiente para concluir que p1 < p2")
} else {
  cat("\nConclusión: No rechazamos H0 (p =", format.pval(p_valor), "> α =", alfa, ")")
  cat("\nNo hay evidencia suficiente para concluir que p1 < p2")
}
## 
## Conclusión: No rechazamos H0 (p = 0.070107 > α = 0.05 )
## No hay evidencia suficiente para concluir que p1 < p2
# 7. Visualización mejorada
library(ggplot2)

# Ajustar límites del gráfico dinámicamente
x_lim_inf <- min(-4, z_estadistico - 1, z_critico - 1)
x_lim_sup <- max(4, abs(z_estadistico) + 1)
x_vals <- seq(x_lim_inf, x_lim_sup, length.out = 500)

ggplot(data.frame(x = x_vals), aes(x = x)) +
  # Distribución normal estándar
  stat_function(fun = dnorm) +
  
  # Región crítica (rojo - cola inferior)
  geom_area(data = subset(data.frame(x = x_vals), x < z_critico),
            aes(y = dnorm(x)), fill = "#FF6B6B", alpha = 0.3) +
  
  # Valor p (amarillo)
  geom_area(data = subset(data.frame(x = x_vals), x < z_estadistico),
            aes(y = dnorm(x)), fill = "#FFD166", alpha = 0.4) +
  
  # Líneas de referencia
  geom_vline(xintercept = z_critico, linetype = "dashed", color = "red", linewidth = 0.8) +
  geom_vline(xintercept = z_estadistico, color = "blue", linewidth = 1.2) +
  geom_vline(xintercept = 0, color = "gray50", linetype = "dotted") +
  
  # Anotaciones
  annotate("text", x = z_critico, y = 0.05, 
           label = paste("z* =", round(z_critico, 2)), 
           color = "red", hjust = 1.1, size = 3.5) +
  
  annotate("text", x = z_estadistico, y = 0.12, 
           label = paste("z =", round(z_estadistico, 2)), 
           color = "blue", hjust = ifelse(z_estadistico < 0, -0.1, 1.1), size = 3.5) +
  
  annotate("text", x = mean(c(x_lim_inf, z_estadistico)), y = 0.02, 
           label = paste("Valor p =", format.pval(p_valor, digits = 3)), 
           color = "darkorange3", size = 4) +
  
  # Configuración del gráfico
  labs(title = "Prueba z para diferencia de proporciones",
       subtitle = "Hipótesis: p1 < p2 (cola inferior)",
       x = "Estadístico z",
       y = "Densidad de probabilidad",
       caption = sprintf("Grupo 1: %d/%d (%.1f%%)\nGrupo 2: %d/%d (%.1f%%)",
                        x1, n1, p_hat1*100, x2, n2, p_hat2*100)) +
  
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),
        plot.subtitle = element_text(hjust = 0.5),
        plot.caption = element_text(hjust = 0.5, size = 9),
        panel.grid.major = element_line(color = "gray90"),
        panel.grid.minor = element_blank())

Región: El gráfico muestra la distribución normal estándar. El área roja en la cola izquierda representa la región crítica. La línea azul indica el estadístico z observado. El área amarilla en la cola izquierda representa el valor p.

42.6. Ejemplo 4: Prueba con hipótesis nula diferente de cero

Problema: Una campaña de salud pública tiene como objetivo aumentar la proporción de personas que hacen ejercicio regularmente en al menos un 5% (\(\Delta p \ge 0.05\)). Antes de la campaña, en una encuesta a 300 personas, el 20% hacía ejercicio regularmente. Después de la campaña, en una encuesta independiente a 400 personas, el 28% hacía ejercicio regularmente. ¿Hay evidencia suficiente para decir que la campaña logró su objetivo a un nivel de significancia de \(\alpha = 0.10\)? (Aquí, \(p_1\) es la proporción después de la campaña y \(p_2\) es la proporción antes de la campaña, por lo que queremos probar \(H_1: p_1 - p_2 > 0.05\)).

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: p_1 - p_2 \le 0.05\)
    • \(H_1: p_1 - p_2 > 0.05\)
  2. Nivel de significancia: \(\alpha = 0.10\)

  3. Estadísticos muestrales:

    • \(x_1 = 0.28 \times 400 = 112\), \(n_1 = 400\), \(\hat{p}_1 = 0.28\)
    • \(x_2 = 0.20 \times 300 = 60\), \(n_2 = 300\), \(\hat{p}_2 = 0.20\)
    • \(\Delta p_0 = 0.05\)
  4. Proporción muestral combinada (bajo \(H_0\) no es directamente necesaria para el estadístico): Sin embargo, para la varianza bajo \(H_0\) si \(p_1 - p_2 = 0.05\), esto se complica. Usaremos la estimación separada de las varianzas para ser conservadores.

  5. Estadístico de prueba: \[z = \frac{(0.28 - 0.20) - 0.05}{\sqrt{\frac{0.28(1 - 0.28)}{400} + \frac{0.20(1 - 0.20)}{300}}} = \frac{0.03}{\sqrt{\frac{0.2016}{400} + \frac{0.16}{300}}} = \frac{0.03}{\sqrt{0.000504 + 0.000533}} = \frac{0.03}{\sqrt{0.001037}} \approx \frac{0.03}{0.0322} \approx 0.932\]

  6. Valor p: Para una prueba de cola superior, \(p = P(Z \ge 0.932)\). Usando software, \(P(Z \ge 0.932) \approx 1 - 0.8243 = 0.1757\).

  7. Decisión: Como \(p = 0.1757 > \alpha = 0.10\), no rechazamos \(H_0\).

  8. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.10 para decir que la campaña logró aumentar la proporción de personas que hacen ejercicio regularmente en más del 5%.

Solución en R:

# Datos
x1 <- 112       # Éxitos en grupo 1
n1 <- 400       # Tamaño grupo 1
x2 <- 60        # Éxitos en grupo 2
n2 <- 300       # Tamaño grupo 2
delta_p0 <- 0.05 # Diferencia hipotética bajo H0
alfa <- 0.10    # Nivel de significancia

# 1. Cálculo de proporciones muestrales
p_hat1 <- x1 / n1
p_hat2 <- x2 / n2
diferencia_observada <- p_hat1 - p_hat2

# 2. Estadístico de prueba z (sin asumir varianzas iguales)
error_estandar <- sqrt((p_hat1*(1-p_hat1)/n1) + (p_hat2*(1-p_hat2)/n2))
z_estadistico <- (diferencia_observada - delta_p0) / error_estandar

# 3. Valor crítico y valor p (cola superior)
z_critico <- qnorm(1 - alfa)
p_valor <- pnorm(z_estadistico, lower.tail = FALSE)

# 4. Resultados
cat("--- Prueba z para diferencia de proporciones (cola superior) ---\n")
## --- Prueba z para diferencia de proporciones (cola superior) ---
cat(sprintf("Proporción grupo 1: %.4f (%.0f/%d = %.1f%%)\n", p_hat1, x1, n1, p_hat1*100))
## Proporción grupo 1: 0.2800 (112/400 = 28.0%)
cat(sprintf("Proporción grupo 2: %.4f (%.0f/%d = %.1f%%)\n", p_hat2, x2, n2, p_hat2*100))
## Proporción grupo 2: 0.2000 (60/300 = 20.0%)
cat(sprintf("Diferencia observada (p1 - p2): %.4f\n", diferencia_observada))
## Diferencia observada (p1 - p2): 0.0800
cat(sprintf("Diferencia hipotética (Δp0): %.4f\n", delta_p0))
## Diferencia hipotética (Δp0): 0.0500
cat(sprintf("Error estándar: %.4f\n", error_estandar))
## Error estándar: 0.0322
cat(sprintf("\nEstadístico z: %.3f\n", z_estadistico))
## 
## Estadístico z: 0.931
cat(sprintf("Valor crítico: %.3f\n", z_critico))
## Valor crítico: 1.282
cat(sprintf("Valor p: %.5f\n", p_valor))
## Valor p: 0.17581
# 5. Decisión
if(p_valor <= alfa) {
  cat("\nConclusión: Rechazamos H0 (p =", format.pval(p_valor), "≤ α =", alfa, ")")
  cat("\nHay evidencia suficiente para concluir que p1 - p2 >", delta_p0)
} else {
  cat("\nConclusión: No rechazamos H0 (p =", format.pval(p_valor), "> α =", alfa, ")")
  cat("\nNo hay evidencia suficiente para concluir que p1 - p2 >", delta_p0)
}
## 
## Conclusión: No rechazamos H0 (p = 0.17581 > α = 0.1 )
## No hay evidencia suficiente para concluir que p1 - p2 > 0.05
# 6. Visualización mejorada
library(ggplot2)

# Ajustar límites del gráfico dinámicamente
x_lim_inf <- min(-3, z_estadistico - 1)
x_lim_sup <- max(4, z_estadistico + 1, z_critico + 1)
x_vals <- seq(x_lim_inf, x_lim_sup, length.out = 500)

ggplot(data.frame(x = x_vals), aes(x = x)) +
  # Distribución normal estándar
  stat_function(fun = dnorm) +
  
  # Región crítica (rojo - cola superior)
  geom_area(data = subset(data.frame(x = x_vals), x > z_critico),
            aes(y = dnorm(x)), fill = "#FF6B6B", alpha = 0.3) +
  
  # Valor p (amarillo)
  geom_area(data = subset(data.frame(x = x_vals), x > z_estadistico),
            aes(y = dnorm(x)), fill = "#FFD166", alpha = 0.4) +
  
  # Líneas de referencia
  geom_vline(xintercept = z_critico, linetype = "dashed", color = "red", linewidth = 0.8) +
  geom_vline(xintercept = z_estadistico, color = "blue", linewidth = 1.2) +
  geom_vline(xintercept = 0, color = "gray50", linetype = "dotted") +
  
  # Anotaciones
  annotate("text", x = z_critico, y = 0.05, 
           label = paste("z* =", round(z_critico, 2)), 
           color = "red", hjust = -0.1, size = 3.5) +
  
  annotate("text", x = z_estadistico, y = 0.12, 
           label = paste("z =", round(z_estadistico, 2)), 
           color = "blue", hjust = -0.1, size = 3.5) +
  
  annotate("text", x = mean(c(z_estadistico, x_lim_sup)), y = 0.02, 
           label = paste("Valor p =", format.pval(p_valor, digits = 3)), 
           color = "darkorange3", size = 4) +
  
  # Configuración del gráfico
  labs(title = "Prueba z para diferencia de proporciones",
       subtitle = bquote("Hipótesis:" ~ p[1] - p[2] > .(delta_p0) ~ "(cola superior)"),
       x = "Estadístico z",
       y = "Densidad de probabilidad",
       caption = sprintf("Grupo 1: %d/%d (%.1f%%)\nGrupo 2: %d/%d (%.1f%%)",
                        x1, n1, p_hat1*100, x2, n2, p_hat2*100)) +
  
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"),
        plot.subtitle = element_text(hjust = 0.5),
        plot.caption = element_text(hjust = 0.5, size = 9),
        panel.grid.major = element_line(color = "gray90"),
        panel.grid.minor = element_blank())

Región: El gráfico muestra la distribución normal estándar. El área roja en la cola derecha representa la región crítica. La línea azul indica el estadístico z observado. El área amarilla en la cola derecha representa el valor p.

43. Prueba de la Varianza de una Distribución Normal - Método del Valor p

Cuando se tiene una muestra aleatoria de una población que se distribuye normalmente, podemos realizar una prueba de chi-cuadrado (\(\chi^2\)) para evaluar hipótesis sobre la varianza de esa población (\(\sigma^2\)).

43.1. Conceptos Clave

  • Muestra Aleatoria: Un conjunto de observaciones independientes e idénticamente distribuidas de la población.
  • Tamaño de la Muestra (\(n\)): El número de observaciones en la muestra.
  • Varianza Muestral (\(s^2\)): La varianza calculada a partir de la muestra: \[s^2 = \frac{\sum_{i=1}^{n}(x_i - \bar{x})^2}{n - 1}\]
  • Hipótesis Nula (\(H_0\)): Una afirmación sobre la varianza poblacional (\(\sigma^2\)), generalmente de la forma \(H_0: \sigma^2 = \sigma_0^2\), \(H_0: \sigma^2 \le \sigma_0^2\), o \(H_0: \sigma^2 \ge \sigma_0^2\), donde \(\sigma_0^2\) es un valor especificado.
  • Hipótesis Alternativa (\(H_1\) o \(H_a\)): La afirmación que se intenta probar, de la forma \(H_1: \sigma^2 \neq \sigma_0^2\), \(H_1: \sigma^2 > \sigma_0^2\), o \(H_1: \sigma^2 < \sigma_0^2\).
  • Estadístico de Prueba: Para la prueba de la varianza de una distribución normal, el estadístico de prueba es el estadístico chi-cuadrado: \[\chi^2 = \frac{(n - 1)s^2}{\sigma_0^2}\] Este estadístico sigue una distribución chi-cuadrado con \(n - 1\) grados de libertad (\(gl = n - 1\)) bajo la hipótesis nula.
  • Valor p (p-value): Es la probabilidad de obtener un estadístico de prueba chi-cuadrado tan extremo (o más extremo) como el observado, asumiendo que la hipótesis nula es verdadera y que el estadístico de prueba sigue una distribución chi-cuadrado con \(n - 1\) grados de libertad. La forma de calcular el valor p depende de la hipótesis alternativa:
    • Para \(H_1: \sigma^2 \neq \sigma_0^2\) (dos colas): \(p = 2 \times P(\chi^2_{gl} \ge \chi^2_{obs})\) si \(\chi^2_{obs} > \chi^2_{mediana}\), o \(p = 2 \times P(\chi^2_{gl} \le \chi^2_{obs})\) si \(\chi^2_{obs} < \chi^2_{mediana}\). Alternativamente, se puede usar \(p = P(\chi^2_{gl} \le \chi^2_{obs}) + P(\chi^2_{gl} \ge \chi^2'_{obs})\) donde \(\chi^2'_{obs}\) es el valor de chi-cuadrado que tiene la misma probabilidad en la otra cola.
    • Para \(H_1: \sigma^2 > \sigma_0^2\) (cola superior): \(p = P(\chi^2_{gl} \ge \chi^2_{obs})\)
    • Para \(H_1: \sigma^2 < \sigma_0^2\) (cola inferior): \(p = P(\chi^2_{gl} \le \chi^2_{obs})\) donde \(\chi^2_{obs}\) es el valor calculado del estadístico de prueba y \(\chi^2_{gl}\) es una variable aleatoria con distribución chi-cuadrado con \(gl = n - 1\) grados de libertad. La mediana de la distribución chi-cuadrado es aproximadamente \(gl - 2/3\).
  • Nivel de Significancia (\(\alpha\)): Es la probabilidad máxima aceptable de rechazar la hipótesis nula cuando es verdadera (Error de Tipo I).
  • Decisión: Se compara el valor p con el nivel de significancia \(\alpha\).
    • Si \(p \le \alpha\), se rechaza la hipótesis nula (\(H_0\)).
    • Si \(p > \alpha\), no se rechaza la hipótesis nula (\(H_0\)).
  • Conclusión: Se interpreta la decisión en el contexto del problema.

43.2. Pasos para la Prueba de Hipótesis (Varianza de una Distribución Normal, Método del Valor p)

  1. Formular las hipótesis nula (\(H_0\)) y alternativa (\(H_1\)) sobre la varianza poblacional (\(\sigma^2\)).
  2. Especificar el nivel de significancia (\(\alpha\)).
  3. Obtener una muestra aleatoria de tamaño \(n\) y calcular la varianza muestral (\(s^2\)).
  4. Calcular el estadístico de prueba \(\chi^2\).
  5. Determinar los grados de libertad (\(gl = n - 1\)).
  6. Calcular el valor p basado en la hipótesis alternativa y la distribución chi-cuadrado con \(gl\) grados de libertad.
  7. Tomar la decisión comparando el valor p con \(\alpha\).
  8. Formular la conclusión en el contexto del problema.

43.3. Ejemplo 1: Prueba de dos colas

Problema: Un fabricante de bombillas afirma que la desviación estándar de la duración de sus bombillas es de 50 horas (lo que implica una varianza de \(50^2 = 2500\) horas cuadradas). Se toma una muestra aleatoria de 25 bombillas y se encuentra que la desviación estándar muestral es de 60 horas (varianza muestral \(60^2 = 3600\) horas cuadradas). Asumiendo que la duración de las bombillas sigue una distribución normal, ¿hay evidencia suficiente para decir que la varianza de la duración es diferente de \(2500\) horas cuadradas a un nivel de significancia de \(\alpha = 0.05\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: \sigma^2 = 2500\)
    • \(H_1: \sigma^2 \neq 2500\)
  2. Nivel de significancia: \(\alpha = 0.05\)

  3. Estadísticos muestrales:

    • \(n = 25\)
    • \(s^2 = 3600\)
  4. Estadístico de prueba: \[\chi^2 = \frac{(25 - 1) \times 3600}{2500} = \frac{24 \times 3600}{2500} = \frac{86400}{2500} = 34.56\]

  5. Grados de libertad: \(gl = n - 1 = 25 - 1 = 24\)

  6. Valor p: Para una prueba de dos colas, necesitamos encontrar el área en ambas colas más allá de \(\chi^2 = 34.56\). La mediana de la distribución chi-cuadrado con 24 gl es aproximadamente \(24 - 2/3 \approx 23.33\). Como \(34.56 > 23.33\), el valor p será \(2 \times P(\chi^2_{24} \ge 34.56)\). Usando software, \(P(\chi^2_{24} \ge 34.56) \approx 0.070\). \[p = 2 \times 0.070 = 0.140\]

  7. Decisión: Como \(p = 0.140 > \alpha = 0.05\), no rechazamos \(H_0\).

  8. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.05 para decir que la varianza de la duración de las bombillas es diferente de 2500 horas cuadradas.

Solución en R:

# Datos
n <- 25               # Tamaño muestral
s_cuadrado <- 3600    # Varianza muestral
sigma0_cuadrado <- 2500 # Varianza hipotética bajo H0
alfa <- 0.05          # Nivel de significancia
gl <- n - 1           # Grados de libertad

# 1. Cálculo del estadístico chi-cuadrado
chi2_estadistico <- (gl * s_cuadrado) / sigma0_cuadrado

# 2. Cálculo del valor p (dos colas)
p_valor_superior <- pchisq(chi2_estadistico, df = gl, lower.tail = FALSE)
p_valor_inferior <- pchisq(chi2_estadistico, df = gl, lower.tail = TRUE)
p_valor <- 2 * min(p_valor_superior, p_valor_inferior)

# 3. Valores críticos
chi2_critico_inf <- qchisq(alfa/2, df = gl)
chi2_critico_sup <- qchisq(1 - alfa/2, df = gl)

# 4. Resultados detallados
cat("--- Prueba Chi-Cuadrado para la Varianza Poblacional ---\n")
## --- Prueba Chi-Cuadrado para la Varianza Poblacional ---
cat(sprintf("Hipótesis nula (H0): σ² = %.0f\n", sigma0_cuadrado))
## Hipótesis nula (H0): σ² = 2500
cat(sprintf("Hipótesis alternativa (H1): σ² ≠ %.0f\n", sigma0_cuadrado))
## Hipótesis alternativa (H1): σ² ≠ 2500
cat("\n--- Datos Muestrales ---\n")
## 
## --- Datos Muestrales ---
cat(sprintf("Tamaño muestral (n): %d\n", n))
## Tamaño muestral (n): 25
cat(sprintf("Varianza muestral (s²): %.0f\n", s_cuadrado))
## Varianza muestral (s²): 3600
cat(sprintf("Grados de libertad (gl): %d\n", gl))
## Grados de libertad (gl): 24
cat("\n--- Resultados de la Prueba ---\n")
## 
## --- Resultados de la Prueba ---
cat(sprintf("Estadístico chi-cuadrado: %.3f\n", chi2_estadistico))
## Estadístico chi-cuadrado: 34.560
cat(sprintf("Valores críticos: χ²(%.3f, %.3f)\n", chi2_critico_inf, chi2_critico_sup))
## Valores críticos: χ²(12.401, 39.364)
cat(sprintf("Valor p: %.4f\n", p_valor))
## Valor p: 0.1504
# 5. Decisión
if(p_valor <= alfa) {
  cat("\nConclusión: Rechazamos H0 (p =", format.pval(p_valor), "≤ α =", alfa, ")")
  cat("\nExiste evidencia estadística para concluir que la varianza poblacional")
  cat("\nes significativamente diferente de", sigma0_cuadrado)
} else {
  cat("\nConclusión: No rechazamos H0 (p =", format.pval(p_valor), "> α =", alfa, ")")
  cat("\nNo hay evidencia suficiente para concluir que la varianza poblacional")
  cat("\ndifiere significativamente de", sigma0_cuadrado)
}
## 
## Conclusión: No rechazamos H0 (p = 0.15039 > α = 0.05 )
## No hay evidencia suficiente para concluir que la varianza poblacional
## difiere significativamente de 2500
# 6. Visualización Mejorada
library(ggplot2)

# Ajustar límites del gráfico
x_lim_sup <- max(50, chi2_estadistico + 5, chi2_critico_sup + 5)
x_vals <- seq(0, x_lim_sup, length.out = 500)

# Crear dataframe para el gráfico
df <- data.frame(x = x_vals, y = dchisq(x_vals, df = gl))

# Determinar áreas para el valor p
if(chi2_estadistico > gl) {
  area_p <- subset(df, x > chi2_estadistico)
  area_p_espejo <- subset(df, x < (gl - (chi2_estadistico - gl)))
} else {
  area_p <- subset(df, x < chi2_estadistico)
  area_p_espejo <- subset(df, x > (gl + (gl - chi2_estadistico)))
}

# Gráfico
ggplot(df, aes(x = x)) +
  # Distribución chi-cuadrado
  geom_line(aes(y = y)) +
  
  # Regiones críticas (rojo)
  geom_area(data = subset(df, x < chi2_critico_inf),
            aes(y = y), fill = "red", alpha = 0.3) +
  geom_area(data = subset(df, x > chi2_critico_sup),
            aes(y = y), fill = "red", alpha = 0.3) +
  
  # Valor p (amarillo)
  geom_area(data = area_p,
            aes(y = y), fill = "yellow", alpha = 0.4) +
  geom_area(data = area_p_espejo,
            aes(y = y), fill = "yellow", alpha = 0.4) +
  
  # Líneas de referencia
  geom_vline(xintercept = c(chi2_critico_inf, chi2_critico_sup),
             linetype = "dashed", color = "red", linewidth = 0.8) +
  geom_vline(xintercept = chi2_estadistico, color = "blue", linewidth = 1.5) +
  geom_vline(xintercept = gl, color = "gray50", linetype = "dotted") +
  
  # Anotaciones
  annotate("text", x = chi2_critico_inf, y = 0.01,
           label = sprintf("χ²(%.2f) = %.2f", alfa/2, chi2_critico_inf),
           color = "red", hjust = 1.1, size = 4) +
  annotate("text", x = chi2_critico_sup, y = 0.01,
           label = sprintf("χ²(%.2f) = %.2f", 1-alfa/2, chi2_critico_sup),
           color = "red", hjust = -0.1, size = 4) +
  annotate("text", x = chi2_estadistico, y = 0.05,
           label = sprintf("χ²(obs) = %.2f", chi2_estadistico),
           color = "blue", hjust = -0.1, size = 4.5) +
  annotate("text", x = mean(c(chi2_critico_inf, chi2_critico_sup)), y = 0.08,
           label = sprintf("Valor p = %.4f", p_valor),
           color = "black", size = 5) +
  
  # Configuración del gráfico
  labs(title = "Prueba Chi-Cuadrado para la Varianza Poblacional",
       subtitle = sprintf("Hipótesis: σ² ≠ %.0f (prueba de dos colas, α = %.2f)", sigma0_cuadrado, alfa),
       x = "Valor del Estadístico Chi-Cuadrado",
       y = "Densidad de Probabilidad",
       caption = sprintf("Datos: n = %d, s² = %.0f, σ₀² = %.0f, gl = %d", n, s_cuadrado, sigma0_cuadrado, gl)) +
  
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
        plot.subtitle = element_text(hjust = 0.5, size = 12),
        plot.caption = element_text(hjust = 0.5, size = 10),
        axis.title = element_text(size = 12),
        axis.text = element_text(size = 10),
        panel.grid.major = element_line(color = "gray90"),
        panel.grid.minor = element_blank())

Región: El gráfico muestra la distribución chi-cuadrado con 24 grados de libertad. Las áreas rojas en ambas colas representan la región crítica. La línea azul indica el estadístico chi-cuadrado observado. El área amarilla representa el valor p.

43.4. Ejemplo 2: Prueba de cola superior

Problema: Un proceso de fabricación de rodamientos está diseñado para tener una varianza en el diámetro no mayor a \(0.0001 \, \text{mm}^2\). Se toma una muestra aleatoria de 20 rodamientos y se encuentra que la varianza muestral es de \(0.00015 \, \text{mm}^2\). Asumiendo normalidad en los diámetros, ¿hay evidencia suficiente para decir que la varianza del proceso es mayor de lo esperado a un nivel de significancia de \(\alpha = 0.01\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: \sigma^2 \le 0.0001\)
    • \(H_1: \sigma^2 > 0.0001\)
  2. Nivel de significancia: \(\alpha = 0.01\)

  3. Estadísticos muestrales:

    • \(n = 20\)
    • \(s^2 = 0.00015\)
    • \(\sigma_0^2 = 0.0001\)
  4. Estadístico de prueba: \[\chi^2 = \frac{(20 - 1) \times 0.00015}{0.0001} = \frac{19 \times 0.00015}{0.0001} = \frac{0.00285}{0.0001} = 28.5\]

  5. Grados de libertad: \(gl = n - 1 = 20 - 1 = 19\)

  6. Valor p: Para una prueba de cola superior, \(p = P(\chi^2_{19} \ge 28.5)\). Usando software, \(P(\chi^2_{19} \ge 28.5) \approx 0.079\).

  7. Decisión: Como \(p = 0.079 > \alpha = 0.01\), no rechazamos \(H_0\).

  8. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.01 para decir que la varianza del diámetro del proceso es mayor de \(0.0001 \, \text{mm}^2\).

Solución en R:

# Datos
n <- 20                   # Tamaño muestral
s_cuadrado <- 0.00015     # Varianza muestral
sigma0_cuadrado <- 0.0001 # Varianza hipotética bajo H0
alfa <- 0.01              # Nivel de significancia
gl <- n - 1               # Grados de libertad

# 1. Cálculo del estadístico chi-cuadrado
chi2_estadistico <- (gl * s_cuadrado) / sigma0_cuadrado

# 2. Cálculo del valor p (cola superior)
p_valor <- pchisq(chi2_estadistico, df = gl, lower.tail = FALSE)

# 3. Valor crítico
chi2_critico <- qchisq(1 - alfa, df = gl)

# 4. Resultados detallados
cat("--- Prueba Chi-Cuadrado para la Varianza (Cola Superior) ---\n")
## --- Prueba Chi-Cuadrado para la Varianza (Cola Superior) ---
cat(sprintf("Hipótesis nula (H0): σ² ≤ %.5f\n", sigma0_cuadrado))
## Hipótesis nula (H0): σ² ≤ 0.00010
cat(sprintf("Hipótesis alternativa (H1): σ² > %.5f\n", sigma0_cuadrado))
## Hipótesis alternativa (H1): σ² > 0.00010
cat("\n--- Datos Muestrales ---\n")
## 
## --- Datos Muestrales ---
cat(sprintf("Tamaño muestral (n): %d\n", n))
## Tamaño muestral (n): 20
cat(sprintf("Varianza muestral (s²): %.5f\n", s_cuadrado))
## Varianza muestral (s²): 0.00015
cat(sprintf("Grados de libertad (gl): %d\n", gl))
## Grados de libertad (gl): 19
cat("\n--- Resultados de la Prueba ---\n")
## 
## --- Resultados de la Prueba ---
cat(sprintf("Estadístico chi-cuadrado: %.3f\n", chi2_estadistico))
## Estadístico chi-cuadrado: 28.500
cat(sprintf("Valor crítico (χ²_%.2f): %.3f\n", 1-alfa, chi2_critico))
## Valor crítico (χ²_0.99): 36.191
cat(sprintf("Valor p: %.5f\n", p_valor))
## Valor p: 0.07427
# 5. Decisión
if(p_valor <= alfa) {
  cat("\nConclusión: Rechazamos H0 (p =", format.pval(p_valor), "≤ α =", alfa, ")")
  cat("\nExiste evidencia estadística para concluir que la varianza poblacional")
  cat("\nes significativamente mayor que", sigma0_cuadrado)
} else {
  cat("\nConclusión: No rechazamos H0 (p =", format.pval(p_valor), "> α =", alfa, ")")
  cat("\nNo hay evidencia suficiente para concluir que la varianza poblacional")
  cat("\nes mayor que", sigma0_cuadrado)
}
## 
## Conclusión: No rechazamos H0 (p = 0.074267 > α = 0.01 )
## No hay evidencia suficiente para concluir que la varianza poblacional
## es mayor que 1e-04
# 6. Visualización mejorada
library(ggplot2)

# Ajustar límites del gráfico dinámicamente
x_lim_sup <- max(50, chi2_estadistico * 1.2, chi2_critico * 1.2)
x_vals <- seq(0, x_lim_sup, length.out = 500)

# Crear dataframe para el gráfico
df <- data.frame(x = x_vals)
df$y <- dchisq(df$x, df = gl)

# Gráfico
ggplot(df, aes(x = x, y = y)) +
  # Distribución chi-cuadrado
  geom_line() +
  
  # Región crítica (rojo)
  geom_area(data = subset(df, x > chi2_critico),
            aes(y = y), fill = "red", alpha = 0.3) +
  
  # Valor p (amarillo)
  geom_area(data = subset(df, x > chi2_estadistico),
            aes(y = y), fill = "yellow", alpha = 0.4) +
  
  # Líneas de referencia
  geom_vline(xintercept = chi2_critico, 
             linetype = "dashed", color = "red", linewidth = 0.8) +
  geom_vline(xintercept = chi2_estadistico, 
             color = "blue", linewidth = 1.2) +
  
  # Anotaciones
  annotate("text", x = chi2_critico, y = 0.01,
           label = sprintf("χ²(%.2f) = %.2f", 1-alfa, chi2_critico),
           color = "red", hjust = -0.1, size = 4) +
  
  annotate("text", x = chi2_estadistico, y = 0.03,
           label = sprintf("χ²(obs) = %.2f", chi2_estadistico),
           color = "blue", hjust = -0.1, size = 4) +
  
  annotate("text", x = mean(c(chi2_estadistico, x_lim_sup)), y = 0.02,
           label = sprintf("Valor p = %.4f", p_valor),
           color = "black", size = 4) +
  
  # Configuración del gráfico
  labs(title = "Prueba Chi-Cuadrado para la Varianza (Cola Superior)",
       subtitle = sprintf("Hipótesis: σ² > %.5f (α = %.2f)", sigma0_cuadrado, alfa),
       x = "Estadístico Chi-Cuadrado",
       y = "Densidad de Probabilidad",
       caption = sprintf("n = %d, s² = %.5f, σ₀² = %.5f, gl = %d", 
                        n, s_cuadrado, sigma0_cuadrado, gl)) +
  
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
        plot.subtitle = element_text(hjust = 0.5, size = 12),
        plot.caption = element_text(hjust = 0.5, size = 10),
        axis.title = element_text(size = 12),
        axis.text = element_text(size = 10),
        panel.grid.major = element_line(color = "gray90"),
        panel.grid.minor = element_blank())

Región: El gráfico muestra la distribución chi-cuadrado con 19 grados de libertad. El área roja en la cola derecha representa la región crítica. La línea azul indica el estadístico chi

44. Prueba de la Igualdad de Varianzas entre Dos Poblaciones Normales - Método del Valor p

Cuando se tienen dos muestras aleatorias independientes de dos poblaciones que se distribuyen normalmente, podemos utilizar la prueba F para comparar sus varianzas poblacionales (\(\sigma_1^2\) y \(\sigma_2^2\)).

44.1. Conceptos Clave

  • Muestras Aleatorias Independientes: Dos conjuntos de observaciones independientes, donde las observaciones en una muestra no influyen ni están relacionadas con las observaciones en la otra muestra. Ambas muestras provienen de poblaciones distribuidas normalmente.
  • Tamaño de la Muestra (\(n_1, n_2\)): El número de observaciones en cada muestra.
  • Varianza Muestral (\(s_1^2, s_2^2\)): Las varianzas calculadas a partir de las dos muestras: \[s_1^2 = \frac{\sum_{i=1}^{n_1}(x_{1i} - \bar{x}_1)^2}{n_1 - 1}\] \[s_2^2 = \frac{\sum_{i=1}^{n_2}(x_{2i} - \bar{x}_2)^2}{n_2 - 1}\]
  • Hipótesis Nula (\(H_0\)): Una afirmación de que las varianzas poblacionales son iguales: \(H_0: \sigma_1^2 = \sigma_2^2\) (o \(H_0: \sigma_1^2 / \sigma_2^2 = 1\)).
  • Hipótesis Alternativa (\(H_1\) o \(H_a\)): La afirmación que se intenta probar:
    • \(H_1: \sigma_1^2 \neq \sigma_2^2\) (dos colas, o \(H_1: \sigma_1^2 / \sigma_2^2 \neq 1\))
    • \(H_1: \sigma_1^2 > \sigma_2^2\) (cola superior, o \(H_1: \sigma_1^2 / \sigma_2^2 > 1\))
    • \(H_1: \sigma_1^2 < \sigma_2^2\) (cola inferior, o \(H_1: \sigma_1^2 / \sigma_2^2 < 1\))
  • Estadístico de Prueba: El estadístico de prueba es el estadístico F, que es la razón de las varianzas muestrales: \[F = \frac{s_1^2}{s_2^2}\] Para realizar una prueba de dos colas, es común colocar la varianza muestral más grande en el numerador para que el estadístico F sea mayor o igual a 1. Bajo la hipótesis nula, este estadístico sigue una distribución F con \(n_1 - 1\) grados de libertad en el numerador y \(n_2 - 1\) grados de libertad en el denominador (\(F \sim F_{n_1 - 1, n_2 - 1}\)).
  • Valor p (p-value): Es la probabilidad de obtener un estadístico F tan extremo (o más extremo) como el observado, asumiendo que la hipótesis nula es verdadera y que el estadístico de prueba sigue una distribución F con los grados de libertad apropiados. La forma de calcular el valor p depende de la hipótesis alternativa:
    • Para \(H_1: \sigma_1^2 \neq \sigma_2^2\) (dos colas): \(p = 2 \times P(F_{n_1 - 1, n_2 - 1} \ge F_{obs})\) si \(F_{obs} \ge 1\), o \(p = 2 \times P(F_{n_1 - 1, n_2 - 1} \le F_{obs})\) si \(F_{obs} < 1\). Alternativamente, se puede calcular \(p = P(F_{n_1 - 1, n_2 - 1} \le F_{obs}) + P(F_{n_1 - 1, n_2 - 1} \ge 1/F_{obs}')\) donde \(F_{obs}' = s_2^2 / s_1^2\).
    • Para \(H_1: \sigma_1^2 > \sigma_2^2\) (cola superior): \(p = P(F_{n_1 - 1, n_2 - 1} \ge F_{obs})\) donde \(F_{obs} = s_1^2 / s_2^2\).
    • Para \(H_1: \sigma_1^2 < \sigma_2^2\) (cola inferior): \(p = P(F_{n_1 - 1, n_2 - 1} \le F_{obs})\) donde \(F_{obs} = s_1^2 / s_2^2\).
  • Nivel de Significancia (\(\alpha\)): Es la probabilidad máxima aceptable de rechazar la hipótesis nula cuando es verdadera (Error de Tipo I).
  • Decisión: Se compara el valor p con el nivel de significancia \(\alpha\).
    • Si \(p \le \alpha\), se rechaza la hipótesis nula (\(H_0\)).
    • Si \(p > \alpha\), no se rechaza la hipótesis nula (\(H_0\)).
  • Conclusión: Se interpreta la decisión en el contexto del problema.

44.2. Pasos para la Prueba de Hipótesis (Igualdad de Varianzas, Método del Valor p)

  1. Formular las hipótesis nula (\(H_0\)) y alternativa (\(H_1\)) sobre la igualdad de las varianzas poblacionales (\(\sigma_1^2\) y \(\sigma_2^2\)).
  2. Especificar el nivel de significancia (\(\alpha\)).
  3. Obtener dos muestras aleatorias independientes de tamaño \(n_1\) y \(n_2\) y calcular las varianzas muestrales (\(s_1^2\) y \(s_2^2\)).
  4. Calcular el estadístico de prueba \(F = s_1^2 / s_2^2\) (o \(s_2^2 / s_1^2\) dependiendo de la hipótesis alternativa).
  5. Determinar los grados de libertad para el numerador (\(gl_1 = n_1 - 1\)) y el denominador (\(gl_2 = n_2 - 1\)).
  6. Calcular el valor p basado en la hipótesis alternativa y la distribución F con \(gl_1\) y \(gl_2\) grados de libertad.
  7. Tomar la decisión comparando el valor p con \(\alpha\).
  8. Formular la conclusión en el contexto del problema.

44.3. Ejemplo 1: Prueba de dos colas

Problema: Un analista quiere comparar la variabilidad de los rendimientos de dos inversiones diferentes. Se toman muestras aleatorias de los rendimientos anuales de la inversión A (n=15) y la inversión B (n=12). La varianza muestral de A es \(s_1^2 = 10.5\) y la varianza muestral de B es \(s_2^2 = 6.8\). Asumiendo que los rendimientos siguen distribuciones normales, ¿hay una diferencia significativa en las varianzas de los rendimientos de las dos inversiones a un nivel de significancia de \(\alpha = 0.05\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: \sigma_1^2 = \sigma_2^2\)
    • \(H_1: \sigma_1^2 \neq \sigma_2^2\)
  2. Nivel de significancia: \(\alpha = 0.05\)

  3. Estadísticos muestrales:

    • \(n_1 = 15\), \(s_1^2 = 10.5\)
    • \(n_2 = 12\), \(s_2^2 = 6.8\)
  4. Estadístico de prueba: \[F = \frac{s_1^2}{s_2^2} = \frac{10.5}{6.8} \approx 1.544\]

  5. Grados de libertad:

    • Numerador: \(gl_1 = n_1 - 1 = 15 - 1 = 14\)
    • Denominador: \(gl_2 = n_2 - 1 = 12 - 1 = 11\)
  6. Valor p: Para una prueba de dos colas, \(p = 2 \times P(F_{14, 11} \ge 1.544)\). Usando software, \(P(F_{14, 11} \ge 1.544) \approx 0.208\). \[p = 2 \times 0.208 = 0.416\]

  7. Decisión: Como \(p = 0.416 > \alpha = 0.05\), no rechazamos \(H_0\).

  8. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.05 para decir que hay una diferencia significativa en las varianzas de los rendimientos de las dos inversiones.

Solución en R:

# Datos
n1 <- 15
s1_cuadrado <- 10.5
n2 <- 12
s2_cuadrado <- 6.8
alfa <- 0.05
gl1 <- n1 - 1
gl2 <- n2 - 1

# Estadístico de prueba F (siempre poner la varianza mayor en el numerador)
f_estadistico <- max(s1_cuadrado, s2_cuadrado) / min(s1_cuadrado, s2_cuadrado)
cat("Estadístico F:", f_estadistico, "\n")
## Estadístico F: 1.544118
# Valor p (prueba de dos colas)
p_valor <- 2 * min(pf(f_estadistico, df1 = gl1, df2 = gl2, lower.tail = FALSE),
                   1 - pf(f_estadistico, df1 = gl1, df2 = gl2, lower.tail = FALSE))
cat("Valor p:", p_valor, "\n")
## Valor p: 0.4745125
# Decisión
if (p_valor <= alfa) {
  cat("Rechazamos la hipótesis nula.\n")
} else {
  cat("No rechazamos la hipótesis nula.\n")
}
## No rechazamos la hipótesis nula.
# Visualización de la región crítica y el valor p
library(ggplot2)
library(dplyr)

# Crear datos para la gráfica
x_vals <- seq(0, 5, 0.01)
df_plot <- data.frame(x = x_vals,
                     y = df(x_vals, df1 = gl1, df2 = gl2))

# Calcular valores críticos
f_critico_inf <- qf(alfa/2, df1 = gl1, df2 = gl2)
f_critico_sup <- qf(1 - alfa/2, df1 = gl1, df2 = gl2)

# Crear la gráfica
ggplot(df_plot, aes(x = x)) +
  geom_ribbon(aes(ymin = 0, ymax = y, 
                  fill = x < f_critico_inf | x > f_critico_sup),
              alpha = 0.5) +
  scale_fill_manual(values = c("lightblue", "red"), guide = "none") +
  geom_vline(xintercept = c(f_critico_inf, f_critico_sup), 
             linetype = "dashed", color = "red") +
  geom_vline(xintercept = f_estadistico, color = "blue", linewidth = 1) +
  geom_line(aes(y = y)) +
  annotate("text", x = f_critico_inf - 0.2, y = 0.1, 
           label = "F[alpha/2]", parse = TRUE, color = "red") +
  annotate("text", x = f_critico_sup + 0.3, y = 0.1, 
           label = "F[1-alpha/2]", parse = TRUE, color = "red") +
  annotate("text", x = f_estadistico + 0.2, y = 0.2, 
           label = "F[obs]", parse = TRUE, color = "blue") +
  annotate("text", x = 2.5, y = 0.3, 
           label = paste("p =", round(p_valor, 3)), color = "black") +
  labs(title = "Prueba F para la igualdad de varianzas (dos colas)", 
       x = "Estadístico F", y = "Densidad") +
  theme_minimal()

Región: El gráfico muestra la distribución F con 14 y 11 grados de libertad. Las áreas rojas en ambas colas representan la región crítica. La línea azul indica el estadístico F observado. El área amarilla representa el valor p.

44.4. Ejemplo 2: Prueba de cola superior

Problema: Un ingeniero sospecha que la variabilidad en la resistencia de un nuevo material es mayor que la de un material estándar. Se toman muestras aleatorias de la resistencia del nuevo material (n=10) y del material estándar (n=16). La varianza muestral del nuevo material es \(s_1^2 = 22.5\) y la del material estándar es \(s_2^2 = 15.0\). Asumiendo normalidad, ¿hay evidencia suficiente para apoyar la sospecha del ingeniero a un nivel de significancia de \(\alpha = 0.05\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: \sigma_1^2 \le \sigma_2^2\)
    • \(H_1: \sigma_1^2 > \sigma_2^2\)
  2. Nivel de significancia: \(\alpha = 0.05\)

  3. Estadísticos muestrales:

    • \(n_1 = 10\), \(s_1^2 = 22.5\)
    • \(n_2 = 16\), \(s_2^2 = 15.0\)
  4. Estadístico de prueba: \[F = \frac{s_1^2}{s_2^2} = \frac{22.5}{15.0} = 1.5\]

  5. Grados de libertad:

    • Numerador: \(gl_1 = n_1 - 1 = 10 - 1 = 9\)
    • Denominador: \(gl_2 = n_2 - 1 = 16 - 1 = 15\)
  6. Valor p: Para una prueba de cola superior, \(p = P(F_{9, 15} \ge 1.5)\). Usando software, \(P(F_{9, 15} \ge 1.5) \approx 0.231\).

  7. Decisión: Como \(p = 0.231 > \alpha = 0.05\), no rechazamos \(H_0\).

  8. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.05 para decir que la variabilidad en la resistencia del nuevo material es mayor que la del material estándar.

Solución en R:

# Datos
n1 <- 10
s1_cuadrado <- 22.5
n2 <- 16
s2_cuadrado <- 15.0
alfa <- 0.05
gl1 <- n1 - 1
gl2 <- n2 - 1

# Estadístico de prueba F (asegurando que sea ≥ 1)
f_estadistico <- max(s1_cuadrado, s2_cuadrado) / min(s1_cuadrado, s2_cuadrado)
cat("Estadístico F:", f_estadistico, "\n")
## Estadístico F: 1.5
# Valor p (prueba de cola superior)
p_valor <- pf(f_estadistico, df1 = ifelse(s1_cuadrado > s2_cuadrado, gl1, gl2), 
              df2 = ifelse(s1_cuadrado > s2_cuadrado, gl2, gl1), 
              lower.tail = FALSE)
cat("Valor p:", p_valor, "\n")
## Valor p: 0.2342334
# Decisión
if (p_valor <= alfa) {
  cat("Rechazamos la hipótesis nula (las varianzas no son iguales).\n")
} else {
  cat("No rechazamos la hipótesis nula (no hay evidencia de diferencia en varianzas).\n")
}
## No rechazamos la hipótesis nula (no hay evidencia de diferencia en varianzas).
# Visualización de la región crítica y el valor p
library(ggplot2)
library(dplyr)

# Crear secuencia de valores para el gráfico
x_vals <- seq(0, 5, length.out = 500)
df_plot <- data.frame(x = x_vals,
                     y = df(x_vals, 
                            df1 = ifelse(s1_cuadrado > s2_cuadrado, gl1, gl2), 
                            df2 = ifelse(s1_cuadrado > s2_cuadrado, gl2, gl1)))

# Calcular valor crítico
f_critico <- qf(1 - alfa, 
                df1 = ifelse(s1_cuadrado > s2_cuadrado, gl1, gl2), 
                df2 = ifelse(s1_cuadrado > s2_cuadrado, gl2, gl1))

# Crear el gráfico
ggplot(df_plot, aes(x = x)) +
  geom_line(aes(y = y)) +
  geom_ribbon(aes(ymin = 0, ymax = y, fill = x > f_critico), alpha = 0.5) +
  scale_fill_manual(values = c("lightblue", "red"), guide = "none") +
  geom_vline(xintercept = f_critico, linetype = "dashed", color = "red") +
  geom_vline(xintercept = f_estadistico, color = "blue", linewidth = 1) +
  geom_area(data = subset(df_plot, x >= f_estadistico), 
            aes(y = y), fill = "yellow", alpha = 0.3) +
  annotate("text", x = f_critico + 0.3, y = 0.1, 
           label = "F[1-alpha]", parse = TRUE, color = "red") +
  annotate("text", x = f_estadistico + 0.3, y = 0.2, 
           label = "F[obs]", parse = TRUE, color = "blue") +
  annotate("text", x = (f_critico + max(x_vals))/2, y = 0.3, 
           label = paste("p =", round(p_valor, 4)), color = "black") +
  labs(title = "Prueba F para igualdad de varianzas (prueba unilateral)",
       subtitle = paste("F(", gl1, ",", gl2, ") =", round(f_estadistico, 3), 
             ", Valor p =", round(p_valor, 4)),
       x = "Estadístico F", 
       y = "Densidad de probabilidad") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5),
        plot.subtitle = element_text(hjust = 0.5))

Región: El gráfico muestra la distribución F con 9 y 15 grados de libertad. El área roja en la cola derecha representa la región crítica. La línea azul indica el estadístico F observado. El área amarilla en la cola derecha representa el valor p.

44.5. Ejemplo 3: Prueba de cola inferior

Problema: Un investigador cree que la variabilidad en las calificaciones de un examen es menor en un grupo que recibió una nueva técnica de estudio en comparación con un grupo que usó métodos tradicionales. Las varianzas muestrales fueron \(s_1^2 = 85\) (n=20, grupo nuevo) y \(s_2^2 = 120\) (n=25, grupo tradicional). Asumiendo normalidad, ¿hay evidencia suficiente para apoyar la creencia del investigador a un nivel de significancia de \(\alpha = 0.01\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: \sigma_1^2 \ge \sigma_2^2\)
    • \(H_1: \sigma_1^2 < \sigma_2^2\)
  2. Nivel de significancia: \(\alpha = 0.01\)

  3. Estadísticos muestrales:

    • \(n_1 = 20\), \(s_1^2 = 85\)
    • \(n_2 = 25\), \(s_2^2 = 120\)
  4. Estadístico de prueba: \[F = \frac{s_1^2}{s_2^2} = \frac{85}{120} \approx 0.708\]

  5. Grados de libertad:

    • Numerador: \(gl_1 = n_1 - 1 = 20 - 1 = 19\)
    • Denominador: \(gl_2 = n_2 - 1 = 25 - 1 = 24\)
  6. Valor p: Para una prueba de cola inferior, \(p = P(F_{19, 24} \le 0.708)\). Usando software, \(P(F_{19, 24} \le 0.708) \approx 0.188\).

  7. Decisión: Como \(p = 0.188 > \alpha = 0.01\), no rechazamos \(H_0\).

  8. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.01 para apoyar la creencia del investigador de que la variabilidad en las calificaciones es menor en el grupo con la nueva técnica de estudio.

Solución en R:

# Datos
n1 <- 20
s1_cuadrado <- 85
n2 <- 25
s2_cuadrado <- 120
alfa <- 0.01
gl1 <- n1 - 1
gl2 <- n2 - 1

# Estadístico de prueba F (asegurar que F ≤ 1 para prueba de cola inferior)
f_estadistico <- min(s1_cuadrado/s2_cuadrado, s2_cuadrado/s1_cuadrado)
cat("Estadístico F:", f_estadistico, "\n")
## Estadístico F: 0.7083333
# Determinar qué varianza es menor para los grados de libertad correctos
if(s1_cuadrado <= s2_cuadrado) {
  df_num <- gl1
  df_den <- gl2
} else {
  df_num <- gl2
  df_den <- gl1
}

# Valor p (prueba de cola inferior)
p_valor <- pf(f_estadistico, df1 = df_num, df2 = df_den, lower.tail = TRUE)
cat("Valor p:", p_valor, "\n")
## Valor p: 0.2233693
# Decisión
if(p_valor <= alfa) {
  cat("Rechazamos la hipótesis nula (las varianzas no son iguales).\n")
} else {
  cat("No rechazamos la hipótesis nula (no hay evidencia de diferencia en varianzas).\n")
}
## No rechazamos la hipótesis nula (no hay evidencia de diferencia en varianzas).
# Visualización de la región crítica y el valor p
library(ggplot2)
library(dplyr)

# Crear secuencia de valores para el gráfico
x_vals <- seq(0, 3, length.out = 500)
df_plot <- data.frame(x = x_vals,
                     y = df(x_vals, df1 = df_num, df2 = df_den))

# Calcular valor crítico
f_critico <- qf(alfa, df1 = df_num, df2 = df_den)

# Crear el gráfico
ggplot(df_plot, aes(x = x)) +
  geom_line(aes(y = y)) +
  geom_ribbon(aes(ymin = 0, ymax = y, fill = x < f_critico), alpha = 0.5) +
  scale_fill_manual(values = c("lightblue", "red"), guide = "none") +
  geom_vline(xintercept = f_critico, linetype = "dashed", color = "red") +
  geom_vline(xintercept = f_estadistico, color = "blue", linewidth = 1) +
  geom_area(data = subset(df_plot, x <= f_estadistico), 
            aes(y = y), fill = "yellow", alpha = 0.3) +
  annotate("text", x = f_critico - 0.1, y = 0.1, 
           label = "F[alpha]", parse = TRUE, color = "red") +
  annotate("text", x = f_estadistico - 0.1, y = 0.2, 
           label = "F[obs]", parse = TRUE, color = "blue") +
  annotate("text", x = 1.5, y = 0.3, 
           label = paste("p =", round(p_valor, 4)), color = "black") +
  labs(title = "Prueba F para igualdad de varianzas (prueba de cola inferior)",
       subtitle = paste("F(", df_num, ",", df_den, ") =", round(f_estadistico, 3), 
             ", Valor p =", round(p_valor, 4)),
       x = "Estadístico F", 
       y = "Densidad de probabilidad") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5),
        plot.subtitle = element_text(hjust = 0.5))

Región: El gráfico muestra la distribución F con 19 y 24 grados de libertad. El área roja en la cola izquierda representa la región crítica. La línea azul indica el estadístico F observado. El área amarilla en la cola izquierda representa el valor p.

44.5. Ejemplo 4: Prueba de dos colas (con varianzas muy diferentes)

Problema: Se comparan las varianzas del peso de dos tipos de grano cosechado. Muestra 1 (n=12) tiene una varianza de \(s_1^2 = 0.8\) y Muestra 2 (n=15) tiene una varianza de \(s_2^2 = 0.2\). Asumiendo normalidad, ¿hay una diferencia significativa en las varianzas del peso de los dos tipos de grano a un nivel de significancia de \(\alpha = 0.10\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0: \sigma_1^2 = \sigma_2^2\)
    • \(H_1: \sigma_1^2 \neq \sigma_2^2\)
  2. Nivel de significancia: \(\alpha = 0.10\)

  3. Estadísticos muestrales:

    • \(n_1 = 12\), \(s_1^2 = 0.8\)
    • \(n_2 = 15\), \(s_2^2 = 0.2\)
  4. Estadístico de prueba: \[F = \frac{s_1^2}{s_2^2} = \frac{0.8}{0.2} = 4\]

  5. Grados de libertad:

    • Numerador: \(gl_1 = n_1 - 1 = 12 - 1 = 11\)
    • Denominador: \(gl_2 = n_2 - 1 = 15 - 1 = 14\)
  6. Valor p: Para una prueba de dos colas, \(p = 2 \times P(F_{11, 14} \ge 4)\). Usando software, \(P(F_{11, 14} \ge 4) \approx 0.013\). \[p = 2 \times 0.013 = 0.026\]

  7. Decisión: Como \(p = 0.026 \le \alpha = 0.10\), rechazamos \(H_0\).

  8. Conclusión: Hay evidencia estadística suficiente al nivel de significancia de 0.10 para decir que hay una diferencia significativa en las varianzas del peso de los dos tipos de grano.

Solución en R:

# Datos
n1 <- 12
s1_cuadrado <- 0.8
n2 <- 15
s2_cuadrado <- 0.2
alfa <- 0.10
gl1 <- n1 - 1
gl2 <- n2 - 1

# Estadístico de prueba F (asegurando que F ≥ 1)
f_estadistico <- max(s1_cuadrado, s2_cuadrado) / min(s1_cuadrado, s2_cuadrado)
cat("Estadístico F:", f_estadistico, "\n")
## Estadístico F: 4
# Ajustar grados de libertad según qué varianza es mayor
if (s1_cuadrado > s2_cuadrado) {
  df_num <- gl1
  df_den <- gl2
} else {
  df_num <- gl2
  df_den <- gl1
}

# Valor p (prueba de dos colas)
cola_superior <- pf(f_estadistico, df1 = df_num, df2 = df_den, lower.tail = FALSE)
p_valor <- 2 * min(cola_superior, 1 - cola_superior)
cat("Valor p:", p_valor, "\n")
## Valor p: 0.01718818
# Decisión
if (p_valor <= alfa) {
  cat("Rechazamos la hipótesis nula (las varianzas no son iguales).\n")
} else {
  cat("No rechazamos la hipótesis nula (no hay evidencia de diferencia en varianzas).\n")
}
## Rechazamos la hipótesis nula (las varianzas no son iguales).
# Visualización de la región crítica y el valor p
library(ggplot2)
library(dplyr)

# Crear secuencia de valores para el gráfico
x_vals <- seq(0, 10, length.out = 500)
df_plot <- data.frame(x = x_vals,
                     y = df(x_vals, df1 = df_num, df2 = df_den))

# Calcular valores críticos
f_critico_inf <- qf(alfa/2, df1 = df_num, df2 = df_den)
f_critico_sup <- qf(1 - alfa/2, df1 = df_num, df2 = df_den)

# Crear el gráfico
ggplot(df_plot, aes(x = x)) +
  geom_line(aes(y = y)) +
  # Región crítica (dos colas)
  geom_ribbon(data = subset(df_plot, x < f_critico_inf),
              aes(ymin = 0, ymax = y), fill = "red", alpha = 0.5) +
  geom_ribbon(data = subset(df_plot, x > f_critico_sup),
              aes(ymin = 0, ymax = y), fill = "red", alpha = 0.5) +
  # Área no crítica
  geom_ribbon(data = subset(df_plot, x >= f_critico_inf & x <= f_critico_sup),
              aes(ymin = 0, ymax = y), fill = "lightblue", alpha = 0.5) +
  # Líneas críticas
  geom_vline(xintercept = c(f_critico_inf, f_critico_sup), 
             linetype = "dashed", color = "red") +
  # Estadístico observado
  geom_vline(xintercept = f_estadistico, color = "blue", linewidth = 1) +
  # Área del valor p (solo la cola superior ya que F ≥ 1)
  geom_area(data = subset(df_plot, x >= f_estadistico), 
            aes(y = y), fill = "yellow", alpha = 0.3) +
  # Etiquetas
  annotate("text", x = f_critico_inf - 0.3, y = 0.1, 
           label = "F[alpha/2]", parse = TRUE, color = "red") +
  annotate("text", x = f_critico_sup + 0.5, y = 0.1, 
           label = "F[1-alpha/2]", parse = TRUE, color = "red") +
  annotate("text", x = f_estadistico + 0.5, y = 0.2, 
           label = "F[obs]", parse = TRUE, color = "blue") +
  annotate("text", x = mean(c(f_critico_sup, max(x_vals))) - 1, y = 0.3, 
           label = paste("p =", round(p_valor, 4)), color = "black") +
  # Títulos y etiquetas
  labs(title = "Prueba F para igualdad de varianzas (prueba bilateral)",
       subtitle = paste("F(", df_num, ",", df_den, ") =", round(f_estadistico, 3), 
             ", Valor p =", round(p_valor, 4)),
       x = "Estadístico F", 
       y = "Densidad de probabilidad") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5),
        plot.subtitle = element_text(hjust = 0.5))

H. Potencia de una Prueba

45. Valoración de la Potencia de una Prueba de la Media (Varianza Poblacional Conocida) - Método del Valor p

  • La potencia de una prueba de hipótesis es la probabilidad de rechazar correctamente la hipótesis nula (\(H_0\)) cuando la hipótesis alternativa (\(H_1\)) es verdadera. Se denota como \(1 - \beta\), donde \(\beta\) es la probabilidad de cometer un error de Tipo II (no rechazar \(H_0\) cuando es falsa). La valoración de la potencia es crucial para determinar la utilidad de una prueba y para planificar estudios con una probabilidad razonable de detectar un efecto si realmente existe.

45.1. Conceptos Clave

  • Hipótesis Nula (\(H_0\)): \(H_0: \mu = \mu_0\)
  • Hipótesis Alternativa (\(H_1\)): Puede ser de tres formas: \(H_1: \mu \neq \mu_1\), \(H_1: \mu > \mu_1\), o \(H_1: \mu < \mu_1\), donde \(\mu_1\) es un valor específico de la media bajo la hipótesis alternativa. Es importante notar que \(\mu_1 \neq \mu_0\).
  • Nivel de Significancia (\(\alpha\)): La probabilidad de rechazar \(H_0\) cuando es verdadera.
  • Tamaño de la Muestra (\(n\)): El número de observaciones en la muestra.
  • Desviación Estándar Poblacional (\(\sigma\)): Se asume conocida.
  • Valor Verdadero de la Media bajo \(H_1\) (\(\mu_1\)): El valor específico de la media que asumimos es verdadero para calcular la potencia.
  • Potencia (\(1 - \beta\)): La probabilidad de rechazar \(H_0\) dado que \(\mu = \mu_1\).

45.2. Pasos para Calcular la Potencia

  1. Especificar \(H_0\), \(H_1\) (incluyendo un valor específico \(\mu_1\)), \(\alpha\), \(n\), y \(\sigma\).
  2. Determinar la región de rechazo en términos del estadístico de prueba \(z\) bajo \(H_0\).
    • Para \(H_1: \mu \neq \mu_1\): \(|z| > z_{\alpha/2}\)
    • Para \(H_1: \mu > \mu_1\): \(z > z_{\alpha}\)
    • Para \(H_1: \mu < \mu_1\): \(z < -z_{\alpha}\) donde \(z_{\alpha/2}\) y \(z_{\alpha}\) son los valores críticos de la distribución normal estándar.
  3. Calcular la probabilidad de que el estadístico de prueba caiga en la región de rechazo bajo la hipótesis alternativa (es decir, asumiendo que la media poblacional es \(\mu_1\)).
    • El estadístico de prueba bajo \(H_1\) (cuando \(\mu = \mu_1\)) es: \[z' = \frac{\bar{x} - \mu_0}{\sigma / \sqrt{n}}\]
    • Necesitamos encontrar la probabilidad de que este \(z'\) corresponda a una \(\bar{x}\) que caería en la región de rechazo definida en el paso 2. Esto se hace transformando los límites de la región de rechazo de \(\bar{x}\) (derivados de los límites de \(z\)) al estadístico \(z\) bajo \(H_1\): \[z_{\text{límite}} = \frac{\bar{x}_{\text{límite}} - \mu_1}{\sigma / \sqrt{n}}\]
    • La potencia es entonces la probabilidad de que el estadístico de prueba bajo \(H_1\) exceda el valor crítico apropiado (o esté por debajo para una prueba de cola inferior).

45.3. Ejemplo 1: Prueba de dos colas

Problema: Se realiza una prueba de hipótesis con \(H_0: \mu = 100\) contra \(H_1: \mu \neq 100\), con \(\alpha = 0.05\), \(n = 25\), y \(\sigma = 15\). Calcula la potencia de la prueba si la verdadera media poblacional es \(\mu_1 = 105\).

Solución en Markdown:

  1. Especificaciones: \(H_0: \mu = 100\), \(H_1: \mu \neq 100\), \(\alpha = 0.05\), \(n = 25\), \(\sigma = 15\), \(\mu_1 = 105\).

  2. Región de rechazo bajo \(H_0\): Para una prueba de dos colas con \(\alpha = 0.05\), los valores críticos de \(z\) son \(\pm z_{0.025} = \pm 1.96\). Esto corresponde a valores de \(\bar{x}\) tales que: \[\frac{\bar{x} - 100}{15 / \sqrt{25}} > 1.96 \implies \bar{x} > 100 + 1.96 \times 3 = 105.88\] \[\frac{\bar{x} - 100}{15 / \sqrt{25}} < -1.96 \implies \bar{x} < 100 - 1.96 \times 3 = 94.12\]

  3. Potencia bajo \(H_1 (\mu = 105)\): Calculamos la probabilidad de que \(\bar{x}\) caiga en la región de rechazo cuando la verdadera media es 105. El estadístico \(z\) bajo \(H_1\) es \(Z' = \frac{\bar{X} - 105}{15 / \sqrt{25}} = \frac{\bar{X} - 105}{3}\).

    • \(P(\bar{X} > 105.88 | \mu = 105) = P\left(Z' > \frac{105.88 - 105}{3}\right) = P(Z' > 0.293) \approx 1 - 0.6153 = 0.3847\)
    • \(P(\bar{X} < 94.12 | \mu = 105) = P\left(Z' < \frac{94.12 - 105}{3}\right) = P(Z' < -3.627) \approx 0.0001\)
    • Potencia \(= 0.3847 + 0.0001 = 0.3848\)

Solución en R:

# Especificaciones
mu0 <- 100
mu1 <- 105
alfa <- 0.05
n <- 25
sigma <- 15
se <- sigma / sqrt(n)

# Valores críticos de la media muestral bajo H0
media_critica_superior <- mu0 + qnorm(1 - alfa / 2) * se
media_critica_inferior <- mu0 - qnorm(1 - alfa / 2) * se

cat("Media crítica superior:", media_critica_superior, "\n")
## Media crítica superior: 105.8799
cat("Media crítica inferior:", media_critica_inferior, "\n")
## Media crítica inferior: 94.12011
# Potencia
potencia_superior <- pnorm(media_critica_superior, mean = mu1, sd = se, lower.tail = FALSE)
potencia_inferior <- pnorm(media_critica_inferior, mean = mu1, sd = se, lower.tail = TRUE)
potencia <- potencia_superior + potencia_inferior

cat("Potencia:", potencia, "\n")
## Potencia: 0.384791
# Visualización de la potencia
library(ggplot2)
data.frame(x = seq(85, 120, 0.1)) %>%
  ggplot(aes(x = x)) +
  stat_function(fun = dnorm, args = list(mean = mu0, sd = se), aes(color = "H0"), linewidth = 1) +
  stat_function(fun = dnorm, args = list(mean = mu1, sd = se), aes(color = "H1"), linewidth = 1) +
  geom_vline(xintercept = media_critica_superior, linetype = "dashed", color = "red") +
  geom_vline(xintercept = media_critica_inferior, linetype = "dashed", color = "red") +
  annotate("text", x = media_critica_superior + 1, y = dnorm(media_critica_superior, mu1, se) + 0.005, label = "Rechazar H0", color = "red") +
  annotate("text", x = media_critica_inferior - 1, y = dnorm(media_critica_inferior, mu1, se) + 0.005, label = "Rechazar H0", color = "red") +
  annotate("text", x = (media_critica_superior + 120) / 2, y = dnorm(mu1, mu1, se) / 2, label = paste("Potencia =", round(potencia_superior, 3)), color = "blue") +
  annotate("text", x = (media_critica_inferior + 85) / 2, y = dnorm(mu1, mu1, se) / 3, label = paste("Potencia (inferior) =", round(potencia_inferior, 3)), color = "blue") +
  labs(title = "Potencia de la Prueba (Dos Colas)", x = "Media Muestral", y = "Densidad") +
  scale_color_manual(name = "Hipótesis", values = c("H0" = "black", "H1" = "blue")) +
  theme_minimal()

Análisis de Potencia Mejorado para Prueba Z de Dos Colas

# Especificaciones del análisis
mu0 <- 100    # Media bajo hipótesis nula
mu1 <- 105    # Media bajo hipótesis alternativa
alfa <- 0.05  # Nivel de significancia
n <- 25       # Tamaño muestral
sigma <- 15   # Desviación estándar poblacional

# Cálculo del error estándar
se <- sigma / sqrt(n)
cat("Error estándar:", round(se, 3), "\n")
## Error estándar: 3
# Valores críticos de la media muestral bajo H0 (prueba bilateral)
z_critico <- qnorm(1 - alfa/2)
media_critica_superior <- mu0 + z_critico * se
media_critica_inferior <- mu0 - z_critico * se

cat("\nRegión de rechazo:\n")
## 
## Región de rechazo:
cat(sprintf("• Límite inferior: %.3f\n• Límite superior: %.3f\n", 
            media_critica_inferior, media_critica_superior))
## • Límite inferior: 94.120
## • Límite superior: 105.880
# Cálculo de la potencia (probabilidad de rechazar H0 cuando H1 es verdadera)
potencia_superior <- pnorm(media_critica_superior, mean = mu1, sd = se, lower.tail = FALSE)
potencia_inferior <- pnorm(media_critica_inferior, mean = mu1, sd = se, lower.tail = TRUE)
potencia_total <- potencia_superior + potencia_inferior

cat("\nResultados de potencia:\n")
## 
## Resultados de potencia:
cat(sprintf("• Potencia cola superior: %.4f\n• Potencia cola inferior: %.4f\n• Potencia total: %.4f\n",
            potencia_superior, potencia_inferior, potencia_total))
## • Potencia cola superior: 0.3846
## • Potencia cola inferior: 0.0001
## • Potencia total: 0.3848
# Visualización profesional
library(ggplot2)
library(dplyr)

# Datos para el gráfico
df_plot <- data.frame(x = seq(85, 120, 0.1)) %>%
  mutate(
    densidad_H0 = dnorm(x, mu0, se),
    densidad_H1 = dnorm(x, mu1, se)
  )

# Creación del gráfico
ggplot(df_plot, aes(x = x)) +
  # Distribuciones
  geom_line(aes(y = densidad_H0, color = "H₀: μ = 100"), linewidth = 1.2) +
  geom_line(aes(y = densidad_H1, color = "H₁: μ = 105"), linewidth = 1.2) +
  
  # Regiones de rechazo
  geom_area(data = subset(df_plot, x <= media_critica_inferior | x >= media_critica_superior),
            aes(y = densidad_H1), fill = "#1E88E5", alpha = 0.5) +
  
  # Líneas críticas
  geom_vline(xintercept = c(media_critica_inferior, media_critica_superior),
             linetype = "dashed", color = "#D81B60", linewidth = 1) +
  
  # Anotaciones
  annotate("text", x = media_critica_superior + 1, y = 0.02,
           label = sprintf("Límite superior\n%.2f", media_critica_superior),
           color = "#D81B60", size = 4, hjust = 0) +
  
  annotate("text", x = media_critica_inferior - 1, y = 0.02,
           label = sprintf("Límite inferior\n%.2f", media_critica_inferior),
           color = "#D81B60", size = 4, hjust = 1) +
  
  annotate("text", x = 113, y = 0.05,
           label = sprintf("Potencia superior\n= %.3f", potencia_superior),
           color = "#1E88E5", size = 5, fontface = "bold") +
  
  annotate("text", x = 87, y = 0.05,
           label = sprintf("Potencia inferior\n= %.3f", potencia_inferior),
           color = "#1E88E5", size = 5, fontface = "bold") +
  
  # Formato y estilo
  labs(
    title = "Análisis de Potencia para Prueba Z Bilateral",
    subtitle = sprintf("Tamaño muestral: n = %d | Nivel de significancia: α = %.2f", n, alfa),
    x = "Media muestral (x̄)",
    y = "Densidad de probabilidad",
    color = "Distribución"
  ) +
  
  scale_color_manual(values = c("H₀: μ = 100" = "#FFC107", "H₁: μ = 105" = "#004D40")) +
  
  theme_minimal(base_size = 13) +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 16),
    plot.subtitle = element_text(hjust = 0.5, size = 12),
    legend.position = "top",
    legend.title = element_text(face = "bold"),
    panel.grid.major = element_line(color = "gray90"),
    panel.grid.minor = element_blank(),
    axis.title = element_text(size = 13),
    axis.text = element_text(size = 11)
  ) +
  
  scale_x_continuous(breaks = seq(85, 120, 5)) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.05)))

Región: El gráfico muestra las distribuciones de la media muestral bajo \(H_0\) y \(H_1\). Las líneas verticales rojas indican las regiones de rechazo bajo \(H_0\). El área bajo la curva de \(H_1\) que cae en estas regiones es la potencia de la prueba.

45.4. Ejemplo 2: Prueba de cola superior

Problema: Se realiza una prueba de hipótesis con \(H_0: \mu = 50\) contra \(H_1: \mu > 50\), con \(\alpha = 0.01\), \(n = 100\), y \(\sigma = 8\). Calcula la potencia de la prueba si la verdadera media poblacional es \(\mu_1 = 52\).

Solución en Markdown:

  1. Especificaciones: \(H_0: \mu = 50\), \(H_1: \mu > 50\), \(\alpha = 0.01\), \(n = 100\), \(\sigma = 8\), \(\mu_1 = 52\).

  2. Región de rechazo bajo \(H_0\): Para una prueba de cola superior con \(\alpha = 0.01\), el valor crítico de \(z\) es \(z_{0.01} = 2.33\). Esto corresponde a valores de \(\bar{x}\) tales que: \[\frac{\bar{x} - 50}{8 / \sqrt{100}} > 2.33 \implies \bar{x} > 50 + 2.33 \times 0.8 = 51.864\]

  3. Potencia bajo \(H_1 (\mu = 52)\): Calculamos la probabilidad de que \(\bar{x}\) caiga en la región de rechazo cuando la verdadera media es 52. El estadístico \(z\) bajo \(H_1\) es \(Z' = \frac{\bar{X} - 52}{8 / \sqrt{100}} = \frac{\bar{X} - 52}{0.8}\).

    • Potencia \(= P(\bar{X} > 51.864 | \mu = 52) = P\left(Z' > \frac{51.864 - 52}{0.8}\right) = P(Z' > -0.17) \approx 1 - 0.4325 = 0.5675\)

Solución en R:

# Especificaciones
mu0 <- 50
mu1 <- 52
alfa <- 0.01
n <- 100
sigma <- 8
se <- sigma / sqrt(n)

# Valor crítico de la media muestral bajo H0
media_critica <- mu0 + qnorm(1 - alfa) * se
cat("Media crítica:", media_critica, "\n")
## Media crítica: 51.86108
# Potencia
potencia <- pnorm(media_critica, mean = mu1, sd = se, lower.tail = FALSE)
cat("Potencia:", potencia, "\n")
## Potencia: 0.5689306
# Visualización de la potencia
library(ggplot2)
data.frame(x = seq(47, 55, 0.1)) %>%
  ggplot(aes(x = x)) +
  stat_function(fun = dnorm, args = list(mean = mu0, sd = se), aes(color = "H0"), linewidth = 1) +
  stat_function(fun = dnorm, args = list(mean = mu1, sd = se), aes(color = "H1"), linewidth = 1) +
  geom_vline(xintercept = media_critica, linetype = "dashed", color = "red") +
  annotate("text", x = media_critica + 0.2, y = dnorm(media_critica, mu1, se) + 0.005, label = "Rechazar H0", color = "red") +
  annotate("text", x = (media_critica + 55) / 2, y = dnorm(mu1, mu1, se) / 2, label = paste("Potencia =", round(potencia, 3)), color = "blue") +
  labs(title = "Potencia de la Prueba (Cola Superior)", x = "Media Muestral", y = "Densidad") +
  scale_color_manual(name = "Hipótesis", values = c("H0" = "black", "H1" = "blue")) +
  theme_minimal()

Región: El gráfico muestra las distribuciones de la media muestral bajo \(H_0\) y \(H_1\). La línea vertical roja indica la región de rechazo bajo \(H_0\). El área bajo la curva de \(H_1\) a la derecha de esta línea es la potencia de la prueba.

Corrección y mejora de código estadístico en R

# ANÁLISIS DE POTENCIA MEJORADO PARA PRUEBA UNILATERAL SUPERIOR

# PARÁMETROS DEL ANÁLISIS
mu0 <- 50      # Media bajo hipótesis nula
mu1 <- 52      # Media bajo hipótesis alternativa
alfa <- 0.01   # Nivel de significancia
n <- 100       # Tamaño muestral
sigma <- 8     # Desviación estándar poblacional

# CÁLCULOS ESTADÍSTICOS
se <- sigma / sqrt(n)  # Error estándar
z_critico <- qnorm(1 - alfa)  # Valor crítico Z
media_critica <- mu0 + z_critico * se  # Media muestral crítica

# Crear línea de separación visual
separador <- paste(rep("=", 60), collapse = "")

cat(separador, "\n")
## ============================================================
cat("ANÁLISIS DE POTENCIA PARA PRUEBA UNILATERAL SUPERIOR\n")
## ANÁLISIS DE POTENCIA PARA PRUEBA UNILATERAL SUPERIOR
cat(separador, "\n\n")
## ============================================================
cat(sprintf("• Media crítica para rechazar H₀: %.3f\n", media_critica))
## • Media crítica para rechazar H₀: 51.861
cat(sprintf("• Error estándar: %.3f\n", se))
## • Error estándar: 0.800
cat(sprintf("• Valor crítico Z: %.3f\n\n", z_critico))
## • Valor crítico Z: 2.326
# CÁLCULO DE POTENCIA
potencia <- pnorm(media_critica, mean = mu1, sd = se, lower.tail = FALSE)
cat(sprintf("• Potencia estadística (1-β): %.3f (%.1f%%)\n", potencia, potencia*100))
## • Potencia estadística (1-β): 0.569 (56.9%)
cat("\nInterpretación:",
    ifelse(potencia >= 0.8, "Potencia adecuada (≥80%)",
           ifelse(potencia >= 0.5, "Potencia moderada",
                  "Potencia insuficiente")), "\n")
## 
## Interpretación: Potencia moderada
cat(separador, "\n")
## ============================================================
# VISUALIZACIÓN PROFESIONAL
library(ggplot2)
library(dplyr)

# Datos para el gráfico
df_plot <- data.frame(x = seq(47, 55, 0.01)) %>%
  mutate(
    densidad_H0 = dnorm(x, mu0, se),
    densidad_H1 = dnorm(x, mu1, se)
  )

# Creación del gráfico
ggplot(df_plot, aes(x = x)) +
  # 1. Distribuciones superpuestas
  geom_line(aes(y = densidad_H0, color = "H₀: μ ≤ 50"), linewidth = 1.5, alpha = 0.8) +
  geom_line(aes(y = densidad_H1, color = "H₁: μ = 52"), linewidth = 1.5, alpha = 0.8) +
  
  # 2. Área de potencia
  geom_area(data = subset(df_plot, x >= media_critica),
            aes(y = densidad_H1, fill = "Potencia"), alpha = 0.5) +
  
  # 3. Línea crítica
  geom_vline(xintercept = media_critica, 
             linetype = "dashed", color = "#D32F2F", linewidth = 1.2) +
  
  # 4. Anotaciones profesionales
  annotate("text", x = media_critica + 0.1, y = 0.02,
           label = sprintf("Punto crítico\n%.2f", media_critica),
           color = "#D32F2F", size = 4.5, hjust = 0, fontface = "bold") +
  
  annotate("text", x = 53, y = 0.1,
           label = sprintf("Potencia = %.3f\n(%.1f%%)", potencia, potencia*100),
           color = "#1976D2", size = 5, fontface = "bold") +
  
  # 5. Formato y estilo
  labs(
    title = "ANÁLISIS DE POTENCIA - PRUEBA UNILATERAL SUPERIOR",
    subtitle = sprintf("Comparación de medias | n = %d | α = %.2f | σ = %.1f", n, alfa, sigma),
    x = "Media Muestral (x̄)",
    y = "Densidad de Probabilidad",
    color = "Distribución",
    fill = "Concepto"
  ) +
  
  scale_color_manual(values = c("H₀: μ ≤ 50" = "#FF9800", "H₁: μ = 52" = "#303F9F")) +
  scale_fill_manual(values = c("Potencia" = "#2196F3")) +
  
  theme_minimal(base_size = 13) +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 16, color = "#333333"),
    plot.subtitle = element_text(hjust = 0.5, size = 12, color = "#555555"),
    legend.position = "top",
    legend.box = "horizontal",
    legend.title = element_text(face = "bold"),
    panel.grid.major = element_line(color = "gray92"),
    panel.grid.minor = element_blank(),
    axis.title = element_text(size = 13, face = "bold"),
    axis.text = element_text(size = 11),
    plot.background = element_rect(fill = "white", color = NA)
  ) +
  
  scale_x_continuous(breaks = seq(47, 55, 1)) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.05)))

45.5 Ejemplo 3: Prueba de cola inferior

Problema: Se realiza una prueba de hipótesis con \(H_0: \mu = 70\) contra \(H_1: \mu < 70\), con \(\alpha = 0.05\), \(n = 40\), y \(\sigma = 10\). Calcula la potencia de la prueba si la verdadera media poblacional es \(\mu_1 = 68\).

Solución en Markdown:

  1. Especificaciones: \(H_0: \mu = 70\), \(H_1: \mu < 70\), \(\alpha = 0.05\), \(n = 40\), \(\sigma = 10\), \(\mu_1 = 68\).

  2. Región de rechazo bajo \(H_0\): Para una prueba de cola inferior con \(\alpha = 0.05\), el valor crítico de \(z\) es \(-z_{0.05} = -1.645\). Esto corresponde a valores de \(\bar{x}\) tales que: \[\frac{\bar{x} - 70}{10 / \sqrt{40}} < -1.645 \implies \bar{x} < 70 - 1.645 \times 1.581 = 67.39\]

  3. Potencia bajo \(H_1 (\mu = 68)\): Calculamos la probabilidad de que \(\bar{x}\) caiga en la región de rechazo cuando la verdadera media es 68. El estadístico \(z\) bajo \(H_1\) es \(Z' = \frac{\bar{X} - 68}{10 / \sqrt{40}} = \frac{\bar{X} - 68}{1.581}\).

    • Potencia \(= P(\bar{X} < 67.39 | \mu = 68) = P\left(Z' < \frac{67.39 - 68}{1.581}\right) = P(Z' < -0.386) \approx 0.3499\)

Solución en R:

# Especificaciones
mu0 <- 70
mu1 <- 68
alfa <- 0.05
n <- 40
sigma <- 10
se <- sigma / sqrt(n)

# Valor crítico de la media muestral bajo H0
media_critica <- mu0 - qnorm(alfa) * se
cat("Media crítica:", media_critica, "\n")
## Media crítica: 72.60074
# Potencia
potencia <- pnorm(media_critica, mean = mu1, sd = se, lower.tail = TRUE)
cat("Potencia:", potencia, "\n")
## Potencia: 0.9981915
# Visualización de la potencia (continuación)
library(ggplot2)
data.frame(x = seq(65, 75, 0.1)) %>%
  ggplot(aes(x = x)) +
  stat_function(fun = dnorm, args = list(mean = mu0, sd = se), aes(color = "H0"), linewidth = 1) +
  stat_function(fun = dnorm, args = list(mean = mu1, sd = se), aes(color = "H1"), linewidth = 1) +
  geom_vline(xintercept = media_critica, linetype = "dashed", color = "red") +
  annotate("text", x = media_critica - 0.2, y = dnorm(media_critica, mu1, se) + 0.005, label = "Rechazar H0", color = "red") +
  annotate("text", x = (media_critica + 65) / 2, y = dnorm(mu1, mu1, se) / 2, label = paste("Potencia =", round(potencia, 3)), color = "blue") +
  labs(title = "Potencia de la Prueba (Cola Inferior)", x = "Media Muestral", y = "Densidad") +
  scale_color_manual(name = "Hipótesis", values = c("H0" = "black", "H1" = "blue")) +
  theme_minimal()

Mejorando el codigo en R

# ANÁLISIS DE POTENCIA ESTADÍSTICA - PRUEBA UNILATERAL INFERIOR

## PARÁMETROS DEL ESTUDIO ============================================
mu0 <- 70      # Media poblacional bajo hipótesis nula (H₀)
mu1 <- 68      # Media poblacional bajo hipótesis alternativa (H₁)
alfa <- 0.05   # Nivel de significancia (α)
n <- 40        # Tamaño muestral
sigma <- 10    # Desviación estándar poblacional (σ)

## CÁLCULOS ESTADÍSTICOS =============================================
se <- sigma / sqrt(n)  # Error estándar de la media
z_critico <- qnorm(alfa)  # Valor crítico Z para prueba unilateral inferior
media_critica <- mu0 + z_critico * se  # Media muestral crítica

## RESULTADOS ========================================================
cat("\n══════════════════════════════════════════════════════════\n")
## 
## ══════════════════════════════════════════════════════════
cat("         ANÁLISIS DE POTENCIA - PRUEBA UNILATERAL INFERIOR\n")
##          ANÁLISIS DE POTENCIA - PRUEBA UNILATERAL INFERIOR
cat("══════════════════════════════════════════════════════════\n\n")
## ══════════════════════════════════════════════════════════
cat("PARÁMETROS DEL ESTUDIO:\n")
## PARÁMETROS DEL ESTUDIO:
cat(sprintf("• Media H₀ (μ₀): %.1f\n• Media H₁ (μ₁): %.1f\n• α: %.2f\n• n: %d\n• σ: %.1f\n\n",
            mu0, mu1, alfa, n, sigma))
## • Media H₀ (μ₀): 70.0
## • Media H₁ (μ₁): 68.0
## • α: 0.05
## • n: 40
## • σ: 10.0
cat("RESULTADOS ESTADÍSTICOS:\n")
## RESULTADOS ESTADÍSTICOS:
cat(sprintf("• Error estándar (σ/√n): %.3f\n", se))
## • Error estándar (σ/√n): 1.581
cat(sprintf("• Valor crítico Z: %.3f\n", z_critico))
## • Valor crítico Z: -1.645
cat(sprintf("• Media muestral crítica: %.3f\n\n", media_critica))
## • Media muestral crítica: 67.399
potencia <- pnorm(media_critica, mean = mu1, sd = se, lower.tail = TRUE)
cat("POTENCIA ESTADÍSTICA (1-β):\n")
## POTENCIA ESTADÍSTICA (1-β):
cat(sprintf("• Potencia: %.3f (%.1f%%)\n", potencia, potencia*100))
## • Potencia: 0.352 (35.2%)
interpretacion <- if(potencia >= 0.8) {
  "Excelente potencia (≥80%)"
} else if(potencia >= 0.5) {
  "Potencia moderada"
} else {
  "Potencia insuficiente - considere aumentar n"
}
cat(sprintf("\nINTERPRETACIÓN: %s\n", interpretacion))
## 
## INTERPRETACIÓN: Potencia insuficiente - considere aumentar n
cat("══════════════════════════════════════════════════════════\n")
## ══════════════════════════════════════════════════════════
## VISUALIZACIÓN PROFESIONAL =========================================
library(ggplot2)
library(dplyr)

# Datos para el gráfico
df_plot <- data.frame(x = seq(65, 75, 0.01)) %>%
  mutate(
    densidad_H0 = dnorm(x, mu0, se),
    densidad_H1 = dnorm(x, mu1, se)
  )

# Creación del gráfico
ggplot(df_plot, aes(x = x)) +
  # 1. Distribuciones superpuestas
  geom_line(aes(y = densidad_H0, color = "H₀: μ ≥ 70"), linewidth = 1.5, alpha = 0.9) +
  geom_line(aes(y = densidad_H1, color = "H₁: μ = 68"), linewidth = 1.5, alpha = 0.9) +
  
  # 2. Área de potencia
  geom_area(data = subset(df_plot, x <= media_critica),
            aes(y = densidad_H1, fill = "Potencia (1-β)"), alpha = 0.6) +
  
  # 3. Región crítica
  geom_area(data = subset(df_plot, x <= media_critica),
            aes(y = densidad_H0, fill = "Región crítica"), alpha = 0.3) +
  
  # 4. Línea crítica
  geom_vline(xintercept = media_critica, 
             linetype = "dashed", color = "#D32F2F", linewidth = 1.2) +
  
  # 5. Anotaciones
  annotate("text", x = media_critica - 0.2, y = 0.02,
           label = sprintf("Media crítica\n= %.2f", media_critica),
           color = "#D32F2F", size = 4.5, hjust = 1, fontface = "bold") +
  
  annotate("text", x = 66.5, y = 0.1,
           label = sprintf("Potencia = %.3f\n(%.1f%%)", potencia, potencia*100),
           color = "#1976D2", size = 5, fontface = "bold") +
  
  # 6. Formato y estilo
  labs(
    title = "ANÁLISIS DE POTENCIA - PRUEBA UNILATERAL INFERIOR",
    subtitle = sprintf("H₀: μ ≥ %.1f vs H₁: μ < %.1f | n = %d | α = %.2f | σ = %.1f",
                      mu0, mu0, n, alfa, sigma),
    x = "Media Muestral (x̄)",
    y = "Densidad de Probabilidad",
    color = "Distribuciones",
    fill = "Áreas Clave"
  ) +
  
  scale_color_manual(values = c("H₀: μ ≥ 70" = "#FF6D00", "H₁: μ = 68" = "#00695C")) +
  scale_fill_manual(values = c("Potencia (1-β)" = "#1E88E5", "Región crítica" = "#EF5350")) +
  
  theme_minimal(base_size = 13) +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 16, color = "#333333"),
    plot.subtitle = element_text(hjust = 0.5, size = 12, color = "#555555"),
    legend.position = "top",
    legend.box = "horizontal",
    legend.title = element_text(face = "bold"),
    panel.grid.major = element_line(color = "gray92"),
    panel.grid.minor = element_blank(),
    axis.title = element_text(size = 13, face = "bold"),
    axis.text = element_text(size = 11),
    plot.margin = margin(15, 15, 15, 15),
    plot.background = element_rect(fill = "white", color = NA)
  ) +
  
  scale_x_continuous(breaks = seq(65, 75, 1)) +
  scale_y_continuous(expand = expansion(mult = c(0, 0.05)))

46. Potencia de los Contrastes de Proporciones Poblacionales (Grandes Muestras)

La potencia de una prueba de hipótesis para la proporción poblacional es la probabilidad de rechazar correctamente la hipótesis nula (\(H_0\)) cuando la hipótesis alternativa (\(H_1\)) es verdadera. Al igual que con la prueba de la media, la valoración de la potencia es esencial para evaluar la sensibilidad de la prueba y para planificar estudios con una adecuada probabilidad de detectar un efecto real.

46.1. Conceptos Clave

  • Hipótesis Nula (\(H_0\)): \(H_0: p = p_0\)
  • Hipótesis Alternativa (\(H_1\)): Puede ser \(H_1: p = p_1\) (para calcular la potencia contra un valor específico), donde \(p_1 \neq p_0\). Similar a la prueba de la media, la forma de \(H_1\) en la prueba real ( \(\neq, >, <\) ) influirá en la región de rechazo.
  • Nivel de Significancia (\(\alpha\)): La probabilidad de rechazar \(H_0\) cuando es verdadera.
  • Tamaño de la Muestra (\(n\)): El número de observaciones en la muestra.
  • Valor Verdadero de la Proporción bajo \(H_1\) (\(p_1\)): El valor específico de la proporción que asumimos es verdadero para calcular la potencia.
  • Potencia (\(1 - \beta\)): La probabilidad de rechazar \(H_0\) dado que \(p = p_1\).

46.2. Pasos para Calcular la Potencia

  1. Especificar \(H_0\) (\(p_0\)), \(H_1\) (\(p_1\)), \(\alpha\), y \(n\).
  2. Determinar la región de rechazo en términos del estadístico de prueba \(z\) bajo \(H_0\).
    • Para \(H_1: p \neq p_0\): \(|z| > z_{\alpha/2}\)
    • Para \(H_1: p > p_0\): \(z > z_{\alpha}\)
    • Para \(H_1: p < p_0\): \(z < -z_{\alpha}\) donde \(z_{\alpha/2}\) y \(z_{\alpha}\) son los valores críticos de la distribución normal estándar. El estadístico de prueba bajo \(H_0\) es \(z = \frac{\hat{p} - p_0}{\sqrt{\frac{p_0(1 - p_0)}{n}}}\).
  3. Calcular la probabilidad de que el estadístico de prueba caiga en la región de rechazo bajo la hipótesis alternativa (es decir, asumiendo que la proporción poblacional es \(p_1\)).
    • El estadístico de prueba bajo \(H_1\) (cuando \(p = p_1\)) se distribuye aproximadamente normal con media \(p_1\) y desviación estándar \(\sqrt{\frac{p_1(1 - p_1)}{n}}\). Necesitamos encontrar la probabilidad de que una \(\hat{p}\) muestreada de esta distribución caiga en la región de rechazo definida en el paso 2 (transformada a términos de \(\hat{p}\)).
    • Los límites de la región de rechazo en términos de \(\hat{p}\) son: \[\hat{p}_{crítico\_superior} = p_0 + z_{\alpha/2} \sqrt{\frac{p_0(1 - p_0)}{n}} \quad \text{o} \quad p_0 + z_{\alpha} \sqrt{\frac{p_0(1 - p_0)}{n}}\] \[\hat{p}_{crítico\_inferior} = p_0 - z_{\alpha/2} \sqrt{\frac{p_0(1 - p_0)}{n}} \quad \text{o} \quad p_0 - z_{\alpha} \sqrt{\frac{p_0(1 - p_0)}{n}}\] dependiendo de la forma de \(H_1\).
    • La potencia es entonces la probabilidad de que una proporción muestral \(\hat{p}\) (con distribución aproximada \(N(p_1, \frac{p_1(1 - p_1)}{n})\)) caiga fuera de los límites definidos por la región de no rechazo bajo \(H_0\).

46.3. Ejemplo 1: Prueba de dos colas

Problema: Se realiza una prueba de hipótesis con \(H_0: p = 0.50\) contra \(H_1: p \neq 0.50\), con \(\alpha = 0.05\) y \(n = 100\). Calcula la potencia de la prueba si la verdadera proporción poblacional es \(p_1 = 0.58\).

Solución en Markdown:

  1. Especificaciones: \(H_0: p = 0.50\), \(H_1: p \neq 0.50\), \(\alpha = 0.05\), \(n = 100\), \(p_1 = 0.58\).

  2. Región de rechazo bajo \(H_0\): Para una prueba de dos colas con \(\alpha = 0.05\), los valores críticos de \(z\) son \(\pm 1.96\). Los límites críticos para \(\hat{p}\) son: \[\hat{p}_{crítico\_superior} = 0.50 + 1.96 \sqrt{\frac{0.50(1 - 0.50)}{100}} = 0.50 + 1.96 \times 0.05 = 0.598\] \[\hat{p}_{crítico\_inferior} = 0.50 - 1.96 \sqrt{\frac{0.50(1 - 0.50)}{100}} = 0.50 - 1.96 \times 0.05 = 0.402\]

  3. Potencia bajo \(H_1 (p = 0.58)\): La distribución de \(\hat{p}\) bajo \(H_1\) es aproximadamente normal con media \(0.58\) y desviación estándar \(\sqrt{\frac{0.58(1 - 0.58)}{100}} = \sqrt{\frac{0.2436}{100}} \approx 0.0494\).

    • \(P(\hat{p} > 0.598 | p = 0.58) = P\left(Z > \frac{0.598 - 0.58}{0.0494}\right) = P(Z > 0.364) \approx 1 - 0.6421 = 0.3579\)
    • \(P(\hat{p} < 0.402 | p = 0.58) = P\left(Z < \frac{0.402 - 0.58}{0.0494}\right) = P(Z < -3.603) \approx 0.0002\)
    • Potencia \(= 0.3579 + 0.0002 = 0.3581\)

Solución en R:

# Especificaciones
p0 <- 0.50        # Proporción bajo hipótesis nula
p1 <- 0.58        # Proporción alternativa
alfa <- 0.05      # Nivel de significancia
n <- 100          # Tamaño muestral

# Errores estándar
se0 <- sqrt((p0 * (1 - p0)) / n)  # Bajo H0
se1 <- sqrt((p1 * (1 - p1)) / n)  # Bajo H1

# Límites críticos de la proporción muestral bajo H0 (prueba bilateral)
z_critico <- qnorm(1 - alfa/2)
p_critico_superior <- p0 + z_critico * se0
p_critico_inferior <- p0 - z_critico * se0

cat("Proporción crítica superior:", round(p_critico_superior, 4), "\n")
## Proporción crítica superior: 0.598
cat("Proporción crítica inferior:", round(p_critico_inferior, 4), "\n")
## Proporción crítica inferior: 0.402
# Cálculo de la potencia (probabilidad de rechazar H0 cuando H1 es verdadera)
potencia_superior <- pnorm(p_critico_superior, mean = p1, sd = se1, lower.tail = FALSE)
potencia_inferior <- pnorm(p_critico_inferior, mean = p1, sd = se1, lower.tail = TRUE)
potencia_total <- potencia_superior + potencia_inferior

cat("Potencia superior:", round(potencia_superior, 4), "\n")
## Potencia superior: 0.3577
cat("Potencia inferior:", round(potencia_inferior, 4), "\n")
## Potencia inferior: 2e-04
cat("Potencia total:", round(potencia_total, 4), "\n")
## Potencia total: 0.3578
# Visualización de la potencia
library(ggplot2)
library(dplyr)

# Crear secuencia de valores para el gráfico
x_vals <- seq(0.35, 0.70, length.out = 500)
df_plot <- data.frame(x = x_vals) %>%
  mutate(
    y_H0 = dnorm(x, mean = p0, sd = se0),
    y_H1 = dnorm(x, mean = p1, sd = se1)
  )

# Crear el gráfico
ggplot(df_plot, aes(x = x)) +
  # Distribuciones
  geom_line(aes(y = y_H0, color = paste("H0: p =", p0)), linewidth = 1) +
  geom_line(aes(y = y_H1, color = paste("H1: p =", p1)), linewidth = 1) +
  
  # Regiones críticas
  geom_vline(xintercept = c(p_critico_inferior, p_critico_superior), 
             linetype = "dashed", color = "red") +
  
  # Áreas de potencia
  geom_area(data = subset(df_plot, x >= p_critico_superior),
            aes(y = y_H1), fill = "blue", alpha = 0.3) +
  geom_area(data = subset(df_plot, x <= p_critico_inferior),
            aes(y = y_H1), fill = "blue", alpha = 0.3) +
  
  # Etiquetas
  annotate("text", x = p_critico_superior + 0.02, y = 3, 
           label = "Límite crítico", color = "red", hjust = 0) +
  annotate("text", x = p_critico_inferior - 0.02, y = 3, 
           label = "Límite crítico", color = "red", hjust = 1) +
  annotate("text", x = p_critico_superior + 0.05, y = 10, 
           label = paste("Potencia superior =", round(potencia_superior, 3)), 
           color = "darkblue", hjust = 0) +
  annotate("text", x = p_critico_inferior - 0.05, y = 10, 
           label = paste("Potencia inferior =", round(potencia_inferior, 3)), 
           color = "darkblue", hjust = 1) +
  
  # Formato
  labs(title = "Potencia de la Prueba de Proporción (Bilateral)",
       subtitle = paste("Tamaño muestral =", n, "| Nivel de significancia =", alfa),
       x = "Proporción muestral", 
       y = "Densidad",
       color = "Distribución") +
  scale_color_manual(values = c("black", "blue")) +
  theme_minimal() +
  theme(legend.position = "top",
        plot.title = element_text(hjust = 0.5),
        plot.subtitle = element_text(hjust = 0.5))

Región: El gráfico muestra las distribuciones de la proporción muestral bajo \(H_0\) y \(H_1\). Las líneas verticales rojas indican las regiones de rechazo bajo \(H_0\). El área bajo la curva de \(H_1\) que cae en estas regiones es la potencia de la prueba.

46.4. Ejemplo 2: Prueba de cola superior

Problema: Se realiza una prueba de hipótesis con \(H_0: p = 0.30\) contra \(H_1: p > 0.30\), con \(\alpha = 0.01\) y \(n = 200\). Calcula la potencia de la prueba si la verdadera proporción poblacional es \(p_1 = 0.35\).

Solución en Markdown:

  1. Especificaciones: \(H_0: p = 0.30\), \(H_1: p > 0.30\), \(\alpha = 0.01\), \(n = 200\), \(p_1 = 0.35\).

  2. Región de rechazo bajo \(H_0\): Para una prueba de cola superior con \(\alpha = 0.01\), el valor crítico de \(z\) es \(2.33\). El límite crítico para \(\hat{p}\) es: \[\hat{p}_{crítico} = 0.30 + 2.33 \sqrt{\frac{0.30(1 - 0.30)}{200}} = 0.30 + 2.33 \times 0.0324 = 0.3755\]

  3. Potencia bajo \(H_1 (p = 0.35)\): La distribución de \(\hat{p}\) bajo \(H_1\) es aproximadamente normal con media \(0.35\) y desviación estándar \(\sqrt{\frac{0.35(1 - 0.35)}{200}} = \sqrt{\frac{0.2275}{200}} \approx 0.0337\).

    • Potencia \(= P(\hat{p} > 0.3755 | p = 0.35) = P\left(Z > \frac{0.3755 - 0.35}{0.0337}\right) = P(Z > 0.757) \approx 1 - 0.7756 = 0.2244\)

Solución en R:

# Especificaciones
p0 <- 0.30
p1 <- 0.35
alfa <- 0.01
n <- 200
se0 <- sqrt((p0 * (1 - p0)) / n)
se1 <- sqrt((p1 * (1 - p1)) / n)

# Límite crítico de la proporción muestral bajo H0
p_critico <- p0 + qnorm(1 - alfa) * se0
cat("Proporción crítica:", p_critico, "\n")
## Proporción crítica: 0.3753823
# Potencia
potencia <- pnorm(p_critico, mean = p1, sd = se1, lower.tail = FALSE)
cat("Potencia:", potencia, "\n")
## Potencia: 0.2258499
# Visualización de la potencia
library(ggplot2)
library(dplyr) # necesario para usar %>%

hipotesis_labels <- c(H0 = paste("H0: p =", p0), H1 = paste("H1: p =", p1))

data.frame(x = seq(0.20, 0.45, 0.01)) %>%
  ggplot(aes(x = x)) +
  stat_function(fun = dnorm, args = list(mean = p0, sd = se0), aes(color = "H0"), linewidth = 1) +
  stat_function(fun = dnorm, args = list(mean = p1, sd = se1), aes(color = "H1"), linewidth = 1) +
  geom_vline(xintercept = p_critico, linetype = "dashed", color = "red") +
  annotate("text", x = p_critico + 0.015, y = dnorm(p_critico, p1, se1) + 0.5,
           label = "Rechazar H0", color = "red") +
  annotate("text", x = mean(c(p_critico, 0.45)), y = dnorm(p1, p1, se1) / 2,
           label = paste("Potencia =", round(potencia, 3)), color = "blue") +
  labs(title = "Potencia de la Prueba de Proporción (Cola Superior)",
       x = "Proporción Muestral", y = "Densidad") +
  scale_color_manual(name = "Hipótesis",
                     values = c(H0 = "black", H1 = "blue"),
                     labels = hipotesis_labels) +
  theme_minimal() +
  theme(legend.position = "top")

Región: El gráfico muestra las distribuciones de la proporción muestral bajo \(H_0\) y \(H_1\). La línea vertical roja indica la región de rechazo bajo \(H_0\). El área bajo la curva de \(H_1\) a la derecha de esta línea es la potencia de la prueba.

46.5 .Ejemplo 3: Prueba de cola inferior

Problema: Se realiza una prueba de hipótesis con \(H_0: p = 0.75\) contra \(H_1: p < 0.75\), con \(\alpha = 0.05\) y \(n = 150\). Calcula la potencia de la prueba si la verdadera proporción poblacional es \(p_1 = 0.70\).

Solución en Markdown:

  1. Especificaciones: \(H_0: p = 0.75\), \(H_1: p < 0.75\), \(\alpha = 0.05\), \(n = 150\), \(p_1 = 0.70\).

  2. Región de rechazo bajo \(H_0\): Para una prueba de cola inferior con \(\alpha = 0.05\), el valor crítico de \(z\) es \(-1.645\). El límite crítico para \(\hat{p}\) es: \[\hat{p}_{crítico} = 0.75 - 1.645 \sqrt{\frac{0.75(1 - 0.75)}{150}} = 0.75 - 1.645 \times 0.0354 = 0.6917\]

  3. Potencia bajo \(H_1 (p = 0.70)\): La distribución de \(\hat{p}\) bajo \(H_1\) es

Solución en R:

# Especificaciones
p0 <- 0.75
p1 <- 0.70
alfa <- 0.05
n <- 150
se0 <- sqrt((p0 * (1 - p0)) / n)
se1 <- sqrt((p1 * (1 - p1)) / n)

# Límite crítico de la proporción muestral bajo H0 (cola inferior)
p_critico <- p0 - qnorm(1 - alfa) * se0
cat("Proporción crítica:", p_critico, "\n")
## Proporción crítica: 0.6918456
# Potencia (probabilidad de rechazar H0 cuando p = p1)
potencia <- pnorm(p_critico, mean = p1, sd = se1, lower.tail = TRUE)
cat("Potencia:", potencia, "\n")
## Potencia: 0.4137401
# Visualización de la potencia
library(ggplot2)
library(dplyr) # Para usar %>%

hipotesis_labels <- c(H0 = paste("H0: p =", p0), H1 = paste("H1: p =", p1))

data.frame(x = seq(0.60, 0.85, 0.01)) %>%
  ggplot(aes(x = x)) +
  stat_function(fun = dnorm, args = list(mean = p0, sd = se0), aes(color = "H0"), linewidth = 1) +
  stat_function(fun = dnorm, args = list(mean = p1, sd = se1), aes(color = "H1"), linewidth = 1) +
  geom_vline(xintercept = p_critico, linetype = "dashed", color = "red") +
  annotate("text", x = p_critico - 0.01, y = dnorm(p_critico, p1, se1) + 1,
           label = "Rechazar H0", color = "red", hjust = 1) +
  annotate("text", x = (p_critico + 0.60) / 2, y = dnorm(p1, p1, se1) / 2,
           label = paste("Potencia =", round(potencia, 3)), color = "blue") +
  labs(title = "Potencia de la Prueba de Proporción (Cola Inferior)",
       x = "Proporción Muestral", y = "Densidad") +
  scale_color_manual(name = "Hipótesis",
                     values = c(H0 = "black", H1 = "blue"),
                     labels = hipotesis_labels) +
  theme_minimal() +
  theme(legend.position = "top")

I. Pruebas No Paramétricas

47. Pruebas de Bondad de Ajuste - Ji-Cuadrada

Las pruebas de bondad de ajuste se utilizan para determinar si una muestra de datos categóricos se ajusta a una distribución teórica o a una distribución esperada. La prueba de ji-cuadrada es una de las pruebas de bondad de ajuste más comunes.

47.1. Conceptos Clave

  • Datos Categóricos: Datos que se pueden clasificar en categorías discretas.
  • Frecuencias Observadas (\(O_i\)): El número de observaciones en cada categoría de la muestra.
  • Frecuencias Esperadas (\(E_i\)): El número de observaciones que se esperarían en cada categoría bajo la hipótesis nula. Estas se calculan basándose en la distribución teórica o las proporciones esperadas. Para una distribución uniforme con \(k\) categorías y un tamaño de muestra \(n\), \(E_i = n/k\) para todas las categorías. Para otras distribuciones, se basan en las probabilidades teóricas de cada categoría (\(p_i\)) multiplicadas por el tamaño de la muestra (\(E_i = n \times p_i\)).
  • Hipótesis Nula (\(H_0\)): La distribución de las frecuencias observadas se ajusta a la distribución teórica o esperada.
  • Hipótesis Alternativa (\(H_1\) o \(H_a\)): La distribución de las frecuencias observadas no se ajusta a la distribución teórica o esperada.
  • Estadístico de Prueba Ji-Cuadrado (\(\chi^2\)): Mide la discrepancia entre las frecuencias observadas y las frecuencias esperadas: \[ \chi^2 = \sum_{i=1}^{k} \frac{(O_i - E_i)^2}{E_i} \] donde \(k\) es el número de categorías.
  • Grados de Libertad (\(gl\)): El número de categorías independientes en el análisis. Para una prueba de bondad de ajuste simple, \(gl = k - 1\). Si los parámetros de la distribución teórica se estiman a partir de los datos de la muestra, se resta un grado de libertad por cada parámetro estimado.
  • Valor p (p-value): La probabilidad de obtener un estadístico de prueba ji-cuadrado tan grande (o más grande) como el observado, asumiendo que la hipótesis nula es verdadera y que el estadístico de prueba sigue una distribución ji-cuadrado con los grados de libertad apropiados. \(p = P(\chi^2_{gl} \ge \chi^2_{obs})\).
  • Nivel de Significancia (\(\alpha\)): La probabilidad máxima aceptable de rechazar la hipótesis nula cuando es verdadera (Error de Tipo I).
  • Decisión: Se compara el valor p con el nivel de significancia \(\alpha\).
    • Si \(p \le \alpha\), se rechaza la hipótesis nula (\(H_0\)).
    • Si \(p > \alpha\), no se rechaza la hipótesis nula (\(H_0\)).
  • Conclusión: Se interpreta la decisión en el contexto del problema.

47.2. Pasos para la Prueba de Bondad de Ajuste Ji-Cuadrado (Método del Valor p)

  1. Formular las hipótesis nula (\(H_0\)) y alternativa (\(H_1\)) sobre la distribución de los datos.
  2. Especificar el nivel de significancia (\(\alpha\)).
  3. Obtener las frecuencias observadas (\(O_i\)) para cada categoría.
  4. Calcular las frecuencias esperadas (\(E_i\)) para cada categoría bajo la hipótesis nula.
  5. Calcular el estadístico de prueba ji-cuadrado (\(\chi^2\)).
  6. Determinar los grados de libertad (\(gl\)).
  7. Calcular el valor p utilizando la distribución ji-cuadrado con \(gl\) grados de libertad.
  8. Tomar la decisión comparando el valor p con \(\alpha\).
  9. Formular la conclusión en el contexto del problema.

47.3. Ejemplo 1: Bondad de ajuste a una distribución uniforme

Problema: Se lanza un dado 120 veces y se registran las siguientes frecuencias para cada cara:

Cara Frecuencia Observada (\(O_i\))
1 18
2 22
3 20
4 15
5 25
6 20

¿Se ajustan estas frecuencias a una distribución uniforme (es decir, cada cara tiene la misma probabilidad de ocurrir) a un nivel de significancia de \(\alpha = 0.05\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0\): Las frecuencias observadas se ajustan a una distribución uniforme.
    • \(H_1\): Las frecuencias observadas no se ajustan a una distribución uniforme.
  2. Nivel de significancia: \(\alpha = 0.05\)

  3. Frecuencias observadas (\(O_i\)): 18, 22, 20, 15, 25, 20

  4. Frecuencias esperadas (\(E_i\)): Bajo una distribución uniforme con \(n = 120\) y \(k = 6\) caras, \(E_i = 120 / 6 = 20\) para cada cara.

  5. Estadístico de prueba ji-cuadrado: \[ \chi^2 = \sum_{i=1}^{6} \frac{(O_i - E_i)^2}{E_i} = \frac{(18-20)^2}{20} + \frac{(22-20)^2}{20} + \frac{(20-20)^2}{20} + \frac{(15-20)^2}{20} + \frac{(25-20)^2}{20} + \frac{(20-20)^2}{20} \] \[ \chi^2 = \frac{(-2)^2}{20} + \frac{(2)^2}{20} + \frac{(0)^2}{20} + \frac{(-5)^2}{20} + \frac{(5)^2}{20} + \frac{(0)^2}{20} = \frac{4}{20} + \frac{4}{20} + 0 + \frac{25}{20} + \frac{25}{20} + 0 = 0.2 + 0.2 + 0 + 1.25 + 1.25 + 0 = 2.9 \]

  6. Grados de libertad: \(gl = k - 1 = 6 - 1 = 5\)

  7. Valor p: \(p = P(\chi^2_5 \ge 2.9)\). Usando software, \(P(\chi^2_5 \ge 2.9) \approx 0.715\).

  8. Decisión: Como \(p = 0.715 > \alpha = 0.05\), no rechazamos \(H_0\).

  9. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.05 para decir que las frecuencias observadas no se ajustan a una distribución uniforme.

Solución en R:

# Datos
observadas <- c(18, 22, 20, 15, 25, 20)
esperadas <- rep(20, 6)
alfa <- 0.05
gl <- length(observadas) - 1

# Prueba de ji-cuadrado
prueba_chi2 <- chisq.test(observadas, p = rep(1/length(observadas), length(observadas)))
cat("Estadístico ji-cuadrado:", prueba_chi2$statistic, "\n")
## Estadístico ji-cuadrado: 2.9
cat("Valor p:", prueba_chi2$p.value, "\n")
## Valor p: 0.7153995
# Decisión
if (prueba_chi2$p.value <= alfa) {
  cat("Rechazamos la hipótesis nula.\n")
} else {
  cat("No rechazamos la hipótesis nula.\n")
}
## No rechazamos la hipótesis nula.
# Visualización de la región crítica y el valor p
library(ggplot2)
library(dplyr)

# Crear la curva de densidad
x_vals <- seq(0, 20, 0.1)
densidad <- dchisq(x_vals, df = gl)
curva <- data.frame(x = x_vals, y = densidad)

# Valores críticos
chi2_critico <- qchisq(1 - alfa, df = gl)
chi2_obs <- as.numeric(prueba_chi2$statistic)

# Gráfico
ggplot(curva, aes(x = x, y = y)) +
  geom_area(fill = "lightblue", alpha = 0.5) +
  geom_area(data = filter(curva, x >= chi2_critico), fill = "red", alpha = 0.5) +
  geom_area(data = filter(curva, x >= chi2_obs), fill = "yellow", alpha = 0.5) +
  geom_vline(xintercept = chi2_critico, linetype = "dashed", color = "red") +
  geom_vline(xintercept = chi2_obs, color = "blue", linewidth = 1) +
  annotate("text", x = chi2_critico + 1, y = 0.02, label = "chi^2[1-alpha]", color = "red", parse = TRUE) +
  annotate("text", x = chi2_obs + 1, y = 0.05, label = "chi^2[obs]", color = "blue", parse = TRUE) +
  annotate("text", x = 12, y = 0.1, label = paste("p =", round(prueba_chi2$p.value, 3)), color = "black") +
  labs(title = "Prueba de bondad de ajuste Ji-Cuadrado (uniforme)",
       x = expression(chi^2), y = "Densidad") +
  theme_minimal()

Región: El gráfico muestra la distribución ji-cuadrado con 5 grados de libertad. El área roja en la cola derecha representa la región crítica. La línea azul indica el estadístico ji-cuadrado observado. El área amarilla en la cola derecha representa el valor p.

47.4. Ejemplo 2: Bondad de ajuste a proporciones esperadas

Problema: Un genetista espera que la proporción de cuatro fenotipos en una población de plantas sea 9:3:3:1. Observa los siguientes conteos en una muestra de 160 plantas:

Fenotipo Frecuencia Observada (\(O_i\)) Proporción Esperada
A 95 9/16
B 30 3/16
C 28 3/16
D 7 1/16

¿Se ajustan las frecuencias observadas a las proporciones esperadas a un nivel de significancia de \(\alpha = 0.01\)?

Solución en Markdown:

  1. Hipótesis:

    • \(H_0\): Las frecuencias observadas se ajustan a las proporciones esperadas 9:3:3:1.
    • \(H_1\): Las frecuencias observadas no se ajustan a las proporciones esperadas.
  2. Nivel de significancia: \(\alpha = 0.01\)

  3. Frecuencias observadas (\(O_i\)): 95, 30, 28, 7

  4. Frecuencias esperadas (\(E_i\)):

    • A: \(160 \times (9/16) = 90\)
    • B: \(160 \times (3/16) = 30\)
    • C: \(160 \times (3/16) = 30\)
    • D: \(160 \times (1/16) = 10\)
  5. Estadístico de prueba ji-cuadrado: \[ \chi^2 = \sum_{i=1}^{4} \frac{(O_i - E_i)^2}{E_i} = \frac{(95-90)^2}{90} + \frac{(30-30)^2}{30} + \frac{(28-30)^2}{30} + \frac{(7-10)^2}{10} \] \[ \chi^2 = \frac{(5)^2}{90} + \frac{(0)^2}{30} + \frac{(-2)^2}{30} + \frac{(-3)^2}{10} = \frac{25}{90} + 0 + \frac{4}{30} + \frac{9}{10} \approx 0.278 + 0 + 0.133 + 0.9 = 1.311 \]

  6. Grados de libertad: \(gl = k - 1 = 4 - 1 = 3\)

  7. Valor p: \(p = P(\chi^2_3 \ge 1.311)\). Usando software, \(P(\chi^2_3 \ge 1.311) \approx 0.726\).

  8. Decisión: Como \(p = 0.726 > \alpha = 0.01\), no rechazamos \(H_0\).

  9. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.01 para decir que las frecuencias observadas no se ajustan a las proporciones esperadas 9:3:3:1.

Solución en R:

# Datos
observadas <- c(95, 30, 28, 7)
proporciones_esperadas <- c(9/16, 3/16, 3/16, 1/16)
esperadas <- sum(observadas) * proporciones_esperadas
alfa <- 0.01
gl <- length(observadas) - 1

# Prueba de ji-cuadrado
prueba_chi2 <- chisq.test(observadas, p = proporciones_esperadas)
cat("Estadístico ji-cuadrado:", prueba_chi2$statistic, "\n")
## Estadístico ji-cuadrado: 1.311111
cat("Valor p:", prueba_chi2$p.value, "\n")
## Valor p: 0.7264963
# Decisión
if (prueba_chi2$p.value <= alfa) {
  cat("Rechazamos la hipótesis nula.\n")
} else {
  cat("No rechazamos la hipótesis nula.\n")
}
## No rechazamos la hipótesis nula.
# Visualización de la región crítica y el valor p
library(ggplot2)
library(dplyr)

# Crear curva de densidad
x_vals <- seq(0, 20, 0.1)
densidad <- dchisq(x_vals, df = gl)
curva <- data.frame(x = x_vals, y = densidad)

# Valores críticos
chi2_critico <- qchisq(1 - alfa, df = gl)
chi2_obs <- as.numeric(prueba_chi2$statistic)

# Gráfico
ggplot(curva, aes(x = x, y = y)) +
  geom_area(fill = "lightblue", alpha = 0.5) +
  geom_area(data = filter(curva, x >= chi2_critico), fill = "red", alpha = 0.5) +
  geom_area(data = filter(curva, x >= chi2_obs), fill = "yellow", alpha = 0.5) +
  geom_vline(xintercept = chi2_critico, linetype = "dashed", color = "red") +
  geom_vline(xintercept = chi2_obs, color = "blue", linewidth = 1) +
  annotate("text", x = chi2_critico + 1, y = 0.02, label = "chi^2[1-alpha]", color = "red", parse = TRUE) +
  annotate("text", x = chi2_obs + 1, y = 0.05, label = "chi^2[obs]", color = "blue", parse = TRUE) +
  annotate("text", x = 14, y = 0.1, label = paste("p =", round(prueba_chi2$p.value, 3)), color = "black") +
  labs(title = "Prueba de bondad de ajuste Ji-Cuadrado (proporciones esperadas)",
       x = expression(chi^2), y = "Densidad") +
  theme_minimal()

Región: El gráfico muestra la distribución ji-cuadrado con 3 grados de libertad. El área roja en la cola derecha representa la región crítica. La línea azul indica el estadístico ji-cuadrado observado. El área amarilla en la cola derecha representa el valor p.

47.5. Ejemplo 3: Bondad de ajuste a una distribución binomial (parámetro conocido)

Problema: Se lanza una moneda 5 veces repetidamente, y se registra el número de caras obtenidas en cada secuencia de 5 lanzamientos. Se realizan 100 secuencias, y los resultados son:

Número de Caras Frecuencia Observada (\(O_i\))
0 3
1 15
2 30
3 35
4 12
5 5

Se quiere probar si estos resultados se ajustan a una distribución binomial con \(n=5\) y \(p=0.5\) (moneda justa) a un nivel de significancia de \(\alpha = 0.05\).

Solución en Markdown:

  1. Hipótesis:

    • \(H_0\): Las frecuencias observadas se ajustan a una distribución binomial con \(n=5\) y \(p=0.5\).
    • \(H_1\): Las frecuencias observadas no se ajustan a una distribución binomial con \(n=5\) y \(p=0.5\).
  2. Nivel de significancia: \(\alpha = 0.05\)

  3. Frecuencias observadas (\(O_i\)): 3, 15, 30, 35, 12, 5

  4. Frecuencias esperadas (\(E_i\)): Para una binomial con \(n=5\) y \(p=0.5\), la probabilidad de obtener \(k\) caras es \(P(X=k) = \binom{5}{k} (0.5)^k (0.5)^{5-k} = \binom{5}{k} (0.5)^5\). Las frecuencias esperadas para \(N=100\) secuencias son \(E_i = 100 \times P(X=k)\):

    • \(k=0: E_0 = 100 \times \binom{5}{0} (0.5)^5 = 100 \times 1 \times 0.03125 = 3.125\)
    • \(k=1: E_1 = 100 \times \binom{5}{1} (0.5)^5 = 100 \times 5 \times 0.03125 = 15.625\)
    • \(k=2: E_2 = 100 \times \binom{5}{2} (0.5)^5 = 100 \times 10 \times 0.03125 = 31.25\)
    • \(k=3: E_3 = 100 \times \binom{5}{3} (0.5)^5 = 100 \times 10 \times 0.03125 = 31.25\)
    • \(k=4: E_4 = 100 \times \binom{5}{4} (0.5)^5 = 100 \times 5 \times 0.03125 = 15.625\)
    • \(k=5: E_5 = 100 \times \binom{5}{5} (0.5)^5 = 100 \times 1 \times 0.03125 = 3.125\)
  5. Estadístico de prueba ji-cuadrado: \[ \chi^2 = \sum_{i=0}^{5} \frac{(O_i - E_i)^2}{E_i} = \frac{(3-3.125)^2}{3.125} + \frac{(15-15.625)^2}{15.625} + \frac{(30-31.25)^2}{31.25} + \frac{(35-31.25)^2}{31.25} + \frac{(12-15.625)^2}{15.625} + \frac{(5-3.125)^2}{3.125} \] \[ \chi^2 \approx 0.005 + 0.025 + 0.05 + 0.45 + 0.833 + 1.175 = 2.538 \]

  6. Grados de libertad: \(gl = k - 1 = 6 - 1 = 5\)

  7. Valor p: \(p = P(\chi^2_5 \ge 2.538)\). Usando software, \(P(\chi^2_5 \ge 2.538) \approx 0.770\).

  8. Decisión: Como \(p = 0.770 > \alpha = 0.05\), no rechazamos \(H_0\).

  9. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.05 para decir que las frecuencias observadas no se ajustan a una distribución binomial con \(n=5\) y \(p=0.5\).

Solución en R:

# Datos
observadas <- c(3, 15, 30, 35, 12, 5)
n_lanzamientos <- 5
p_esperado <- 0.5
n_secuencias <- sum(observadas)
esperadas <- dbinom(0:n_lanzamientos, size = n_lanzamientos, prob = p_esperado) * n_secuencias
alfa <- 0.05
gl <- length(observadas) - 1

# Prueba de ji-cuadrado (con frecuencias esperadas explícitas)
prueba_chi2 <- chisq.test(x = observadas, p = dbinom(0:n_lanzamientos, size = n_lanzamientos, prob = p_esperado), rescale.p = TRUE)
## Warning in chisq.test(x = observadas, p = dbinom(0:n_lanzamientos, size =
## n_lanzamientos, : Chi-squared approximation may be incorrect
cat("Estadístico ji-cuadrado:", prueba_chi2$statistic, "\n")
## Estadístico ji-cuadrado: 2.496
cat("Valor p:", prueba_chi2$p.value, "\n")
## Valor p: 0.7770974
# Decisión
if (prueba_chi2$p.value <= alfa) {
  cat("Rechazamos la hipótesis nula.\n")
} else {
  cat("No rechazamos la hipótesis nula.\n")
}
## No rechazamos la hipótesis nula.
# Visualización de la región crítica y el valor p
library(ggplot2)
library(dplyr)

# Preparar curva chi-cuadrado
x_vals <- seq(0, 20, 0.1)
curva <- data.frame(x = x_vals, y = dchisq(x_vals, df = gl))

# Valores críticos
chi2_critico <- qchisq(1 - alfa, df = gl)
chi2_obs <- as.numeric(prueba_chi2$statistic)

# Gráfico
ggplot(curva, aes(x = x, y = y)) +
  geom_area(fill = "lightblue", alpha = 0.5) +
  geom_area(data = filter(curva, x >= chi2_critico), fill = "red", alpha = 0.5) +
  geom_area(data = filter(curva, x >= chi2_obs), fill = "yellow", alpha = 0.5) +
  geom_vline(xintercept = chi2_critico, linetype = "dashed", color = "red") +
  geom_vline(xintercept = chi2_obs, color = "blue", linewidth = 1) +
  annotate("text", x = chi2_critico + 1, y = 0.02, label = "chi^2[1-alpha]", color = "red", parse = TRUE) +
  annotate("text", x = chi2_obs + 1, y = 0.05, label = "chi^2[obs]", color = "blue", parse = TRUE) +
  annotate("text", x = 14, y = 0.1, label = paste("p =", round(prueba_chi2$p.value, 3)), color = "black") +
  labs(title = "Prueba de bondad de ajuste Ji-Cuadrado (binomial)",
       x = expression(chi^2), y = "Densidad") +
  theme_minimal()

Región: El gráfico muestra la distribución ji-cuadrado con 5 grados de libertad. El área roja en la cola derecha representa la región crítica. La línea azul indica el estadístico ji-cuadrado observado. El área amarilla en la cola derecha representa el valor p.

47.6. Ejemplo 4: Bondad de ajuste a una distribución de Poisson (parámetro estimado)

Problema: Se registran el número de accidentes automovilísticos en un cruce concurrido durante 50 días. Los resultados son:

Número de Accidentes Frecuencia Observada
0 32
1 12
2 6
3 0
\(\ge 4\) 0

Se quiere probar si estos datos se ajustan a una distribución de Poisson. Primero, se estima el parámetro \(\lambda\) (tasa promedio) a partir de los datos de la muestra.

Solución en Markdown:

  1. Hipótesis:

    • \(H_0\): Las frecuencias observadas se ajustan a una distribución de Poisson.
    • \(H_1\): Las frecuencias observadas no se ajustan a una distribución de Poisson.
  2. Nivel de significancia: \(\alpha = 0.05\)

  3. Frecuencias observadas (\(O_i\)): 32 (para 0), 12 (para 1), 6 (para 2), 0 (para 3), 0 (para \(\ge 4\))

  4. Estimación de \(\lambda\): La media muestral es una estimación de \(\lambda\): \[ \bar{x} = \frac{(0 \times 32) + (1 \times 12) + (2 \times 6) + (3 \times 0) + (\ge 4 \times 0)}{50} = \frac{0 + 12 + 12 + 0 + 0}{50} = \frac{24}{50} = 0.48 \] Así, \(\hat{\lambda} = 0.48\).

  5. Frecuencias esperadas (\(E_i\)): Para una Poisson con \(\lambda = 0.48\) y \(N = 50\) días:

    • \(k=0: E_0 = 50 \times \frac{e^{-0.48} (0.48)^0}{0!} = 50 \times 0.6188 = 30.94\)
    • \(k=1: E_1 = 50 \times \frac{e^{-0.48} (0.48)^1}{1!} = 50 \times 0.6188 \times 0.48 = 14.85\)
    • \(k=2: E_2 = 50 \times \frac{e^{-0.48} (0.48)^2}{2!} = 50 \times 0.6188 \times 0.2304 / 2 = 3.56\)
    • \(k=3: E_3 = 50 \times \frac{e^{-0.48} (0.48)^3}{3!} = 50 \times 0.6188 \times 0.1106 / 6 = 0.57\)
    • \(k \ge 4\): La probabilidad es muy baja, y para asegurar frecuencias esperadas mínimas, combinamos las categorías 3 y \(\ge 4\): \(O_{3+} = 0 + 0 = 0\), \(E_{3+} = 0.57 + 50 \times (1 - ppois(2, 0.48)) = 0.57 + 50 \times (1 - 0.993) = 0.57 + 0.35 = 0.92\) (aproximado)
  6. Estadístico de prueba ji-cuadrado: \[ \chi^2 = \frac{(32-30.94)^2}{30.94} + \frac{(12-14.85)^2}{14.85} + \frac{(6-3.56)^2}{3.56} + \frac{(0-0.92)^2}{0.92} \] \[ \chi^2 \approx 0.037 + 0.537 + 1.735 + 0.920 = 3.229 \]

  7. Grados de libertad: \(gl = k - 1 - p = 4 - 1 - 1 = 2\) (4 categorías después de combinar, -1 por la prueba, -1 por el parámetro \(\lambda\) estimado)

  8. Valor p: \(p = P(\chi^2_2 \ge 3.229)\). Usando software, \(P(\chi^2_2 \ge 3.229) \approx 0.199\).

  9. Decisión: Como \(p = 0.199 > \alpha = 0.05\), no rechazamos \(H_0\).

  10. Conclusión: No hay evidencia estadística suficiente al nivel de significancia de 0.05 para decir que el número de accidentes no se ajusta a una distribución de Poisson.

Solución en R:

# Datos observados (con las categorías 3 y 4 o más combinadas)
observadas <- c(32, 12, 6, 0)  # Frecuencias de 0, 1, 2 y ≥3
n_dias <- sum(observadas)

# Estimación de lambda (media muestral)
media_muestra <- (0*32 + 1*12 + 2*6 + 3*0) / n_dias  # Se asume 3 para el grupo combinado
lambda_estimado <- media_muestra

# Frecuencias esperadas (última categoría combinada ≥3)
esperadas <- c(dpois(0:2, lambda = lambda_estimado) * n_dias,
               (1 - ppois(2, lambda = lambda_estimado)) * n_dias)

# Verificación de frecuencias esperadas (para evitar valores < 5)
print(round(esperadas, 2))  # Se pueden agrupar más si alguna < 5
## [1] 30.94 14.85  3.56  0.65
# Parámetros
alfa <- 0.05
gl <- length(observadas) - 1 - 1  # grados de libertad: k - 1 - parámetros estimados

# Prueba de bondad de ajuste
prueba_chi2 <- chisq.test(x = observadas,
                          p = c(dpois(0:2, lambda = lambda_estimado),
                                1 - ppois(2, lambda = lambda_estimado)),
                          rescale.p = TRUE)
## Warning in chisq.test(x = observadas, p = c(dpois(0:2, lambda =
## lambda_estimado), : Chi-squared approximation may be incorrect
# Resultados
cat("Estadístico ji-cuadrado:", prueba_chi2$statistic, "\n")
## Estadístico ji-cuadrado: 2.894115
cat("Valor p:", prueba_chi2$p.value, "\n")
## Valor p: 0.4082403
# Decisión
if (prueba_chi2$p.value <= alfa) {
  cat("Rechazamos la hipótesis nula.\n")
} else {
  cat("No rechazamos la hipótesis nula.\n")
}
## No rechazamos la hipótesis nula.
# Visualización
library(ggplot2)
library(dplyr)

x_vals <- seq(0, 10, 0.1)
curva <- data.frame(x = x_vals, y = dchisq(x_vals, df = gl))
chi2_critico <- qchisq(1 - alfa, df = gl)
chi2_obs <- as.numeric(prueba_chi2$statistic)

ggplot(curva, aes(x = x, y = y)) +
  geom_area(fill = "lightblue", alpha = 0.5) +
  geom_area(data = filter(curva, x >= chi2_critico), fill = "red", alpha = 0.5) +
  geom_area(data = filter(curva, x >= chi2_obs), fill = "yellow", alpha = 0.5) +
  geom_vline(xintercept = chi2_critico, linetype = "dashed", color = "red") +
  geom_vline(xintercept = chi2_obs, color = "blue", linewidth = 1) +
  annotate("text", x = chi2_critico + 0.5, y = 0.05, label = "chi^2[1-alpha]", color = "red", parse = TRUE) +
  annotate("text", x = chi2_obs + 0.5, y = 0.1, label = "chi^2[obs]", color = "blue", parse = TRUE) +
  annotate("text", x = 7, y = 0.2, label = paste("p =", round(prueba_chi2$p.value, 3)), color = "black") +
  labs(title = "Prueba de bondad de ajuste Ji-Cuadrado (Poisson)",
       x = expression(chi^2), y = "Densidad") +
  theme_minimal()

Región: El gráfico muestra la distribución ji-cuadrado con 2 grados de libertad. El área roja en la cola derecha representa la región crítica. La línea azul indica el estadístico ji-cuadrado observado. El área amarilla en la cola derecha representa el valor p.

48. Prueba de Independencia (Datos Categóricos) - p-valor

  • La prueba de independencia se utiliza para determinar si existe una relación significativa entre dos o más variables categóricas. En otras palabras, evalúa si la distribución de una variable difiere en función de las categorías de otra variable. La hipótesis nula (\(H_0\)) de esta prueba establece que las variables son independientes (no existe asociación), mientras que la hipótesis alternativa (\(H_1\)) sugiere que las variables son dependientes (existe una asociación).

  • Para llevar a cabo esta prueba, se construye una tabla de contingencia que resume la frecuencia de las observaciones para cada combinación de las categorías de las variables. Luego, se calcula un estadístico de prueba, comúnmente el estadístico Chi-cuadrado (\(\chi^2\)), que mide la discrepancia entre las frecuencias observadas en la tabla de contingencia y las frecuencias esperadas bajo la hipótesis de independencia.

El estadístico Chi-cuadrado se calcula mediante la siguiente fórmula:

\[ \chi^2 = \sum_{i=1}^{r} \sum_{j=1}^{c} \frac{(O_{ij} - E_{ij})^2}{E_{ij}} \]

Donde: - \(O_{ij}\) es la frecuencia observada en la celda \((i, j)\) de la tabla de contingencia. - \(E_{ij}\) es la frecuencia esperada en la celda \((i, j)\) bajo la hipótesis de independencia, calculada como:

\[ E_{ij} = \frac{(\text{Total de la fila } i) \times (\text{Total de la columna } j)}{\text{Total general}} \]

  • El estadístico \(\chi^2\) sigue una distribución Chi-cuadrado con \((r-1)(c-1)\) grados de libertad, donde \(r\) es el número de filas y \(c\) es el número de columnas en la tabla de contingencia.

  • El p-valor es la probabilidad de obtener un estadístico de prueba tan extremo (o más extremo) como el observado, asumiendo que la hipótesis nula es verdadera. En el contexto de la prueba de independencia, un p-valor pequeño (generalmente menor que un nivel de significancia \(\alpha\) predefinido, como 0.05) proporciona evidencia en contra de la hipótesis nula, lo que lleva a rechazarla y concluir que existe una asociación significativa entre las variables categóricas.

Interpretación del p-valor:

  • Si el p-valor \(\leq \alpha\): Se rechaza la hipótesis nula (\(H_0\)). Existe evidencia estadística significativa para concluir que las variables son dependientes.
  • Si el p-valor \(> \alpha\): No se rechaza la hipótesis nula (\(H_0\)). No hay suficiente evidencia estadística para concluir que las variables son dependientes.

48.1. Ejemplo 1: Preferencia de Producto y Género

Se realizó una encuesta para determinar si existe una asociación entre el género de una persona y su preferencia por dos marcas de un producto (A y B). Los resultados se muestran en la siguiente tabla de contingencia:

Género Marca A Marca B Total
Hombre 45 30 75
Mujer 25 50 75
Total 70 80 150

Realizar una prueba de independencia con un nivel de significancia \(\alpha = 0.05\).

Solución en R:

# Tabla de contingencia
tabla <- matrix(c(45, 25, 30, 50), nrow = 2, byrow = TRUE)
colnames(tabla) <- c("Marca A", "Marca B")
rownames(tabla) <- c("Hombre", "Mujer")

# Realizar la prueba de Chi-cuadrado
prueba <- chisq.test(tabla)
print(prueba)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  tabla
## X-squared = 9.6696, df = 1, p-value = 0.001873
# Nivel de significancia
alfa <- 0.05

# Valor crítico de Chi-cuadrado
valor_critico <- qchisq(1 - alfa, df = prueba$parameter)
cat("Valor crítico de Chi-cuadrado:", valor_critico, "\n")
## Valor crítico de Chi-cuadrado: 3.841459
# Visualización de la región de rechazo (aproximada)
x <- seq(0, valor_critico + 10, length.out = 200)
y <- dchisq(x, df = prueba$parameter)
plot(x, y, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado y Región de Rechazo")
abline(v = valor_critico, col = "red", lty = 2)
polygon(c(valor_critico, x[x >= valor_critico], max(x)),
        c(0, y[x >= valor_critico], 0),
        col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico observado =", round(prueba$statistic, 3)),
       col = "blue", lty = 2)

Interpretación:

El resultado de la prueba de Chi-cuadrado (impreso por R) proporcionará el estadístico \(\chi^2\), los grados de libertad y el p-valor. Si el p-valor es menor que \(\alpha = 0.05\), rechazaremos la hipótesis nula y concluiremos que existe una asociación significativa entre el género y la preferencia de la marca. La gráfica muestra la distribución Chi-cuadrado con los grados de libertad correspondientes, la región de rechazo (en rojo) definida por el valor crítico, y la ubicación del estadístico de prueba observado (en azul).

48.2. Ejemplo 2: Nivel Educativo y Opinión sobre una Política

Se encuestó a un grupo de personas sobre su nivel educativo y su opinión sobre una nueva política gubernamental (A favor, En contra, Neutral). Los resultados son:

Nivel Educativo A Favor En Contra Neutral Total
Primaria 20 15 10 45
Secundaria 30 25 20 75
Universidad 40 35 30 105
Total 90 75 60 225

Realizar una prueba de independencia con \(\alpha = 0.01\).

Solución en R:

# Tabla de contingencia
tabla2 <- matrix(c(20, 30, 40, 15, 25, 35, 10, 20, 30), nrow = 3, byrow = TRUE)
colnames(tabla2) <- c("A Favor", "En Contra", "Neutral")
rownames(tabla2) <- c("Primaria", "Secundaria", "Universidad")

# Realizar la prueba de Chi-cuadrado
prueba2 <- chisq.test(tabla2)
print(prueba2)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla2
## X-squared = 0.79365, df = 4, p-value = 0.9393
# Nivel de significancia
alfa2 <- 0.01

# Valor crítico de Chi-cuadrado
valor_critico2 <- qchisq(1 - alfa2, df = prueba2$parameter)
cat("Valor crítico de Chi-cuadrado:", valor_critico2, "\n")
## Valor crítico de Chi-cuadrado: 13.2767
# Visualización de la región de rechazo
x2 <- seq(0, valor_critico2 + 15, length.out = 200)
y2 <- dchisq(x2, df = prueba2$parameter)
plot(x2, y2, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado y Región de Rechazo")
abline(v = valor_critico2, col = "red", lty = 2)
polygon(c(valor_critico2, x2[x2 >= valor_critico2], max(x2)),
        c(0, y2[x2 >= valor_critico2], 0),
        col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba2$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico observado =", round(prueba2$statistic, 3)),
       col = "blue", lty = 2)

Interpretación:

Similar al Ejemplo 1, el resultado de chisq.test(tabla2) mostrará el estadístico \(\chi^2\), los grados de libertad y el p-valor. Compara el p-valor con \(\alpha = 0.01\) para tomar una decisión sobre la hipótesis nula. La gráfica ilustra la región de rechazo para este nivel de significancia.

48.3. Ejemplo 3: Color de Ojos y Color de Cabello

Se observó el color de ojos y el color de cabello de un grupo de individuos para investigar si existe alguna relación entre estas dos características. Los datos se resumen a continuación:

Color de Ojos Rubio Castaño Moreno Total
Azul 25 30 15 70
Verde 10 20 10 40
Marrón 15 40 35 90
Total 50 90 60 200

Realizar una prueba de independencia con \(\alpha = 0.05\).

Solución en R:

# Tabla de contingencia
tabla3 <- matrix(c(25, 10, 15, 30, 20, 40, 15, 10, 35), nrow = 3, byrow = TRUE)
colnames(tabla3) <- c("Rubio", "Castaño", "Moreno")
rownames(tabla3) <- c("Azul", "Verde", "Marrón")

# Realizar la prueba de Chi-cuadrado
prueba3 <- chisq.test(tabla3)
print(prueba3)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla3
## X-squared = 10.432, df = 4, p-value = 0.03375
# Nivel de significancia
alfa3 <- 0.05

# Valor crítico de Chi-cuadrado
valor_critico3 <- qchisq(1 - alfa3, df = prueba3$parameter)
cat("Valor crítico de Chi-cuadrado:", valor_critico3, "\n")
## Valor crítico de Chi-cuadrado: 9.487729
# Visualización de la región de rechazo
x3 <- seq(0, valor_critico3 + 20, length.out = 200)
y3 <- dchisq(x3, df = prueba3$parameter)
plot(x3, y3, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado y Región de Rechazo")
abline(v = valor_critico3, col = "red", lty = 2)
polygon(c(valor_critico3, x3[x3 >= valor_critico3], max(x3)),
        c(0, y3[x3 >= valor_critico3], 0),
        col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba3$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico observado =", round(prueba3$statistic, 3)),
       col = "blue", lty = 2)

Interpretación:

Analiza el p-valor obtenido de chisq.test(tabla3) en comparación con \(\alpha = 0.05\) para determinar si existe una asociación significativa entre el color de ojos y el color de cabello. La gráfica muestra la distribución Chi-cuadrado y la región de rechazo correspondiente.

48.4. Ejemplo 4: Método de Aprendizaje y Rendimiento Académico

Un estudio investigó si el método de aprendizaje utilizado por estudiantes (Online, Presencial, Blended) está asociado con su rendimiento académico (Aprobado, Reprobado). Los datos recolectados son:

Método de Aprendizaje Aprobado Reprobado Total
Online 60 20 80
Presencial 75 15 90
Blended 70 10 80
Total 205 45 250

Realizar una prueba de independencia con \(\alpha = 0.10\).

Solución en R:

# Tabla de contingencia
tabla4 <- matrix(c(60, 75, 70, 20, 15, 10), nrow = 3, byrow = TRUE)
colnames(tabla4) <- c("Aprobado", "Reprobado")
rownames(tabla4) <- c("Online", "Presencial", "Blended")

# Realizar la prueba de Chi-cuadrado
prueba4 <- chisq.test(tabla4)
print(prueba4)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla4
## X-squared = 24.676, df = 2, p-value = 4.382e-06
# Nivel de significancia
alfa4 <- 0.10

# Valor crítico de Chi-cuadrado
valor_critico4 <- qchisq(1 - alfa4, df = prueba4$parameter)
cat("Valor crítico de Chi-cuadrado:", valor_critico4, "\n")
## Valor crítico de Chi-cuadrado: 4.60517
# Visualización de la región de rechazo
x4 <- seq(0, valor_critico4 + 10, length.out = 200)
y4 <- dchisq(x4, df = prueba4$parameter)
plot(x4, y4, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado y Región de Rechazo")
abline(v = valor_critico4, col = "red", lty = 2)
polygon(c(valor_critico4, x4[x4 >= valor_critico4], max(x4)),
        c(0, y4[x4 >= valor_critico4], 0),
        col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba4$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico observado =", round(prueba4$statistic, 3)),
       col = "blue", lty = 2)

Interpretación:

Compara el p-valor resultante de chisq.test(tabla4) con \(\alpha = 0.10\) para determinar si hay evidencia de una asociación entre el método de aprendizaje y el rendimiento académico. La gráfica ilustra la región de rechazo para este nivel de significancia.

49. Prueba de Homogeneidad - p-valor

  • La prueba de homogeneidad se utiliza para determinar si las proporciones de una variable categórica son las mismas en dos o más poblaciones o grupos diferentes. En esencia, evalúa si la distribución de una variable categórica es homogénea a través de los distintos grupos. La hipótesis nula (\(H_0\)) de esta prueba establece que las proporciones de la variable categórica son las mismas en todos los grupos, mientras que la hipótesis alternativa (\(H_1\)) sugiere que al menos una de las proporciones difiere.

  • Al igual que la prueba de independencia, la prueba de homogeneidad se basa en la construcción de una tabla de contingencia que resume las frecuencias observadas de la variable categórica para cada grupo. El estadístico de prueba utilizado también es el Chi-cuadrado (\(\chi^2\)), que mide la discrepancia entre las frecuencias observadas y las frecuencias esperadas bajo la hipótesis de homogeneidad.

  • La fórmula para el estadístico Chi-cuadrado es la misma que en la prueba de independencia:

\[ \chi^2 = \sum_{i=1}^{r} \sum_{j=1}^{c} \frac{(O_{ij} - E_{ij})^2}{E_{ij}} \]

  • Donde:
  • \(O_{ij}\) es la frecuencia observada en la celda \((i, j)\) de la tabla de contingencia (grupo \(j\), categoría \(i\)).
  • \(E_{ij}\) es la frecuencia esperada en la celda \((i, j)\) bajo la hipótesis de homogeneidad, calculada de la misma manera:

\[ E_{ij} = \frac{(\text{Total del grupo } j) \times (\text{Total de la categoría } i)}{\text{Total general}} \]

  • El estadístico \(\chi^2\) sigue una distribución Chi-cuadrado con \((r-1)(c-1)\) grados de libertad, donde \(r\) es el número de categorías de la variable y \(c\) es el número de grupos.

  • El p-valor representa la probabilidad de observar una diferencia en las proporciones tan grande (o más grande) como la observada en las muestras, asumiendo que las proporciones reales en las poblaciones o grupos son las mismas (hipótesis nula verdadera). Un p-valor pequeño (típicamente menor que el nivel de significancia \(\alpha\)) proporciona evidencia en contra de la hipótesis nula, lo que lleva a rechazarla y concluir que las proporciones de la variable categórica no son homogéneas entre los grupos.

Interpretación del p-valor:

  • Si el p-valor \(\leq \alpha\): Se rechaza la hipótesis nula (\(H_0\)). Existe evidencia estadística significativa para concluir que las proporciones de la variable categórica no son las mismas en todos los grupos.
  • Si el p-valor \(> \alpha\): No se rechaza la hipótesis nula (\(H_0\)). No hay suficiente evidencia estadística para concluir que las proporciones de la variable categórica difieren entre los grupos.

49.1. Ejemplo 1: Preferencia de Marca por Región

Se realizó una encuesta en tres regiones diferentes para comparar la preferencia por tres marcas de un producto (X, Y, Z). Los resultados fueron:

Región Marca X Marca Y Marca Z Total
Norte 60 45 35 140
Centro 75 50 40 165
Sur 55 60 30 145
Total 190 155 105 450

Realizar una prueba de homogeneidad para determinar si la distribución de preferencias de marca es la misma en las tres regiones (\(\alpha = 0.05\)).

Solución en R:

# Tabla de contingencia
tabla_region <- matrix(c(60, 75, 55, 45, 50, 60, 35, 40, 30), nrow = 3, byrow = TRUE)
colnames(tabla_region) <- c("Marca X", "Marca Y", "Marca Z")
rownames(tabla_region) <- c("Norte", "Centro", "Sur")

# Realizar la prueba de Chi-cuadrado de homogeneidad
prueba_region <- chisq.test(tabla_region)
print(prueba_region)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_region
## X-squared = 4.7749, df = 4, p-value = 0.3112
# Nivel de significancia
alfa_region <- 0.05

# Valor crítico de Chi-cuadrado
valor_critico_region <- qchisq(1 - alfa_region, df = prueba_region$parameter)
cat("Valor crítico de Chi-cuadrado:", valor_critico_region, "\n")
## Valor crítico de Chi-cuadrado: 9.487729
# Visualización de la región de rechazo
x_region <- seq(0, valor_critico_region + 15, length.out = 200)
y_region <- dchisq(x_region, df = prueba_region$parameter)
plot(x_region, y_region, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado y Región de Rechazo (Homogeneidad)")
abline(v = valor_critico_region, col = "red", lty = 2)
polygon(c(valor_critico_region, x_region[x_region >= valor_critico_region], max(x_region)),
        c(0, y_region[x_region >= valor_critico_region], 0),
        col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba_region$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico observado =", round(prueba_region$statistic, 3)),
       col = "blue", lty = 2)

Interpretación:

El resultado de chisq.test(tabla_region) mostrará el estadístico \(\chi^2\), los grados de libertad y el p-valor. Compara el p-valor con \(\alpha = 0.05\) para determinar si existe evidencia suficiente para rechazar la hipótesis nula de que la distribución de preferencias de marca es la misma en las tres regiones. La gráfica ilustra la región de rechazo basada en el valor crítico de la distribución Chi-cuadrado.

49.2. Ejemplo 2: Satisfacción del Cliente por Tipo de Producto

Una empresa desea saber si el nivel de satisfacción del cliente (Alto, Medio, Bajo) es el mismo para tres tipos de productos diferentes (A, B, C). Se recolectaron los siguientes datos:

Tipo de Producto Alto Medio Bajo Total
A 80 50 20 150
B 65 70 15 150
C 70 60 20 150
Total 215 180 55 450

Realizar una prueba de homogeneidad con un nivel de significancia \(\alpha = 0.01\).

Solución en R:

# Tabla de contingencia
tabla_satisfaccion <- matrix(c(80, 65, 70, 50, 70, 60, 20, 15, 20), nrow = 3, byrow = TRUE)
colnames(tabla_satisfaccion) <- c("Alto", "Medio", "Bajo")
rownames(tabla_satisfaccion) <- c("A", "B", "C")

# Realizar la prueba de Chi-cuadrado de homogeneidad
prueba_satisfaccion <- chisq.test(tabla_satisfaccion)
print(prueba_satisfaccion)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_satisfaccion
## X-squared = 5.8703, df = 4, p-value = 0.209
# Nivel de significancia
alfa_satisfaccion <- 0.01

# Valor crítico de Chi-cuadrado
valor_critico_satisfaccion <- qchisq(1 - alfa_satisfaccion, df = prueba_satisfaccion$parameter)
cat("Valor crítico de Chi-cuadrado:", valor_critico_satisfaccion, "\n")
## Valor crítico de Chi-cuadrado: 13.2767
# Visualización de la región de rechazo
x_satisfaccion <- seq(0, valor_critico_satisfaccion + 20, length.out = 200)
y_satisfaccion <- dchisq(x_satisfaccion, df = prueba_satisfaccion$parameter)
plot(x_satisfaccion, y_satisfaccion, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado y Región de Rechazo (Homogeneidad)")
abline(v = valor_critico_satisfaccion, col = "red", lty = 2)
polygon(c(valor_critico_satisfaccion, x_satisfaccion[x_satisfaccion >= valor_critico_satisfaccion], max(x_satisfaccion)),
        c(0, y_satisfaccion[x_satisfaccion >= valor_critico_satisfaccion], 0),
        col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba_satisfaccion$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico observado =", round(prueba_satisfaccion$statistic, 3)),
       col = "blue", lty = 2)

Interpretación:

Examina el p-valor resultante de chisq.test(tabla_satisfaccion) en relación con \(\alpha = 0.01\) para determinar si hay diferencias significativas en la distribución de la satisfacción del cliente entre los tres tipos de productos. La gráfica muestra la región de rechazo para este nivel de significancia.

49.3. Ejemplo 3: Método de Enseñanza y Aprobación por Grupo

Se compararon tres métodos de enseñanza (Tradicional, Interactivo, Online) en tres grupos de estudiantes para ver si la tasa de aprobación es homogénea entre los métodos. Los resultados fueron:

Método de Enseñanza Grupo 1 (Aprobados) Grupo 1 (No Aprobados) Grupo 1 Total Grupo 2 (Aprobados) Grupo 2 (No Aprobados) Grupo 2 Total Grupo 3 (Aprobados) Grupo 3 (No Aprobados) Grupo 3 Total
Tradicional 35 15 50 40 10 50 30 20 50
Interactivo 40 10 50 45 5 50 38 12 50
Online 30 20 50 35 15 50 42 8 50

Para realizar la prueba de homogeneidad, combinamos los datos en una tabla donde las columnas son Aprobado y No Aprobado, y las filas son los métodos de enseñanza.

Método de Enseñanza Aprobado No Aprobado Total
Tradicional 105 45 150
Interactivo 123 27 150
Online 107 43 150
Total 335 115 450

Realizar una prueba de homogeneidad con \(\alpha = 0.05\).

Solución en R:

# Tabla de contingencia
tabla_ensenanza <- matrix(c(105, 123, 107, 45, 27, 43), nrow = 3, byrow = TRUE)
colnames(tabla_ensenanza) <- c("Aprobado", "No Aprobado")
rownames(tabla_ensenanza) <- c("Tradicional", "Interactivo", "Online")

# Realizar la prueba de Chi-cuadrado de homogeneidad
prueba_ensenanza <- chisq.test(tabla_ensenanza)
print(prueba_ensenanza)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_ensenanza
## X-squared = 28.737, df = 2, p-value = 5.753e-07
# Nivel de significancia
alfa_ensenanza <- 0.05

# Valor crítico de Chi-cuadrado
valor_critico_ensenanza <- qchisq(1 - alfa_ensenanza, df = prueba_ensenanza$parameter)
cat("Valor crítico de Chi-cuadrado:", valor_critico_ensenanza, "\n")
## Valor crítico de Chi-cuadrado: 5.991465
# Visualización de la región de rechazo
x_ensenanza <- seq(0, valor_critico_ensenanza + 10, length.out = 200)
y_ensenanza <- dchisq(x_ensenanza, df = prueba_ensenanza$parameter)
plot(x_ensenanza, y_ensenanza, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado y Región de Rechazo (Homogeneidad)")
abline(v = valor_critico_ensenanza, col = "red", lty = 2)
polygon(c(valor_critico_ensenanza, x_ensenanza[x_ensenanza >= valor_critico_ensenanza], max(x_ensenanza)),
        c(0, y_ensenanza[x_ensenanza >= valor_critico_ensenanza], 0),
        col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba_ensenanza$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico observado =", round(prueba_ensenanza$statistic, 3)),
       col = "blue", lty = 2)

Interpretación:

Evalúa el p-valor obtenido de chisq.test(tabla_ensenanza) en comparación con \(\alpha = 0.05\) para determinar si la proporción de aprobados y no aprobados varía significativamente entre los diferentes métodos de enseñanza. La gráfica ilustra la región de rechazo.

49.4. Ejemplo 4: Opinión Política por Grupo de Edad

Se encuestó a personas de tres grupos de edad diferentes sobre su opinión política (Conservador, Liberal, Otro). Los resultados fueron:

Grupo de Edad Conservador Liberal Otro Total
18-30 40 60 20 120
31-50 55 50 15 120
51+ 70 35 15 120
Total 165 145 50 360

Realizar una prueba de homogeneidad con \(\alpha = 0.10\).

Solución en R:

# Tabla de contingencia
tabla_edad_opinion <- matrix(c(40, 55, 70, 60, 50, 35, 20, 15, 15), nrow = 3, byrow = TRUE)
colnames(tabla_edad_opinion) <- c("Conservador", "Liberal", "Otro")
rownames(tabla_edad_opinion) <- c("18-30", "31-50", "51+")

# Realizar la prueba de Chi-cuadrado de homogeneidad
prueba_edad_opinion <- chisq.test(tabla_edad_opinion)
print(prueba_edad_opinion)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_edad_opinion
## X-squared = 15.734, df = 4, p-value = 0.003398
# Nivel de significancia
alfa_edad_opinion <- 0.10

# Valor crítico de Chi-cuadrado
valor_critico_edad_opinion <- qchisq(1 - alfa_edad_opinion,df = prueba_edad_opinion$parameter)
cat("Valor crítico de Chi-cuadrado:", valor_critico_edad_opinion, "\n")
## Valor crítico de Chi-cuadrado: 7.77944
# Visualización de la región de rechazo
x_edad_opinion <- seq(0, valor_critico_edad_opinion + 15, length.out = 200)
y_edad_opinion <- dchisq(x_edad_opinion, df = prueba_edad_opinion$parameter)
plot(x_edad_opinion, y_edad_opinion, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado y Región de Rechazo (Homogeneidad)")
abline(v = valor_critico_edad_opinion, col = "red", lty = 2)
polygon(c(valor_critico_edad_opinion, x_edad_opinion[x_edad_opinion >= valor_critico_edad_opinion], max(x_edad_opinion)),
        c(0, y_edad_opinion[x_edad_opinion >= valor_critico_edad_opinion], 0),
        col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba_edad_opinion$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico observado =", round(prueba_edad_opinion$statistic, 3)),
       col = "blue", lty = 2)                                     

50. Prueba de Kolmogorov-Smirnov (K-S) - p-valor

  • La prueba de Kolmogorov-Smirnov (K-S) es una prueba no paramétrica que se utiliza para comparar la función de distribución acumulativa (FDA) de una muestra con una FDA teórica especificada, o para comparar las FDAs de dos muestras independientes. A diferencia de las pruebas paramétricas que asumen una distribución específica para los datos (como la normal), la prueba K-S no hace tales suposiciones.

  • Existen dos variantes principales de la prueba K-S:

  1. Prueba de una muestra: Compara la FDA de una muestra con una FDA teórica continua (por ejemplo, normal, exponencial, uniforme). La hipótesis nula (\(H_0\)) es que la FDA de la muestra es la misma que la FDA teórica especificada. La hipótesis alternativa (\(H_1\)) es que las FDAs son diferentes.

  2. Prueba de dos muestras: Compara las FDAs de dos muestras independientes. La hipótesis nula (\(H_0\)) es que las FDAs de las dos poblaciones de las que provienen las muestras son idénticas. La hipótesis alternativa (\(H_1\)) es que las FDAs son diferentes.

  • El estadístico de prueba K-S (\(D\)) se basa en la mayor diferencia absoluta vertical entre las dos FDAs que se están comparando.

  • Para la prueba de una muestra, el estadístico \(D\) se define como:

\[ D = \sup_x |F_n(x) - F_0(x)| \]

  • Donde:

  • \(F_n(x)\) es la FDA empírica de la muestra.

  • \(F_0(x)\) es la FDA teórica especificada.

  • \(\sup_x\) denota el supremo (el menor límite superior) sobre todos los valores de \(x\).

  • Para la prueba de dos muestras, el estadístico \(D\) se define como:

\[ D = \sup_x |F_{n_1}(x) - F_{n_2}(x)| \]

  • Donde:

  • \(F_{n_1}(x)\) es la FDA empírica de la primera muestra (tamaño \(n_1\)).

  • \(F_{n_2}(x)\) es la FDA empírica de la segunda muestra (tamaño \(n_2\)).

  • El p-valor asociado con la prueba K-S es la probabilidad de obtener un estadístico de prueba \(D\) tan grande (o más grande) como el observado, asumiendo que la hipótesis nula es verdadera. Un p-valor pequeño (generalmente menor que el nivel de significancia \(\alpha\)) proporciona evidencia en contra de la hipótesis nula, lo que lleva a rechazarla y concluir que las distribuciones son diferentes.

Interpretación del p-valor:

  • Si el p-valor \(\leq \alpha\): Se rechaza la hipótesis nula (\(H_0\)). Existe evidencia estadística significativa para concluir que la distribución de la muestra es diferente de la distribución teórica (prueba de una muestra) o que las distribuciones de las dos muestras son diferentes (prueba de dos muestras).
  • Si el p-valor \(> \alpha\): No se rechaza la hipótesis nula (\(H_0\)). No hay suficiente evidencia estadística para concluir que las distribuciones son diferentes.

50.1. Ejemplo 1: Prueba de una muestra contra una distribución normal**

Se generó una muestra de 50 observaciones y se desea probar si provienen de una distribución normal con media 5 y desviación estándar 2 (\(\alpha = 0.05\)).

Solución en R:

# Generar datos de ejemplo
set.seed(123)
muestra <- rnorm(50, mean = 5, sd = 2.5) # Intencionalmente diferente para el ejemplo

# Realizar la prueba K-S contra una distribución normal
prueba_ks_norm <- ks.test(muestra, "pnorm", mean = 5, sd = 2)
print(prueba_ks_norm)
## 
##  Exact one-sample Kolmogorov-Smirnov test
## 
## data:  muestra
## D = 0.085326, p-value = 0.8296
## alternative hypothesis: two-sided
# Nivel de significancia
alfa_norm <- 0.05

# Visualización de las FDAs
orden_muestra <- sort(muestra)
fda_empirica <- ecdf(muestra)(orden_muestra)
fda_teorica <- pnorm(orden_muestra, mean = 5, sd = 2)

plot(orden_muestra, fda_empirica, type = "l", col = "blue",
     xlab = "Valor", ylab = "FDA",
     main = "FDA Empírica vs. Teórica (Normal)")
lines(orden_muestra, fda_teorica, col = "red")
legend("topleft", legend = c("FDA Empírica", "FDA Teórica (N(5, 2))"),
       col = c("blue", "red"), lty = 1)

# Resaltar la diferencia máxima
d_statistic <- prueba_ks_norm$statistic
max_diff_index <- which.max(abs(fda_empirica - fda_teorica))
points(orden_muestra[max_diff_index], fda_empirica[max_diff_index], pch = 19, col = "blue")
points(orden_muestra[max_diff_index], fda_teorica[max_diff_index], pch = 19, col = "red")
segments(orden_muestra[max_diff_index], fda_empirica[max_diff_index],
         orden_muestra[max_diff_index], fda_teorica[max_diff_index],
         lty = 2, col = "purple")
legend("bottomright", legend = paste("Estadístico D =", round(d_statistic, 3)),
       col = "purple", lty = 2, pch = NA)

Interpretación:

El resultado de ks.test() proporcionará el estadístico D y el p-valor. Si el p-valor es menor que \(\alpha = 0.05\), rechazaremos la hipótesis nula y concluiremos que la muestra no proviene de una distribución normal con media 5 y desviación estándar 2. La gráfica muestra la FDA empírica de la muestra (azul) y la FDA teórica normal (roja), con la diferencia máxima resaltada.

50.2. Ejemplo 2: Prueba de una muestra contra una distribución exponencial**

Se tiene un conjunto de datos que representan los tiempos entre fallas de un sistema. Se desea probar si estos tiempos siguen una distribución exponencial con una tasa de \(\lambda = 0.5\) (\(\alpha = 0.10\)).

Solución en R:

# Generar datos de ejemplo
set.seed(456)
tiempos <- rexp(40, rate = 0.7) # Intencionalmente diferente

# Realizar la prueba K-S contra una distribución exponencial
prueba_ks_exp <- ks.test(tiempos, "pexp", rate = 0.5)
print(prueba_ks_exp)
## 
##  Exact one-sample Kolmogorov-Smirnov test
## 
## data:  tiempos
## D = 0.18701, p-value = 0.1068
## alternative hypothesis: two-sided
# Nivel de significancia
alfa_exp <- 0.10

# Visualización de las FDAs
orden_tiempos <- sort(tiempos)
fda_empirica_exp <- ecdf(tiempos)(orden_tiempos)
fda_teorica_exp <- pexp(orden_tiempos, rate = 0.5)

plot(orden_tiempos, fda_empirica_exp, type = "l", col = "blue",
     xlab = "Tiempo", ylab = "FDA",
     main = "FDA Empírica vs. Teórica (Exponencial)")
lines(orden_tiempos, fda_teorica_exp, col = "red")
legend("topleft", legend = c("FDA Empírica", "FDA Teórica (Exp(0.5))"),
       col = c("blue", "red"), lty = 1)

# Resaltar la diferencia máxima
d_statistic_exp <- prueba_ks_exp$statistic
max_diff_index_exp <- which.max(abs(fda_empirica_exp - fda_teorica_exp))
points(orden_tiempos[max_diff_index_exp], fda_empirica_exp[max_diff_index_exp], pch = 19, col = "blue")
points(orden_tiempos[max_diff_index_exp], fda_teorica_exp[max_diff_index_exp], pch = 19, col = "red")
segments(orden_tiempos[max_diff_index_exp], fda_empirica_exp[max_diff_index_exp],
         orden_tiempos[max_diff_index_exp], fda_teorica_exp[max_diff_index_exp],
         lty = 2, col = "purple")
legend("bottomright", legend = paste("Estadístico D =", round(d_statistic_exp, 3)),
       col = "purple", lty = 2, pch = NA)

Interpretación:

Compara el p-valor con \(\alpha = 0.10\). Si es menor, rechazamos la hipótesis de que los tiempos entre fallas siguen una distribución exponencial con tasa 0.5. La gráfica muestra las FDAs y la diferencia máxima.

50.3. Ejemplo 3: Prueba de dos muestras - Comparación de dos grupos

Se midió el rendimiento de dos grupos de estudiantes utilizando un nuevo método de enseñanza en el Grupo A y un método tradicional en el Grupo B. Se desea saber si las distribuciones de rendimiento son diferentes (\(\alpha = 0.05\)).

Solución en R:

# Generar datos de ejemplo para dos grupos
set.seed(789)
grupo_a <- rnorm(35, mean = 75, sd = 10)
grupo_b <- rnorm(40, mean = 70, sd = 12)

# Realizar la prueba K-S de dos muestras
prueba_ks_dos_muestras <- ks.test(grupo_a, grupo_b)
print(prueba_ks_dos_muestras)
## 
##  Exact two-sample Kolmogorov-Smirnov test
## 
## data:  grupo_a and grupo_b
## D = 0.20714, p-value = 0.3463
## alternative hypothesis: two-sided
# Nivel de significancia
alfa_dos_muestras <- 0.05

# Visualización de las FDAs de los dos grupos
orden_a <- sort(grupo_a)
fda_a <- ecdf(grupo_a)(orden_a)
orden_b <- sort(grupo_b)
fda_b <- ecdf(grupo_b)(orden_b)

plot(orden_a, fda_a, type = "l", col = "blue",
     xlab = "Rendimiento", ylab = "FDA",
     main = "FDA Empírica (Grupo A vs. Grupo B)")
lines(orden_b, fda_b, col = "green")
legend("topleft", legend = c("FDA Grupo A", "FDA Grupo B"),
       col = c("blue", "green"), lty = 1)

# Resaltar la diferencia máxima
d_statistic_dos_muestras <- prueba_ks_dos_muestras$statistic

# Para encontrar la diferencia máxima, necesitamos combinar y ordenar los datos
combinados <- sort(c(grupo_a, grupo_b))
fda_a_combinada <- ecdf(grupo_a)(combinados)
fda_b_combinada <- ecdf(grupo_b)(combinados)
max_diff_dos_muestras_index <- which.max(abs(fda_a_combinada - fda_b_combinada))

points(combinados[max_diff_dos_muestras_index], fda_a_combinada[max_diff_dos_muestras_index], pch = 19, col = "blue")
points(combinados[max_diff_dos_muestras_index], fda_b_combinada[max_diff_dos_muestras_index], pch = 19, col = "green")
segments(combinados[max_diff_dos_muestras_index], fda_a_combinada[max_diff_dos_muestras_index],
         combinados[max_diff_dos_muestras_index], fda_b_combinada[max_diff_dos_muestras_index],
         lty = 2, col = "purple")
legend("bottomright", legend = paste("Estadístico D =", round(d_statistic_dos_muestras, 3)),
       col = "purple", lty = 2, pch = NA)

Interpretación:

Si el p-valor de ks.test(grupo_a, grupo_b) es menor que \(\alpha = 0.05\), rechazaremos la hipótesis nula de que las distribuciones de rendimiento de los dos grupos son las mismas. La gráfica muestra las FDAs empíricas de ambos grupos y la diferencia máxima entre ellas.

50.4. Ejemplo 4: Prueba de dos muestras - Comparación de tiempos de respuesta**

Se midieron los tiempos de respuesta de dos sistemas informáticos diferentes para una misma tarea. Se desea determinar si las distribuciones de los tiempos de respuesta son significativamente diferentes (\(\alpha = 0.10\)).

Solución en R:

# Generar datos de ejemplo para tiempos de respuesta
set.seed(1011)
sistema_x <- rexp(60, rate = 0.2)
sistema_y <- rgamma(55, shape = 2, rate = 0.3)

# Realizar la prueba K-S de dos muestras
prueba_ks_tiempos <- ks.test(sistema_x, sistema_y)
print(prueba_ks_tiempos)
## 
##  Exact two-sample Kolmogorov-Smirnov test
## 
## data:  sistema_x and sistema_y
## D = 0.35303, p-value = 0.001062
## alternative hypothesis: two-sided
# Nivel de significancia
alfa_tiempos <- 0.10

# Visualización de las FDAs de los dos sistemas
orden_x <- sort(sistema_x)
fda_x <- ecdf(sistema_x)(orden_x)
orden_y <- sort(sistema_y)
fda_y <- ecdf(sistema_y)(orden_y)

plot(orden_x, fda_x, type = "l", col = "blue",
     xlab = "Tiempo de Respuesta", ylab = "FDA",
     main = "FDA Empírica (Sistema X vs. Sistema Y)")
lines(orden_y, fda_y, col = "green")
legend("topleft", legend = c("FDA Sistema X", "FDA Sistema Y"),
       col = c("blue", "green"), lty = 1)

# Resaltar la diferencia máxima
d_statistic_tiempos <- prueba_ks_tiempos$statistic

# Encontrar la diferencia máxima
combinados_tiempos <- sort(c(sistema_x, sistema_y))
fda_x_combinada <- ecdf(sistema_x)(combinados_tiempos)
fda_y_combinada <- ecdf(sistema_y)(combinados_tiempos)
max_diff_tiempos_index <- which.max(abs(fda_x_combinada - fda_y_combinada))

points(combinados_tiempos[max_diff_tiempos_index], fda_x_combinada[max_diff_tiempos_index], pch = 19, col = "blue")
points(combinados_tiempos[max_diff_tiempos_index], fda_y_combinada[max_diff_tiempos_index], pch = 19, col = "green")
segments(combinados_tiempos[max_diff_tiempos_index], fda_x_combinada[max_diff_tiempos_index],
         combinados_tiempos[max_diff_tiempos_index], fda_y_combinada[max_diff_tiempos_index],
         lty = 2, col = "purple")
legend("bottomright", legend = paste("Estadístico D =", round(d_statistic_tiempos, 3)),
       col = "purple", lty = 2, pch = NA)

Interpretación:

Compara el p-valor con \(\alpha = 0.10\). Si es menor, se concluye que las distribuciones de los tiempos de respuesta de los dos sistemas son significativamente diferentes. La gráfica muestra las FDAs empíricas y la diferencia máxima.

51. Prueba de la U de Mann-Whitney - p-valor

  • La prueba U de Mann-Whitney, también conocida como la prueba de la suma de rangos de Wilcoxon para dos muestras independientes, es una prueba no paramétrica que se utiliza para determinar si hay una diferencia significativa entre las medianas de dos grupos independientes. Es una alternativa a la prueba t de Student cuando no se cumplen los supuestos de normalidad o igualdad de varianzas.

  • La hipótesis nula (\(H_0\)) de la prueba U de Mann-Whitney es que las distribuciones de las dos poblaciones son iguales (o que no hay una diferencia en sus medianas). La hipótesis alternativa (\(H_1\)) puede ser unilateral (la mediana de un grupo es mayor/menor que la del otro) o bilateral (las medianas de los dos grupos son diferentes).

  • El procedimiento general implica los siguientes pasos:

  1. Combinar y ordenar los datos: Se combinan todas las observaciones de ambos grupos en un solo conjunto de datos y se ordenan de menor a mayor.

  2. Asignar rangos: Se asignan rangos a cada observación en el conjunto ordenado. En caso de empates, se asigna el rango promedio.

  3. Calcular la suma de rangos para cada grupo: Se suman los rangos asignados a las observaciones de cada grupo por separado. Sean \(R_1\) la suma de rangos del grupo 1 (de tamaño \(n_1\)) y \(R_2\) la suma de rangos del grupo 2 (de tamaño \(n_2\)).

  4. Calcular el estadístico U: Se calculan dos estadísticos U:

    \[ U_1 = n_1 n_2 + \frac{n_1(n_1 + 1)}{2} - R_1 \]

    \[ U_2 = n_1 n_2 + \frac{n_2(n_2 + 1)}{2} - R_2 \]

    El estadístico U de la prueba es generalmente el menor de \(U_1\) y \(U_2\).

  • Bajo la hipótesis nula, la distribución del estadístico U se aproxima a una distribución normal para tamaños de muestra grandes (\(n_1 > 20\) y \(n_2 > 20\)). Para muestras más pequeñas, se utilizan tablas de valores críticos específicos para la prueba U.

  • El p-valor es la probabilidad de obtener un estadístico U tan extremo (o más extremo) como el observado, asumiendo que la hipótesis nula es verdadera. Para una prueba bilateral, el p-valor es la probabilidad de obtener un valor de U que esté tan lejos de su valor esperado como el valor observado, en cualquier dirección. Para pruebas unilaterales, el p-valor considera solo una dirección. Un p-valor pequeño (generalmente menor que el nivel de significancia \(\alpha\)) proporciona evidencia en contra de la hipótesis nula, lo que lleva a rechazarla y concluir que existe una diferencia significativa entre las medianas de los dos grupos.

Interpretación del p-valor:

  • Si el p-valor \(\leq \alpha\): Se rechaza la hipótesis nula (\(H_0\)). Existe evidencia estadística significativa para concluir que las medianas de los dos grupos son diferentes.
  • Si el p-valor \(> \alpha\): No se rechaza la hipótesis nula (\(H_0\)). No hay suficiente evidencia estadística para concluir que las medianas de los dos grupos son diferentes.

51.1. Ejemplo 1: Comparación de tiempos de reacción de dos grupos

Se midieron los tiempos de reacción (en milisegundos) de dos grupos de participantes en un experimento. Se desea determinar si hay una diferencia significativa en los tiempos de reacción entre los dos grupos (\(\alpha = 0.05\)).

Datos:

Grupo A: 250, 265, 240, 270, 255 Grupo B: 280, 290, 275, 300, 285, 295

Solución en R:

# Datos de los dos grupos
grupo_a <- c(250, 265, 240, 270, 255)
grupo_b <- c(280, 290, 275, 300, 285, 295)

# Realizar la prueba U de Mann-Whitney
prueba_mw <- wilcox.test(grupo_a, grupo_b)
print(prueba_mw)
## 
##  Wilcoxon rank sum exact test
## 
## data:  grupo_a and grupo_b
## W = 0, p-value = 0.004329
## alternative hypothesis: true location shift is not equal to 0
# Nivel de significancia
alfa_mw <- 0.05

# Visualización aproximada de la región de rechazo (basada en la normal asintótica)
# Para una prueba bilateral, los valores críticos Z son aproximadamente -1.96 y 1.96
valor_critico_z <- qnorm(1 - alfa_mw / 2)

# Aunque la salida de wilcox.test no da un estadístico Z directamente para muestras pequeñas,
# para fines ilustrativos, podríamos calcular una aproximación si fuera necesario para muestras grandes.
# Aquí, nos enfocaremos en el p-valor directamente.

# No es straightforward dibujar la "región" directamente en la escala de U sin conocer la distribución exacta para muestras pequeñas.
# La visualización más útil aquí es un boxplot de los datos para comparar las distribuciones.

boxplot(grupo_a, grupo_b, names = c("Grupo A", "Grupo B"),
        ylab = "Tiempo de Reacción (ms)",
        main = "Comparación de Tiempos de Reacción")

Interpretación:

El resultado de wilcox.test() proporcionará el estadístico U (o W, que es la suma de rangos de uno de los grupos) y el p-valor. Si el p-valor es menor que \(\alpha = 0.05\), rechazaremos la hipótesis nula y concluiremos que hay una diferencia significativa en los tiempos de reacción entre los dos grupos. El boxplot ayuda a visualizar la diferencia en las distribuciones.

51.2. Ejemplo 2: Comparación de puntuaciones de prueba de dos métodos de enseñanza

Se compararon las puntuaciones de una prueba obtenidas por estudiantes que fueron enseñados usando dos métodos diferentes (\(\alpha = 0.10\)).

Datos:

Método 1: 78, 82, 65, 88, 70, 75 Método 2: 60, 72, 58, 68, 65, 70, 62

Solución en R:

# Datos de los dos métodos
metodo1 <- c(78, 82, 65, 88, 70, 75)
metodo2 <- c(60, 72, 58, 68, 65, 70, 62)

# Realizar la prueba U de Mann-Whitney
prueba_mw_ensenanza <- wilcox.test(metodo1, metodo2)
## Warning in wilcox.test.default(metodo1, metodo2): cannot compute exact p-value
## with ties
print(prueba_mw_ensenanza)
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  metodo1 and metodo2
## W = 37, p-value = 0.02639
## alternative hypothesis: true location shift is not equal to 0
# Nivel de significancia
alfa_ensenanza_mw <- 0.10

# Boxplot para visualizar las distribuciones
boxplot(metodo1, metodo2, names = c("Método 1", "Método 2"),
        ylab = "Puntuación de la Prueba",
        main = "Comparación de Puntuaciones por Método de Enseñanza")

Interpretación:

Si el p-valor de wilcox.test() es menor que \(\alpha = 0.10\), se rechazará la hipótesis nula de que las distribuciones de las puntuaciones son las mismas para los dos métodos de enseñanza. El boxplot proporciona una comparación visual de las puntuaciones.

51.2. Ejemplo 3: Comparación de ventas de dos estrategias de marketing

Una empresa implementó dos estrategias de marketing diferentes en dos regiones y registró las ventas semanales (en miles de dólares) durante un mes (\(\alpha = 0.05\)).

Datos:

Estrategia A: 15, 18, 12, 20 Estrategia B: 10, 14, 11, 16, 13

Solución en R:

# Datos de las ventas por estrategia
estrategia_a <- c(15, 18, 12, 20)
estrategia_b <- c(10, 14, 11, 16, 13)

# Realizar la prueba U de Mann-Whitney (prueba unilateral: ¿A > B?)
prueba_mw_ventas <- wilcox.test(estrategia_a, estrategia_b, alternative = "greater")
print(prueba_mw_ventas)
## 
##  Wilcoxon rank sum exact test
## 
## data:  estrategia_a and estrategia_b
## W = 16, p-value = 0.09524
## alternative hypothesis: true location shift is greater than 0
# Nivel de significancia
alfa_ventas_mw <- 0.05

# Boxplot para visualizar las ventas
boxplot(estrategia_a, estrategia_b, names = c("Estrategia A", "Estrategia B"),
        ylab = "Ventas (miles de $)",
        main = "Comparación de Ventas por Estrategia")

Interpretación:

Aquí, se realiza una prueba unilateral para ver si las ventas de la estrategia A son significativamente mayores que las de la estrategia B. Si el p-valor es menor que \(\alpha = 0.05\), se rechaza la hipótesis nula a favor de la alternativa. El boxplot compara visualmente las ventas de las dos estrategias.

51.4. Ejemplo 4: Comparación de niveles de contaminación en dos sitios

Se midieron los niveles de un contaminante (en ppm) en muestras de suelo tomadas de dos sitios diferentes (\(\alpha = 0.01\)).

Datos:

Sitio 1: 2.3, 2.5, 2.1, 2.8, 2.2 Sitio 2: 2.6, 2.7, 2.9, 3.1, 3.0, 2.8

Solución en R:

# Datos de los niveles de contaminación por sitio
sitio1 <- c(2.3, 2.5, 2.1, 2.8, 2.2)
sitio2 <- c(2.6, 2.7, 2.9, 3.1, 3.0, 2.8)

# Realizar la prueba U de Mann-Whitney
prueba_mw_contaminacion <- wilcox.test(sitio1, sitio2)
## Warning in wilcox.test.default(sitio1, sitio2): cannot compute exact p-value
## with ties
print(prueba_mw_contaminacion)
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  sitio1 and sitio2
## W = 2.5, p-value = 0.0281
## alternative hypothesis: true location shift is not equal to 0
# Nivel de significancia
alfa_contaminacion_mw <- 0.01

# Boxplot para visualizar los niveles de contaminación
boxplot(sitio1, sitio2, names = c("Sitio 1", "Sitio 2"),
        ylab = "Nivel de Contaminación (ppm)",
        main = "Comparación de Niveles de Contaminación por Sitio")

Interpretación:

Si el p-valor de wilcox.test() es menor que \(\alpha = 0.01\), se concluye que hay una diferencia significativa en los niveles de contaminación entre los dos sitios. El boxplot ayuda a comparar visualmente los niveles.

52. Prueba Ji-cuadrado para Dos Proporciones Binomiales - p-valor

  • La prueba Ji-cuadrado para dos proporciones binomiales se utiliza para determinar si existe una diferencia significativa entre las proporciones de éxito observadas en dos muestras independientes. Esta prueba es una extensión de la prueba de independencia del Chi-cuadrado aplicada a una tabla de contingencia de \(2 \times 2\), donde las filas representan los dos grupos o poblaciones y las columnas representan los dos resultados posibles (éxito o fracaso) de una variable binomial.

  • La hipótesis nula (\(H_0\)) establece que las proporciones de éxito en las dos poblaciones son iguales (\(p_1 = p_2\)). La hipótesis alternativa (\(H_1\)) puede ser unilateral (\(p_1 > p_2\) o \(p_1 < p_2\)) o bilateral (\(p_1 \neq p_2\)).

  • Los datos se organizan en una tabla de contingencia de \(2 \times 2\):

Resultado Grupo 1 (n1) Grupo 2 (n2) Total
Éxito \(x_1\) \(x_2\) \(x_1 + x_2\)
Fracaso \(n_1 - x_1\) \(n_2 - x_2\) \(n_1 + n_2 - (x_1 + x_2)\)
Total \(n_1\) \(n_2\) \(N = n_1 + n_2\)
  • Donde:

  • \(n_1\) y \(n_2\) son los tamaños de las muestras de los grupos 1 y 2, respectivamente.

  • \(x_1\) y \(x_2\) son el número de éxitos observados en los grupos 1 y 2, respectivamente.

  • El estadístico de prueba Chi-cuadrado (\(\chi^2\)) se calcula mediante la misma fórmula general utilizada en las pruebas de independencia y homogeneidad:

\[ \chi^2 = \sum_{i=1}^{r} \sum_{j=1}^{c} \frac{(O_{ij} - E_{ij})^2}{E_{ij}} \]

  • Para la tabla de \(2 \times 2\), esta fórmula se simplifica. Las frecuencias esperadas (\(E_{ij}\)) bajo la hipótesis nula de proporciones iguales se calculan como:

\[ E(\text{Éxito, Grupo 1}) = \frac{(x_1 + x_2) \times n_1}{N} \]

\[ E(\text{Fracaso, Grupo 1}) = \frac{(n_1 + n_2 - (x_1 + x_2)) \times n_1}{N} \]

\[ E(\text{Éxito, Grupo 2}) = \frac{(x_1 + x_2) \times n_2}{N} \]

\[ E(\text{Fracaso, Grupo 2}) = \frac{(n_1 + n_2 - (x_1 + x_2)) \times n_2}{N} \]

  • El estadístico \(\chi^2\) sigue una distribución Chi-cuadrado con \((2-1)(2-1) = 1\) grado de libertad.

  • El p-valor es la probabilidad de observar una diferencia en las proporciones muestrales tan grande (o más grande) como la observada, asumiendo que las proporciones poblacionales son iguales. Un p-valor pequeño (generalmente menor que el nivel de significancia \(\alpha\)) proporciona evidencia en contra de la hipótesis nula, lo que lleva a rechazarla y concluir que existe una diferencia significativa entre las dos proporciones.

Interpretación del p-valor:

  • Si el p-valor \(\leq \alpha\): Se rechaza la hipótesis nula (\(H_0\)). Existe evidencia estadística significativa para concluir que las proporciones de éxito en las dos poblaciones son diferentes.
  • Si el p-valor \(> \alpha\): No se rechaza la hipótesis nula (\(H_0\)). No hay suficiente evidencia estadística para concluir que las proporciones de éxito en las dos poblaciones son diferentes.

52.1. Ejemplo 1: Comparación de tasas de conversión de dos diseños web

Se probaron dos diseños de página web (A y B) para ver si había una diferencia en sus tasas de conversión (éxito = completar una compra). Durante la prueba, el Diseño A recibió 500 visitantes y tuvo 40 conversiones. El Diseño B recibió 600 visitantes y tuvo 36 conversiones. Realizar una prueba con \(\alpha = 0.05\).

Solución en R:

# Datos
exitos <- c(40, 36)
n <- c(500, 600)

# Crear la tabla de contingencia
tabla <- matrix(c(exitos, n - exitos), nrow = 2, byrow = TRUE)
colnames(tabla) <- c("Diseño A", "Diseño B")
rownames(tabla) <- c("Éxito", "Fracaso")
print(tabla)
##         Diseño A Diseño B
## Éxito         40       36
## Fracaso      460      564
# Realizar la prueba Ji-cuadrado
prueba_prop <- chisq.test(tabla, correct = FALSE) # No aplicar corrección de Yates para este ejemplo
print(prueba_prop)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla
## X-squared = 1.6961, df = 1, p-value = 0.1928
# Nivel de significancia
alfa_prop <- 0.05

# Valor crítico de Ji-cuadrado con 1 grado de libertad
valor_critico_prop <- qchisq(1 - alfa_prop, df = 1)
cat("Valor crítico de Chi-cuadrado:", valor_critico_prop, "\n")
## Valor crítico de Chi-cuadrado: 3.841459
# Visualización de la región de rechazo
x_prop <- seq(0, valor_critico_prop + 5, length.out = 200)
y_prop <- dchisq(x_prop, df = 1)
plot(x_prop, y_prop, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado (df=1) y Región de Rechazo")
abline(v = valor_critico_prop, col = "red", lty = 2)
polygon(c(valor_critico_prop, x_prop[x_prop >= valor_critico_prop], max(x_prop)),
        c(0, y_prop[x_prop >= valor_critico_prop], 0),
        col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba_prop$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico observado =", round(prueba_prop$statistic, 3)),
       col = "blue", lty = 2)

Interpretación:

El resultado de chisq.test() proporcionará el estadístico \(\chi^2\), los grados de libertad (que deben ser 1) y el p-valor. Si el p-valor es menor que \(\alpha = 0.05\), rechazaremos la hipótesis nula y concluiremos que hay una diferencia significativa en las tasas de conversión de los dos diseños web. La gráfica muestra la distribución Chi-cuadrado con 1 grado de libertad y la región de rechazo.

52.2. Ejemplo 2: Comparación de la efectividad de dos vacunas

En un ensayo clínico, la Vacuna A se administró a 200 personas y 15 desarrollaron la enfermedad. La Vacuna B se administró a 250 personas y 12 desarrollaron la enfermedad. Probar si hay una diferencia en la efectividad de las dos vacunas (\(\alpha = 0.01\)).

Solución en R:

# Datos
enfermos <- c(15, 12)
total_vacunados <- c(200, 250)

# Crear la tabla de contingencia
tabla_vacunas <- matrix(c(enfermos, total_vacunados - enfermos), nrow = 2, byrow = TRUE)
colnames(tabla_vacunas) <- c("Vacuna A", "Vacuna B")
rownames(tabla_vacunas) <- c("Enfermo", "No Enfermo")
print(tabla_vacunas)
##            Vacuna A Vacuna B
## Enfermo          15       12
## No Enfermo      185      238
# Realizar la prueba Ji-cuadrado
prueba_vacunas <- chisq.test(tabla_vacunas, correct = FALSE)
print(prueba_vacunas)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_vacunas
## X-squared = 1.4362, df = 1, p-value = 0.2308
# Nivel de significancia
alfa_vacunas <- 0.01

# Valor crítico de Ji-cuadrado con 1 grado de libertad
valor_critico_vacunas <- qchisq(1 - alfa_vacunas, df = 1)
cat("Valor crítico de Chi-cuadrado:", valor_critico_vacunas, "\n")
## Valor crítico de Chi-cuadrado: 6.634897
# Visualización de la región de rechazo
x_vacunas <- seq(0, valor_critico_vacunas + 5, length.out = 200)
y_vacunas <- dchisq(x_vacunas, df = 1)
plot(x_vacunas, y_vacunas, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado (df=1) y Región de Rechazo")
abline(v = valor_critico_vacunas, col = "red", lty = 2)
polygon(c(valor_critico_vacunas, x_vacunas[x_vacunas >= valor_critico_vacunas], max(x_vacunas)),
        c(0, y_vacunas[x_vacunas >= valor_critico_vacunas], 0),
        col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba_vacunas$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico observado =", round(prueba_vacunas$statistic, 3)),
       col = "blue", lty = 2)

Interpretación:

Compara el p-valor con \(\alpha = 0.01\). Si es menor, se concluye que hay una diferencia significativa en la efectividad de las dos vacunas. La gráfica ilustra la región de rechazo para este nivel de significancia.

52.3. Ejemplo 3: Comparación de tasas de éxito de dos tratamientos

Se compararon dos tratamientos para una enfermedad. El Tratamiento 1 tuvo éxito en 70 de 100 pacientes, mientras que el Tratamiento 2 tuvo éxito en 80 de 120 pacientes. Probar si la tasa de éxito del Tratamiento 2 es significativamente mayor que la del Tratamiento 1 (\(\alpha = 0.05\), prueba unilateral).

Solución en R:

# Datos
exitos_tratamiento <- c(70, 80)
n_tratamiento <- c(100, 120)

# Crear la tabla de contingencia
tabla_tratamiento <- matrix(c(exitos_tratamiento, n_tratamiento - exitos_tratamiento), nrow = 2, byrow = TRUE)
colnames(tabla_tratamiento) <- c("Tratamiento 1", "Tratamiento 2")
rownames(tabla_tratamiento) <- c("Éxito", "Fracaso")
print(tabla_tratamiento)
##         Tratamiento 1 Tratamiento 2
## Éxito              70            80
## Fracaso            30            40
# Realizar la prueba Ji-cuadrado
prueba_tratamiento <- chisq.test(tabla_tratamiento, correct = FALSE)
print(prueba_tratamiento)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_tratamiento
## X-squared = 0.27937, df = 1, p-value = 0.5971
# Nivel de significancia (para prueba unilateral, el p-valor se interpreta directamente)
alfa_tratamiento <- 0.05

# Para una prueba unilateral, no ajustamos alfa para el valor crítico.
# El valor crítico para una prueba unilateral con alfa = 0.05 es el mismo que para una bilateral.
valor_critico_tratamiento <- qchisq(1 - alfa_tratamiento, df = 1)
cat("Valor crítico de Chi-cuadrado (unilateral):", valor_critico_tratamiento, "\n")
## Valor crítico de Chi-cuadrado (unilateral): 3.841459
# Visualización de la región de rechazo
x_tratamiento <- seq(0, valor_critico_tratamiento + 5, length.out = 200)
y_tratamiento <- dchisq(x_tratamiento, df = 1)
plot(x_tratamiento, y_tratamiento, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado (df=1) y Región de Rechazo (Unilateral)")
abline(v = valor_critico_tratamiento, col = "red", lty = 2)
polygon(c(valor_critico_tratamiento, x_tratamiento[x_tratamiento >= valor_critico_tratamiento], max(x_tratamiento)),
        c(0, y_tratamiento[x_tratamiento >= valor_critico_tratamiento], 0),
        col = "salmon", border = NA)
abline(v = prueba_tratamiento$statistic, col = "blue", lty = 2)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
legend("topleft", legend = paste("Estadístico observado =", round(prueba_tratamiento$statistic, 3)),
       col = "blue", lty = 2)

# Para la interpretación unilateral, se considera el p-valor directamente.
# Si la hipótesis alternativa fuera p2 > p1, y el estadístico observado cae en la región de rechazo
# (p-valor pequeño), entonces tendríamos evidencia para apoyar esa afirmación.

Interpretación:

En una prueba unilateral, el p-valor directamente del chisq.test se interpreta en relación con la dirección de la hipótesis alternativa. Si el p-valor es pequeño (menor que \(\alpha = 0.05\)) y la diferencia observada en las proporciones muestrales apoya la hipótesis alternativa (Tratamiento 2 tiene una tasa de éxito mayor), entonces rechazamos la hipótesis nula.

52.4. Ejemplo 4: Comparación de la proporción de defectuosos de dos líneas de producción

Se inspeccionaron lotes de productos de dos líneas de producción. En la Línea 1, se encontraron 15 defectuosos en una muestra de 200. En la Línea 2, se encontraron 8 defectuosos en una muestra de 150. Probar si hay una diferencia en la proporción de defectuosos entre las dos líneas (\(\alpha = 0.10\)).

Solución en R:

# Datos
defectuosos <- c(15, 8)
n_produccion <- c(200, 150)

# Crear la tabla de contingencia
tabla_produccion <- matrix(c(defectuosos, n_produccion - defectuosos), nrow = 2, byrow = TRUE)
colnames(tabla_produccion) <- c("Línea 1", "Línea 2")
rownames(tabla_produccion) <- c("Defectuoso", "No Defectuoso")
print(tabla_produccion)
##               Línea 1 Línea 2
## Defectuoso         15       8
## No Defectuoso     185     142
# Realizar la prueba Ji-cuadrado
prueba_produccion <- chisq.test(tabla_produccion, correct = FALSE)
print(prueba_produccion)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_produccion
## X-squared = 0.65539, df = 1, p-value = 0.4182
# Nivel de significancia
alfa_produccion <- 0.10

# Valor crítico de Ji-cuadrado con 1 grado de libertad
valor_critico_produccion <- qchisq(1 - alfa_produccion, df = 1)
cat("Valor crítico de Chi-cuadrado:", valor_critico_produccion, "\n")
## Valor crítico de Chi-cuadrado: 2.705543
# Visualización de la región de rechazo
x_produccion <- seq(0, valor_critico_produccion + 5, length.out = 200)
y_produccion <- dchisq(x_produccion, df = 1)
plot(x_produccion, y_produccion, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado (df=1) y Región de Rechazo")
abline(v = valor_critico_produccion, col = "red", lty = 2)
polygon(c(valor_critico_produccion, x_produccion[x_produccion >= valor_critico_produccion], max(x_produccion)),
        c(0, y_produccion
[x_produccion >= valor_critico_produccion], 0),
        col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba_produccion$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico observado =", round(prueba_produccion$statistic, 3)),
       col = "blue", lty = 2)

Interpretación:

Compara el p-valor con \(\alpha = 0.10\). Si es menor, se concluye que hay una diferencia significativa en la proporción de defectuosos entre las dos líneas de producción. La gráfica muestra la distribución Chi-cuadrado con 1 grado de libertad y la región de rechazo.

53. Prueba de Rangos con Signos de Wilcoxon para Datos Pareados - p-valor

  • La prueba de rangos con signos de Wilcoxon para datos pareados es una prueba no paramétrica utilizada para determinar si hay una diferencia significativa entre dos conjuntos de datos relacionados o pareados (por ejemplo, mediciones antes y después de un tratamiento en los mismos sujetos). A diferencia de la prueba t pareada, no asume que las diferencias entre los pares sigan una distribución normal.

  • El procedimiento general implica los siguientes pasos:

  1. Calcular las diferencias: Para cada par de observaciones, se calcula la diferencia (\(d_i = y_i - x_i\)).
  2. Eliminar las diferencias cero: Se eliminan los pares para los cuales la diferencia es cero.
  3. Ordenar las diferencias absolutas: Se toman los valores absolutos de las diferencias (\(|d_i|\)) y se ordenan de menor a mayor.
  4. Asignar rangos: Se asignan rangos a las diferencias absolutas ordenadas. En caso de empates, se asigna el rango promedio.
  5. Aplicar el signo original: Se asigna a cada rango el signo de la diferencia original (\(d_i\)).
  6. Calcular las sumas de rangos: Se calculan la suma de los rangos positivos (\(W^+\)) y la suma de los rangos negativos (\(W^-\)).
  7. Calcular el estadístico W: El estadístico de prueba \(W\) es la menor de las dos sumas de rangos (\(W = \min(W^+, |W^-|)\)). Algunas versiones de la prueba utilizan solo \(W^+\) o \(W^-\). En R, la función wilcox.test devuelve por defecto el estadístico \(V\), que es la suma de los rangos con el mismo signo que la diferencia especificada en la hipótesis alternativa (o la suma de los rangos positivos si la alternativa es bilateral).
  • La hipótesis nula (\(H_0\)) es que no hay una diferencia significativa entre las dos poblaciones pareadas (la mediana de las diferencias es cero). La hipótesis alternativa (\(H_1\)) puede ser unilateral (la mediana de las diferencias es mayor/menor que cero) o bilateral (la mediana de las diferencias es diferente de cero).

  • Para tamaños de muestra grandes (\(n > 20\)), la distribución del estadístico \(W\) se aproxima a una distribución normal con media \(\mu_W = \frac{n(n+1)}{4}\) y desviación estándar \(\sigma_W = \sqrt{\frac{n(n+1)(2n+1)}{24}}\), donde \(n\) es el número de pares con diferencias no cero. Se puede calcular un estadístico Z:

\[ Z = \frac{W - \mu_W}{\sigma_W} \]

  • El p-valor es la probabilidad de obtener un estadístico de prueba tan extremo (o más extremo) como el observado, asumiendo que la hipótesis nula es verdadera. Para una prueba bilateral, el p-valor es la probabilidad de obtener un valor de \(W\) que esté tan lejos de su valor esperado como el valor observado, en cualquier dirección. Para pruebas unilaterales, el p-valor considera solo una dirección. Un p-valor pequeño (generalmente menor que el nivel de significancia \(\alpha\)) proporciona evidencia en contra de la hipótesis nula, lo que lleva a rechazarla y concluir que existe una diferencia significativa entre los dos conjuntos de datos pareados.

Interpretación del p-valor:

  • Si el p-valor \(\leq \alpha\): Se rechaza la hipótesis nula (\(H_0\)). Existe evidencia estadística significativa para concluir que hay una diferencia entre los dos conjuntos de datos pareados.
  • Si el p-valor \(> \alpha\): No se rechaza la hipótesis nula (\(H_0\)). No hay suficiente evidencia estadística para concluir que hay una diferencia entre los dos conjuntos de datos pareados.

53.1. Ejemplo 1: Efecto de un programa de entrenamiento en el tiempo de reacción

Se midió el tiempo de reacción (en milisegundos) de 10 participantes antes y después de completar un programa de entrenamiento. Se desea determinar si el programa tuvo un efecto significativo en el tiempo de reacción (\(\alpha = 0.05\)).

Datos:

Participante Antes Después Diferencia (Después - Antes)
1 250 245 -5
2 265 260 -5
3 240 235 -5
4 270 268 -2
5 255 252 -3
6 280 275 -5
7 290 288 -2
8 275 272 -3
9 300 295 -5
10 285 282 -3

Solución en R:

# Datos antes y después
antes <- c(250, 265, 240, 270, 255, 280, 290, 275, 300, 285)
despues <- c(245, 260, 235, 268, 252, 275, 288, 272, 295, 282)

# Realizar la prueba de rangos con signos de Wilcoxon
prueba_wilcoxon <- wilcox.test(despues, antes, paired = TRUE)
## Warning in wilcox.test.default(despues, antes, paired = TRUE): cannot compute
## exact p-value with ties
print(prueba_wilcoxon)
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  despues and antes
## V = 0, p-value = 0.005144
## alternative hypothesis: true location shift is not equal to 0
# Nivel de significancia
alfa_wilcoxon <- 0.05

# Visualización aproximada de la región de rechazo (basada en la normal asintótica)
# Para una prueba bilateral, los valores críticos Z son aproximadamente -1.96 y 1.96
valor_critico_z_wilcoxon <- qnorm(1 - alfa_wilcoxon / 2)

# Aunque la salida de wilcox.test no da un estadístico Z directamente para muestras pequeñas,
# para fines ilustrativos, podríamos calcular una aproximación si fuera necesario para muestras grandes.
# Aquí, nos enfocaremos en el p-valor directamente.

# No es straightforward dibujar la "región" directamente en la escala de W sin conocer la distribución exacta para muestras pequeñas.
# La visualización más útil aquí es un boxplot de las diferencias.

diferencias <- despues - antes
boxplot(diferencias, ylab = "Diferencia (Después - Antes)",
        main = "Efecto del Entrenamiento en el Tiempo de Reacción")
abline(h = 0, lty = 2, col = "red") # Línea de referencia en cero

Interpretación:

El resultado de wilcox.test() proporcionará el estadístico V (suma de rangos con signo) y el p-valor. Si el p-valor es menor que \(\alpha = 0.05\), rechazaremos la hipótesis nula y concluiremos que el programa de entrenamiento tuvo un efecto significativo en el tiempo de reacción. El boxplot de las diferencias ayuda a visualizar la dirección y magnitud del cambio.

53.2. Ejemplo 2: Comparación de la calificación de un producto por dos grupos de jueces pareados

Se pidió a 8 jueces que calificaran dos versiones de un producto (A y B) en una escala del 1 al 10. Se emparejó a los jueces según su experiencia. Se desea saber si hay una diferencia significativa en las calificaciones (\(\alpha = 0.10\)).

Datos:

Pareja de Jueces Calificación A Calificación B Diferencia (B - A)
1 7 8 1
2 6 7 1
3 8 8 0
4 5 6 1
5 9 7 -2
6 7 9 2
7 6 8 2
8 8 9 1

Solución en R:

# Calificaciones de los dos productos
calificacion_a <- c(7, 6, 8, 5, 9, 7, 6, 8)
calificacion_b <- c(8, 7, 8, 6, 7, 9, 8, 9)

# Realizar la prueba de rangos con signos de Wilcoxon
prueba_wilcoxon_calif <- wilcox.test(calificacion_b, calificacion_a, paired = TRUE)
## Warning in wilcox.test.default(calificacion_b, calificacion_a, paired = TRUE):
## cannot compute exact p-value with ties
## Warning in wilcox.test.default(calificacion_b, calificacion_a, paired = TRUE):
## cannot compute exact p-value with zeroes
print(prueba_wilcoxon_calif)
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  calificacion_b and calificacion_a
## V = 22, p-value = 0.1934
## alternative hypothesis: true location shift is not equal to 0
# Nivel de significancia
alfa_wilcoxon_calif <- 0.10

# Diferencias
diferencias_calif <- calificacion_b - calificacion_a
boxplot(diferencias_calif, ylab = "Diferencia (B - A)",
        main = "Comparación de Calificaciones de Producto")
abline(h = 0, lty = 2, col = "red")

Interpretación:

Si el p-valor es menor que \(\alpha = 0.10\), se rechazará la hipótesis nula de que no hay una diferencia significativa en las calificaciones de los dos productos. El boxplot de las diferencias muestra la tendencia de las calificaciones.

53.3. Ejemplo 3: Efecto de una dieta en el peso de individuos pareados

Se midió el peso de 12 individuos antes y después de seguir una dieta durante un mes. Se desea probar si la dieta tuvo un efecto en la reducción del peso (\(\alpha = 0.05\), prueba unilateral).

Datos:

Individuo Antes (kg) Después (kg) Diferencia (Después - Antes)
1 85 82 -3
2 92 88 -4
3 78 79 1
4 101 95 -6
5 88 85 -3
6 76 75 -1
7 95 90 -5
8 83 80 -3
9 90 87 -3
10 79 77 -2
11 86 84 -2
12 98 96 -2

Solución en R:

# Pesos antes y después de la dieta
peso_antes <- c(85, 92, 78, 101, 88, 76, 95, 83, 90, 79, 86, 98)
peso_despues <- c(82, 88, 79, 95, 85, 75, 90, 80, 87, 77, 84, 96)

# Realizar la prueba de rangos con signos de Wilcoxon (prueba unilateral: ¿después < antes?)
prueba_wilcoxon_dieta <- wilcox.test(peso_despues, peso_antes, paired = TRUE, alternative = "less")
## Warning in wilcox.test.default(peso_despues, peso_antes, paired = TRUE, :
## cannot compute exact p-value with ties
print(prueba_wilcoxon_dieta)
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  peso_despues and peso_antes
## V = 1.5, p-value = 0.001753
## alternative hypothesis: true location shift is less than 0
# Nivel de significancia
alfa_wilcoxon_dieta <- 0.05

# Diferencias
diferencias_dieta <- peso_despues - peso_antes
boxplot(diferencias_dieta, ylab = "Diferencia (Después - Antes)",
        main = "Efecto de la Dieta en el Peso")
abline(h = 0, lty = 2, col = "red")

Interpretación:

En una prueba unilateral con alternative = "less", estamos probando si el peso después de la dieta es significativamente menor que antes (diferencia negativa). Si el p-valor es menor que \(\alpha = 0.05\), rechazaremos la hipótesis nula a favor de la alternativa. El boxplot de las diferencias debe mostrar una tendencia hacia valores negativos si la dieta es efectiva en la reducción de peso.

53.4. Ejemplo 4: Comparación del rendimiento de dos variedades de cultivo en las mismas parcelas

Se sembraron dos variedades de cultivo (X e Y) en 7 parcelas de tierra idénticas, asignando aleatoriamente cada variedad a una mitad de cada parcela. Se midió el rendimiento (en kg/parcela). Se desea saber si hay una diferencia significativa en el rendimiento de las dos variedades (\(\alpha = 0.01\)).

Datos:

Parcela Rendimiento X Rendimiento Y Diferencia (Y - X)
1 45 48 3
2 52 50 -2
3 49 53 4
4 55 58 3
5 48 47 -1
6 51 55 4
7 50 52 2

Solución en R:

# Rendimientos de las dos variedades
rendimiento_x <- c(45, 52, 49, 55, 48, 51, 50)
rendimiento_y <- c(48, 50, 53, 58, 47, 55, 52)

# Realizar la prueba de rangos con signos de Wilcoxon
prueba_wilcoxon_cultivo <- wilcox.test(rendimiento_y, rendimiento_x, paired = TRUE)
## Warning in wilcox.test.default(rendimiento_y, rendimiento_x, paired = TRUE):
## cannot compute exact p-value with ties
print(prueba_wilcoxon_cultivo)
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  rendimiento_y and rendimiento_x
## V = 24.5, p-value = 0.08924
## alternative hypothesis: true location shift is not equal to 0
# Nivel de significancia
alfa_wilcoxon_cultivo <- 0.01

# Diferencias
diferencias_cultivo <- rendimiento_y - rendimiento_x
boxplot(diferencias_cultivo, ylab = "Diferencia (Y - X)",
        main = "Comparación del Rendimiento de Variedades de Cultivo")
abline(h = 0, lty = 2, col = "red")

Interpretación:

Si el p-valor es menor que \(\alpha = 0.01\), se rechazará la hipótesis nula de que no hay una diferencia significativa en el rendimiento de las dos variedades de cultivo. El boxplot de las diferencias indicará la dirección de la diferencia en el rendimiento.

54. Prueba de la Mediana - p-valor

La prueba de la mediana es una prueba no paramétrica que se utiliza para determinar si dos o más grupos independientes tienen la misma mediana. Es una alternativa a la ANOVA de un factor cuando no se cumplen los supuestos de normalidad o igualdad de varianzas. En el caso de dos grupos, es una alternativa a la prueba t de Student para muestras independientes cuando los supuestos paramétricos no se cumplen.

La idea básica de la prueba de la mediana es determinar si una proporción significativamente diferente de observaciones en cada grupo cae por encima o por debajo de la mediana combinada de todos los grupos.

Para realizar la prueba de la mediana para dos grupos:

  1. Calcular la mediana combinada: Se combinan todas las observaciones de ambos grupos y se calcula la mediana de este conjunto de datos combinado.

  2. Crear una tabla de contingencia: Se construye una tabla de \(2 \times 2\) que cruza el grupo (Grupo 1, Grupo 2) con si la observación está por encima o por debajo (o igual a, tratado consistentemente) de la mediana combinada.

    Grupo 1 Grupo 2 Total
    \(\geq\) Mediana \(n_{1+}\) \(n_{2+}\) \(N_+\)
    \(<\) Mediana \(n_{1-}\) \(n_{2-}\) \(N_-\)
    Total \(n_1\) \(n_2\) \(N\)

    Donde:

    • \(n_{1+}\) y \(n_{2+}\) son el número de observaciones en el Grupo 1 y Grupo 2, respectivamente, que son mayores o iguales a la mediana combinada.
    • \(n_{1-}\) y \(n_{2-}\) son el número de observaciones en el Grupo 1 y Grupo 2, respectivamente, que son menores que la mediana combinada.
    • \(n_1\) y \(n_2\) son los tamaños de las muestras de los Grupos 1 y 2.
    • \(N_+\) es el número total de observaciones mayores o iguales a la mediana combinada.
    • \(N_-\) es el número total de observaciones menores que la mediana combinada.
    • \(N = n_1 + n_2\) es el tamaño total de la muestra.
  3. Realizar una prueba Chi-cuadrado de independencia: Se aplica una prueba Chi-cuadrado de independencia a esta tabla de contingencia de \(2 \times 2\) para determinar si existe una asociación significativa entre el grupo y si la observación está por encima o por debajo de la mediana combinada.

El estadístico de prueba Chi-cuadrado (\(\chi^2\)) se calcula como:

\[ \chi^2 = \sum_{i=1}^{r} \sum_{j=1}^{c} \frac{(O_{ij} - E_{ij})^2}{E_{ij}} \]

Con \((2-1)(2-1) = 1\) grado de libertad. Las frecuencias esperadas (\(E_{ij}\)) se calculan bajo la hipótesis nula de que la proporción de observaciones por encima y por debajo de la mediana es la misma en ambos grupos.

El p-valor es la probabilidad de obtener un estadístico Chi-cuadrado tan extremo (o más extremo) como el observado, asumiendo que las medianas de los dos grupos son iguales (es decir, la hipótesis nula es verdadera). Un p-valor pequeño (generalmente menor que el nivel de significancia \(\alpha\)) proporciona evidencia en contra de la hipótesis nula, lo que lleva a rechazarla y concluir que las medianas de los dos grupos son significativamente diferentes.

Interpretación del p-valor:

  • Si el p-valor \(\leq \alpha\): Se rechaza la hipótesis nula (\(H_0\)). Existe evidencia estadística significativa para concluir que las medianas de los dos grupos son diferentes.
  • Si el p-valor \(> \alpha\): No se rechaza la hipótesis nula (\(H_0\)). No hay suficiente evidencia estadística para concluir que las medianas de los dos grupos son diferentes.

54.1. Ejemplo 1: Comparación de la altura de plantas tratadas con dos fertilizantes

Se midió la altura (en cm) de plantas tratadas con dos fertilizantes diferentes. Se desea determinar si hay una diferencia significativa en la mediana de la altura de las plantas entre los dos grupos (\(\alpha = 0.05\)).

Datos:

Fertilizante A: 25, 28, 22, 30, 26 Fertilizante B: 32, 35, 29, 38, 31, 33

Solución en R:

# Datos de altura de plantas por fertilizante
fertilizante_a <- c(25, 28, 22, 30, 26)
fertilizante_b <- c(32, 35, 29, 38, 31, 33)

# Combinar los datos para encontrar la mediana combinada
datos_combinados <- c(fertilizante_a, fertilizante_b)
mediana_combinada <- median(datos_combinados)
cat("Mediana combinada:", mediana_combinada, "\n")
## Mediana combinada: 30
# Crear la tabla de contingencia
tabla_mediana <- matrix(c(sum(fertilizante_a >= mediana_combinada),
                           sum(fertilizante_b >= mediana_combinada),
                           sum(fertilizante_a < mediana_combinada),
                           sum(fertilizante_b < mediana_combinada)),
                         nrow = 2, byrow = TRUE)
colnames(tabla_mediana) <- c("Fertilizante A", "Fertilizante B")
rownames(tabla_mediana) <- c(">= Mediana", "< Mediana")
print(tabla_mediana)
##            Fertilizante A Fertilizante B
## >= Mediana              1              5
## < Mediana               4              1
# Realizar la prueba Chi-cuadrado de independencia
prueba_mediana <- chisq.test(tabla_mediana, correct = FALSE)
## Warning in chisq.test(tabla_mediana, correct = FALSE): Chi-squared
## approximation may be incorrect
print(prueba_mediana)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_mediana
## X-squared = 4.4122, df = 1, p-value = 0.03568
# Nivel de significancia
alfa_mediana <- 0.05

# Valor crítico de Chi-cuadrado con 1 grado de libertad
valor_critico_mediana <- qchisq(1 - alfa_mediana, df = 1)
cat("Valor crítico de Chi-cuadrado:", valor_critico_mediana, "\n")
## Valor crítico de Chi-cuadrado: 3.841459
# Visualización de la región de rechazo
x_mediana <- seq(0, valor_critico_mediana + 5, length.out = 200)
y_mediana <- dchisq(x_mediana, df = 1)
plot(x_mediana, y_mediana, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado (df=1) y Región de Rechazo (Prueba de la Mediana)")
abline(v = valor_critico_mediana, col = "red", lty = 2)
polygon(c(valor_critico_mediana, x_mediana[x_mediana >= valor_critico_mediana], max(x_mediana)),
        c(0, y_mediana[x_mediana >= valor_critico_mediana], 0),
        col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba_mediana$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico observado =", round(prueba_mediana$statistic, 3)),
       col = "blue", lty = 2)

# Boxplots para comparar las distribuciones
boxplot(fertilizante_a, fertilizante_b, names = c("Fertilizante A", "Fertilizante B"),
        ylab = "Altura (cm)", main = "Comparación de Altura de Plantas")
abline(h = mediana_combinada, lty = 2, col = "blue") # Mediana combinada
legend("topright", legend = paste("Mediana combinada =", mediana_combinada),
       col = "blue", lty = 2)

Interpretación:

El resultado de la prueba Chi-cuadrado proporcionará el estadístico \(\chi^2\) y el p-valor. Si el p-valor es menor que \(\alpha = 0.05\), rechazaremos la hipótesis nula y concluiremos que hay una diferencia significativa en la mediana de la altura de las plantas entre los dos fertilizantes. El boxplot ayuda a visualizar las distribuciones y la mediana combinada.

54.2. Ejemplo 2: Comparación del tiempo de respuesta de dos sistemas informáticos

Se midió el tiempo de respuesta (en segundos) de dos sistemas informáticos diferentes para una misma tarea. Se desea determinar si hay una diferencia significativa en la mediana del tiempo de respuesta (\(\alpha = 0.10\)).

Datos:

Sistema X: 1.2, 1.5, 1.1, 1.8, 1.3 Sistema Y: 1.6, 1.9, 1.4, 2.1, 1.7, 1.8

Solución en R:

# Datos de tiempo de respuesta por sistema
sistema_x <- c(1.2, 1.5, 1.1, 1.8, 1.3)
sistema_y <- c(1.6, 1.9, 1.4, 2.1, 1.7, 1.8)

# Mediana combinada
datos_combinados_tiempo <- c(sistema_x, sistema_y)
mediana_combinada_tiempo <- median(datos_combinados_tiempo)
cat("Mediana combinada:", mediana_combinada_tiempo, "\n")
## Mediana combinada: 1.6
# Tabla de contingencia
tabla_mediana_tiempo <- matrix(c(sum(sistema_x >= mediana_combinada_tiempo),
                                   sum(sistema_y >= mediana_combinada_tiempo),
                                   sum(sistema_x < mediana_combinada_tiempo),
                                   sum(sistema_y < mediana_combinada_tiempo)),
                                 nrow = 2, byrow = TRUE)
colnames(tabla_mediana_tiempo) <- c("Sistema X", "Sistema Y")
rownames(tabla_mediana_tiempo) <- c(">= Mediana", "< Mediana")
print(tabla_mediana_tiempo)
##            Sistema X Sistema Y
## >= Mediana         1         5
## < Mediana          4         1
# Prueba Chi-cuadrado
prueba_mediana_tiempo <- chisq.test(tabla_mediana_tiempo, correct = FALSE)
## Warning in chisq.test(tabla_mediana_tiempo, correct = FALSE): Chi-squared
## approximation may be incorrect
print(prueba_mediana_tiempo)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_mediana_tiempo
## X-squared = 4.4122, df = 1, p-value = 0.03568
# Nivel de significancia
alfa_mediana_tiempo <- 0.10

# Valor crítico de Chi-cuadrado
valor_critico_mediana_tiempo <- qchisq(1 - alfa_mediana_tiempo, df = 1)
cat("Valor crítico de Chi-cuadrado:", valor_critico_mediana_tiempo, "\n")
## Valor crítico de Chi-cuadrado: 2.705543
# Visualización de la región de rechazo
x_mediana_tiempo <- seq(0, valor_critico_mediana_tiempo + 5, length.out = 200)
y_mediana_tiempo <- dchisq(x_mediana_tiempo, df = 1)
plot(x_mediana_tiempo, y_mediana_tiempo, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado (df=1) y Región de Rechazo (Prueba de la Mediana)")
abline(v = valor_critico_mediana_tiempo, col = "red", lty = 2)
polygon(c(valor_critico_mediana_tiempo, x_mediana_tiempo[x_mediana_tiempo >= valor_critico_mediana_tiempo], max(x_mediana_tiempo)),
        c(0, y_mediana_tiempo[x_mediana_tiempo >= valor_critico_mediana_tiempo], 0),
        col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba_mediana_tiempo$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico observado =", round(prueba_mediana_tiempo$statistic, 3)),
       col = "blue", lty = 2)

# Boxplots para comparar las distribuciones
boxplot(sistema_x, sistema_y, names = c("Sistema X", "Sistema Y"),
        ylab = "Tiempo de Respuesta (s)", main = "Comparación de Tiempo de Respuesta")
abline(h = mediana_combinada_tiempo, lty = 2, col = "blue")
legend("topright", legend = paste("Mediana combinada =", mediana_combinada_tiempo),
       col = "blue", lty = 2)

Interpretación:

Si el p-valor es menor que \(\alpha = 0.10\), rechazaremos la hipótesis nula de que las medianas del tiempo de respuesta de los dos sistemas son iguales.

54.3. Ejemplo 3: Comparación de las puntuaciones de satisfacción de clientes por dos agentes

Se registraron las puntuaciones de satisfacción (en una escala de 1 a 10) otorgadas por clientes atendidos por dos agentes diferentes. Se desea probar si hay una diferencia en la mediana de las puntuaciones de satisfacción (\(\alpha = 0.05\)).

Datos:

Agente 1: 7, 8, 6, 9, 7, 8, 7 Agente 2: 6, 7, 5, 8, 6, 7, 6, 5

Solución en R:

# Datos de puntuación de satisfacción por agente
agente1 <- c(7, 8, 6, 9, 7, 8, 7)
agente2 <- c(6, 7, 5, 8, 6, 7, 6, 5)

# Mediana combinada
datos_combinados_satisfaccion <- c(agente1, agente2)
mediana_combinada_satisfaccion <- median(datos_combinados_satisfaccion)
cat("Mediana combinada:", mediana_combinada_satisfaccion, "\n")
## Mediana combinada: 7
# Tabla de contingencia
tabla_mediana_satisfaccion <- matrix(c(sum(agente1 >= mediana_combinada_satisfaccion),
                                        sum(agente2 >= mediana_combinada_satisfaccion),
                                        sum(agente1 < mediana_combinada_satisfaccion),
                                        sum(agente2 < mediana_combinada_satisfaccion)),
                                      nrow = 2, byrow = TRUE)
colnames(tabla_mediana_satisfaccion) <- c("Agente 1", "Agente 2")
rownames(tabla_mediana_satisfaccion) <- c(">= Mediana", "< Mediana")
print(tabla_mediana_satisfaccion)
##            Agente 1 Agente 2
## >= Mediana        6        3
## < Mediana         1        5
# Prueba Chi-cuadrado
prueba_mediana_satisfaccion <- chisq.test(tabla_mediana_satisfaccion, correct = FALSE)
## Warning in chisq.test(tabla_mediana_satisfaccion, correct = FALSE): Chi-squared
## approximation may be incorrect
print(prueba_mediana_satisfaccion)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_mediana_satisfaccion
## X-squared = 3.6161, df = 1, p-value = 0.05722
# Nivel de significancia
alfa_mediana_satisfaccion <- 0.05

# Valor crítico de Chi-cuadrado
valor_critico_mediana_satisfaccion <- qchisq(1 - alfa_mediana_satisfaccion, df = 1)
cat("Valor crítico de Chi-cuadrado:", valor_critico_mediana_satisfaccion, "\n")
## Valor crítico de Chi-cuadrado: 3.841459
# Visualización de la región de rechazo
x_mediana_satisfaccion <- seq(0, valor_critico_mediana_satisfaccion + 5, length.out = 200)
y_mediana_satisfaccion <- dchisq(x_mediana_satisfaccion, df = 1)
plot(x_mediana_satisfaccion, y_mediana_satisfaccion, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado (df=1) y Región de Rechazo (Prueba de la Mediana)")
abline(v = valor_critico_mediana_satisfaccion, col = "red", lty = 2)
polygon(c(valor_critico_mediana_satisfaccion, x_mediana_satisfaccion[x_mediana_satisfaccion >= valor_critico_mediana_satisfaccion], max(x_mediana_satisfaccion)),
        c(0, y_mediana_satisfaccion[x_mediana_satisfaccion >= valor_critico_mediana_satisfaccion], 0),
        col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba_mediana_satisfaccion$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico observado =", round(prueba_mediana_satisfaccion$statistic, 3)),
       col = "blue", lty = 2)

# Boxplots para comparar las distribuciones
boxplot(agente1, agente2, names = c("Agente 1", "Agente 2"),
        ylab = "Puntuación de Satisfacción", main = "Comparación de Satisfacción por Agente")
abline(h = mediana_combinada_satisfaccion, lty = 2, col = "blue")
legend("topright", legend = paste("Mediana combinada =", mediana_combinada_satisfaccion),
       col = "blue", lty = 2)

Interpretación:

Si el p-valor es menor que \(\alpha = 0.05\), rechazaremos la hipótesis nula de que las medianas de las puntuaciones de satisfacción de los clientes son las mismas para los dos agentes.

**54.4. Ejemplo 4: Comparación del rendimiento académico de estudiantes en dos programas

Se compararon las calificaciones finales de estudiantes que participaron en dos programas académicos diferentes. Se desea determinar si hay una diferencia en la mediana del rendimiento académico (\(\alpha = 0.01\)).

Datos:

Programa A: 75, 80, 70, 85, 78, 72 Programa B: 82, 88, 79, 90, 85, 83, 86

Solución en R:

# Datos de rendimiento académico por programa
programa_a <- c(75, 80, 70, 85, 78, 72)
programa_b <- c(82, 88, 79, 90, 85, 83, 86)

# Mediana combinada
datos_combinados_rendimiento <- c(programa_a, programa_b)
mediana_combinada_rendimiento <- median(datos_combinados_rendimiento)
cat("Mediana combinada:", mediana_combinada_rendimiento, "\n")
## Mediana combinada: 82
# Tabla de contingencia
tabla_mediana_rendimiento <- matrix(c(sum(programa_a >= mediana_combinada_rendimiento),
                                       sum(programa_b >= mediana_combinada_rendimiento),
                                       sum(programa_a < mediana_combinada_rendimiento),
                                       sum(programa_b < mediana_combinada_rendimiento)),
                                     nrow = 2, byrow = TRUE)
colnames(tabla_mediana_rendimiento) <- c("Programa A", "Programa B")
rownames(tabla_mediana_rendimiento) <- c(">= Mediana", "< Mediana")
print(tabla_mediana_rendimiento)
##            Programa A Programa B
## >= Mediana          1          6
## < Mediana           5          1
# Prueba Chi-cuadrado
prueba_mediana_rendimiento <- chisq.test(tabla_mediana_rendimiento, correct = FALSE)
## Warning in chisq.test(tabla_mediana_rendimiento, correct = FALSE): Chi-squared
## approximation may be incorrect
print(prueba_mediana_rendimiento)
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_mediana_rendimiento
## X-squared = 6.1978, df = 1, p-value = 0.01279
# Nivel de significancia
alfa_mediana_rendimiento <- 0.01

# Valor crítico de Chi-cuadrado
valor_critico_mediana_rendimiento <- qchisq(1 - alfa_mediana_rendimiento, df = 1)
cat("Valor crítico de Chi-cuadrado:", valor_critico_mediana_rendimiento, "\n")
## Valor crítico de Chi-cuadrado: 6.634897
# Visualización de la región de rechazo
x_mediana_rendimiento <- seq(0, valor_critico_mediana_rendimiento + 5, length.out = 200)
y_mediana_rendimiento <- dchisq(x_mediana_rendimiento, df = 1)
plot(x_mediana_rendimiento, y_mediana_rendimiento, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado (df=1) y Región de Rechazo (Prueba de la Mediana)")
abline(v = valor_critico_mediana_rendimiento, col = "red", lty = 2)
polygon(c(valor_critico_mediana_rendimiento, x_mediana_rendimiento[x_mediana_rendimiento >= valor_critico_mediana_rendimiento], max(x_mediana_rendimiento)),
        c(0, y_mediana_rendimiento[x_mediana_rendimiento >= valor_critico_mediana_rendimiento], 0),
        col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba_mediana_rendimiento$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico observado =", round(prueba_mediana_rendimiento$statistic, 3)),
       col = "blue", lty = 2)

# Boxplots para comparar las distribuciones
boxplot(programa_a, programa_b, names = c("Programa A", "Programa B"),
        ylab = "Rendimiento Académico", main = "Comparación de Rendimiento por Programa")
abline(h = mediana_combinada_rendimiento, lty = 2, col = "blue")
legend("topright", legend = paste("Mediana combinada =", mediana_combinada_rendimiento),
       col = "blue", lty = 2)

Interpretación:

Si el p-valor es menor que \(\alpha = 0.01\), rechazaremos la hipótesis nula de que las medianas del rendimiento académico de los estudiantes en los dos programas son iguales.

55. Prueba de Kruskal-Wallis (H)

La prueba de Kruskal-Wallis, también conocida como la prueba H, es una prueba no paramétrica que extiende la prueba U de Mann-Whitney para comparar las medianas de tres o más grupos independientes. Es una alternativa a la ANOVA de un factor cuando no se cumplen los supuestos de normalidad o igualdad de varianzas.

El procedimiento general implica los siguientes pasos:

  1. Combinar y ordenar los datos: Se combinan todas las observaciones de todos los grupos en un solo conjunto de datos y se ordenan de menor a mayor.

  2. Asignar rangos: Se asignan rangos a cada observación en el conjunto ordenado. En caso de empates, se asigna el rango promedio.

  3. Calcular la suma de rangos para cada grupo: Se suman los rangos asignados a las observaciones de cada grupo por separado. Sea \(R_i\) la suma de rangos del grupo \(i\) (de tamaño \(n_i\)), donde hay \(k\) grupos en total.

  4. Calcular el estadístico H: El estadístico de prueba H se calcula mediante la siguiente fórmula:

    \[ H = \frac{12}{N(N+1)} \sum_{i=1}^{k} \frac{R_i^2}{n_i} - 3(N+1) \]

    Donde:

    • \(N\) es el tamaño total de la muestra (suma de los tamaños de todos los grupos, \(N = \sum_{i=1}^{k} n_i\)).
    • \(k\) es el número de grupos.
    • \(R_i\) es la suma de los rangos del grupo \(i\).
    • \(n_i\) es el tamaño del grupo \(i\).

    Si hay empates, se puede aplicar una corrección al estadístico H:

    \[ H_c = \frac{H}{1 - \frac{\sum T}{N^3 - N}} \]

    Donde \(T = t^3 - t\), y \(t\) es el número de observaciones empatadas en cada grupo de empates. La corrección generalmente aumenta el valor de H, haciéndolo más conservador.

La hipótesis nula (\(H_0\)) es que las medianas de todos los grupos son iguales. La hipótesis alternativa (\(H_1\)) es que al menos una de las medianas es diferente de las demás.

Bajo la hipótesis nula, la distribución del estadístico H se aproxima a una distribución Chi-cuadrado (\(\chi^2\)) con \(k-1\) grados de libertad para tamaños de muestra suficientemente grandes (generalmente, si cada grupo tiene al menos 5 observaciones).

El p-valor es la probabilidad de obtener un estadístico H tan grande (o más grande) como el observado, asumiendo que la hipótesis nula es verdadera. Un p-valor pequeño (generalmente menor que el nivel de significancia \(\alpha\)) proporciona evidencia en contra de la hipótesis nula, lo que lleva a rechazarla y concluir que al menos una de las medianas de los grupos es significativamente diferente.

Interpretación del p-valor:

  • Si el p-valor \(\leq \alpha\): Se rechaza la hipótesis nula (\(H_0\)). Existe evidencia estadística significativa para concluir que las medianas de al menos uno de los grupos son diferentes.
  • Si el p-valor \(> \alpha\): No se rechaza la hipótesis nula (\(H_0\)). No hay suficiente evidencia estadística para concluir que las medianas de los grupos son diferentes.

55.1. Ejemplo 1: Comparación del rendimiento de tres variedades de trigo

Se midió el rendimiento (en toneladas por hectárea) de tres variedades de trigo en parcelas diferentes. Se desea determinar si hay una diferencia significativa en la mediana del rendimiento entre las variedades (\(\alpha = 0.05\)).

Datos:

Variedad A: 4.5, 5.1, 4.8, 5.3, 4.9 Variedad B: 5.6, 6.0, 5.8, 6.2, 5.9, 5.7 Variedad C: 5.0, 5.5, 5.2, 5.7, 5.3, 5.4

Solución en R:

# Datos de rendimiento por variedad
rendimiento_a <- c(4.5, 5.1, 4.8, 5.3, 4.9)
rendimiento_b <- c(5.6, 6.0, 5.8, 6.2, 5.9, 5.7)
rendimiento_c <- c(5.0, 5.5, 5.2, 5.7, 5.3, 5.4)

# Combinar los datos en un data frame
datos_rendimiento <- data.frame(
  rendimiento = c(rendimiento_a, rendimiento_b, rendimiento_c),
  variedad = factor(rep(c("A", "B", "C"), times = c(length(rendimiento_a), length(rendimiento_b), length(rendimiento_c))))
)

# Realizar la prueba de Kruskal-Wallis
prueba_kw_rendimiento <- kruskal.test(rendimiento ~ variedad, data = datos_rendimiento)
print(prueba_kw_rendimiento)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  rendimiento by variedad
## Kruskal-Wallis chi-squared = 12.186, df = 2, p-value = 0.002258
# Nivel de significancia
alfa_kw <- 0.05

# Grados de libertad (k - 1 = 3 - 1 = 2)
df_kw <- 2

# Valor crítico de Chi-cuadrado
valor_critico_kw <- qchisq(1 - alfa_kw, df = df_kw)
cat("Valor crítico de Chi-cuadrado:", valor_critico_kw, "\n")
## Valor crítico de Chi-cuadrado: 5.991465
# Visualización de la región de rechazo
x_kw <- seq(0, valor_critico_kw + 5, length.out = 200)
y_kw <- dchisq(x_kw, df = df_kw)
plot(x_kw, y_kw, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado (df=2) y Región de Rechazo (Kruskal-Wallis)")
abline(v = valor_critico_kw, col = "red", lty = 2)
polygon(c(valor_critico_kw, x_kw[x_kw >= valor_critico_kw], max(x_kw)),
        c(0, y_kw[x_kw >= valor_critico_kw], 0),
        col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba_kw_rendimiento$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico H =", round(prueba_kw_rendimiento$statistic, 3)),
       col = "blue", lty = 2)

# Boxplots para comparar las distribuciones
boxplot(rendimiento ~ variedad, data = datos_rendimiento,
        ylab = "Rendimiento (toneladas/hectárea)", main = "Rendimiento de Variedades de Trigo")

Interpretación:

El resultado de kruskal.test() proporcionará el estadístico H y el p-valor. Si el p-valor es menor que \(\alpha = 0.05\), rechazaremos la hipótesis nula y concluiremos que hay una diferencia significativa en la mediana del rendimiento entre al menos una de las variedades de trigo. La gráfica muestra la distribución Chi-cuadrado con 2 grados de libertad y la región de rechazo. Los boxplots ayudan a visualizar las distribuciones de rendimiento por variedad.

55.2. Ejemplo 2: Comparación de los tiempos de respuesta de tres servidores

Se midieron los tiempos de respuesta (en milisegundos) de tres servidores diferentes para una misma tarea. Se desea determinar si hay una diferencia significativa en la mediana del tiempo de respuesta entre los servidores (\(\alpha = 0.10\)).

Datos:

Servidor 1: 150, 165, 140, 170, 155 Servidor 2: 180, 190, 175, 200, 185, 195 Servidor 3: 160, 175, 165, 180, 170

Solución en R:

# Datos de tiempo de respuesta por servidor
servidor1 <- c(150, 165, 140, 170, 155)
servidor2 <- c(180, 190, 175, 200, 185, 195)
servidor3 <- c(160, 175, 165, 180, 170)

# Combinar los datos en un data frame
datos_servidores <- data.frame(
  tiempo_respuesta = c(servidor1, servidor2, servidor3),
  servidor = factor(rep(c("S1", "S2", "S3"), times = c(length(servidor1), length(servidor2), length(servidor3))))
)

# Realizar la prueba de Kruskal-Wallis
prueba_kw_servidores <- kruskal.test(tiempo_respuesta ~ servidor, data = datos_servidores)
print(prueba_kw_servidores)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  tiempo_respuesta by servidor
## Kruskal-Wallis chi-squared = 10.88, df = 2, p-value = 0.004339
# Nivel de significancia
alfa_kw_servidores <- 0.10

# Grados de libertad (3 - 1 = 2)
df_kw_servidores <- 2

# Valor crítico de Chi-cuadrado
valor_critico_kw_servidores <- qchisq(1 - alfa_kw_servidores, df = df_kw_servidores)
cat("Valor crítico de Chi-cuadrado:", valor_critico_kw_servidores, "\n")
## Valor crítico de Chi-cuadrado: 4.60517
# Visualización de la región de rechazo
x_kw_servidores <- seq(0, valor_critico_kw_servidores + 5, length.out = 200)
y_kw_servidores <- dchisq(x_kw_servidores, df = df_kw_servidores)
plot(x_kw_servidores, y_kw_servidores, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado (df=2) y Región de Rechazo (Kruskal-Wallis)")
abline(v = valor_critico_kw_servidores, col = "red", lty = 2)
polygon(c(valor_critico_kw_servidores, x_kw_servidores[x_kw_servidores >= valor_critico_kw_servidores], max(x_kw_servidores)),
        c(0, y_kw_servidores[x_kw_servidores >= valor_critico_kw_servidores], 0),
        col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba_kw_servidores$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico H =", round(prueba_kw_servidores$statistic, 3)),
       col = "blue", lty = 2)

# Boxplots para comparar las distribuciones
boxplot(tiempo_respuesta ~ servidor, data = datos_servidores,
        ylab = "Tiempo de Respuesta (ms)", main = "Tiempo de Respuesta por Servidor")

Interpretación:

Si el p-valor es menor que \(\alpha = 0.10\), rechazaremos la hipótesis nula y concluiremos que hay una diferencia significativa en la mediana del tiempo de respuesta entre al menos uno de los servidores.

55.3. Ejemplo 3: Comparación de las puntuaciones de satisfacción de clientes por cuatro agentes

Se registraron las puntuaciones de satisfacción (en una escala de 1 a 10) otorgadas por clientes atendidos por cuatro agentes diferentes. Se desea probar si hay una diferencia en la mediana de las puntuaciones de satisfacción (\(\alpha = 0.05\)).

Datos:

Agente A: 7, 8, 6, 9, 7 Agente B: 6, 7, 5, 8, 6, 7 Agente C: 8, 9, 7, 9, 8, 8 Agente D: 5, 6, 4, 7, 5

Solución en R:

# Datos de puntuación de satisfacción por agente
agente_a <- c(7, 8, 6, 9, 7)
agente_b <- c(6, 7, 5, 8, 6, 7)
agente_c <- c(8, 9, 7, 9, 8, 8)
agente_d <- c(5, 6, 4, 7, 5)

# Combinar los datos en un data frame
datos_agentes <- data.frame(
  satisfaccion = c(agente_a, agente_b, agente_c, agente_d),
  agente = factor(rep(c("A", "B", "C", "D"), times = c(length(agente_a), length(agente_b), length(agente_c), length(agente_d))))
)

# Realizar la prueba de Kruskal-Wallis
prueba_kw_agentes <- kruskal.test(satisfaccion ~ agente, data = datos_agentes)
print(prueba_kw_agentes)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  satisfaccion by agente
## Kruskal-Wallis chi-squared = 11.612, df = 3, p-value = 0.008837
# Nivel de significancia
alfa_kw_agentes <- 0.05

# Grados de libertad (4 - 1 = 3)
df_kw_agentes <- 3

# Valor crítico de Chi-cuadrado
valor_critico_kw_agentes <- qchisq(1 - alfa_kw_agentes, df = df_kw_agentes)
cat("Valor crítico de Chi-cuadrado:", valor_critico_kw_agentes, "\n")
## Valor crítico de Chi-cuadrado: 7.814728
# Visualización de la región de rechazo
x_kw_agentes <- seq(0, valor_critico_kw_agentes + 5, length.out = 200)
y_kw_agentes <- dchisq(x_kw_agentes, df = df_kw_agentes)
plot(x_kw_agentes, y_kw_agentes, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado (df=3) y Región de Rechazo (Kruskal-Wallis)")
abline(v = valor_critico_kw_agentes, col = "red", lty = 2)
polygon(c(valor_critico_kw_agentes, x_kw_agentes[x_kw_agentes >= valor_critico_kw_agentes], max(x_kw_agentes)),
        c(0, y_kw_agentes[x_kw_agentes >= valor_critico_kw_agentes], 0),
        col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba_kw_agentes$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico H =", round(prueba_kw_agentes$statistic, 3)),
       col = "blue", lty = 2)

# Boxplots para comparar las distribuciones
boxplot(satisfaccion ~ agente, data = datos_agentes,
        ylab = "Puntuación de Satisfacción", main = "Satisfacción por Agente")

Interpretación:

Si el p-valor es menor que \(\alpha = 0.05\), rechazaremos la hipótesis nula y concluiremos que hay una diferencia significativa en la mediana de las puntuaciones de satisfacción entre al menos uno de los agentes.

55.4. Ejemplo 4: Comparación del tiempo de recuperación de pacientes con tres tratamientos

Se midió el tiempo de recuperación (en días) de pacientes que recibieron tres tratamientos diferentes para una misma condición médica. Se desea determinar si hay una diferencia significativa en la mediana del tiempo de recuperación entre los tratamientos (\(\alpha = 0.01\)).

Datos:

Tratamiento 1: 10, 12, 11, 13, 10, 14 Tratamiento 2: 15, 16, 14, 17, 15, 18, 16 Tratamiento 3: 12, 14, 13, 15, 11

Solución en R:

# Datos de tiempo de recuperación por tratamiento
tratamiento1 <- c(10, 12, 11, 13, 10, 14)
tratamiento2 <- c(15, 16, 14, 17, 15, 18, 16)
tratamiento3 <- c(12, 14, 13, 15, 11)

# Combinar los datos en un data frame
datos_tratamientos <- data.frame(
  tiempo_recuperacion = c(tratamiento1, tratamiento2, tratamiento3),
  tratamiento = factor(rep(c("T1", "T2", "T3"), times = c(length(tratamiento1), length(tratamiento2), length(tratamiento3))))
)

# Realizar la prueba de Kruskal-Wallis
prueba_kw_tratamientos <- kruskal.test(tiempo_recuperacion ~ tratamiento, data = datos_tratamientos)
print(prueba_kw_tratamientos)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  tiempo_recuperacion by tratamiento
## Kruskal-Wallis chi-squared = 11.341, df = 2, p-value = 0.003446
# Nivel de significancia
alfa_kw_tratamientos <- 0.01

# Grados de libertad (3 - 1 = 2)
df_kw_tratamientos <- 2

# Valor crítico de Chi-cuadrado
valor_critico_kw_tratamientos <- qchisq(1 - alfa_kw_tratamientos, df = df_kw_tratamientos)
cat("Valor crítico de Chi-cuadrado:", valor_critico_kw_tratamientos, "\n")
## Valor crítico de Chi-cuadrado: 9.21034
# Visualización de la región de rechazo
x_kw_tratamientos <- seq(0, valor_critico_kw_tratamientos + 5, length.out = 200)
y_kw_tratamientos <- dchisq(x_kw_tratamientos, df = df_kw_tratamientos)
plot(x_kw_tratamientos, y_kw_tratamientos, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado (df=2) y Región de Rechazo (Kruskal-Wallis)")
abline(v = valor_critico_kw_tratamientos, col = "red", lty = 2)
polygon(c(valor_critico_kw_tratamientos, x_kw_tratamientos[x_kw_tratamientos >= valor_critico_kw_tratamientos], max(x_kw_tratamientos)),
        c(0, y_kw_tratamientos[x_kw_tratamientos >= valor_critico_kw_tratamientos], 0),
        col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba_kw_tratamientos$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico H =", round(prueba_kw_tratamientos$statistic, 3)),
       col = "blue", lty = 2)

# Boxplots para comparar las distribuciones
boxplot(tiempo_recuperacion ~ tratamiento, data = datos_tratamientos,
        ylab = "Tiempo de Recuperación (días)", main = "Tiempo de Recuperación por Tratamiento")

Interpretación:

Si el p-valor es menor que \(\alpha = 0.01\), rechazaremos la hipótesis nula y concluiremos que hay una diferencia significativa en la mediana del tiempo de recuperación entre al menos uno de los tratamientos.

56. Prueba de Friedman

La prueba de Friedman es una prueba no paramétrica utilizada para comparar las medianas de tres o más grupos relacionados o dependientes (datos pareados o bloques). Es una alternativa no paramétrica a la ANOVA de medidas repetidas cuando no se cumplen los supuestos de normalidad o esfericidad.

El procedimiento general implica los siguientes pasos:

  1. Organizar los datos: Los datos se organizan en bloques (sujetos) y tratamientos (condiciones). Para cada bloque, se tienen observaciones para cada tratamiento.

  2. Asignar rangos dentro de cada bloque: Dentro de cada bloque (fila), se asignan rangos a las observaciones para los diferentes tratamientos. Si hay empates dentro de un bloque, se asigna el rango promedio.

  3. Calcular la suma de rangos para cada tratamiento: Se suman los rangos asignados a cada tratamiento a través de todos los bloques. Sea \(R_j\) la suma de rangos para el tratamiento \(j\).

  4. Calcular el estadístico de Friedman (Q): El estadístico de prueba Q se calcula mediante la siguiente fórmula:

    \[ Q = \frac{12}{Nk(k+1)} \sum_{j=1}^{k} R_j^2 - 3N(k+1) \]

    Donde:

    • \(N\) es el número de bloques (sujetos).
    • \(k\) es el número de tratamientos (grupos relacionados).
    • \(R_j\) es la suma de los rangos para el tratamiento \(j\).

    Si hay empates, se puede aplicar una corrección, pero generalmente el estadístico Q sin corrección es suficiente para tamaños de muestra moderados.

La hipótesis nula (\(H_0\)) es que no hay una diferencia significativa entre las medianas de los tratamientos. La hipótesis alternativa (\(H_1\)) es que al menos una de las medianas es diferente de las demás.

Bajo la hipótesis nula, la distribución del estadístico Q se aproxima a una distribución Chi-cuadrado (\(\chi^2\)) con \(k-1\) grados de libertad para un número suficientemente grande de bloques (\(N\)) y tratamientos (\(k\)). Generalmente, se requiere \(N > 10\) o \(k > 3\).

El p-valor es la probabilidad de obtener un estadístico Q tan grande (o más grande) como el observado, asumiendo que la hipótesis nula es verdadera. Un p-valor pequeño (generalmente menor que el nivel de significancia \(\alpha\)) proporciona evidencia en contra de la hipótesis nula, lo que lleva a rechazarla y concluir que al menos una de las medianas de los tratamientos es significativamente diferente.

Interpretación del p-valor:

  • Si el p-valor \(\leq \alpha\): Se rechaza la hipótesis nula (\(H_0\)). Existe evidencia estadística significativa para concluir que las medianas de al menos uno de los tratamientos son diferentes.
  • Si el p-valor \(> \alpha\): No se rechaza la hipótesis nula (\(H_0\)). No hay suficiente evidencia estadística para concluir que las medianas de los tratamientos son diferentes.

56.1. Ejemplo 1: Evaluación de tres métodos de enseñanza por los mismos estudiantes

Se pidió a 8 estudiantes que calificaran tres métodos de enseñanza diferentes en una escala del 1 al 10. Se desea determinar si hay una diferencia significativa en la mediana de las calificaciones entre los métodos (\(\alpha = 0.05\)).

Datos:

Estudiante Método 1 Método 2 Método 3
1 7 8 6
2 6 7 5
3 8 9 7
4 5 6 4
5 9 8 8
6 7 7 6
7 6 8 7
8 8 9 8

Solución en R:

# Datos de calificaciones por método y estudiante
datos_ensenanza <- data.frame(
  Estudiante = factor(1:8),
  Metodo1 = c(7, 6, 8, 5, 9, 7, 6, 8),
  Metodo2 = c(8, 7, 9, 6, 8, 7, 8, 9),
  Metodo3 = c(6, 5, 7, 4, 8, 6, 7, 8)
)

# Convertir a formato largo para la prueba de Friedman
datos_long_ensenanza <- reshape2::melt(datos_ensenanza, id.vars = "Estudiante",
                                       variable.name = "Metodo", value.name = "Calificacion")

# Realizar la prueba de Friedman
prueba_friedman_ensenanza <- friedman.test(Calificacion ~ Metodo | Estudiante, data = datos_long_ensenanza)
print(prueba_friedman_ensenanza)
## 
##  Friedman rank sum test
## 
## data:  Calificacion and Metodo and Estudiante
## Friedman chi-squared = 9.931, df = 2, p-value = 0.006974
# Nivel de significancia
alfa_friedman <- 0.05

# Grados de libertad (k - 1 = 3 - 1 = 2)
df_friedman <- 2

# Valor crítico de Chi-cuadrado
valor_critico_friedman <- qchisq(1 - alfa_friedman, df = df_friedman)
cat("Valor crítico de Chi-cuadrado:", valor_critico_friedman, "\n")
## Valor crítico de Chi-cuadrado: 5.991465
# Visualización de la región de rechazo
x_friedman <- seq(0, valor_critico_friedman + 5, length.out = 200)
y_friedman <- dchisq(x_friedman, df = df_friedman)
plot(x_friedman, y_friedman, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado (df=2) y Región de Rechazo (Friedman)")
abline(v = valor_critico_friedman, col = "red", lty = 2)
polygon(c(valor_critico_friedman, x_friedman[x_friedman >= valor_critico_friedman], max(x_friedman)),
        c(0, y_friedman[x_friedman >= valor_critico_friedman], 0),
        col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba_friedman_ensenanza$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico Q =", round(prueba_friedman_ensenanza$statistic, 3)),
       col = "blue", lty = 2)

# Boxplots para comparar las distribuciones por método
boxplot(Calificacion ~ Metodo, data = datos_long_ensenanza,
        ylab = "Calificación", main = "Calificaciones por Método de Enseñanza")

Interpretación:

El resultado de friedman.test() proporcionará el estadístico Chi-cuadrado y el p-valor. Si el p-valor es menor que \(\alpha = 0.05\), rechazaremos la hipótesis nula y concluiremos que hay una diferencia significativa en la mediana de las calificaciones entre al menos uno de los métodos de enseñanza. La gráfica muestra la distribución Chi-cuadrado con 2 grados de libertad y la región de rechazo. Los boxplots ayudan a visualizar las distribuciones de calificaciones por método.

56.2. Ejemplo 2: Evaluación de tres marcas de café por los mismos catadores

Se pidió a 6 catadores que calificaran tres marcas de café (A, B, C) en una escala del 1 al 5 (donde 5 es la mejor). Se desea determinar si hay una diferencia significativa en la mediana de las calificaciones entre las marcas (\(\alpha = 0.10\)).

Datos:

Catador Marca A Marca B Marca C
1 4 5 3
2 3 4 2
3 5 5 4
4 2 3 1
5 4 4 3
6 3 5 3

Solución en R:

# Datos de calificaciones por marca y catador
datos_cafe <- data.frame(
  Catador = factor(1:6),
  MarcaA = c(4, 3, 5, 2, 4, 3),
  MarcaB = c(5, 4, 5, 3, 4, 5),
  MarcaC = c(3, 2, 4, 1, 3, 3)
)

# Convertir a formato largo
datos_long_cafe <- reshape2::melt(datos_cafe, id.vars = "Catador",
                                  variable.name = "Marca", value.name = "Calificacion")

# Realizar la prueba de Friedman
prueba_friedman_cafe <- friedman.test(Calificacion ~ Marca | Catador, data = datos_long_cafe)
print(prueba_friedman_cafe)
## 
##  Friedman rank sum test
## 
## data:  Calificacion and Marca and Catador
## Friedman chi-squared = 10.571, df = 2, p-value = 0.005063
# Nivel de significancia
alfa_friedman_cafe <- 0.10

# Grados de libertad (3 - 1 = 2)
df_friedman_cafe <- 2

# Valor crítico de Chi-cuadrado
valor_critico_friedman_cafe <- qchisq(1 - alfa_friedman_cafe, df = df_friedman_cafe)
cat("Valor crítico de Chi-cuadrado:", valor_critico_friedman_cafe, "\n")
## Valor crítico de Chi-cuadrado: 4.60517
# Visualización de la región de rechazo
x_friedman_cafe <- seq(0, valor_critico_friedman_cafe + 5, length.out = 200)
y_friedman_cafe <- dchisq(x_friedman_cafe, df = df_friedman_cafe)
plot(x_friedman_cafe, y_friedman_cafe, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado (df=2) y Región de Rechazo (Friedman)")
abline(v = valor_critico_friedman_cafe, col = "red", lty = 2)
polygon(c(valor_critico_friedman_cafe, x_friedman_cafe[x_friedman_cafe >= valor_critico_friedman_cafe], max(x_friedman_cafe)),
        c(0, y_friedman_cafe[x_friedman_cafe >= valor_critico_friedman_cafe], 0),
        col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba_friedman_cafe$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico Q =", round(prueba_friedman_cafe$statistic, 3)),
       col = "blue", lty = 2)

# Boxplots para comparar las distribuciones por marca
boxplot(Calificacion ~ Marca, data = datos_long_cafe,
        ylab = "Calificación", main = "Calificaciones por Marca de Café")

Interpretación:

Si el p-valor es menor que \(\alpha = 0.10\), rechazaremos la hipótesis nula y concluiremos que hay una diferencia significativa en la mediana de las calificaciones entre al menos una de las marcas de café.

56.3. Ejemplo 3: Evaluación del rendimiento de tres algoritmos en los mismos conjuntos de datos

Se midió el tiempo de ejecución (en segundos) de tres algoritmos diferentes en 5 conjuntos de datos idénticos. Se desea determinar si hay una diferencia significativa en la mediana del tiempo de ejecución entre los algoritmos (\(\alpha = 0.05\)).

Datos:

Conjunto de Datos Algoritmo 1 Algoritmo 2 Algoritmo 3
1 2.1 2.5 1.9
2 3.0 3.2 2.8
3 1.8 2.0 1.7
4 2.5 2.7 2.3
5 2.2 2.4 2.1

Solución en R:

# Datos de tiempo de ejecución por algoritmo y conjunto de datos
datos_algoritmos <- data.frame(
  Dataset = factor(1:5),
  Algoritmo1 = c(2.1, 3.0, 1.8, 2.5, 2.2),
  Algoritmo2 = c(2.5, 3.2, 2.0, 2.7, 2.4),
  Algoritmo3 = c(1.9, 2.8, 1.7, 2.3, 2.1)
)

# Convertir a formato largo
datos_long_algoritmos <- reshape2::melt(datos_algoritmos, id.vars = "Dataset",
                                       variable.name = "Algoritmo", value.name = "Tiempo")

# Realizar la prueba de Friedman
prueba_friedman_algoritmos <- friedman.test(Tiempo ~ Algoritmo | Dataset, data = datos_long_algoritmos)
print(prueba_friedman_algoritmos)
## 
##  Friedman rank sum test
## 
## data:  Tiempo and Algoritmo and Dataset
## Friedman chi-squared = 10, df = 2, p-value = 0.006738
# Nivel de significancia
alfa_friedman_algoritmos <- 0.05

# Grados de libertad (3 - 1 = 2)
df_friedman_algoritmos <- 2

# Valor crítico de Chi-cuadrado
valor_critico_friedman_algoritmos <- qchisq(1 - alfa_friedman_algoritmos, df = df_friedman_algoritmos)
cat("Valor crítico de Chi-cuadrado:", valor_critico_friedman_algoritmos, "\n")
## Valor crítico de Chi-cuadrado: 5.991465
# Visualización de la región de rechazo
x_friedman_algoritmos <- seq(0, valor_critico_friedman_algoritmos + 5, length.out = 200)
y_friedman_algoritmos <- dchisq(x_friedman_algoritmos, df = df_friedman_algoritmos)
plot(x_friedman_algoritmos, y_friedman_algoritmos, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado (df=2) y Región de Rechazo (Friedman)")
abline(v = valor_critico_friedman_algoritmos, col = "red", lty = 2)
polygon(c(valor_critico_friedman_algoritmos, x_friedman_algoritmos[x_friedman_algoritmos >= valor_critico_friedman_algoritmos], max(x_friedman_algoritmos)),
        c(0, y_friedman_algoritmos[x_friedman_algoritmos >= valor_critico_friedman_algoritmos], 0),
        col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba_friedman_algoritmos$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico Q =", round(prueba_friedman_algoritmos$statistic, 3)),
       col = "blue", lty = 2)

# Boxplots para comparar las distribuciones por algoritmo
boxplot(Tiempo ~ Algoritmo, data = datos_long_algoritmos,
        ylab = "Tiempo de Ejecución (s)", main = "Tiempo de Ejecución por Algoritmo")

Interpretación:

Si el p-valor es menor que \(\alpha = 0.05\), rechazaremos la hipótesis nula y concluiremos que hay una diferencia significativa en la mediana del tiempo de ejecución entre al menos uno de los algoritmos.

56.4. Ejemplo 4: Evaluación de la preferencia de cuatro diseños de interfaz por los mismos usuarios

Se pidió a 7 usuarios que calificaran su preferencia por cuatro diseños de interfaz diferentes (A, B, C, D) en una escala del 1 al 7 (donde 7 es la mayor preferencia). Se desea determinar si hay una diferencia significativa en la mediana de las preferencias entre los diseños (\(\alpha = 0.01\)).

Datos:

Usuario Diseño A Diseño B Diseño C Diseño D
1 5 6 4 7
2 4 5 3 6
3 6 7 5 7
4 3 4 2 5
5 7 6 6 7
6 5 5 4 6
7 6 7 5 7

Solución en R:

# Datos de preferencia por diseño y usuario
datos_interfaz <- data.frame(
  Usuario = factor(1:7),
  DisenoA = c(5, 4, 6, 3, 7, 5, 6),
  DisenoB = c(6, 5, 7, 4, 6, 5, 7),
  DisenoC = c(4, 3, 5, 2, 6, 4, 5),
  DisenoD = c(7, 6, 7, 5, 7, 6, 7)
)

# Convertir a formato largo
datos_long_interfaz <- reshape2::melt(datos_interfaz, id.vars = "Usuario",
                                      variable.name = "Diseno", value.name = "Preferencia")

# Realizar la prueba de Friedman
prueba_friedman_interfaz <- friedman.test(Preferencia ~ Diseno | Usuario, data = datos_long_interfaz)
print(prueba_friedman_interfaz)
## 
##  Friedman rank sum test
## 
## data:  Preferencia and Diseno and Usuario
## Friedman chi-squared = 17.492, df = 3, p-value = 0.0005597
# Nivel de significancia
alfa_friedman_interfaz <- 0.01

# Grados de libertad (4 - 1 = 3)
df_friedman_interfaz <- 3

# Valor crítico de Chi-cuadrado
valor_critico_friedman_interfaz <- qchisq(1 - alfa_friedman_interfaz, df = df_friedman_interfaz)
cat("Valor crítico de Chi-cuadrado:", valor_critico_friedman_interfaz, "\n")
## Valor crítico de Chi-cuadrado: 11.34487
# Visualización de la región de rechazo
x_friedman_interfaz <- seq(0, valor_critico_friedman_interfaz + 5, length.out = 200)
y_friedman_interfaz <- dchisq(x_friedman_interfaz, df = df_friedman_interfaz)
plot(x_friedman_interfaz, y_friedman_interfaz, type = "l", xlab = "Estadístico Chi-cuadrado", ylab = "Densidad",
     main = "Distribución Chi-cuadrado (df=3) y Región de Rechazo (Friedman)")
abline(v = valor_critico_friedman_interfaz, col = "red", lty = 2)
polygon(c(valor_critico_friedman_interfaz, x_friedman_interfaz[x_friedman_interfaz >= valor_critico_friedman_interfaz], max(x_friedman_interfaz)),
        c(0, y_friedman_interfaz[x_friedman_interfaz >= valor_critico_friedman_interfaz], 0),
        col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba_friedman_interfaz$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico Q =", round(prueba_friedman_interfaz$statistic, 3)),
       col = "blue", lty = 2)

# Boxplots para comparar las distribuciones por diseño
boxplot(Preferencia ~ Diseno, data = datos_long_interfaz,
        ylab = "Preferencia", main = "Preferencia por Diseño de Interfaz")

Interpretación:

Si el p-valor es menor que \(\alpha = 0.01\), rechazaremos la hipótesis nula y concluiremos que hay una diferencia significativa en la mediana de las preferencias entre al menos uno de los diseños de interfaz.

57. Prueba de Nemenyi

La prueba de Nemenyi es una prueba post-hoc no paramétrica que se utiliza después de obtener un resultado significativo en la prueba de Friedman para determinar qué pares de grupos relacionados (tratamientos) difieren significativamente entre sí. Es análoga a las pruebas post-hoc como Tukey o Bonferroni que se utilizan después de una ANOVA.

El procedimiento general implica los siguientes pasos:

  1. Realizar la prueba de Friedman: Primero, se debe realizar una prueba de Friedman para determinar si existe una diferencia general significativa entre los grupos. Si la prueba de Friedman no es significativa, generalmente no se procede con las pruebas post-hoc.

  2. Calcular las diferencias en las sumas de rangos: Se calculan las diferencias absolutas entre las sumas de rangos (\(R_j\)) de cada par de tratamientos.

  3. Calcular la diferencia crítica: La diferencia crítica (\(CD\)) para un nivel de significancia \(\alpha\) se calcula como:

    \[ CD = q_{\alpha, k, \infty} \sqrt{\frac{k(k+1)}{12N}} \]

    Donde:

    • \(q_{\alpha, k, \infty}\) es el valor crítico de la distribución del rango estudentizado (Studentized Range Distribution) para un nivel de significancia \(\alpha\), \(k\) tratamientos y un número infinito de grados de libertad (ya que se asume un gran número de bloques \(N\)). A menudo, se utiliza una aproximación basada en la distribución normal. Para una aproximación normal, \(q_{\alpha, k, \infty}\) se reemplaza por \(z_{1-\alpha/2}\). Sin embargo, para mayor precisión, se deben usar las tablas de la distribución del rango estudentizado.
    • \(k\) es el número de tratamientos.
    • \(N\) es el número de bloques.

    Una aproximación más común y directa utilizando la distribución t de Student (con ajuste de Bonferroni) para comparar pares es:

    \[ CD = t_{\alpha / (k(k-1)), N(k-1)} \sqrt{\frac{2N(k+1)}{12N}} = t_{\alpha / (k(k-1)), N(k-1)} \sqrt{\frac{k+1}{6}} \]

    Sin embargo, la fórmula original de Nemenyi utiliza el cuantil de la distribución del rango estudentizado. Para simplificar y usar una aproximación común en R, a menudo se utiliza una diferencia crítica basada en el error estándar de la diferencia de rangos promedio.

    El rango promedio para el tratamiento \(j\) es \(\bar{R}_j = R_j / N\). La varianza de la diferencia entre dos rangos promedio es \(\frac{k(k+1)}{6N}\). El error estándar de la diferencia es \(\sqrt{\frac{k(k+1)}{6N}}\).

    La diferencia crítica se puede aproximar como:

    \[ CD = z_{1-\alpha/2} \sqrt{\frac{k(k+1)}{6N}} \]

    O, utilizando el cuantil t con corrección de Bonferroni:

    \[ CD = t_{1-\alpha/(k(k-1)), (N-1)(k-1)} \sqrt{\frac{k(k+1)}{6N}} \]

  4. Comparar las diferencias con la diferencia crítica: Si la diferencia absoluta entre las sumas de rangos (o rangos promedio) de dos tratamientos es mayor que la diferencia crítica, entonces se considera que esos dos tratamientos difieren significativamente al nivel \(\alpha\).

El p-valor para la prueba de Nemenyi para un par específico de tratamientos se puede calcular comparando la diferencia observada en sus rangos promedio con la distribución nula de las diferencias de rangos. Sin embargo, calcular los p-valores exactos para todas las comparaciones post-hoc puede ser complejo y a menudo se basa en aproximaciones. En la práctica, la significancia se determina comparando la diferencia observada con la diferencia crítica.

Interpretación:

  • Si \(|R_i - R_j| > CD\) (o \(|\bar{R}_i - \bar{R}_j| > CD'\)), entonces los tratamientos \(i\) y \(j\) tienen una diferencia significativa en sus medianas al nivel \(\alpha\).

57.1. Ejemplo 1: Prueba de Nemenyi post-hoc para la evaluación de tres métodos de enseñanza

Después de la prueba de Friedman (Ejemplo 1 anterior), supongamos que se encontró una diferencia significativa. Ahora realizamos una prueba de Nemenyi (\(\alpha = 0.05\)) para ver qué métodos difieren.

Datos (sumas de rangos del análisis de Friedman):

Supongamos que las sumas de rangos para los Métodos 1, 2 y 3 fueron \(R_1 = 18\), \(R_2 = 23\), y \(R_3 = 13\). El número de bloques (estudiantes) fue \(N = 8\), y el número de tratamientos (métodos) fue \(k = 3\).

Solución en R:

# Sumas de rangos obtenidas de la prueba de Friedman
R <- c(18, 23, 13)
n_bloques <- 8
n_tratamientos <- 3
alfa_nemenyi <- 0.05

# Calcular los rangos promedio
R_promedio <- R / n_bloques
print(paste("Rangos promedio:", paste(round(R_promedio, 2), collapse = ", ")))
## [1] "Rangos promedio: 2.25, 2.88, 1.62"
# Calcular la diferencia crítica (aproximación normal)
z_critico <- qnorm(1 - alfa_nemenyi / 2)
diferencia_critica <- z_critico * sqrt(n_tratamientos * (n_tratamientos + 1) / (6 * n_bloques))
cat("Diferencia crítica (aproximada):", round(diferencia_critica, 2), "\n")
## Diferencia crítica (aproximada): 0.98
# Comparar las diferencias entre los rangos promedio con la diferencia crítica
diferencias_pares <- combn(R_promedio, 2)
nombres_pares <- combn(paste("Método", 1:n_tratamientos), 2)

for (i in 1:ncol(diferencias_pares)) {
  diff_abs <- abs(diferencias_pares[1, i] - diferencias_pares[2, i])
  if (diff_abs > diferencia_critica) {
    cat(nombres_pares[1, i], "vs", nombres_pares[2, i], ": Diferencia significativa (", round(diff_abs, 2), " > ", round(diferencia_critica, 2), ")\n")
  } else {
    cat(nombres_pares[1, i], "vs", nombres_pares[2, i], ": No hay diferencia significativa (", round(diff_abs, 2), " <= ", round(diferencia_critica, 2), ")\n")
  }
}
## Método 1 vs Método 2 : No hay diferencia significativa ( 0.62  <=  0.98 )
## Método 1 vs Método 3 : No hay diferencia significativa ( 0.62  <=  0.98 )
## Método 2 vs Método 3 : Diferencia significativa ( 1.25  >  0.98 )
# Visualización de las regiones de no significancia (conceptual)
# Se basa en las diferencias entre las medias de los rangos.
medias_rangos <- R_promedio
lim_sup <- outer(medias_rangos, diferencia_critica / 2, "+")
lim_inf <- outer(medias_rangos, diferencia_critica / 2, "-")

# Esta visualización es más compleja de dibujar directamente en un gráfico simple.
# Generalmente, se representan las medias con barras de error indicando la diferencia crítica.
# Aquí, solo mostramos los límites conceptuales.
cat("\nLímites de no significancia (aproximados):\n")
## 
## Límites de no significancia (aproximados):
for (i in 1:n_tratamientos) {
  cat("Método", i, ": [", round(lim_inf[i, 1], 2), ",", round(lim_sup[i, 1], 2), "]\n")
}
## Método 1 : [ 1.76 , 2.74 ]
## Método 2 : [ 2.39 , 3.36 ]
## Método 3 : [ 1.14 , 2.11 ]

Interpretación:

Se comparan las diferencias en los rangos promedio de cada par de métodos con la diferencia crítica. Si la diferencia absoluta excede la diferencia crítica, se concluye que esos dos métodos difieren significativamente en sus medianas. La “región de no significancia” se puede conceptualizar como un intervalo alrededor de la media del rango de cada grupo; si los intervalos de dos grupos se superponen, la diferencia no es significativa.

57.2. Ejemplo 2: Prueba de Nemenyi post-hoc para la evaluación de tres marcas de café

Después de la prueba de Friedman (Ejemplo 2 anterior), supongamos que se encontró una diferencia significativa. Ahora realizamos una prueba de Nemenyi (\(\alpha = 0.10\)).

Datos (sumas de rangos):

Supongamos que las sumas de rangos para las Marcas A, B y C fueron \(R_A = 11\), \(R_B = 16\), y \(R_C = 9\). El número de bloques (catadores) fue \(N = 6\), y el número de tratamientos (marcas) fue \(k = 3\).

Solución en R:

# Sumas de rangos
R_cafe <- c(11, 16, 9)
n_bloques_cafe <- 6
n_tratamientos_cafe <- 3
alfa_nemenyi_cafe <- 0.10

# Rangos promedio
R_promedio_cafe <- R_cafe / n_bloques_cafe
print(paste("Rangos promedio:", paste(round(R_promedio_cafe, 2), collapse = ", ")))
## [1] "Rangos promedio: 1.83, 2.67, 1.5"
# Diferencia crítica (aproximación normal)
z_critico_cafe <- qnorm(1 - alfa_nemenyi_cafe / 2)
diferencia_critica_cafe <- z_critico_cafe * sqrt(n_tratamientos_cafe * (n_tratamientos_cafe + 1) / (6 * n_bloques_cafe))
cat("Diferencia crítica (aproximada):", round(diferencia_critica_cafe, 2), "\n")
## Diferencia crítica (aproximada): 0.95
# Comparar las diferencias
diferencias_pares_cafe <- combn(R_promedio_cafe, 2)
nombres_pares_cafe <- combn(paste("Marca", LETTERS[1:n_tratamientos_cafe]), 2)

for (i in 1:ncol(diferencias_pares_cafe)) {
  diff_abs <- abs(diferencias_pares_cafe[1, i] - diferencias_pares_cafe[2, i])
  if (diff_abs > diferencia_critica_cafe) {
    cat(nombres_pares_cafe[1, i], "vs", nombres_pares_cafe[2, i], ": Diferencia significativa (", round(diff_abs, 2), " > ", round(diferencia_critica_cafe, 2), ")\n")
  } else {
    cat(nombres_pares_cafe[1, i], "vs", nombres_pares_cafe[2, i], ": No hay diferencia significativa (", round(diff_abs, 2), " <= ", round(diferencia_critica_cafe, 2), ")\n")
  }
}
## Marca A vs Marca B : No hay diferencia significativa ( 0.83  <=  0.95 )
## Marca A vs Marca C : No hay diferencia significativa ( 0.33  <=  0.95 )
## Marca B vs Marca C : Diferencia significativa ( 1.17  >  0.95 )
# Límites de no significancia (aproximados)
medias_rangos_cafe <- R_promedio_cafe
lim_sup_cafe <- outer(medias_rangos_cafe, diferencia_critica_cafe / 2, "+")
lim_inf_cafe <- outer(medias_rangos_cafe, diferencia_critica_cafe / 2, "-")

cat("\nLímites de no significancia (aproximados):\n")
## 
## Límites de no significancia (aproximados):
for (i in 1:n_tratamientos_cafe) {
  cat("Marca", LETTERS[i], ": [", round(lim_inf_cafe[i, 1], 2), ",", round(lim_sup_cafe[i, 1], 2), "]\n")
}
## Marca A : [ 1.36 , 2.31 ]
## Marca B : [ 2.19 , 3.14 ]
## Marca C : [ 1.03 , 1.97 ]

Interpretación: Similar al Ejemplo 1, se comparan las diferencias en los rangos promedio de las marcas de café con la diferencia crítica.

57.3. Ejemplo 3: Prueba de Nemenyi post-hoc para la evaluación del rendimiento de tres algoritmos

Después de la prueba de Friedman (Ejemplo 3 anterior), supongamos que se encontró una diferencia significativa. Ahora realizamos una prueba de Nemenyi (\(\alpha = 0.05\)).

Datos (sumas de rangos):

Supongamos que las sumas de rangos para los Algoritmos 1, 2 y 3 fueron \(R_1 = 8\), \(R_2 = 13\), y \(R_3 = 4\). El número de bloques (conjuntos de datos) fue \(N = 5\), y el número de tratamientos (algoritmos) fue \(k = 3\).

Solución en R:

# Sumas de rangos
R_algoritmos <- c(8, 13, 4)
n_bloques_algoritmos <- 5
n_tratamientos_algoritmos <- 3
alfa_nemenyi_algoritmos <- 0.05

# Rangos promedio
R_promedio_algoritmos <- R_algoritmos / n_bloques_algoritmos
print(paste("Rangos promedio:", paste(round(R_promedio_algoritmos, 2), collapse = ", ")))
## [1] "Rangos promedio: 1.6, 2.6, 0.8"
# Diferencia crítica (aproximación normal)
z_critico_algoritmos <- qnorm(1 - alfa_nemenyi_algoritmos / 2)
diferencia_critica_algoritmos <- z_critico_algoritmos * sqrt(n_tratamientos_algoritmos * (n_tratamientos_algoritmos + 1) / (6 * n_bloques_algoritmos))
cat("Diferencia crítica (aproximada):", round(diferencia_critica_algoritmos, 2), "\n")
## Diferencia crítica (aproximada): 1.24
# Comparar las diferencias
diferencias_pares_algoritmos <- combn(R_promedio_algoritmos, 2)
nombres_pares_algoritmos <- combn(paste("Algoritmo", 1:n_tratamientos_algoritmos), 2)

for (i in 1:ncol(diferencias_pares_algoritmos)) {
  diff_abs <- abs(diferencias_pares_algoritmos[1, i] - diferencias_pares_algoritmos[2, i])
  if (diff_abs > diferencia_critica_algoritmos) {
    cat(nombres_pares_algoritmos[1, i], "vs", nombres_pares_algoritmos[2, i], ": Diferencia significativa (", round(diff_abs, 2), " > ", round(diferencia_critica_algoritmos, 2), ")\n")
  } else {
    cat(nombres_pares_algoritmos[1, i], "vs", nombres_pares_algoritmos[2, i], ": No hay diferencia significativa (", round(diff_abs, 2), " <= ", round(diferencia_critica_algoritmos, 2), ")\n")
  }
}
## Algoritmo 1 vs Algoritmo 2 : No hay diferencia significativa ( 1  <=  1.24 )
## Algoritmo 1 vs Algoritmo 3 : No hay diferencia significativa ( 0.8  <=  1.24 )
## Algoritmo 2 vs Algoritmo 3 : Diferencia significativa ( 1.8  >  1.24 )
# Límites de no significancia (aproximados)
medias_rangos_algoritmos <- R_promedio_algoritmos
lim_sup_algoritmos <- outer(medias_rangos_algoritmos, diferencia_critica_algoritmos / 2, "+")
lim_inf_algoritmos <- outer(medias_rangos_algoritmos, diferencia_critica_algoritmos / 2, "-")

cat("\nLímites de no significancia (aproximados):\n")
## 
## Límites de no significancia (aproximados):
for (i in 1:n_tratamientos_algoritmos) {
  cat("Algoritmo", i, ": [", round(lim_inf_algoritmos[i, 1], 2), ",", round(lim_sup_algoritmos[i, 1], 2), "]\n")
}
## Algoritmo 1 : [ 0.98 , 2.22 ]
## Algoritmo 2 : [ 1.98 , 3.22 ]
## Algoritmo 3 : [ 0.18 , 1.42 ]

Interpretación: Se comparan las diferencias en los rangos promedio de los algoritmos con la diferencia crítica.

**57.4. Ejemplo 4: Prueba de Nemenyi post-hoc para la evaluación de la preferencia de cuatro diseños de interfaz

Después de la prueba de Friedman (Ejemplo 4 anterior), supongamos que se encontró una diferencia significativa. Ahora realizamos una prueba de Nemenyi (\(\alpha = 0.01\)).

Datos (sumas de rangos):

Supongamos que las sumas de rangos para los Diseños A, B, C y D fueron \(R_A = 12\), \(R_B = 18\), \(R_C = 9\), y \(R_D = 21\). El número de bloques (usuarios) fue \(N = 7\), y el número de tratamientos (diseños) fue \(k = 4\).

Solución en R:

# Sumas de rangos
R_interfaz <- c(12, 18, 9, 21)
n_bloques_interfaz <- 7
n_tratamientos_interfaz <- 4
alfa_nemenyi_interfaz <- 0.01

# Rangos promedio
R_promedio_interfaz <- R_interfaz / n_bloques_interfaz
print(paste("Rangos promedio:", paste(round(R_promedio_interfaz, 2), collapse = ", ")))
## [1] "Rangos promedio: 1.71, 2.57, 1.29, 3"
# Diferencia crítica (aproximación normal)
z_critico_interfaz <- qnorm(1 - alfa_nemenyi_interfaz / 2)
diferencia_critica_interfaz <- z_critico_interfaz * sqrt(n_tratamientos_interfaz * (n_tratamientos_interfaz + 1) / (6 * n_bloques_interfaz))
cat("Diferencia crítica (aproximada):", round(diferencia_critica_interfaz, 2), "\n")
## Diferencia crítica (aproximada): 1.78
# Comparar las diferencias
diferencias_pares_interfaz <- combn(R_promedio_interfaz, 2)
nombres_pares_interfaz <- combn(paste("Diseño", LETTERS[1:n_tratamientos_interfaz]), 2)

for (i in 1:ncol(diferencias_pares_interfaz)) {
  diff_abs <- abs(diferencias_pares_interfaz[1, i] - diferencias_pares_interfaz[2, i])
  if (diff_abs > diferencia_critica_interfaz) {
    cat(nombres_pares_interfaz[1, i], "vs", nombres_pares_interfaz[2, i], ": Diferencia significativa (", round(diff_abs, 2), " > ", round(diferencia_critica_interfaz, 2), ")\n")
  } else {
    cat(nombres_pares_interfaz[1, i], "vs", nombres_pares_interfaz[2, i], ": No hay diferencia significativa (", round(diff_abs, 2), " <= ", round(diferencia_critica_interfaz, 2), ")\n")
  }
}
## Diseño A vs Diseño B : No hay diferencia significativa ( 0.86  <=  1.78 )
## Diseño A vs Diseño C : No hay diferencia significativa ( 0.43  <=  1.78 )
## Diseño A vs Diseño D : No hay diferencia significativa ( 1.29  <=  1.78 )
## Diseño B vs Diseño C : No hay diferencia significativa ( 1.29  <=  1.78 )
## Diseño B vs Diseño D : No hay diferencia significativa ( 0.43  <=  1.78 )
## Diseño C vs Diseño D : No hay diferencia significativa ( 1.71  <=  1.78 )
# Límites de no significancia (aproximados)
medias_rangos_interfaz <- R_promedio_interfaz
lim_sup_interfaz <- outer(medias_rangos_interfaz, diferencia_critica_interfaz / 2, "+")
lim_inf_interfaz <- outer(medias_rangos_interfaz, diferencia_critica_interfaz / 2, "-")

cat("\nLímites de no significancia (aproximados):\n")
## 
## Límites de no significancia (aproximados):
for (i in 1:n_tratamientos_interfaz) {
  cat("Diseño", LETTERS[i], ": [", round(lim_inf_interfaz[i, 1], 2), ",", round(lim_sup_interfaz[i, 1], 2), "]\n")
}
## Diseño A : [ 0.83 , 2.6 ]
## Diseño B : [ 1.68 , 3.46 ]
## Diseño C : [ 0.4 , 2.17 ]
## Diseño D : [ 2.11 , 3.89 ]

Interpretación:

Se comparan las diferencias en los rangos promedio de cada par de diseños de interfaz con la diferencia crítica. Si la diferencia absoluta excede la diferencia crítica, se concluye que esos dos diseños difieren significativamente en su preferencia mediana.

58. Coeficiente de Correlación de Spearman (rs)

El coeficiente de correlación de Spearman (rs) es una medida no paramétrica de la fuerza y la dirección de la asociación entre dos variables que han sido ordenadas por rangos. A diferencia del coeficiente de correlación de Pearson, no asume una relación lineal entre las variables ni requiere que los datos estén distribuidos normalmente. Se basa en la correlación de Pearson calculada sobre los rangos de las variables.

El procedimiento para calcular el coeficiente de Spearman es el siguiente:

  1. Ordenar los datos: Para cada variable, se asignan rangos a las observaciones, ordenándolas de menor a mayor. En caso de empates, se asigna el rango promedio.

  2. Calcular las diferencias en los rangos: Para cada par de observaciones, se calcula la diferencia (\(d_i\)) entre el rango de la primera variable y el rango de la segunda variable.

  3. Calcular el coeficiente de Spearman: El coeficiente de Spearman (\(r_s\)) se calcula mediante la siguiente fórmula:

    \[ r_s = 1 - \frac{6 \sum_{i=1}^{n} d_i^2}{n(n^2 - 1)} \]

    Donde:

    • \(n\) es el número de pares de observaciones.
    • \(d_i\) es la diferencia entre los rangos del \(i\)-ésimo par.

    El coeficiente de Spearman varía entre -1 y +1. Un valor de +1 indica una correlación monótona perfecta positiva (a medida que una variable aumenta, la otra también lo hace, no necesariamente de forma lineal), -1 indica una correlación monótona perfecta negativa (a medida que una variable aumenta, la otra disminuye), y 0 indica que no hay una tendencia monótona.

Para probar la significancia del coeficiente de Spearman (es decir, si la correlación observada es significativamente diferente de cero en la población), se puede realizar una prueba de hipótesis. La hipótesis nula (\(H_0\)) es que no hay correlación monótona en la población (\(\rho_s = 0\)). La hipótesis alternativa (\(H_1\)) puede ser unilateral (\(\rho_s > 0\) o \(\rho_s < 0\)) o bilateral (\(\rho_s \neq 0\)).

El p-valor es la probabilidad de obtener un coeficiente de Spearman tan extremo (o más extremo) como el observado, asumiendo que la hipótesis nula es verdadera.

Para tamaños de muestra pequeños (\(n \leq 30\)), se utilizan tablas especiales para determinar el p-valor asociado con el valor de \(r_s\).

Para tamaños de muestra grandes (\(n > 30\)), el estadístico \(t\) calculado como:

\[ t = r_s \sqrt{\frac{n-2}{1 - r_s^2}} \]

sigue aproximadamente una distribución t de Student con \(n-2\) grados de libertad bajo la hipótesis nula. El p-valor se calcula entonces utilizando esta distribución t.

Interpretación del p-valor:

  • Si el p-valor \(\leq \alpha\): Se rechaza la hipótesis nula (\(H_0\)). Existe evidencia estadística significativa para concluir que hay una correlación monótona entre las dos variables en la población.
  • Si el p-valor \(> \alpha\): No se rechaza la hipótesis nula (\(H_0\)). No hay suficiente evidencia estadística para concluir que hay una correlación monótona entre las dos variables en la población.

58.1. Ejemplo 1: Correlación entre horas de estudio y calificación del examen

Se registraron las horas de estudio y las calificaciones obtenidas en un examen para 10 estudiantes. Se desea determinar si existe una correlación monótona significativa entre estas dos variables (\(\alpha = 0.05\)).

Datos:

Estudiante Horas de Estudio Calificación
1 5 78
2 2 65
3 8 90
4 3 70
5 6 82
6 1 60
7 7 85
8 4 75
9 9 95
10 4 72

Solución en R:

# Datos de horas de estudio y calificación
horas_estudio <- c(5, 2, 8, 3, 6, 1, 7, 4, 9, 4)
calificacion <- c(78, 65, 90, 70, 82, 60, 85, 75, 95, 72)

# Calcular el coeficiente de Spearman y el p-valor
prueba_spearman <- cor.test(horas_estudio, calificacion, method = "spearman")
## Warning in cor.test.default(horas_estudio, calificacion, method = "spearman"):
## Cannot compute exact p-value with ties
print(prueba_spearman)
## 
##  Spearman's rank correlation rho
## 
## data:  horas_estudio and calificacion
## S = 0.50076, p-value = 3.698e-10
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##       rho 
## 0.9969651
# Nivel de significancia
alfa_spearman <- 0.05

# Para visualizar la región de rechazo (aproximación t para n > 30, aquí n = 10)
# Usaremos los valores críticos de t para 10 - 2 = 8 grados de libertad
valor_critico_t_spearman <- qt(1 - alfa_spearman / 2, df = 8)
cat("Valor crítico de t (bilateral):", valor_critico_t_spearman, "\n")
## Valor crítico de t (bilateral): 2.306004
# No es directo dibujar la "región" en un gráfico de dispersión.
# La región de rechazo se aplica al estadístico t (o al rs basado en tablas).
# Un gráfico de dispersión con una línea de tendencia no paramétrica (como loess)
# puede ayudar a visualizar la relación monótona.

plot(horas_estudio, calificacion, main = "Horas de Estudio vs. Calificación",
     xlab = "Horas de Estudio", ylab = "Calificación")
abline(lm(calificacion ~ horas_estudio), col = "blue", lty = 2) # Línea de regresión lineal (solo para referencia)
lines(lowess(horas_estudio, calificacion), col = "red", lwd = 2) # Línea de tendencia no paramétrica
legend("topleft", legend = c("Tendencia Lineal", "Tendencia Monótona"),
       col = c("blue", "red"), lty = c(2, 1), lwd = c(1, 2))

Interpretación:

El resultado de cor.test proporcionará el coeficiente de Spearman (sample corr) y el p-valor. Si el p-valor es menor que \(\alpha = 0.05\), rechazaremos la hipótesis nula y concluiremos que existe una correlación monótona significativa entre las horas de estudio y la calificación del examen. La gráfica de dispersión con la línea de tendencia no paramétrica ayuda a visualizar la naturaleza de la relación.

58.2. Ejemplo 2: Correlación entre la clasificación de un producto por dos jueces

Ocho jueces clasificaron un producto en una escala del 1 al 10. Se desea determinar si existe una concordancia monótona significativa entre las clasificaciones de los dos jueces (\(\alpha = 0.01\)).

Datos:

Juez Clasificación 1 Clasificación 2
1 7 8
2 6 7
3 8 8
4 5 6
5 9 7
6 7 9
7 6 8
8 8 9

Solución en R:

# Datos de clasificaciones de los dos jueces
clasificacion1 <- c(7, 6, 8, 5, 9, 7, 6, 8)
clasificacion2 <- c(8, 7, 8, 6, 7, 9, 8, 9)

# Calcular el coeficiente de Spearman y el p-valor
prueba_spearman_jueces <- cor.test(clasificacion1, clasificacion2, method = "spearman")
## Warning in cor.test.default(clasificacion1, clasificacion2, method =
## "spearman"): Cannot compute exact p-value with ties
print(prueba_spearman_jueces)
## 
##  Spearman's rank correlation rho
## 
## data:  clasificacion1 and clasificacion2
## S = 51.768, p-value = 0.348
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##       rho 
## 0.3837161
# Nivel de significancia
alfa_spearman_jueces <- 0.01

# Valor crítico de t para 8 - 2 = 6 grados de libertad
valor_critico_t_jueces <- qt(1 - alfa_spearman_jueces / 2, df = 6)
cat("Valor crítico de t (bilateral):", valor_critico_t_jueces, "\n")
## Valor crítico de t (bilateral): 3.707428
# Gráfico de dispersión
plot(clasificacion1, clasificacion2, main = "Clasificación Juez 1 vs. Clasificación Juez 2",
     xlab = "Clasificación Juez 1", ylab = "Clasificación Juez 2")
lines(lowess(clasificacion1, clasificacion2), col = "red", lwd = 2)

Interpretación:

Si el p-valor es menor que \(\alpha = 0.01\), rechazaremos la hipótesis nula y concluiremos que existe una concordancia monótona significativa entre las clasificaciones de los dos jueces.

58.3. Ejemplo 3: Correlación entre la concentración de un contaminante y la diversidad de especies

Se midió la concentración de un contaminante en 12 sitios y se calculó el índice de diversidad de especies en cada sitio. Se desea probar si existe una correlación monótona negativa significativa entre la concentración del contaminante y la diversidad de especies (\(\alpha = 0.05\), prueba unilateral).

Datos:

Sitio Contaminante Diversidad
1 1.5 4.2
2 2.0 3.8
3 1.0 4.5
4 2.5 3.5
5 0.5 4.8
6 3.0 3.0
7 1.8 4.0
8 2.2 3.7
9 0.8 4.6
10 2.8 3.2
11 1.2 4.3
12 3.5 2.8

Solución en R:

# Datos de contaminante y diversidad
contaminante <- c(1.5, 2.0, 1.0, 2.5, 0.5, 3.0, 1.8, 2.2, 0.8, 2.8, 1.2, 3.5)
diversidad <- c(4.2, 3.8, 4.5, 3.5, 4.8, 3.0, 4.0, 3.7, 4.6, 3.2, 4.3, 2.8)

# Calcular el coeficiente de Spearman y el p-valor (prueba unilateral "less")
prueba_spearman_contaminante <- cor.test(contaminante, diversidad, method = "spearman", alternative = "less")
print(prueba_spearman_contaminante)
## 
##  Spearman's rank correlation rho
## 
## data:  contaminante and diversidad
## S = 572, p-value < 2.2e-16
## alternative hypothesis: true rho is less than 0
## sample estimates:
## rho 
##  -1
# Nivel de significancia
alfa_spearman_contaminante <- 0.05

# Valor crítico de t para 12 - 2 = 10 grados de libertad (unilateral)
valor_critico_t_contaminante <- qt(alfa_spearman_contaminante, df = 10)
cat("Valor crítico de t (unilateral, less):", valor_critico_t_contaminante, "\n")
## Valor crítico de t (unilateral, less): -1.812461
# Gráfico de dispersión
plot(contaminante, diversidad, main = "Contaminante vs. Diversidad de Especies",
     xlab = "Concentración del Contaminante", ylab = "Índice de Diversidad")
lines(lowess(contaminante, diversidad), col = "red", lwd = 2)

Interpretación:

Si el p-valor es menor que \(\alpha = 0.05\), rechazaremos la hipótesis nula y concluiremos que existe una correlación monótona negativa significativa entre la concentración del contaminante y la diversidad de especies.

**58.4. Ejemplo 4: Correlación entre la altitud y la temperatura promedio

Se registraron la altitud y la temperatura promedio anual en 15 localidades. Se desea probar si existe una correlación monótona negativa significativa entre la altitud y la temperatura (\(\alpha = 0.01\), prueba unilateral).

Datos:

Localidad Altitud (m) Temperatura (°C)
1 100 25
2 500 22
3 1500 15
4 200 24
5 1000 18
6 300 23
7 1800 13
8 700 20
9 1200 16
10 400 22.5
11 1600 14.5
12 900 19
13 1100 17
14 2000 12
15 600 21

Solución en R:

# Datos de altitud y temperatura
altitud <- c(100, 500, 1500, 200, 1000, 300, 1800, 700, 1200, 400, 1600, 900, 1100, 2000, 600)
temperatura <- c(25, 22, 15, 24, 18, 23, 13, 20, 16, 22.5, 14.5, 19, 17, 12, 21)

# Calcular el coeficiente de Spearman y el p-valor (prueba unilateral "less")
prueba_spearman_altitud <- cor.test(altitud, temperatura, method = "spearman", alternative = "less")
print(prueba_spearman_altitud)
## 
##  Spearman's rank correlation rho
## 
## data:  altitud and temperatura
## S = 1120, p-value < 2.2e-16
## alternative hypothesis: true rho is less than 0
## sample estimates:
## rho 
##  -1
# Nivel de significancia
alfa_spearman_altitud <- 0.01

# Valor crítico de t para 15 - 2 = 13 grados de libertad (unilateral)
valor_critico_t_altitud <- qt(alfa_spearman_altitud, df = 13)
cat("Valor crítico de t (unilateral, less):", valor_critico_t_altitud, "\n")
## Valor crítico de t (unilateral, less): -2.650309
# Gráfico de dispersión
plot(altitud, temperatura, main = "Altitud vs. Temperatura Promedio",
     xlab = "Altitud (m)", ylab = "Temperatura (°C)")
lines(lowess(altitud, temperatura), col = "red", lwd = 2)

Interpretación:

Si el p-valor es menor que \(\alpha = 0.01\), rechazaremos la hipótesis nula y concluiremos que existe una correlación monótona negativa significativa entre la altitud y la temperatura promedio.

59. Prueba de Tau de Kendall (\(\tau\))

El coeficiente de tau de Kendall (\(\tau\)) es una medida no paramétrica de la correlación de rango entre dos variables. Al igual que el coeficiente de Spearman, evalúa la fuerza y la dirección de la relación monótona entre las variables, pero utiliza una lógica diferente basada en el número de pares concordantes y discordantes.

El procedimiento para calcular el coeficiente de Kendall (\(\tau_a\)) es el siguiente (existen variantes como \(\tau_b\) que corrigen para empates):

  1. Ordenar los datos por una variable: Se ordenan los pares de observaciones según los valores de una de las variables (por ejemplo, la primera).

  2. Contar pares concordantes y discordantes: Se examinan todos los pares de observaciones. Un par es concordante si el orden de la segunda variable es el mismo que el orden de la primera variable para ese par en relación con la observación de referencia. Un par es discordante si el orden es inverso.

  3. Calcular Tau-a: El coeficiente \(\tau_a\) se calcula como:

    \[ \tau_a = \frac{n_c - n_d}{n(n-1)/2} \]

    Donde:

    • \(n_c\) es el número de pares concordantes.
    • \(n_d\) es el número de pares discordantes.
    • \(n\) es el número total de pares de observaciones.

    Para corregir por empates, se utilizan otras versiones como \(\tau_b\). En R, la función cor.test con method = "kendall" calcula \(\tau_b\).

El coeficiente \(\tau\) varía entre -1 y +1, con la misma interpretación general que el coeficiente de Spearman (correlación monótona perfecta positiva, negativa o ausencia de tendencia).

Para probar la significancia del coeficiente de Kendall (es decir, si la correlación observada es significativamente diferente de cero en la población), se realiza una prueba de hipótesis. La hipótesis nula (\(H_0\)) es que no hay correlación monótona en la población (\(\tau = 0\)). La hipótesis alternativa (\(H_1\)) puede ser unilateral (\(\tau > 0\) o \(\tau < 0\)) o bilateral (\(\tau \neq 0\)).

El p-valor es la probabilidad de obtener un coeficiente de Kendall tan extremo (o más extremo) como el observado, asumiendo que la hipótesis nula es verdadera.

Para tamaños de muestra grandes (\(n > 10\)), el estadístico \(Z\) se aproxima a una distribución normal estándar:

\[ Z = \frac{\tau}{\sqrt{\frac{2(2n+5)}{9n(n-1)}}} \]

El p-valor se calcula entonces utilizando la distribución normal estándar. Para pruebas unilaterales, se usa la probabilidad de una cola; para pruebas bilaterales, se usa la probabilidad de ambas colas.

Interpretación del p-valor:

  • Si el p-valor \(\leq \alpha\): Se rechaza la hipótesis nula (\(H_0\)). Existe evidencia estadística significativa para concluir que hay una correlación monótona entre las dos variables en la población.
  • Si el p-valor \(> \alpha\): No se rechaza la hipótesis nula (\(H_0\)). No hay suficiente evidencia estadística para concluir que hay una correlación monótona entre las dos variables en la población.

59.1 Ejemplo 1: Correlación entre la experiencia laboral y el salario

Se registraron los años de experiencia laboral y el salario anual (en miles de dólares) para 10 empleados. Se desea determinar si existe una correlación monótona significativa entre estas dos variables (\(\alpha = 0.05\)).

Datos:

Empleado Experiencia (años) Salario (miles $)
1 2 45
2 5 60
3 1 40
4 8 75
5 3 50
6 10 80
7 4 55
8 6 65
9 7 70
10 9 85

Solución en R:

# Datos de experiencia y salario
experiencia <- c(2, 5, 1, 8, 3, 10, 4, 6, 7, 9)
salario <- c(45, 60, 40, 75, 50, 80, 55, 65, 70, 85)

# Calcular el coeficiente de Kendall y el p-valor
prueba_kendall <- cor.test(experiencia, salario, method = "kendall")
print(prueba_kendall)
## 
##  Kendall's rank correlation tau
## 
## data:  experiencia and salario
## T = 44, p-value = 5.511e-06
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
##       tau 
## 0.9555556
# Nivel de significancia
alfa_kendall <- 0.05

# Para visualizar la región de rechazo (aproximación normal)
z_critico_kendall <- qnorm(1 - alfa_kendall / 2)
cat("Valor crítico de Z (bilateral):", z_critico_kendall, "\n")
## Valor crítico de Z (bilateral): 1.959964
# Visualización de la región de rechazo
x_norm <- seq(-3, 3, length.out = 200)
y_norm <- dnorm(x_norm)
plot(x_norm, y_norm, type = "l", xlab = "Estadístico Z", ylab = "Densidad",
     main = "Distribución Normal Estándar y Región de Rechazo (Kendall)")
abline(v = c(-z_critico_kendall, z_critico_kendall), col = "red", lty = 2)
polygon(c(-Inf, x_norm[x_norm <= -z_critico_kendall], -z_critico_kendall), c(0, y_norm[x_norm <= -z_critico_kendall], 0), col = "salmon", border = NA)
polygon(c(z_critico_kendall, x_norm[x_norm >= z_critico_kendall], Inf), c(0, y_norm[x_norm >= z_critico_kendall], 0), col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba_kendall$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico Z =", round(prueba_kendall$statistic, 3)),
       col = "blue", lty = 2)

# Gráfico de dispersión
plot(experiencia, salario, main = "Experiencia vs. Salario",
     xlab = "Experiencia (años)", ylab = "Salario (miles $)")
lines(lowess(experiencia, salario), col = "red", lwd = 2)

Interpretación:

El resultado de cor.test proporcionará el coeficiente de tau de Kendall (tau) y el p-valor. Si el p-valor es menor que \(\alpha = 0.05\), rechazaremos la hipótesis nula y concluiremos que existe una correlación monótona significativa entre la experiencia laboral y el salario. La gráfica muestra la distribución normal estándar y la región de rechazo para una prueba bilateral.

59.2. Ejemplo 2: Correlación entre la calidad de un producto y la satisfacción del cliente

Se pidió a 8 clientes que calificaran la calidad de un producto y su nivel de satisfacción en una escala del 1 al 10. Se desea determinar si existe una correlación monótona significativa entre estas dos variables (\(\alpha = 0.01\)).

Datos:

Cliente Calidad Satisfacción
1 7 8
2 6 7
3 8 9
4 5 6
5 9 7
6 7 9
7 6 8
8 8 9

Solución en R:

# Datos de calidad y satisfacción
calidad <- c(7, 6, 8, 5, 9, 7, 6, 8)
satisfaccion <- c(8, 7, 9, 6, 7, 9, 8, 9)

# Calcular el coeficiente de Kendall y el p-valor
prueba_kendall_satisfaccion <- cor.test(calidad, satisfaccion, method = "kendall")
## Warning in cor.test.default(calidad, satisfaccion, method = "kendall"): Cannot
## compute exact p-value with ties
print(prueba_kendall_satisfaccion)
## 
##  Kendall's rank correlation tau
## 
## data:  calidad and satisfaccion
## z = 1.4544, p-value = 0.1458
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
##       tau 
## 0.4587317
# Nivel de significancia
alfa_kendall_satisfaccion <- 0.01

# Valor crítico de Z
z_critico_satisfaccion <- qnorm(1 - alfa_kendall_satisfaccion / 2)
cat("Valor crítico de Z (bilateral):", z_critico_satisfaccion, "\n")
## Valor crítico de Z (bilateral): 2.575829
# Visualización de la región de rechazo
plot(x_norm, y_norm, type = "l", xlab = "Estadístico Z", ylab = "Densidad",
     main = "Distribución Normal Estándar y Región de Rechazo (Kendall)")
abline(v = c(-z_critico_satisfaccion, z_critico_satisfaccion), col = "red", lty = 2)
polygon(c(-Inf, x_norm[x_norm <= -z_critico_satisfaccion], -z_critico_satisfaccion), c(0, y_norm[x_norm <= -z_critico_satisfaccion], 0), col = "salmon", border = NA)
polygon(c(z_critico_satisfaccion, x_norm[x_norm >= z_critico_satisfaccion], Inf), c(0, y_norm[x_norm >= z_critico_satisfaccion], 0), col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba_kendall_satisfaccion$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico Z =", round(prueba_kendall_satisfaccion$statistic, 3)),
       col = "blue", lty = 2)

# Gráfico de dispersión
plot(calidad, satisfaccion, main = "Calidad vs. Satisfacción del Cliente",
     xlab = "Calidad", ylab = "Satisfacción")
lines(lowess(calidad, satisfaccion), col = "red", lwd = 2)

Interpretación:

Si el p-valor es menor que \(\alpha = 0.01\), rechazaremos la hipótesis nula y concluiremos que existe una correlación monótona significativa entre la calidad del producto y la satisfacción del cliente.

59.3. Ejemplo 3: Correlación entre la dosis de un fármaco y la respuesta del paciente (prueba unilateral)

Se administraron diferentes dosis de un fármaco a 12 pacientes y se midió su respuesta (en una escala del 1 al 10). Se desea probar si existe una correlación monótona positiva significativa entre la dosis y la respuesta (\(\alpha = 0.05\)).

Datos:

Paciente Dosis (mg) Respuesta
1 10 3
2 20 4
3 15 5
4 25 6
5 5 2
6 30 7
7 18 4
8 22 5
9 12 3
10 28 6
11 16 5
12 35 8

Solución en R:

# Datos de dosis y respuesta
dosis <- c(10, 20, 15, 25, 5, 30, 18, 22, 12, 28, 16, 35)
respuesta <- c(3, 4, 5, 6, 2, 7, 4, 5, 3, 6, 5, 8)

# Calcular el coeficiente de Kendall y el p-valor (prueba unilateral "greater")
prueba_kendall_dosis <- cor.test(dosis, respuesta, method = "kendall", alternative = "greater")
## Warning in cor.test.default(dosis, respuesta, method = "kendall", alternative =
## "greater"): Cannot compute exact p-value with ties
print(prueba_kendall_dosis)
## 
##  Kendall's rank correlation tau
## 
## data:  dosis and respuesta
## z = 3.623, p-value = 0.0001456
## alternative hypothesis: true tau is greater than 0
## sample estimates:
##       tau 
## 0.8263342
# Nivel de significancia
alfa_kendall_dosis <- 0.05

# Valor crítico de Z (unilateral)
z_critico_dosis <- qnorm(1 - alfa_kendall_dosis)
cat("Valor crítico de Z (unilateral, greater):", z_critico_dosis, "\n")
## Valor crítico de Z (unilateral, greater): 1.644854
# Visualización de la región de rechazo (unilateral)
plot(x_norm, y_norm, type = "l", xlab = "Estadístico Z", ylab = "Densidad",
     main = "Distribución Normal Estándar y Región de Rechazo (Kendall, Unilateral)")
abline(v = z_critico_dosis, col = "red", lty = 2)
polygon(c(z_critico_dosis, x_norm[x_norm >= z_critico_dosis], Inf), c(0, y_norm[x_norm >= z_critico_dosis], 0), col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba_kendall_dosis$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico Z =", round(prueba_kendall_dosis$statistic, 3)),
       col = "blue", lty = 2)

# Gráfico de dispersión
plot(dosis, respuesta, main = "Dosis del Fármaco vs. Respuesta del Paciente",
     xlab = "Dosis (mg)", ylab = "Respuesta")
lines(lowess(dosis, respuesta), col = "red", lwd = 2)

Interpretación:

Si el p-valor es menor que \(\alpha = 0.05\), rechazaremos la hipótesis nula y concluiremos que existe una correlación monótona positiva significativa entre la dosis del fármaco y la respuesta del paciente.

59.4. Ejemplo 4: Correlación entre la antigüedad de un equipo y su tiempo de inactividad (prueba unilateral)

Se registraron los años de antigüedad y el número de horas de inactividad durante el último año para 15 equipos idénticos. Se desea probar si existe una correlación monótona positiva significativa entre la antigüedad y el tiempo de inactividad (\(\alpha = 0.01\)).

Datos:

Equipo Antigüedad (años) Inactividad (horas)
1 1 5
2 3 12
3 5 20
4 2 8
5 4 15
6 6 25
7 1.5 7
8 3.5 14
9 5.5 22
10 2.5 10
11 4.5 18
12 6.5 27
13 2.8 11
14 4.8 19
15 5.8 23

Solución en R:

# Datos de antigüedad e inactividad
antiguedad <- c(1, 3, 5, 2, 4, 6, 1.5, 3.5, 5.5, 2.5, 4.5, 6.5, 2.8, 4.8, 5.8)
inactividad <- c(5, 12, 20, 8, 15, 25, 7, 14, 22, 10, 18, 27, 11, 19, 23)

# Calcular el coeficiente de Kendall y el p-valor (prueba unilateral "greater")
prueba_kendall_antiguedad <- cor.test(antiguedad, inactividad, method = "kendall", alternative = "greater")
print(prueba_kendall_antiguedad)
## 
##  Kendall's rank correlation tau
## 
## data:  antiguedad and inactividad
## T = 105, p-value = 7.647e-13
## alternative hypothesis: true tau is greater than 0
## sample estimates:
## tau 
##   1
# Nivel de significancia
alfa_kendall_antiguedad <- 0.01

# Valor crítico de Z (unilateral)
z_critico_antiguedad <- qnorm(1 - alfa_kendall_antiguedad)
cat("Valor crítico de Z (unilateral, greater):", z_critico_antiguedad, "\n")
## Valor crítico de Z (unilateral, greater): 2.326348
# Visualización de la región de rechazo (unilateral)
plot(x_norm, y_norm, type = "l", xlab = "Estadístico Z", ylab = "Densidad",
     main = "Distribución Normal Estándar y Región de Rechazo (Kendall, Unilateral)")
abline(v = z_critico_antiguedad, col = "red", lty = 2)
polygon(c(z_critico_antiguedad, x_norm[x_norm >= z_critico_antiguedad], Inf), c(0, y_norm[x_norm >= z_critico_antiguedad], 0), col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = prueba_kendall_antiguedad$statistic, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico Z =", round(prueba_kendall_antiguedad$statistic, 3)),
       col = "blue", lty = 2)

# Gráfico de dispersión
plot(antiguedad, inactividad, main = "Antigüedad del Equipo vs. Tiempo de Inactividad",
     xlab = "Antigüedad (años)", ylab = "Inactividad (horas)")
lines(lowess(antiguedad, inactividad), col = "red", lwd = 2)

Interpretación:

Si el p-valor es menor que \(\alpha = 0.01\), rechazaremos la hipótesis nula y concluiremos que existe una correlación monótona positiva significativa entre la antigüedad del equipo y su tiempo de inactividad.

60. Coeficiente Kappa de Cohen (\(\kappa\))

El coeficiente Kappa de Cohen (\(\kappa\)) es una medida estadística que evalúa el acuerdo entre dos evaluadores (o métodos de clasificación) que clasifican los mismos objetos en categorías mutuamente exclusivas. Corrige el acuerdo que podría esperarse por azar.

El coeficiente Kappa se calcula de la siguiente manera:

\[ \kappa = \frac{P_o - P_e}{1 - P_e} \]

Donde: - \(P_o\) es la proporción de acuerdo observado (la suma de las frecuencias en la diagonal principal de la tabla de contingencia, dividida por el número total de observaciones). - \(P_e\) es la proporción de acuerdo esperado por azar. Se calcula sumando los productos de las proporciones marginales para cada categoría. Para una tabla de \(r \times r\):

\[ P_e = \sum_{i=1}^{r} P_{i.} \times P_{.i} \]

Donde \(P_{i.}\) es la proporción marginal de la fila \(i\) y \(P_{.i}\) es la proporción marginal de la columna \(i\).

El valor de \(\kappa\) varía entre -1 y +1: - \(\kappa = 1\) indica un acuerdo perfecto. - \(\kappa = 0\) indica un acuerdo igual al que se esperaría por azar. - \(\kappa < 0\) indica un acuerdo menor del que se esperaría por azar (lo cual es raro).

Para probar la significancia del coeficiente Kappa (es decir, si el acuerdo observado es significativamente diferente del acuerdo esperado por azar en la población), se realiza una prueba de hipótesis. La hipótesis nula (\(H_0\)) es que el acuerdo entre los evaluadores es solo por azar (\(\kappa = 0\)). La hipótesis alternativa (\(H_1\)) es que el acuerdo es mayor que el azar (\(\kappa > 0\), generalmente se considera una prueba unilateral). También puede ser bilateral (\(\kappa \neq 0\)).

El p-valor se calcula utilizando el estadístico de prueba y su distribución bajo la hipótesis nula. Para muestras grandes, el estadístico \(Z\) se aproxima a una distribución normal estándar:

\[ Z = \frac{\kappa}{\sqrt{\frac{P_o(1 - P_o)}{N(1 - P_e)^2}}} \]

Donde \(N\) es el número total de observaciones. El p-valor se calcula entonces utilizando la distribución normal estándar.

Interpretación del p-valor:

  • Si el p-valor \(\leq \alpha\): Se rechaza la hipótesis nula (\(H_0\)). Existe evidencia estadística significativa para concluir que el acuerdo entre los evaluadores es mayor que el esperado por azar.
  • Si el p-valor \(> \alpha\): No se rechaza la hipótesis nula (\(H_0\)). No hay suficiente evidencia estadística para concluir que el acuerdo entre los evaluadores es mayor que el esperado por azar.

60.1. Ejemplo 1: Acuerdo entre dos radiólogos en el diagnóstico

Dos radiólogos diagnosticaron independientemente a 100 pacientes con respecto a la presencia de una condición médica (Presente/Ausente). Se desea evaluar el acuerdo entre sus diagnósticos (\(\alpha = 0.05\)).

Tabla de Contingencia:

Radiólogo 2: Presente Radiólogo 2: Ausente Total
Radiólogo 1: Presente 45 5 50
Radiólogo 1: Ausente 10 40 50
Total 55 45 100

Solución en R:

# ANÁLISIS DE CONFIABILIDAD INTER-EVALUADORES USANDO KAPPA DE COHEN

# 1. Creación de la matriz de confusión mejorada
tabla_radiologos <- matrix(c(45, 10, 
                            5, 40), 
                          nrow = 2, byrow = TRUE,
                          dimnames = list("Radiólogo A" = c("Positivo", "Negativo"),
                                          "Radiólogo B" = c("Positivo", "Negativo")))

# Verificación de la tabla
if(any(dim(tabla_radiologos) != 2)) {
  stop("Error: La tabla debe ser una matriz 2x2 para Kappa simple")
}

# 2. Cálculo del estadístico Kappa con manejo de errores
library(irr)
## Loading required package: lpSolve
tryCatch({
  kappa_result <- kappa2(tabla_radiologos, weight = "unweighted")
  
  # 3. Análisis de resultados con interpretación mejorada
  alfa <- 0.05
  kappa_value <- round(kappa_result$value, 3)
  p_value <- format.pval(kappa_result$p.value, digits = 4, eps = 0.0001)
  z_value <- round(kappa_result$statistic, 3)
  
  # 4. Visualización profesional de resultados
  cat("\n══════════════════════════════════════════════\n")
  cat("   ANÁLISIS DE CONFIABILIDAD INTER-EVALUADORES\n")
  cat("══════════════════════════════════════════════\n\n")
  
  cat("Matriz de confusión:\n")
  print(tabla_radiologos)
  cat("\n")
  
  cat("Estadístico Kappa de Cohen:\n")
  cat("──────────────────────────────────────────────\n")
  cat(sprintf("Valor de Kappa: %0.3f\n", kappa_value))
  cat(sprintf("Error estándar: %0.3f\n", kappa_result$se))
  cat(sprintf("Valor Z: %0.3f\n", z_value))
  cat(sprintf("p-valor: %s\n\n", p_value))
  
  # 5. Interpretación detallada
  interpretacion_kappa <- if(kappa_value > 0.75) {
    "Excelente acuerdo"
  } else if(kappa_value > 0.6) {
    "Buen acuerdo"
  } else if(kappa_value > 0.4) {
    "Acuerdo moderado"
  } else if(kappa_value > 0.2) {
    "Acuerdo mínimo"
  } else {
    "Acuerdo pobre o nulo"
  }
  
  cat("Interpretación:\n")
  cat("──────────────────────────────────────────────\n")
  if(kappa_result$p.value < alfa) {
    cat(sprintf("Existe un acuerdo estadísticamente significativo (p = %s < α = 0.05)\n", p_value))
    cat(sprintf("Grado de acuerdo: %s (Kappa = %0.3f)\n", interpretacion_kappa, kappa_value))
  } else {
    cat(sprintf("No se encontró acuerdo significativo (p = %s > α = 0.05)\n", p_value))
    cat("El acuerdo observado puede deberse al azar\n")
  }
  
  # 6. Gráfico de visualización
  if(requireNamespace("vcd", quietly = TRUE)) {
    library(vcd)
    agreementplot(tabla_radiologos, main = "Acuerdo entre Radiólogos")
  } else {
    warning("Paquete 'vcd' no instalado. Instálelo para visualización gráfica.")
  }
  
}, error = function(e) {
  cat("\nERROR en el cálculo de Kappa:\n")
  cat(e$message, "\n")
  cat("Verifique que:\n")
  cat("- Los datos son una matriz 2x2 válida\n")
  cat("- No hay celdas vacías o valores faltantes\n")
  cat("- Los valores son conteos no negativos\n")
})
## 
## ══════════════════════════════════════════════
##    ANÁLISIS DE CONFIABILIDAD INTER-EVALUADORES
## ══════════════════════════════════════════════
## 
## Matriz de confusión:
##            Radiólogo B
## Radiólogo A Positivo Negativo
##    Positivo       45       10
##    Negativo        5       40
## 
## Estadístico Kappa de Cohen:
## ──────────────────────────────────────────────
## Valor de Kappa: 0.000
## Valor Z: NaN
## p-valor: NA
## 
## Interpretación:
## ──────────────────────────────────────────────
## 
## ERROR en el cálculo de Kappa:
## missing value where TRUE/FALSE needed 
## Verifique que:
## - Los datos son una matriz 2x2 válida
## - No hay celdas vacías o valores faltantes
## - Los valores son conteos no negativos

Interpretación: El valor de Kappa indica el nivel de acuerdo, y el p-valor de la prueba indica si este acuerdo es estadísticamente significativo.

60.2. Acuerdo entre dos métodos de clasificación de imágenes

Dos métodos automatizados clasificaron 150 imágenes en tres categorías (A, B, C). Se desea evaluar el acuerdo entre los métodos (\(\alpha = 0.01\)).

Tabla de Contingencia:

Método 2: A Método 2: B Método 2: C Total
Método 1: A 50 10 5 65
Método 1: B 15 40 10 65
Método 1: C 5 10 5 20
Total 70 60 20 150

Solución en R:

# ANÁLISIS DE CONCORDANCIA ENTRE MÉTODOS DE CLASIFICACIÓN

# 1. Creación de la matriz de confusión correcta
tabla_imagenes <- matrix(c(50, 10, 5,
                          15, 40, 10,
                          5, 10, 5), 
                        nrow = 3, byrow = TRUE,
                        dimnames = list(Método1 = c("A", "B", "C"),
                                       Método2 = c("A", "B", "C")))

# 2. Verificación de la tabla (CORRECCIÓN APLICADA AQUÍ)
if(!all(dim(tabla_imagenes) == c(3,3))) {  
  stop("Error: La tabla debe ser una matriz 3x3 para este análisis")
}

# 3. Cálculo del coeficiente Kappa para múltiples categorías
library(irr)

tryCatch({
  # Usamos kappam.fleiss para múltiples categorías
  kappa_result <- kappam.fleiss(tabla_imagenes)
  
  # 4. Configuración de parámetros
  alfa <- 0.01
  kappa_value <- round(kappa_result$value, 3)
  z_value <- round(kappa_result$statistic, 3)
  p_value <- format.pval(kappa_result$p.value, digits = 4, eps = 0.0001)
  
  # 5. Presentación de resultados
  cat("\n══════════════════════════════════════════════\n")
  cat("   ANÁLISIS DE CONCORDANCIA ENTRE MÉTODOS\n")
  cat("══════════════════════════════════════════════\n\n")
  
  cat("Tabla de contingencia:\n")
  print(addmargins(tabla_imagenes))  # Muestra totales marginales
  cat("\n")
  
  cat("Estadístico Kappa de Fleiss (para múltiples categorías):\n")
  cat("──────────────────────────────────────────────\n")
  cat(sprintf("Valor de Kappa: %0.3f\n", kappa_value))
  cat(sprintf("Valor Z: %0.3f\n", z_value))
  cat(sprintf("p-valor: %s\n\n", p_value))
  
  # 6. Interpretación detallada
  interpretacion_kappa <- if(kappa_value > 0.8) {
    "Concordancia casi perfecta"
  } else if(kappa_value > 0.6) {
    "Concordancia sustancial"
  } else if(kappa_value > 0.4) {
    "Concordancia moderada"
  } else if(kappa_value > 0.2) {
    "Concordancia ligera"
  } else {
    "Concordancia pobre"
  }
  
  cat("Interpretación:\n")
  cat("──────────────────────────────────────────────\n")
  if(kappa_result$p.value < alfa) {
    cat(sprintf("Existe concordancia significativa (p = %s < α = 0.01)\n", p_value))
    cat(sprintf("Grado de concordancia: %s (Kappa = %0.3f)\n", interpretacion_kappa, kappa_value))
  } else {
    cat(sprintf("No se encontró concordancia significativa (p = %s > α = 0.01)\n", p_value))
    cat("La concordancia observada puede deberse al azar\n")
  }
  
  # 7. Visualización opcional
  if(requireNamespace("vcd", quietly = TRUE)) {
    library(vcd)
    mosaic(tabla_imagenes, shade = TRUE, 
           main = "Concordancia entre Métodos de Clasificación",
           labeling_args = list(set_varnames = c(Método1 = "Método 1", Método2 = "Método 2")))
  } else {
    warning("Para visualización gráfica, instale el paquete 'vcd'")
  }
  
}, error = function(e) {
  cat("\nERROR en el análisis:\n")
  cat(e$message, "\n")
  cat("Recomendaciones:\n")
  cat("- Verifique que la matriz sea cuadrada (mismo número de categorías)\n")
  cat("- Asegúrese que no haya celdas con valores negativos\n")
  cat("- Compruebe que los totales marginales sean correctos\n")
  cat("- Para matrices 3x3 o mayores, use kappam.fleiss() en lugar de kappa2()\n")
})
## 
## ══════════════════════════════════════════════
##    ANÁLISIS DE CONCORDANCIA ENTRE MÉTODOS
## ══════════════════════════════════════════════
## 
## Tabla de contingencia:
##        Método2
## Método1  A  B  C Sum
##     A   50 10  5  65
##     B   15 40 10  65
##     C    5 10  5  20
##     Sum 70 60 20 150
## 
## Estadístico Kappa de Fleiss (para múltiples categorías):
## ──────────────────────────────────────────────
## Valor de Kappa: -0.200
## Valor Z: -1.078
## p-valor: 0.2812
## 
## Interpretación:
## ──────────────────────────────────────────────
## No se encontró concordancia significativa (p = 0.2812 > α = 0.01)
## La concordancia observada puede deberse al azar
## Loading required package: grid

60.3. Ejemplo 3: Acuerdo entre dos evaluadores en la severidad de una enfermedad

Dos evaluadores clínicos calificaron la severidad de una enfermedad en 80 pacientes utilizando una escala ordinal (Leve, Moderado, Severo). Se desea evaluar su acuerdo (\(\alpha = 0.05\)).

Tabla de Contingencia:

Evaluador 2: Leve Evaluador 2: Moderado Evaluador 2: Severo Total
Evaluador 1: Leve 30 5 2 37
Evaluador 1: Moderado 8 25 7 40
Evaluador 1: Severo 2 6 15 23
Total 40 36 24 100

Solución en R:

# ANÁLISIS DE CONCORDANCIA EN CLASIFICACIÓN DE SEVERIDAD

# 1. Creación de la matriz de confusión
tabla_severidad <- matrix(c(30, 8, 2, 
                            5, 25, 6, 
                            2, 7, 15), 
                         nrow = 3, byrow = TRUE,
                         dimnames = list("Evaluador 1" = c("Leve", "Moderado", "Severo"),
                                        "Evaluador 2" = c("Leve", "Moderado", "Severo")))

# 2. Verificación de la tabla
if(!all(dim(tabla_severidad) == c(3,3))) {
  stop("Error: La tabla debe ser una matriz 3x3 para este análisis")
}

# 3. Cálculo del coeficiente Kappa (usando kappam.fleiss para múltiples categorías)
library(irr)

tryCatch({
  kappa_result <- kappam.fleiss(tabla_severidad)
  
  # 4. Configuración de parámetros
  alfa <- 0.05
  kappa_value <- round(kappa_result$value, 3)
  p_value <- format.pval(kappa_result$p.value, digits = 3)
  
  # 5. Presentación de resultados
  cat("\n══════════════════════════════════════════════\n")
  cat("   ANÁLISIS DE CONCORDANCIA EN SEVERIDAD\n")
  cat("══════════════════════════════════════════════\n\n")
  
  cat("Matriz de confusión:\n")
  print(addmargins(tabla_severidad))
  cat("\n")
  
  cat("Estadístico Kappa de Fleiss:\n")
  cat("──────────────────────────────────────────────\n")
  cat(sprintf("Valor de Kappa: %0.3f\n", kappa_value))
  cat(sprintf("Z = %.2f, p-valor = %s\n", kappa_result$statistic, p_value))
  
  # 6. Interpretación cualitativa
  interpretacion <- if(kappa_value > 0.8) {
    "Acuerdo casi perfecto"
  } else if(kappa_value > 0.6) {
    "Acuerdo sustancial"
  } else if(kappa_value > 0.4) {
    "Acuerdo moderado"
  } else if(kappa_value > 0.2) {
    "Acuerdo ligero"
  } else {
    "Acuerdo pobre"
  }
  
  cat("\nInterpretación:\n")
  cat("──────────────────────────────────────────────\n")
  if(kappa_result$p.value < alfa) {
    cat(sprintf("Existe acuerdo significativo (p = %s < α = 0.05)\n", p_value))
    cat(sprintf("Grado de acuerdo: %s (Kappa = %.3f)\n", interpretacion, kappa_value))
  } else {
    cat(sprintf("No se encontró acuerdo significativo (p = %s > α = 0.05)\n", p_value))
    cat("El acuerdo observado puede deberse al azar\n")
  }
  
  # 7. Visualización opcional
  if(requireNamespace("vcd", quietly = TRUE)) {
    library(vcd)
    mosaic(tabla_severidad, shade = TRUE, 
           main = "Acuerdo en Clasificación de Severidad",
           labeling_args = list(set_varnames = c(Evaluador1 = "Evaluador 1", 
                                               Evaluador2 = "Evaluador 2")))
  } else {
    cat("\nInstale el paquete 'vcd' para visualización gráfica\n")
  }
  
}, error = function(e) {
  cat("\nERROR en el análisis:\n")
  cat(e$message, "\n")
  cat("Posibles soluciones:\n")
  cat("- Verifique que todos los valores sean numéricos positivos\n")
  cat("- Confirme que la matriz sea cuadrada (3x3 en este caso)\n")
  cat("- Instale el paquete 'irr' si no lo ha hecho\n")
})
## 
## ══════════════════════════════════════════════
##    ANÁLISIS DE CONCORDANCIA EN SEVERIDAD
## ══════════════════════════════════════════════
## 
## Matriz de confusión:
##            Evaluador 2
## Evaluador 1 Leve Moderado Severo Sum
##    Leve       30        8      2  40
##    Moderado    5       25      6  36
##    Severo      2        7     15  24
##    Sum        37       40     23 100
## 
## Estadístico Kappa de Fleiss:
## ──────────────────────────────────────────────
## Valor de Kappa: -0.157
## Z = -1.21, p-valor = 0.226
## 
## Interpretación:
## ──────────────────────────────────────────────
## No se encontró acuerdo significativo (p = 0.226 > α = 0.05)
## El acuerdo observado puede deberse al azar

Interpretación: El Kappa y su significancia evalúan la fiabilidad del acuerdo diagnóstico.

60.4. Ejemplo 4: Acuerdo entre dos sistemas de diagnóstico automático

Dos sistemas de inteligencia artificial diagnosticaron 200 casos médicos en cuatro categorías. Se desea evaluar el acuerdo entre los sistemas (\(\alpha = 0.01\)).

Tabla de Contingencia:

Sistema 2: Cat 1 Sistema 2: Cat 2 Sistema 2: Cat 3 Sistema 2: Cat 4 Total
Sistema 1: Cat 1 60 10 5 2 77
Sistema 1: Cat 2 8 45 12 3 68
Sistema 1: Cat 3 3 7 20 5 35
Sistema 1: Cat 4 1 2 4 13 20
Total 72 64 41 23 200

Solución en R:

# ANÁLISIS DE CONCORDANCIA ENTRE SISTEMAS DE DIAGNÓSTICO AUTOMÁTICO

# 1. Creación de la matriz de confusión 4x4
tabla_ia <- matrix(c(60, 8, 3, 1,
                     10, 45, 7, 2,
                     5, 12, 20, 4,
                     2, 3, 5, 13), 
                  nrow = 4, byrow = TRUE,
                  dimnames = list("Sistema A" = paste("Categoría", 1:4),
                                 "Sistema B" = paste("Categoría", 1:4)))

# 2. Verificación de la tabla
if(!all(dim(tabla_ia) == c(4,4))) {
  stop("Error: La tabla debe ser una matriz 4x4 para este análisis")
}

# 3. Cálculo del coeficiente Kappa (usando kappam.fleiss para múltiples categorías)
library(irr)

tryCatch({
  kappa_result <- kappam.fleiss(tabla_ia)
  
  # 4. Configuración de parámetros
  alfa <- 0.01
  kappa_value <- round(kappa_result$value, 3)
  p_value <- format.pval(kappa_result$p.value, digits = 3, eps = 0.0001)
  
  # 5. Presentación de resultados
  cat("\n══════════════════════════════════════════════\n")
  cat("   ANÁLISIS DE CONCORDANCIA ENTRE SISTEMAS IA\n")
  cat("══════════════════════════════════════════════\n\n")
  
  cat("Matriz de confusión:\n")
  print(addmargins(tabla_ia))
  cat("\n")
  
  cat("Estadístico Kappa de Fleiss:\n")
  cat("──────────────────────────────────────────────\n")
  cat(sprintf("Valor de Kappa: %0.3f\n", kappa_value))
  cat(sprintf("Estadístico Z: %.2f\n", kappa_result$statistic))
  cat(sprintf("p-valor: %s\n\n", p_value))
  
  # 6. Interpretación cualitativa
  interpretacion <- if(kappa_value > 0.8) {
    "Acuerdo casi perfecto"
  } else if(kappa_value > 0.6) {
    "Acuerdo sustancial"
  } else if(kappa_value > 0.4) {
    "Acuerdo moderado"
  } else if(kappa_value > 0.2) {
    "Acuerdo ligero"
  } else {
    "Acuerdo pobre"
  }
  
  cat("Interpretación:\n")
  cat("──────────────────────────────────────────────\n")
  if(kappa_result$p.value < alfa) {
    cat(sprintf("Existe acuerdo estadísticamente significativo (p = %s < α = 0.01)\n", p_value))
    cat(sprintf("Grado de acuerdo: %s (Kappa = %.3f)\n", interpretacion, kappa_value))
  } else {
    cat(sprintf("No se encontró acuerdo significativo (p = %s > α = 0.01)\n", p_value))
    cat("El acuerdo observado puede deberse al azar\n")
  }
  
  # 7. Visualización opcional
  if(requireNamespace("vcd", quietly = TRUE)) {
    library(vcd)
    mosaic(tabla_ia, shade = TRUE, 
           main = "Acuerdo entre Sistemas de Diagnóstico Automático",
           labeling_args = list(set_varnames = c(SistemaA = "Sistema A", 
                                               SistemaB = "Sistema B")))
  } else {
    cat("\nPara visualización gráfica, instale el paquete 'vcd'\n")
  }
  
}, error = function(e) {
  cat("\nERROR en el análisis:\n")
  cat(e$message, "\n")
  cat("Recomendaciones:\n")
  cat("- Verifique que la matriz sea 4x4 y contenga solo valores numéricos\n")
  cat("- Asegúrese de haber instalado el paquete 'irr'\n")
  cat("- Para matrices grandes, considere usar kappam.light()\n")
})
## 
## ══════════════════════════════════════════════
##    ANÁLISIS DE CONCORDANCIA ENTRE SISTEMAS IA
## ══════════════════════════════════════════════
## 
## Matriz de confusión:
##              Sistema B
## Sistema A     Categoría 1 Categoría 2 Categoría 3 Categoría 4 Sum
##   Categoría 1          60           8           3           1  72
##   Categoría 2          10          45           7           2  64
##   Categoría 3           5          12          20           4  41
##   Categoría 4           2           3           5          13  23
##   Sum                  77          68          35          20 200
## 
## Estadístico Kappa de Fleiss:
## ──────────────────────────────────────────────
## Valor de Kappa: -0.094
## Estadístico Z: -1.52
## p-valor: 0.129
## 
## Interpretación:
## ──────────────────────────────────────────────
## No se encontró acuerdo significativo (p = 0.129 > α = 0.01)
## El acuerdo observado puede deberse al azar

Interpretación: El Kappa evalúa la consistencia entre los diagnósticos de los sistemas de IA.

La “región de rechazo” para la prueba de Kappa se visualiza en términos del p-valor en relación con el nivel de significancia \(\alpha\). Si el p-valor cae dentro de la región de rechazo (p-valor \(\leq \alpha\)), se considera que el resultado es estadísticamente significativo. La tabla de contingencia es la representación visual principal de los datos sobre los que se calcula el Kappa.

61. Prueba de Rango con Signo de Wilcoxon* - Valor p

La prueba de rango con signo de Wilcoxon es una prueba no paramétrica utilizada para comparar la mediana de una muestra con un valor específico (prueba de un solo grupo) o para comparar las medianas de dos muestras relacionadas o pareadas (prueba de dos grupos pareados). Es una alternativa a la prueba t de Student para una muestra o para muestras pareadas cuando no se cumplen los supuestos de normalidad.

El procedimiento general para la prueba de un solo grupo es el siguiente:

  1. Calcular las diferencias: Para cada observación, se calcula la diferencia entre el valor observado y la mediana hipotética (\(\mu_0\)).
  2. Eliminar las diferencias de cero: Se eliminan las observaciones donde la diferencia es cero.
  3. Asignar rangos a las diferencias absolutas: Se asignan rangos a los valores absolutos de las diferencias, ordenándolos de menor a mayor. En caso de empates, se asigna el rango promedio.
  4. Sumar los rangos positivos y negativos: Se calcula la suma de los rangos correspondientes a las diferencias positivas (\(W^+\)) y la suma de los rangos correspondientes a las diferencias negativas (\(W^-\)).
  5. Calcular el estadístico W: El estadístico de prueba W es el menor de \(W^+\) y \(W^-\).

Para la prueba de dos grupos pareados, el procedimiento es similar, pero las diferencias se calculan entre los pares de observaciones.

La hipótesis nula (\(H_0\)) es que la mediana de la población es igual al valor hipotético (prueba de un solo grupo) o que las medianas de las dos poblaciones relacionadas son iguales (prueba de dos grupos pareados). La hipótesis alternativa (\(H_1\)) puede ser unilateral (mediana > valor hipotético o mediana < valor hipotético) o bilateral (mediana \(\neq\) valor hipotético).

El valor p es la probabilidad de obtener un estadístico W tan extremo (o más extremo) como el observado, asumiendo que la hipótesis nula es verdadera.

Para tamaños de muestra pequeños (\(n \leq 25\)), se utilizan tablas especiales para determinar el valor p asociado con el estadístico W.

Para tamaños de muestra grandes (\(n > 25\)), la distribución del estadístico W se aproxima a una distribución normal con: - Media: \(\mu_W = \frac{n(n+1)}{4}\) - Desviación estándar: \(\sigma_W = \sqrt{\frac{n(n+1)(2n+1)}{24}}\)

El estadístico Z se calcula como:

\[ Z = \frac{W - \mu_W}{\sigma_W} \]

El valor p se calcula entonces utilizando la distribución normal estándar (para pruebas unilaterales o bilaterales según la hipótesis alternativa).

Interpretación del valor p:

  • Si el valor p \(\leq \alpha\): Se rechaza la hipótesis nula (\(H_0\)). Existe evidencia estadística significativa para concluir que la mediana de la población es diferente del valor hipotético (o que las medianas de las dos poblaciones relacionadas son diferentes).
  • Si el valor p \(> \alpha\): No se rechaza la hipótesis nula (\(H_0\)). No hay suficiente evidencia estadística para concluir que la mediana de la población es diferente del valor hipotético (o que las medianas de las dos poblaciones relacionadas son diferentes).

61.1. Ejemplo 1: Prueba de un solo grupo - Comparación con un valor esperado

Se midieron los niveles de glucosa en sangre de 20 pacientes en ayunas. Se desea determinar si la mediana del nivel de glucosa es significativamente diferente de 90 mg/dL (\(\alpha = 0.05\)).

Datos:

85, 92, 88, 95, 89, 91, 86, 93, 90, 94, 87, 96, 84, 97, 83, 98, 82, 99, 81, 100

Solución en R:

# Datos de niveles de glucosa
glucosa <- c(85, 92, 88, 95, 89, 91, 86, 93, 90, 94, 87, 96, 84, 97, 83, 98, 82, 99, 81, 100)
mediana_esperada <- 90
alfa_wilcoxon <- 0.05

# Realizar la prueba de rango con signo de Wilcoxon
prueba_wilcoxon <- wilcox.test(glucosa, mu = mediana_esperada, alternative = "two.sided")
## Warning in wilcox.test.default(glucosa, mu = mediana_esperada, alternative =
## "two.sided"): cannot compute exact p-value with ties
## Warning in wilcox.test.default(glucosa, mu = mediana_esperada, alternative =
## "two.sided"): cannot compute exact p-value with zeroes
print(prueba_wilcoxon)
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  glucosa
## V = 104.5, p-value = 0.717
## alternative hypothesis: true location is not equal to 90
# Para visualizar la región de rechazo (aproximación normal para n > 25, aquí n = 20, usaremos aproximación)
z_critico_wilcoxon <- qnorm(1 - alfa_wilcoxon / 2)
cat("Valor crítico de Z (bilateral):", z_critico_wilcoxon, "\n")
## Valor crítico de Z (bilateral): 1.959964
# Visualización de la región de rechazo
x_norm <- seq(-3, 3, length.out = 200)
y_norm <- dnorm(x_norm)
plot(x_norm, y_norm, type = "l", xlab = "Estadístico Z", ylab = "Densidad",
     main = "Distribución Normal Estándar y Región de Rechazo (Wilcoxon)")
abline(v = c(-z_critico_wilcoxon, z_critico_wilcoxon), col = "red", lty = 2)
polygon(c(-Inf, x_norm[x_norm <= -z_critico_wilcoxon], -z_critico_wilcoxon), c(0, y_norm[x_norm <= -z_critico_wilcoxon], 0), col = "salmon", border = NA)
polygon(c(z_critico_wilcoxon, x_norm[x_norm >= z_critico_wilcoxon], Inf), c(0, y_norm[x_norm >= z_critico_wilcoxon], 0), col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = (prueba_wilcoxon$statistic - (length(glucosa) * (length(glucosa) + 1) / 4)) / sqrt(length(glucosa) * (length(glucosa) + 1) * (2 * length(glucosa) + 1) / 24), col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico Z =", round((prueba_wilcoxon$statistic - (length(glucosa) * (length(glucosa) + 1) / 4)) / sqrt(length(glucosa) * (length(glucosa) + 1) * (2 * length(glucosa) + 1) / 24), 3)),
       col = "blue", lty = 2)

Interpretación: El valor p de la prueba indicará si la mediana del nivel de glucosa es significativamente diferente de 90 mg/dL.

61.2. Ejemplo 2: Prueba de dos grupos pareados - Comparación de dos tratamientos

Se midió la presión arterial sistólica de 15 pacientes antes y después de recibir un nuevo tratamiento. Se desea determinar si el tratamiento tiene un efecto significativo en la presión arterial (\(\alpha = 0.01\)).

Datos:

Paciente Antes Después Diferencia (Antes - Después)
1 140 135 5
2 145 142 3
3 138 136 2
4 150 148 2
5 142 140 2
6 135 137 -2
7 148 145 3
8 139 138 1
9 152 149 3
10 141 139 2
11 136 134 2
12 144 143 1
13 147 146 1
14 140 138 2
15 143 141 2

Solución en R:

# Datos de presión arterial antes y después
antes <- c(140, 145, 138, 150, 142, 135, 148, 139, 152, 141, 136, 144, 147, 140, 143)
despues <- c(135, 142, 136, 148, 140, 137, 145, 138, 149, 139, 134, 143, 146, 138, 141)

# Realizar la prueba de rango con signo de Wilcoxon para datos pareados
prueba_wilcoxon_pareado <- wilcox.test(antes, despues, paired = TRUE, alternative = "two.sided")
## Warning in wilcox.test.default(antes, despues, paired = TRUE, alternative =
## "two.sided"): cannot compute exact p-value with ties
print(prueba_wilcoxon_pareado)
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  antes and despues
## V = 112.5, p-value = 0.002615
## alternative hypothesis: true location shift is not equal to 0
# Nivel de significancia
alfa_wilcoxon_pareado <- 0.01

# Valor crítico de Z (aproximación normal)
z_critico_pareado <- qnorm(1 - alfa_wilcoxon_pareado / 2)
cat("Valor crítico de Z (bilateral):", z_critico_pareado, "\n")
## Valor crítico de Z (bilateral): 2.575829
# Visualización de la región de rechazo (similar al Ejemplo 1)
plot(x_norm, y_norm, type = "l", xlab = "Estadístico Z", ylab = "Densidad",
     main = "Distribución Normal Estándar y Región de Rechazo (Wilcoxon)")
abline(v = c(-z_critico_pareado, z_critico_pareado), col = "red", lty = 2)
polygon(c(-Inf, x_norm[x_norm <= -z_critico_pareado], -z_critico_pareado), c(0, y_norm[x_norm <= -z_critico_pareado], 0), col = "salmon", border = NA)
polygon(c(z_critico_pareado, x_norm[x_norm >= z_critico_pareado], Inf), c(0, y_norm[x_norm >= z_critico_pareado], 0), col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = (prueba_wilcoxon_pareado$statistic - (length(antes) * (length(antes) + 1) / 4)) / sqrt(length(antes) * (length(antes) + 1) * (2 * length(antes) + 1) / 24), col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico Z =", round((prueba_wilcoxon_pareado$statistic - (length(antes) * (length(antes) + 1) / 4)) / sqrt(length(antes) * (length(antes) + 1) * (2 * length(antes) + 1) / 24), 3)),
       col = "blue", lty = 2)

# Boxplots para visualizar las distribuciones
boxplot(antes, despues, names = c("Antes del Tratamiento", "Después del Tratamiento"),
        ylab = "Presión Arterial Sistólica", main = "Efecto del Tratamiento en la Presión Arterial")

Interpretación: El valor p indicará si hay una diferencia significativa en la mediana de la presión arterial antes y después del tratamiento.

61.3. Ejemplo 3: Prueba unilateral - Efecto de un programa de entrenamiento (aumento)

Se midió el rendimiento de 25 atletas antes y después de un programa de entrenamiento. Se desea determinar si el programa aumentó significativamente su rendimiento (\(\alpha = 0.05\), prueba unilateral “greater” para la diferencia Después - Antes).

Datos: (Se omiten para brevedad, similar estructura al Ejemplo 2)

Solución en R:

# Datos de rendimiento antes y después (reemplazar con tus datos)
rendimiento_antes <- c(20, 22, 21, 23, 24, 25, 22, 23, 21, 20, 26, 27, 25, 24, 23, 22, 21, 20, 25, 26, 27, 24, 23, 22, 21)
rendimiento_despues <- c(23, 25, 24, 26, 27, 28, 25, 26, 24, 23, 29, 30, 28, 27, 26, 25, 24, 23, 28, 29, 30, 27, 26, 25, 24)

# Prueba unilateral "greater" (despues > antes => diferencia positiva)
prueba_wilcoxon_entrenamiento <- wilcox.test(rendimiento_despues, rendimiento_antes, paired = TRUE, alternative = "greater")
## Warning in wilcox.test.default(rendimiento_despues, rendimiento_antes, paired =
## TRUE, : cannot compute exact p-value with ties
print(prueba_wilcoxon_entrenamiento)
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  rendimiento_despues and rendimiento_antes
## V = 325, p-value = 3.104e-07
## alternative hypothesis: true location shift is greater than 0
# Nivel de significancia
alfa_wilcoxon_entrenamiento <- 0.05

# Valor crítico de Z (unilateral)
z_critico_entrenamiento <- qnorm(1 - alfa_wilcoxon_entrenamiento)
cat("Valor crítico de Z (unilateral, greater):", z_critico_entrenamiento, "\n")
## Valor crítico de Z (unilateral, greater): 1.644854
# Visualización de la región de rechazo (unilateral)
plot(x_norm, y_norm, type = "l", xlab = "Estadístico Z", ylab = "Densidad",
     main = "Distribución Normal Estándar y Región de Rechazo (Wilcoxon, Unilateral)")
abline(v = z_critico_entrenamiento, col = "red", lty = 2)
polygon(c(z_critico_entrenamiento, x_norm[x_norm >= z_critico_entrenamiento], Inf), c(0, y_norm[x_norm >= z_critico_entrenamiento], 0), col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = (prueba_wilcoxon_entrenamiento$statistic - (length(rendimiento_antes) * (length(rendimiento_antes) + 1) / 4)) / sqrt(length(rendimiento_antes) * (length(rendimiento_antes) + 1) * (2 * length(rendimiento_antes) + 1) / 24), col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico Z =", round((prueba_wilcoxon_entrenamiento$statistic - (length(rendimiento_antes) * (length(rendimiento_antes) + 1) / 4)) / sqrt(length(rendimiento_antes) * (length(rendimiento_antes) + 1) * (2 * length(rendimiento_antes) + 1) / 24), 3)),
       col = "blue", lty = 2)

# Boxplots para visualizar
boxplot(rendimiento_antes, rendimiento_despues,names = c("Antes del Entrenamiento", "Después del Entrenamiento"),
        ylab = "Rendimiento", main = "Efecto del Programa de Entrenamiento")

Interpretación: El valor p indicará si el rendimiento después del entrenamiento es significativamente mayor que antes.

61.4. Ejemplo 4: Prueba unilateral - Comparación con un valor de referencia (disminución)

Se midieron los tiempos de reacción de 30 sujetos a un estímulo después de tomar un medicamento. Se sabe que el tiempo de reacción promedio sin el medicamento es de 0.5 segundos. Se desea determinar si el medicamento disminuye significativamente el tiempo de reacción (\(\alpha = 0.01\), prueba unilateral “less”).

Datos: (Se omiten para brevedad)

Solución en R:

# Datos de tiempos de reacción (reemplazar con tus datos)
tiempo_reaccion <- c(0.45, 0.48, 0.42, 0.47, 0.49, 0.41, 0.46, 0.43, 0.44, 0.50,
                     0.39, 0.40, 0.38, 0.51, 0.47, 0.45, 0.49, 0.42, 0.43, 0.46,
                     0.41, 0.48, 0.44, 0.47, 0.40, 0.45, 0.43, 0.49, 0.46, 0.42)
referencia <- 0.5
alfa_wilcoxon_referencia <- 0.01

# Prueba unilateral "less" (tiempo_reaccion < referencia)
prueba_wilcoxon_referencia <- wilcox.test(tiempo_reaccion, mu = referencia, alternative = "less")
## Warning in wilcox.test.default(tiempo_reaccion, mu = referencia, alternative =
## "less"): cannot compute exact p-value with ties
## Warning in wilcox.test.default(tiempo_reaccion, mu = referencia, alternative =
## "less"): cannot compute exact p-value with zeroes
print(prueba_wilcoxon_referencia)
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  tiempo_reaccion
## V = 2.5, p-value = 1.719e-06
## alternative hypothesis: true location is less than 0.5
# Nivel de significancia
alfa_wilcoxon_referencia <- 0.01

# Valor crítico de Z (unilateral)
z_critico_referencia <- qnorm(alfa_wilcoxon_referencia)
cat("Valor crítico de Z (unilateral, less):", z_critico_referencia, "\n")
## Valor crítico de Z (unilateral, less): -2.326348
# Visualización de la región de rechazo (unilateral)
plot(x_norm, y_norm, type = "l", xlab = "Estadístico Z", ylab = "Densidad",
     main = "Distribución Normal Estándar y Región de Rechazo (Wilcoxon, Unilateral)")
abline(v = z_critico_referencia, col = "red", lty = 2)
polygon(c(-Inf, x_norm[x_norm <= z_critico_referencia], z_critico_referencia), c(0, y_norm[x_norm <= z_critico_referencia], 0), col = "salmon", border = NA)
legend("topleft", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = (prueba_wilcoxon_referencia$statistic - (length(tiempo_reaccion) * (length(tiempo_reaccion) + 1) / 4)) / sqrt(length(tiempo_reaccion) * (length(tiempo_reaccion) + 1) * (2 * length(tiempo_reaccion) + 1) / 24), col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico Z =", round((prueba_wilcoxon_referencia$statistic - (length(tiempo_reaccion) * (length(tiempo_reaccion) + 1) / 4)) / sqrt(length(tiempo_reaccion) * (length(tiempo_reaccion) + 1) * (2 * length(tiempo_reaccion) + 1) / 24), 3)),
       col = "blue", lty = 2)

# Histograma de los tiempos de reacción
hist(tiempo_reaccion, main = "Tiempos de Reacción Después del Medicamento",
     xlab = "Tiempo de Reacción (s)", ylab = "Frecuencia")
abline(v = referencia, col = "blue", lty = 2)
legend("topright", legend = "Tiempo de Reacción Promedio sin Medicamento", col = "blue", lty = 2)

Interpretación: El valor p indicará si el tiempo de reacción después de tomar el medicamento es significativamente menor que 0.5 segundos.

62. Prueba de la Suma de Rangos de Wilcoxon (Mann-Whitney U)

La prueba de la suma de rangos de Wilcoxon es una prueba no paramétrica utilizada para comparar las medianas de dos grupos independientes. Es una alternativa a la prueba t de Student para muestras independientes cuando no se cumplen los supuestos de normalidad o igualdad de varianzas. A menudo se le conoce como la prueba de Mann-Whitney U.

El procedimiento general es el siguiente:

  1. Combinar y ordenar los datos: Se combinan las observaciones de ambos grupos y se ordenan de menor a mayor.

  2. Asignar rangos: Se asignan rangos a todas las observaciones en el conjunto combinado. En caso de empates, se asigna el rango promedio.

  3. Sumar los rangos para cada grupo: Se calcula la suma de los rangos para el primer grupo (\(R_1\)) y la suma de los rangos para el segundo grupo (\(R_2\)).

  4. Calcular el estadístico U: Se calcula el estadístico U para cada grupo utilizando las siguientes fórmulas:

    \[ U_1 = n_1 n_2 + \frac{n_1(n_1 + 1)}{2} - R_1 \]

    \[ U_2 = n_1 n_2 + \frac{n_2(n_2 + 1)}{2} - R_2 \]

    Donde \(n_1\) y \(n_2\) son los tamaños de las muestras de los dos grupos. El estadístico U de la prueba es el menor de \(U_1\) y \(U_2\).

La hipótesis nula (\(H_0\)) es que las medianas de las dos poblaciones son iguales. La hipótesis alternativa (\(H_1\)) puede ser unilateral (la mediana de un grupo es mayor o menor que la del otro) o bilateral (las medianas de los dos grupos son diferentes).

El valor p es la probabilidad de obtener un estadístico U tan extremo (o más extremo) como el observado, asumiendo que la hipótesis nula es verdadera.

Para tamaños de muestra pequeños (\(n_1 \leq 20\) y \(n_2 \leq 20\)), se utilizan tablas especiales para determinar el valor p asociado con el estadístico U.

Para tamaños de muestra grandes (\(n_1 > 20\) o \(n_2 > 20\)), la distribución del estadístico U se aproxima a una distribución normal con: - Media: \(\mu_U = \frac{n_1 n_2}{2}\) - Desviación estándar: \(\sigma_U = \sqrt{\frac{n_1 n_2 (n_1 + n_2 + 1)}{12}}\)

El estadístico Z se calcula como:

\[ Z = \frac{U - \mu_U}{\sigma_U} \]

El valor p se calcula entonces utilizando la distribución normal estándar (para pruebas unilaterales o bilaterales según la hipótesis alternativa).

Interpretación del valor p:

  • Si el valor p \(\leq \alpha\): Se rechaza la hipótesis nula (\(H_0\)). Existe evidencia estadística significativa para concluir que las medianas de las dos poblaciones son diferentes.
  • Si el valor p \(> \alpha\): No se rechaza la hipótesis nula (\(H_0\)). No hay suficiente evidencia estadística para concluir que las medianas de las dos poblaciones son diferentes.

62.1. Ejemplo 1: Comparación de dos métodos de enseñanza

Se compararon las calificaciones de dos grupos de estudiantes que fueron enseñados con dos métodos diferentes. Se desea determinar si hay una diferencia significativa en la mediana de las calificaciones entre los dos métodos (\(\alpha = 0.05\)).

Datos:

Método A: 78, 82, 90, 75, 88, 85 Método B: 85, 92, 79, 95, 81, 88, 91

Solución en R:

# Datos de calificaciones por método
metodo_a <- c(78, 82, 90, 75, 88, 85)
metodo_b <- c(85, 92, 79, 95, 81, 88, 91)

# Realizar la prueba de la suma de rangos de Wilcoxon
prueba_wilcoxon_grupos <- wilcox.test(metodo_a, metodo_b, alternative = "two.sided")
## Warning in wilcox.test.default(metodo_a, metodo_b, alternative = "two.sided"):
## cannot compute exact p-value with ties
print(prueba_wilcoxon_grupos)
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  metodo_a and metodo_b
## W = 12, p-value = 0.2234
## alternative hypothesis: true location shift is not equal to 0
# Nivel de significancia
alfa_wilcoxon_grupos <- 0.05

# Para visualizar la región de rechazo (aproximación normal para n > 20, aquí n1=6, n2=7, usaremos aproximación)
n1 <- length(metodo_a)
n2 <- length(metodo_b)
media_u <- n1 * n2 / 2
sd_u <- sqrt(n1 * n2 * (n1 + n2 + 1) / 12)
z_critico_grupos <- qnorm(1 - alfa_wilcoxon_grupos / 2)
cat("Valor crítico de Z (bilateral):", z_critico_grupos, "\n")
## Valor crítico de Z (bilateral): 1.959964
# Visualización de la región de rechazo
x_norm <- seq(-3, 3, length.out = 200)
y_norm <- dnorm(x_norm)
plot(x_norm, y_norm, type = "l", xlab = "Estadístico Z", ylab = "Densidad",
     main = "Distribución Normal Estándar y Región de Rechazo (Wilcoxon)")
abline(v = c(-z_critico_grupos, z_critico_grupos), col = "red", lty = 2)
polygon(c(-Inf, x_norm[x_norm <= -z_critico_grupos], -z_critico_grupos), c(0, y_norm[x_norm <= -z_critico_grupos], 0), col = "salmon", border = NA)
polygon(c(z_critico_grupos, x_norm[x_norm >= z_critico_grupos], Inf), c(0, y_norm[x_norm >= z_critico_grupos], 0), col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
z_estadistico <- (prueba_wilcoxon_grupos$statistic - media_u) / sd_u
abline(v = z_estadistico, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico Z =", round(z_estadistico, 3)),
       col = "blue", lty = 2)

# Boxplots para visualizar las distribuciones
boxplot(metodo_a, metodo_b, names = c("Método A", "Método B"),
        ylab = "Calificación", main = "Comparación de Métodos de Enseñanza")

Interpretación: El valor p de la prueba indicará si hay una diferencia significativa en la mediana de las calificaciones entre los dos métodos.

62.2. Ejemplo 2: Comparación de salarios entre dos industrias

Se recolectaron los salarios anuales (en miles de dólares) de empleados en dos industrias diferentes. Se desea determinar si hay una diferencia significativa en la mediana de los salarios entre las industrias (\(\alpha = 0.01\)).

Datos:

Industria 1: 55, 60, 65, 70, 75, 80, 85, 90 Industria 2: 62, 68, 72, 78, 82, 88, 95, 100, 105

Solución en R:

# Datos de salarios por industria
industria1 <- c(55, 60, 65, 70, 75, 80, 85, 90)
industria2 <- c(62, 68, 72, 78, 82, 88, 95, 100, 105)

# Realizar la prueba de la suma de rangos de Wilcoxon
prueba_wilcoxon_salarios <- wilcox.test(industria1, industria2, alternative = "two.sided")
print(prueba_wilcoxon_salarios)
## 
##  Wilcoxon rank sum exact test
## 
## data:  industria1 and industria2
## W = 21, p-value = 0.1672
## alternative hypothesis: true location shift is not equal to 0
# Nivel de significancia
alfa_wilcoxon_salarios <- 0.01

# Aproximación normal
n1_salarios <- length(industria1)
n2_salarios <- length(industria2)
media_u_salarios <- n1_salarios * n2_salarios / 2
sd_u_salarios <- sqrt(n1_salarios * n2_salarios * (n1_salarios + n2_salarios + 1) / 12)
z_critico_salarios <- qnorm(1 - alfa_wilcoxon_salarios / 2)
cat("Valor crítico de Z (bilateral):", z_critico_salarios, "\n")
## Valor crítico de Z (bilateral): 2.575829
# Visualización de la región de rechazo (similar al Ejemplo 1)
plot(x_norm, y_norm, type = "l", xlab = "Estadístico Z", ylab = "Densidad",
     main = "Distribución Normal Estándar y Región de Rechazo (Wilcoxon)")
abline(v = c(-z_critico_salarios, z_critico_salarios), col = "red", lty = 2)
polygon(c(-Inf, x_norm[x_norm <= -z_critico_salarios], -z_critico_salarios), c(0, y_norm[x_norm <= -z_critico_salarios], 0), col = "salmon", border = NA)
polygon(c(z_critico_salarios, x_norm[x_norm >= z_critico_salarios], Inf), c(0, y_norm[x_norm >= z_critico_salarios], 0), col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
z_estadistico_salarios <- (prueba_wilcoxon_salarios$statistic - media_u_salarios) / sd_u_salarios
abline(v = z_estadistico_salarios, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico Z =", round(z_estadistico_salarios, 3)),
       col = "blue", lty = 2)

# Boxplots para visualizar
boxplot(industria1, industria2, names = c("Industria 1", "Industria 2"),
        ylab = "Salario (miles $)", main = "Comparación de Salarios entre Industrias")

Interpretación: El valor p indicará si hay una diferencia significativa en la mediana de los salarios entre las dos industrias.

62.3. Ejemplo 3: Prueba unilateral - Efecto de un fertilizante en el rendimiento de cultivos (aumento)

Se comparó el rendimiento (en kg/hectárea) de dos grupos de parcelas de tierra, uno tratado con un nuevo fertilizante y el otro sin tratamiento (control). Se desea determinar si el fertilizante aumenta significativamente el rendimiento (\(\alpha = 0.05\), prueba unilateral “greater” para fertilizante > control).

Datos:

Fertilizante: 4500, 4800, 5100, 4900, 5000, 5200, 4700, 5300 Control: 4200, 4400, 4500, 4300, 4600, 4100

Solución en R:

# Datos de rendimiento con y sin fertilizante
fertilizante <- c(4500, 4800, 5100, 4900, 5000, 5200, 4700, 5300)
control <- c(4200, 4400, 4500, 4300, 4600, 4100)

# Prueba unilateral "greater" (fertilizante > control)
prueba_wilcoxon_fertilizante <- wilcox.test(fertilizante, control, alternative = "greater")
## Warning in wilcox.test.default(fertilizante, control, alternative = "greater"):
## cannot compute exact p-value with ties
print(prueba_wilcoxon_fertilizante)
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  fertilizante and control
## W = 46.5, p-value = 0.002232
## alternative hypothesis: true location shift is greater than 0
# Nivel de significancia
alfa_wilcoxon_fertilizante <- 0.05

# Aproximación normal
n1_fertilizante <- length(fertilizante)
n2_control <- length(control)
media_u_fertilizante <- n1_fertilizante * n2_control / 2
sd_u_fertilizante <- sqrt(n1_fertilizante * n2_control * (n1_fertilizante + n2_control + 1) / 12)
z_critico_fertilizante <- qnorm(1 - alfa_wilcoxon_fertilizante)
cat("Valor crítico de Z (unilateral, greater):", z_critico_fertilizante, "\n")
## Valor crítico de Z (unilateral, greater): 1.644854
# Visualización de la región de rechazo (unilateral)
plot(x_norm, y_norm, type = "l", xlab = "Estadístico Z", ylab = "Densidad",
     main = "Distribución Normal Estándar y Región de Rechazo (Wilcoxon, Unilateral)")
abline(v = z_critico_fertilizante, col = "red", lty = 2)
polygon(c(z_critico_fertilizante, x_norm[x_norm >= z_critico_fertilizante], Inf), c(0, y_norm[x_norm >= z_critico_fertilizante], 0), col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
z_estadistico_fertilizante <- (prueba_wilcoxon_fertilizante$statistic - media_u_fertilizante) / sd_u_fertilizante
abline(v = z_estadistico_fertilizante, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico Z =", round(z_estadistico_fertilizante, 3)),
       col = "blue", lty = 2)

# Boxplots para visualizar
boxplot(fertilizante, control, names = c("Fertilizante", "Control"),
        ylab = "Rendimiento (kg/hectárea)", main = "Efecto del Fertilizante en el Rendimiento")

Interpretación: El valor p indicará si el rendimiento con fertilizante es significativamente mayor que el del grupo control.

62.4. Ejemplo 4: Prueba unilateral - Diferencia en tiempos de reacción (disminución)

Se compararon los tiempos de reacción a un estímulo (en segundos) entre un grupo que tomó un suplemento y un grupo placebo. Se desea determinar si el suplemento disminuye significativamente el tiempo de reacción (\(\alpha = 0.01\), prueba unilateral “less” para suplemento < placebo).

Datos:

Suplemento: 0.35, 0.38, 0.32, 0.36, 0.39, 0.34 Placebo: 0.40, 0.42, 0.39, 0.41, 0.43, 0.45, 0.42

Solución en R:

# Datos de tiempos de reacción con suplemento y placebo
suplemento <- c(0.35, 0.38, 0.32, 0.36, 0.39, 0.34)
placebo <- c(0.40, 0.42, 0.39, 0.41, 0.43, 0.45, 0.42)

# Prueba unilateral "less" (suplemento < placebo)
prueba_wilcoxon_suplemento <- wilcox.test(suplemento, placebo, alternative = "less")
## Warning in wilcox.test.default(suplemento, placebo, alternative = "less"):
## cannot compute exact p-value with ties
print(prueba_wilcoxon_suplemento)
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  suplemento and placebo
## W = 0.5, p-value = 0.002085
## alternative hypothesis: true location shift is less than 0
# Nivel de significancia
alfa_wilcoxon_suplemento <- 0.01

# Aproximación normal
n1_suplemento <- length(suplemento)
n2_placebo <- length(placebo)
media_u_suplemento <- n1_suplemento * n2_placebo / 2
sd_u_suplemento <- sqrt(n1_suplemento * n2_placebo * (n1_suplemento + n2_placebo + 1) / 12)
z_critico_suplemento <- qnorm(alfa_wilcoxon_suplemento)
cat("Valor crítico de Z (unilateral, less):", z_critico_suplemento, "\n")
## Valor crítico de Z (unilateral, less): -2.326348
# Visualización de la región de rechazo (unilateral)
plot(x_norm, y_norm, type = "l", xlab = "Estadístico Z", ylab = "Densidad",
     main = "Distribución Normal Estándar y Región de Rechazo (Wilcoxon, Unilateral)")
abline(v = z_critico_suplemento, col = "red", lty = 2)
polygon(c(-Inf, x_norm[x_norm <= z_critico_suplemento], z_critico_suplemento), c(0, y_norm[x_norm <= z_critico_suplemento], 0), col = "salmon", border = NA)
legend("topleft", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
z_estadistico_suplemento <- (prueba_wilcoxon_suplemento$statistic - media_u_suplemento) / sd_u_suplemento
abline(v = z_estadistico_suplemento, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico Z =", round(z_estadistico_suplemento, 3)),
       col = "blue", lty = 2)

# Boxplots para visualizar
boxplot(suplemento, placebo, names = c("Suplemento", "Placebo"),
        ylab = "Tiempo de Reacción (s)", main = "Efecto del Suplemento en el Tiempo de Reacción")

Interpretación: El valor p indicará si el tiempo de reacción en el grupo del suplemento es significativamente menor que en el grupo placebo.

63. Prueba de Rachas

La prueba de rachas es una prueba no paramétrica utilizada para determinar si una secuencia de datos es aleatoria. Examina el número de rachas (secuencias consecutivas de elementos similares) en la secuencia. Demasiadas o muy pocas rachas sugieren no aleatoriedad.

El procedimiento general es el siguiente:

  1. Ordenar los datos (si es necesario): Si la prueba se aplica a una variable continua, a menudo se compara cada valor con la mediana de la muestra. Se crea una secuencia binaria (por ejemplo, ‘+’ si el valor está por encima de la mediana, ‘-’ si está por debajo).
  2. Identificar las rachas: Se identifican las secuencias consecutivas de elementos idénticos en la secuencia binaria.
  3. Contar el número de rachas (R): Se cuenta el número total de rachas observadas.
  4. Contar el número de elementos de cada tipo (\(n_1\) y \(n_2\)): Se cuenta el número de elementos del primer tipo (por ejemplo, ‘+’) y el número de elementos del segundo tipo (por ejemplo, ‘-’). El tamaño total de la muestra es \(n = n_1 + n_2\).

La hipótesis nula (\(H_0\)) es que la secuencia es aleatoria. La hipótesis alternativa (\(H_1\)) es que la secuencia no es aleatoria (puede haber tendencias, ciclos o agrupaciones).

El valor p se calcula basándose en la distribución del número de rachas bajo la hipótesis de aleatoriedad.

Para tamaños de muestra pequeños (\(n \leq 20\)), se utilizan tablas especiales para determinar el valor p asociado con el número de rachas observado.

Para tamaños de muestra grandes (\(n > 20\)), la distribución del número de rachas (R) se aproxima a una distribución normal con: - Media: \(\mu_R = \frac{2 n_1 n_2}{n_1 + n_2} + 1\) - Desviación estándar: \(\sigma_R = \sqrt{\frac{2 n_1 n_2 (2 n_1 n_2 - n_1 - n_2)}{(n_1 + n_2)^2 (n_1 + n_2 - 1)}}\)

El estadístico Z se calcula como:

\[ Z = \frac{R - \mu_R}{\sigma_R} \]

El valor p se calcula entonces utilizando la distribución normal estándar (para pruebas bilaterales, ya que la no aleatoriedad puede manifestarse por demasiadas o muy pocas rachas).

Interpretación del valor p:

  • Si el valor p \(\leq \alpha\): Se rechaza la hipótesis nula (\(H_0\)). Existe evidencia estadística significativa para concluir que la secuencia no es aleatoria.
  • Si el valor p \(> \alpha\): No se rechaza la hipótesis nula (\(H_0\)). No hay suficiente evidencia estadística para concluir que la secuencia no es aleatoria.

63.1. Ejemplo 1: Aleatoriedad de los signos de los cambios en el precio de una acción

Se registraron los signos de los cambios diarios en el precio de una acción durante 30 días (+ para aumento, - para disminución). Se desea probar si la secuencia de cambios es aleatoria (\(\alpha = 0.05\)).

Datos:

+, +, -, +, -, -, +, -, +, +, +, -, -, +, -, +, -, -, +, +, -, +, -, -, +, +, -, +, -

Solución en R:

# Datos de los signos de los cambios en el precio
signos <- c("+", "+", "-", "+", "-", "-", "+", "-", "+", "+", "+", "-", "-", "+", "-", "+", "-", "-", "+", "+", "-", "+", "-", "-", "+", "+", "-", "+", "-")

# Función para calcular el número de rachas
calcular_rachas <- function(secuencia) {
  rachas <- 1
  if (length(secuencia) > 1) {
    for (i in 2:length(secuencia)) {
      if (secuencia[i] != secuencia[i-1]) {
        rachas <- rachas + 1
      }
    }
  }
  return(rachas)
}

# Calcular el número de rachas
R_observado <- calcular_rachas(signos)
cat("Número de rachas observadas:", R_observado, "\n")
## Número de rachas observadas: 20
# Contar el número de signos + y -
n1 <- sum(signos == "+")
n2 <- sum(signos == "-")
n <- n1 + n2
cat("Número de +:", n1, "\n")
## Número de +: 15
cat("Número de -:", n2, "\n")
## Número de -: 14
# Calcular la media y la desviación estándar esperadas bajo aleatoriedad (aproximación normal)
media_R <- (2 * n1 * n2) / n + 1
sd_R <- sqrt((2 * n1 * n2 * (2 * n1 * n2 - n1 - n2)) / (n^2 * (n - 1)))
cat("Media esperada de rachas:", media_R, "\n")
## Media esperada de rachas: 15.48276
cat("Desviación estándar esperada de rachas:", sd_R, "\n")
## Desviación estándar esperada de rachas: 2.640803
# Calcular el estadístico Z
Z_observado <- (R_observado - media_R) / sd_R
cat("Estadístico Z observado:", Z_observado, "\n")
## Estadístico Z observado: 1.710556
# Calcular el valor p (prueba bilateral)
p_valor <- 2 * pnorm(abs(Z_observado), lower.tail = FALSE)
cat("Valor p:", p_valor, "\n")
## Valor p: 0.08716311
# Nivel de significancia
alfa_rachas <- 0.05

# Valor crítico de Z (bilateral)
z_critico_rachas <- qnorm(1 - alfa_rachas / 2)
cat("Valor crítico de Z (bilateral):", z_critico_rachas, "\n")
## Valor crítico de Z (bilateral): 1.959964
# Visualización de la región de rechazo
x_norm <- seq(-3, 3, length.out = 200)
y_norm <- dnorm(x_norm)
plot(x_norm, y_norm, type = "l", xlab = "Estadístico Z", ylab = "Densidad",
     main = "Distribución Normal Estándar y Región de Rechazo (Prueba de Rachas)")
abline(v = c(-z_critico_rachas, z_critico_rachas), col = "red", lty = 2)
polygon(c(-Inf, x_norm[x_norm <= -z_critico_rachas], -z_critico_rachas), c(0, y_norm[x_norm <= -z_critico_rachas], 0), col = "salmon", border = NA)
polygon(c(z_critico_rachas, x_norm[x_norm >= z_critico_rachas], Inf), c(0, y_norm[x_norm >= z_critico_rachas], 0), col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = Z_observado, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico Z =", round(Z_observado, 3)),
       col = "blue", lty = 2)

# Interpretación
if (p_valor <= alfa_rachas) {
  cat("\nEl valor p (", round(p_valor, 3), ") es menor o igual al nivel de significancia (", alfa_rachas, ").\n")
  cat("Se rechaza la hipótesis nula. Existe evidencia estadística significativa para concluir que la secuencia de cambios en el precio de la acción no es aleatoria.\n")
} else {
  cat("\nEl valor p (", round(p_valor, 3), ") es mayor que el nivel de significancia (", alfa_rachas, ").\n")
  cat("No se rechaza la hipótesis nula. No hay suficiente evidencia para concluir que la secuencia de cambios en el precio de la acción no es aleatoria.\n")
}
## 
## El valor p ( 0.087 ) es mayor que el nivel de significancia ( 0.05 ).
## No se rechaza la hipótesis nula. No hay suficiente evidencia para concluir que la secuencia de cambios en el precio de la acción no es aleatoria.

Interpretación: El valor p indicará si la secuencia de signos es significativamente diferente de lo que se esperaría por azar.

63.2. Ejemplo 2: Aleatoriedad de los géneros de los recién nacidos

Se registró la secuencia de géneros de los últimos 40 recién nacidos en un hospital (M para masculino, F para femenino). Se desea probar si la secuencia es aleatoria (\(\alpha = 0.01\)).

Datos:

M, F, M, M, F, F, F, M, M, M, M, F, F, M, F, M, F, F, M, M, F, M, F, F, F, M, M, F, M, F, M, M, F, F, M, F, M, F, F

Solución en R:

# Datos de géneros
generos <- c("M", "F", "M", "M", "F", "F", "F", "M", "M", "M", "M", "F", "F", "M", "F", "M", "F", "F", "M", "M", "F", "M", "F", "F", "F", "M", "M", "F", "M", "F", "M", "M", "F", "F", "M", "F", "M", "F", "F")

# Calcular el número de rachas
R_observado_generos <- calcular_rachas(generos)
cat("Número de rachas observadas:", R_observado_generos, "\n")
## Número de rachas observadas: 24
# Contar el número de M y F
n1_generos <- sum(generos == "M")
n2_generos <- sum(generos == "F")
n_generos <- n1_generos + n2_generos
cat("Número de M:", n1_generos, "\n")
## Número de M: 19
cat("Número de F:", n2_generos, "\n")
## Número de F: 20
# Calcular la media y la desviación estándar esperadas
media_R_generos <- (2 * n1_generos * n2_generos) / n_generos + 1
sd_R_generos <- sqrt((2 * n1_generos * n2_generos * (2 * n1_generos * n2_generos - n1_generos - n2_generos)) / (n_generos^2 * (n_generos - 1)))
cat("Media esperada de rachas:", media_R_generos, "\n")
## Media esperada de rachas: 20.48718
cat("Desviación estándar esperada de rachas:", sd_R_generos, "\n")
## Desviación estándar esperada de rachas: 3.079059
# Calcular el estadístico Z
Z_observado_generos <- (R_observado_generos - media_R_generos) / sd_R_generos
cat("Estadístico Z observado:", Z_observado_generos, "\n")
## Estadístico Z observado: 1.140875
# Calcular el valor p (prueba bilateral)
p_valor_generos <- 2 * pnorm(abs(Z_observado_generos), lower.tail = FALSE)
cat("Valor p:", p_valor_generos, "\n")
## Valor p: 0.2539221
# Nivel de significancia
alfa_rachas_generos <- 0.01

# Valor crítico de Z (bilateral)
z_critico_rachas_generos <- qnorm(1 - alfa_rachas_generos / 2)
cat("Valor crítico de Z (bilateral):", z_critico_rachas_generos, "\n")
## Valor crítico de Z (bilateral): 2.575829
# Visualización de la región de rechazo (similar al Ejemplo 1)
plot(x_norm, y_norm, type = "l", xlab = "Estadístico Z", ylab = "Densidad",
     main = "Distribución Normal Estándar y Región de Rechazo (Prueba de Rachas)")
abline(v = c(-z_critico_rachas_generos, z_critico_rachas_generos), col = "red", lty = 2)
polygon(c(-Inf, x_norm[x_norm <= -z_critico_rachas_generos], -z_critico_rachas_generos), c(0, y_norm[x_norm <= -z_critico_rachas_generos], 0), col = "salmon", border = NA)
polygon(c(z_critico_rachas_generos, x_norm[x_norm >= z_critico_rachas_generos], Inf), c(0, y_norm[x_norm >= z_critico_rachas_generos], 0), col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = Z_observado_generos, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico Z =", round(Z_observado_generos, 3)),
       col = "blue", lty = 2)

# Interpretación
if (p_valor_generos <= alfa_rachas_generos) {
  cat("\nEl valor p (", round(p_valor_generos, 3), ") es menor o igual al nivel de significancia (", alfa_rachas_generos, ").\n")
  cat("Se rechaza la hipótesis nula. Existe evidencia estadística significativa para concluir que la secuencia de géneros de los recién nacidos no es aleatoria.\n")
} else {
  cat("\nEl valor p (", round(p_valor_generos, 3), ") es mayor que el nivel de significancia (", alfa_rachas_generos, ").\n")
  cat("No se rechaza la hipótesis nula. No hay suficiente evidencia para concluir que la secuencia de géneros de los recién nacidos no es aleatoria.\n")
}
## 
## El valor p ( 0.254 ) es mayor que el nivel de significancia ( 0.01 ).
## No se rechaza la hipótesis nula. No hay suficiente evidencia para concluir que la secuencia de géneros de los recién nacidos no es aleatoria.

Interpretación: El valor p indicará si la secuencia de géneros es significativamente diferente de lo que se esperaría por azar.

63.3. Ejemplo 3: Aleatoriedad de valores por encima y por debajo de la mediana

Se registraron 50 mediciones de temperatura. Se desea probar si la secuencia de valores por encima y por debajo de la mediana es aleatoria (\(\alpha = 0.05\)).

Datos: (Se omiten para brevedad, pero serían 50 valores numéricos)

Solución en R:

# Datos de temperatura (reemplazar con tus datos)
temperaturas <- c(25.1, 24.8, 25.5, 25.2, 24.9, 25.6, 25.3, 25.0, 25.7, 25.4,
                 24.7, 25.8, 24.6, 25.9, 24.5, 26.0, 24.4, 26.1, 24.3, 26.2,
                 25.1, 24.9, 25.6, 25.3, 25.0, 25.7, 25.4, 25.1, 25.8, 24.8,
                 25.5, 25.2, 24.9, 25.6, 25.3, 25.0, 25.7, 25.4, 24.7, 25.8,
                 24.6, 25.9, 24.5, 26.0, 24.4, 26.1, 24.3, 26.2, 25.2, 24.8)

# Calcular la mediana
mediana_temp <- median(temperaturas)

# Crear la secuencia de signos (+ por encima, - por debajo)
signos_temp <- ifelse(temperaturas > mediana_temp, "+", ifelse(temperaturas < mediana_temp, "-", NA))
signos_temp <- signos_temp[!is.na(signos_temp)] # Eliminar empates (opcional)

# Calcular el número de rachas
R_observado_temp <- calcular_rachas(signos_temp)
cat("Número de rachas observadas:", R_observado_temp, "\n")
## Número de rachas observadas: 39
# Contar el número de + y -
n1_temp <- sum(signos_temp == "+")
n2_temp <- sum(signos_temp == "-")
n_temp <- n1_temp + n2_temp
cat("Número de +:", n1_temp, "\n")
## Número de +: 25
cat("Número de -:", n2_temp, "\n")
## Número de -: 25
# Calcular la media y la desviación estándar esperadas
media_R_temp <- (2 * n1_temp * n2_temp) / n_temp + 1
sd_R_temp <- sqrt((2 * n1_temp * n2_temp * (2 * n1_temp * n2_temp - n1_temp - n2_temp)) / (n_temp^2 * (n_temp - 1)))
cat("Media esperada de rachas:", media_R_temp, "\n")
## Media esperada de rachas: 26
cat("Desviación estándar esperada de rachas:", sd_R_temp, "\n")
## Desviación estándar esperada de rachas: 3.499271
# Calcular el estadístico Z
Z_observado_temp <- (R_observado_temp - media_R_temp) / sd_R_temp
cat("Estadístico Z observado:", Z_observado_temp, "\n")
## Estadístico Z observado: 3.715059
# Calcular el valor p (prueba bilateral)
p_valor_temp <- 2 * pnorm(abs(Z_observado_temp), lower.tail = FALSE)
cat("Valor p:", p_valor_temp, "\n")
## Valor p: 0.0002031559
# Nivel de significancia
alfa_rachas_temp <- 0.05

# Valor crítico de Z (bilateral)
z_critico_rachas_temp <- qnorm(1 - alfa_rachas_temp / 2)
cat("Valor crítico de Z (bilateral):", z_critico_rachas_temp, "\n")
## Valor crítico de Z (bilateral): 1.959964
# Visualización de la región de rechazo (similar al Ejemplo 1)
plot(x_norm, y_norm, type = "l", xlab = "Estadístico Z", ylab = "Densidad",
     main = "Distribución Normal Estándar y Región de Rechazo (Prueba de Rachas)")
abline(v = c(-z_critico_rachas_temp, z_critico_rachas_temp), col = "red", lty = 2)
polygon(c(-Inf, x_norm[x_norm <= -z_critico_rachas_temp], -z_critico_rachas_temp), c(0, y_norm[x_norm <= -z_critico_rachas_temp], 0), col = "salmon", border = NA)
polygon(c(z_critico_rachas_temp, x_norm[x_norm >= z_critico_rachas_temp], Inf), c(0, y_norm[x_norm >= z_critico_rachas_temp], 0), col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = Z_observado_temp, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico Z =", round(Z_observado_temp, 3)),
       col = "blue", lty = 2)

# Interpretación
if (p_valor_temp <= alfa_rachas_temp) {
  cat("\nEl valor p (", round(p_valor_temp, 3), ") es menor o igual al nivel de significancia (", alfa_rachas_temp, ").\n")
  cat("Se rechaza la hipótesis nula. Existe evidencia estadística significativa para concluir que la secuencia de temperaturas por encima y por debajo de la mediana no es aleatoria.\n")
} else {
  cat("\nEl valor p (", round(p_valor_temp, 3), ") es mayor que el nivel de significancia (", alfa_rachas_temp, ").\n")
  cat("No se rechaza la hipótesis nula. No hay suficiente evidencia para concluir que la secuencia de temperaturas por encima y por debajo de la mediana no es aleatoria.\n")
}
## 
## El valor p ( 0 ) es menor o igual al nivel de significancia ( 0.05 ).
## Se rechaza la hipótesis nula. Existe evidencia estadística significativa para concluir que la secuencia de temperaturas por encima y por debajo de la mediana no es aleatoria.

Interpretación: El valor p indicará si la secuencia de valores por encima y por debajo de la mediana es significativamente diferente de lo que se esperaría por azar.

63.4. Ejemplo 4: Aleatoriedad de la dirección del viento (Norte/Sur)

Se registraron las direcciones predominantes del viento al mediodía durante 60 días (N para norte, S para sur). Se desea probar si la secuencia de direcciones es aleatoria (\(\alpha = 0.01\)).

Datos: (Se omiten para brevedad, pero serían 60 caracteres ‘N’ o ‘S’)

Solución en R:

# Datos de dirección del viento (reemplazar con tus datos)
viento <- c("N", "N", "S", "N", "S", "S", "N", "S", "N", "N", "N", "S", "S", "N", "S", "N", "S", "S", "N", "N", "S", "N", "S", "S", "S", "N", "N", "S", "N", "S", "N", "N", "S", "S", "N", "S", "N", "S", "S", "N", "N", "S", "N", "S", "S", "S", "N", "N", "S", "N", "S", "N", "N", "S", "S", "N", "S", "N", "S", "S")

# Calcular el número de rachas
R_observado_viento <- calcular_rachas(viento)
cat("Número de rachas observadas:", R_observado_viento, "\n")
## Número de rachas observadas: 40
# Contar el número de N y S
n1_viento <- sum(viento == "N")
n2_viento <- sum(viento == "S")
n_viento <- n1_viento + n2_viento
cat("Número de N:", n1_viento, "\n")
## Número de N: 29
cat("Número de S:", n2_viento, "\n")
## Número de S: 31
# Calcular la media y la desviación estándar esperadas
media_R_viento <- (2 * n1_viento * n2_viento) / n_viento + 1
sd_R_viento <- sqrt((2 * n1_viento * n2_viento * (2 * n1_viento * n2_viento - n1_viento - n2_viento)) / (n_viento^2 * (n_viento - 1)))
cat("Media esperada de rachas:", media_R_viento, "\n")
## Media esperada de rachas: 30.96667
cat("Desviación estándar esperada de rachas:", sd_R_viento, "\n")
## Desviación estándar esperada de rachas: 3.835681
# Calcular el estadístico Z
Z_observado_viento <- (R_observado_viento - media_R_viento) / sd_R_viento
cat("Estadístico Z observado:", Z_observado_viento, "\n")
## Estadístico Z observado: 2.355079
# Calcular el valor p (prueba bilateral)
p_valor_viento <- 2 * pnorm(abs(Z_observado_viento), lower.tail = FALSE)
cat("Valor p:", p_valor_viento, "\n")
## Valor p: 0.01851875
# Nivel de significancia
alfa_rachas_viento <- 0.01

# Valor crítico de Z (bilateral)
z_critico_rachas_viento <- qnorm(1 - alfa_rachas_viento / 2)
cat("Valor crítico de Z (bilateral):", z_critico_rachas_viento, "\n")
## Valor crítico de Z (bilateral): 2.575829
# Visualización de la región de rechazo (similar al Ejemplo 1)
plot(x_norm, y_norm, type = "l", xlab = "Estadístico Z", ylab = "Densidad",
     main = "Distribución Normal Estándar y Región de Rechazo (Prueba de Rachas)")
abline(v = c(-z_critico_rachas_viento, z_critico_rachas_viento), col = "red", lty = 2)
polygon(c(-Inf, x_norm[x_norm <= -z_critico_rachas_viento], -z_critico_rachas_viento), c(0, y_norm[x_norm <= -z_critico_rachas_viento], 0), col = "salmon", border = NA)
polygon(c(z_critico_rachas_viento, x_norm[x_norm >= z_critico_rachas_viento], Inf), c(0, y_norm[x_norm >= z_critico_rachas_viento], 0), col = "salmon", border = NA)
legend("topright", legend = c("Región de Rechazo", "Valor Crítico"),
       fill = c("salmon", NA), border = c(NA, "red"), lty = c(NA, 2))
abline(v = Z_observado_viento, col = "blue", lty = 2)
legend("topleft", legend = paste("Estadístico Z =", round(Z_observado_viento, 3)),
       col = "blue", lty = 2)

# Interpretación
if (p_valor_viento <= alfa_rachas_viento) {
  cat("\nEl valor p (", round(p_valor_viento, 3), ") es menor o igual al nivel de significancia (", alfa_rachas_viento, ").\n")
  cat("Se rechaza la hipótesis nula. Existe evidencia estadística significativa para concluir que la secuencia de direcciones del viento no es aleatoria.\n")
} else {
  cat("\nEl valor p (", round(p_valor_viento, 3), ") es mayor que el nivel de significancia (", alfa_rachas_viento, ").\n")
  cat("No se rechaza la hipótesis nula. No hay suficiente evidencia para concluir que la secuencia de direcciones del viento no es aleatoria.\n")
}
## 
## El valor p ( 0.019 ) es mayor que el nivel de significancia ( 0.01 ).
## No se rechaza la hipótesis nula. No hay suficiente evidencia para concluir que la secuencia de direcciones del viento no es aleatoria.

Interpretación: El valor p indicará si la secuencia de direcciones del viento es significativamente diferente de lo que se esperaría por azar.