¿Por qué necesitamos comparar poblaciones?

Hasta ahora hemos estimado parámetros y probado hipótesis respecto de una sola población. Sin embargo, las decisiones organizacionales suelen requerir comparaciones: ¿qué sede vende más?, ¿funcionó una capacitación?, ¿qué canal convierte mejor?, ¿cuál proceso es más estable?

Consideremos una empresa que compara dos sucursales. Encontrar una venta promedio de $540 mil en la primera y $515 mil en la segunda no demuestra que la primera sea superior: ambos promedios provienen de muestras y, por tanto, contienen incertidumbre.

Pregunta de investigación. ¿La diferencia observada de $25 mil refleja una diferencia real entre las medias poblacionales o podría explicarse por el azar del muestreo?

La respuesta depende, entre otros aspectos, del tamaño de muestra, de la variabilidad y de cómo se recolectaron los datos.

Objetivos de aprendizaje

Al terminar esta unidad, el estudiante estará en capacidad de:

  • Reconocer cuándo dos muestras son independientes y cuándo están pareadas.
  • Estimar y contrastar la diferencia entre dos medias poblacionales.
  • Comparar dos proporciones poblacionales mediante intervalos y pruebas.
  • Evaluar la igualdad de dos varianzas poblacionales mediante la distribución F.
  • Interpretar los resultados de R junto con las condiciones y limitaciones de cada procedimiento.
  • Formular conclusiones estadísticas y recomendaciones fundamentadas para situaciones empresariales.

Lo primero: identificar el diseño

Pregunta Tipo de dato Diseño Procedimiento habitual
¿Dos sedes tienen igual venta promedio? Cuantitativo Dos grupos independientes Diferencia de medias (Z o t)
¿Cambió el tiempo después de una capacitación? Cuantitativo Antes/después de las mismas personas t pareada
¿Dos canales generan igual tasa de compra? Binario (sí/no) Dos grupos independientes Diferencia de proporciones (Z)
¿Dos máquinas tienen igual variabilidad? Cuantitativo Dos grupos independientes Comparación de varianzas (F)
Error frecuente. Seleccionar una prueba solo porque se tienen “dos columnas”. Dos columnas pueden representar grupos independientes o medidas repetidas sobre las mismas personas; las pruebas correspondientes no son intercambiables.

Comparación de dos medias con muestras independientes

¿Qué significa que las muestras sean independientes?

Dos muestras son independientes cuando las observaciones de una no están emparejadas ni dependen de las observaciones de la otra. Por ejemplo, seleccionar vendedores de dos sedes diferentes sin relacionar cada vendedor de una sede con uno de la otra.

Si \(\bar X_1\) y \(\bar X_2\) son medias muestrales independientes:

\[ E(\bar X_1-\bar X_2)=\mu_1-\mu_2, \]

\[ \operatorname{Var}(\bar X_1-\bar X_2) =\frac{\sigma_1^2}{n_1}+\frac{\sigma_2^2}{n_2}. \]

En consecuencia, el error estándar de la diferencia de medias, con desviaciones poblacionales conocidas, es:

\[ EE(\bar X_1-\bar X_2) =\sqrt{\frac{\sigma_1^2}{n_1}+\frac{\sigma_2^2}{n_2}}. \]

No se suman las desviaciones estándar; se suman las varianzas de los estimadores y se obtiene la raíz cuadrada.

Caso A. Varianzas poblacionales conocidas: prueba Z

Este escenario es útil para comprender la teoría, aunque en aplicaciones empresariales es poco común conocer las varianzas poblacionales verdaderas. Puede ocurrir, por ejemplo, cuando se cuenta con parámetros históricos confiables del proceso.

Ejemplo: ventas promedio entre dos sedes

Un negocio estudia las ventas diarias por asesor (en miles de pesos) en dos sedes. Los resúmenes muestrales son:

Estadístico Sede A Sede B
Media muestral 540 515
Desviación estándar poblacional, conocida 60 70
Tamaño de muestra 64 49

Se quiere saber si existen diferencias entre las medias poblacionales con \(\alpha=0,05\).

Paso 1. Parámetro e hipótesis

El parámetro de interés es \(\mu_A-\mu_B\). Como se pregunta por una diferencia en cualquier dirección, se utiliza una prueba bilateral:

\[H_0:\mu_A-\mu_B=0, \qquad H_1:\mu_A-\mu_B\neq 0.\]

Paso 2. Diferencia observada y error estándar

\[\bar x_A-\bar x_B=540-515=25.\]

\[EE=\sqrt{\frac{60^2}{64}+\frac{70^2}{49}} =\sqrt{56,25+100}=12,5.\]

Paso 3. Estadístico de prueba

\[Z=\frac{(\bar x_A-\bar x_B)-0}{EE} =\frac{25}{12,5}=2.\]

La distribución de referencia es aproximadamente normal estándar cuando los supuestos de normalidad o aproximación por muestras grandes lo justifican.

Paso 4. Regla de decisión

Para una prueba bilateral al 5 %, las regiones críticas están por debajo de \(-1,96\) y por encima de \(1,96\).

media_a <- 540; media_b <- 515
sigma_a <- 60; sigma_b <- 70
n_a <- 64; n_b <- 49
alpha <- 0.05

dif_z <- media_a - media_b
se_z <- sqrt(sigma_a^2/n_a + sigma_b^2/n_b)
z_obs <- dif_z/se_z
p_z <- 2*pnorm(-abs(z_obs))
z_crit <- qnorm(1-alpha/2)
ic_z <- dif_z + c(-1, 1)*z_crit*se_z

data.frame(diferencia = dif_z, error_estandar = se_z,
           z = z_obs, valor_p = p_z,
           IC_inferior = ic_z[1], IC_superior = ic_z[2]) |>
  knitr::kable(digits = 4, caption = "Prueba Z e intervalo para la diferencia de medias")
Prueba Z e intervalo para la diferencia de medias
diferencia error_estandar z valor_p IC_inferior IC_superior
25 12.5 2 0.0455 0.5005 49.4995

El valor-p bilateral es aproximadamente 0,0455. Como es inferior a 0,05, rechazamos \(H_0\): existe evidencia estadística de una diferencia entre las ventas medias de las dos sedes.

Paso 5. Representación de la región crítica

curva <- data.frame(z=seq(-3.8,3.8,length.out=900))
curva$densidad <- dnorm(curva$z)
curva$region <- ifelse(abs(curva$z) >= z_crit, "Rechazo de H0", "No rechazo")
ggplot(curva, aes(z,densidad)) +
  geom_area(data=subset(curva,region=="Rechazo de H0"),
            fill="#e8a05d",alpha=.7) +
  geom_line(color="#226b9a", linewidth=1.1) +
  geom_vline(xintercept=c(-z_crit,z_crit), linetype="dashed",color="#bf6f32") +
  geom_vline(xintercept=z_obs,color="#a62935",linewidth=1.1) +
  annotate("text",x=z_obs+.1,y=.31,label="Z observado = 2",hjust=0,
           color="#a62935",size=4) +
  labs(title="Prueba bilateral para dos medias",subtitle="Las colas sombreadas tienen área total de 5 %",
       x="Estadístico Z",y="Densidad") + tema
Distribución normal estándar, regiones críticas y estadístico observado.

Distribución normal estándar, regiones críticas y estadístico observado.

Paso 6. Intervalo de confianza

\[IC_{95\%}(\mu_A-\mu_B)= (\bar x_A-\bar x_B)\pm z_{0,975} \sqrt{\frac{\sigma_A^2}{n_A}+\frac{\sigma_B^2}{n_B}}.\]

\[IC_{95\%}=25\pm 1,96(12,5)\approx [0,50;\ 49,50].\]

El intervalo es positivo y excluye el cero: concuerda con la conclusión de la prueba bilateral. Las ventas medias de A podrían superar las de B en aproximadamente entre 0,5 y 49,5 miles de pesos, con el procedimiento de confianza del 95 %.

Interpretación empresarial. Aunque existe evidencia de diferencia, el extremo inferior del intervalo está muy cerca de cero. Antes de recomendar inversiones o reasignación de personal conviene evaluar si la magnitud de la diferencia representa una ventaja económica relevante.

Caso B. Varianzas poblacionales desconocidas: prueba t de Welch

Normalmente no conocemos \(\sigma_1\) ni \(\sigma_2\). Las estimamos con \(s_1\) y \(s_2\). En muestras independientes sin asumir igualdad de varianzas, una elección robusta y habitual es la prueba t de Welch.

\[t=\frac{(\bar x_1-\bar x_2)-\Delta_0} {\sqrt{\frac{s_1^2}{n_1}+\frac{s_2^2}{n_2}}}.\]

Los grados de libertad se aproximan mediante Welch–Satterthwaite:

\[\nu\approx \frac{\left(s_1^2/n_1+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}}.\]

Importante: no es obligatorio verificar que ambas varianzas sean iguales para aplicar Welch; de hecho, su principal ventaja es no imponer ese supuesto.

Ejemplo: tiempo de atención en dos centros

Se seleccionaron muestras independientes de solicitudes atendidas en dos centros de servicio. El tiempo se mide en minutos. Queremos comparar las medias mediante una prueba bilateral e intervalo del 95 %.

# Datos ilustrativos reproducibles de tiempos de atención, en minutos.
centro_a <- c(18,20,19,17,22,21,18,20,19,17,21,18,20,19,22,18)
centro_b <- c(23,22,25,20,24,23,26,21,24,22,25,23,27,20)

datos_centros <- data.frame(
  tiempo=c(centro_a,centro_b),
  centro=rep(c("Centro A","Centro B"), c(length(centro_a),length(centro_b)))
)

resumen <- aggregate(tiempo~centro,datos_centros,
                     function(x) c(n=length(x), media=mean(x), s=sd(x)))
resumen_tabla <- data.frame(centro=resumen$centro,
                           n=resumen$tiempo[,"n"],
                           media=resumen$tiempo[,"media"],
                           desviacion=resumen$tiempo[,"s"])
knitr::kable(resumen_tabla, digits=2,
             caption="Resumen descriptivo de los tiempos de atención")
Resumen descriptivo de los tiempos de atención
centro n media desviacion
Centro A 16 19.31 1.62
Centro B 14 23.21 2.12

Paso 1. Explorar antes de probar

ggplot(datos_centros,aes(centro,tiempo,fill=centro)) +
  geom_boxplot(alpha=.35,width=.48,outlier.shape=NA) +
  geom_jitter(width=.10,height=0,size=2,alpha=.75) +
  scale_fill_manual(values=c("#277eb3","#e3a24d")) +
  labs(title="¿Los centros presentan tiempos de atención diferentes?",
       x="Centro",y="Tiempo de atención (minutos)") +
  theme(legend.position="none") + tema
Distribución de tiempos por centro. Un gráfico permite examinar dispersión y posibles atípicos.

Distribución de tiempos por centro. Un gráfico permite examinar dispersión y posibles atípicos.

El gráfico ofrece información descriptiva, pero no sustituye la inferencia estadística.

Paso 2. Hipótesis y cálculo manual con R

\[H_0:\mu_A-\mu_B=0,\qquad H_1:\mu_A-\mu_B\neq 0.\]

n1 <- length(centro_a); n2 <- length(centro_b)
x1 <- mean(centro_a); x2 <- mean(centro_b)
s1 <- sd(centro_a); s2 <- sd(centro_b)
se_w <- sqrt(s1^2/n1+s2^2/n2)
t_w <- (x1-x2)/se_w
nu_w <- (s1^2/n1+s2^2/n2)^2 /
        ((s1^2/n1)^2/(n1-1)+(s2^2/n2)^2/(n2-1))
p_w <- 2*pt(-abs(t_w),df=nu_w)
tc_w <- qt(.975,df=nu_w)
ic_w <- (x1-x2)+c(-1,1)*tc_w*se_w

data.frame(diferencia=x1-x2, EE=se_w, t=t_w,gl=nu_w,
           valor_p=p_w, LI=ic_w[1],LS=ic_w[2]) |>
  knitr::kable(digits=4)
diferencia EE t gl valor_p LI LS
-3.9018 0.6964 -5.6028 24.2247 0 -5.3384 -2.4652

Paso 3. Usar la función estadística de R

prueba_welch <- t.test(centro_a,centro_b,
                       alternative="two.sided",conf.level=.95,
                       var.equal=FALSE)
prueba_welch
## 
##  Welch Two Sample t-test
## 
## data:  centro_a and centro_b
## t = -5.6028, df = 24.225, p-value = 8.823e-06
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -5.338370 -2.465202
## sample estimates:
## mean of x mean of y 
##  19.31250  23.21429

En este ejemplo, $x_A-x_B = $ -3,90 minutos y el valor-p es 0,0000. La decisión al 5 % es rechazar la hipótesis nula.

Lectura correcta del resultado. La función t.test() entrega el estadístico, grados de libertad, valor-p e intervalo de confianza. Una lectura completa debe incorporar también la dirección y la magnitud de la diferencia, además de comprobar el diseño muestral.

¿Y cuándo se utiliza la t con varianzas iguales?

Si existe una justificación sustantiva para asumir \(\sigma_1^2=\sigma_2^2\), puede emplearse la varianza combinada:

\[s_p^2=\frac{(n_1-1)s_1^2+(n_2-1)s_2^2}{n_1+n_2-2}.\]

\[t=\frac{(\bar x_1-\bar x_2)-\Delta_0} {s_p\sqrt{1/n_1+1/n_2}},\qquad gl=n_1+n_2-2.\]

# Solo bajo una hipótesis defendible de varianzas poblacionales iguales.
t.test(centro_a,centro_b,var.equal=TRUE)
## 
##  Two Sample t-test
## 
## data:  centro_a and centro_b
## t = -5.7049, df = 28, p-value = 4.061e-06
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -5.302764 -2.500807
## sample estimates:
## mean of x mean of y 
##  19.31250  23.21429

No debemos escoger automáticamente la t combinada por el simple hecho de obtener un valor-p grande en una prueba de varianzas. En la práctica, Welch suele ser la opción predeterminada si no existe razón clara para imponer homocedasticidad.

Supuestos y precauciones para comparar medias

  • Las observaciones deben proceder de un diseño de muestreo adecuado para el propósito inferencial.
  • Debe existir independencia entre grupos y, usualmente, dentro de cada grupo.
  • Con muestras pequeñas, conviene evaluar la plausibilidad de normalidad y la presencia de valores extremos.
  • Con muestras grandes puede utilizarse una aproximación normal por el teorema central del límite, bajo condiciones apropiadas; los valores extremos fuertes siguen siendo relevantes.
  • Una diferencia estadísticamente significativa no implica causalidad cuando los grupos no fueron asignados experimentalmente.

Comparación de dos medias con muestras pareadas

¿Qué son las observaciones pareadas?

Se dice que las observaciones están pareadas cuando cada valor del primer momento o condición tiene una correspondencia natural con uno del segundo. Por ejemplo, medir a las mismas personas antes y después de un curso.

El objeto de análisis deja de ser la diferencia entre dos medias de muestras independientes y pasa a ser la media de las diferencias dentro de cada par.

Definimos:

\[D_i=X_{\mathrm{después},i}-X_{\mathrm{antes},i}.\]

Así:

\[\bar D=\frac{1}{n}\sum_{i=1}^nD_i,\qquad s_D=\sqrt{\frac{\sum_{i=1}^n(D_i-\bar D)^2}{n-1}}.\]

La prueba de hipótesis para \(H_0:\mu_D=\Delta_0\) utiliza:

\[t=\frac{\bar D-\Delta_0}{s_D/\sqrt n},\qquad gl=n-1.\]

Y el intervalo de confianza correspondiente es:

\[IC(\mu_D)=\bar D\pm t_{1-\alpha/2,n-1}\frac{s_D}{\sqrt n}.\]

Atención. No se aplican dos pruebas independientes: se analiza una sola muestra de diferencias. Debe cuidarse el orden de la resta; un signo negativo o positivo solo se interpreta correctamente si hemos definido después − antes o antes − después.

Ejemplo: ¿una capacitación reduce el tiempo de proceso?

Doce trabajadores realizan una tarea antes y después de un programa de capacitación. Los tiempos se expresan en minutos. La empresa considera que una reducción es favorable.

antes <- c(52,49,55,51,48,53,50,57,54,46,56,52)
despues <- c(47,45,50,47,46,49,45,52,50,43,51,48)
trabajador <- seq_along(antes)
d <- despues-antes
base_pares <- data.frame(trabajador,antes,despues,diferencia=d)
knitr::kable(base_pares,caption="Mediciones de cada trabajador y diferencia después − antes")
Mediciones de cada trabajador y diferencia después − antes
trabajador antes despues diferencia
1 52 47 -5
2 49 45 -4
3 55 50 -5
4 51 47 -4
5 48 46 -2
6 53 49 -4
7 50 45 -5
8 57 52 -5
9 54 50 -4
10 46 43 -3
11 56 51 -5
12 52 48 -4

Paso 1. Formular las hipótesis

Buscamos una reducción en el tiempo. Dado que \(D=\mathrm{después}-\mathrm{antes}\), una reducción corresponde a \(\mu_D<0\):

\[H_0:\mu_D=0,\qquad H_1:\mu_D<0.\]

Se realiza una prueba unilateral izquierda al 5 %.

Paso 2. Observar cada cambio

base_larga <- rbind(
  data.frame(trabajador, momento="Antes", tiempo=antes),
  data.frame(trabajador, momento="Después", tiempo=despues)
)
base_larga$momento <- factor(base_larga$momento,levels=c("Antes","Después"))
ggplot(base_larga,aes(momento,tiempo,group=trabajador)) +
  geom_line(color="#8daec2",alpha=.75) +
  geom_point(aes(color=momento),size=2.8) +
  scale_color_manual(values=c("#b57b35","#1479a7")) +
  labs(title="Comparación antes/después por trabajador",
       subtitle="Cada línea representa una persona, no dos observaciones independientes",
       x="Momento de medición",y="Minutos") +
  theme(legend.position="none") + tema
Cada segmento conecta las mediciones del mismo trabajador; este emparejamiento es parte esencial del diseño.

Cada segmento conecta las mediciones del mismo trabajador; este emparejamiento es parte esencial del diseño.

Paso 3. Calcular la prueba a mano con R

n_d <- length(d)
d_media <- mean(d)
d_sd <- sd(d)
se_d <- d_sd/sqrt(n_d)
t_d <- d_media/se_d
p_d <- pt(t_d,df=n_d-1)
# Intervalo bilateral del 95 % para la media de las diferencias
ic_d <- d_media+c(-1,1)*qt(.975,df=n_d-1)*se_d

data.frame(n=n_d, media_diferencias=d_media, sd_diferencias=d_sd,
           EE=se_d, t=t_d, gl=n_d-1, valor_p_unilateral=p_d,
           LI_95=ic_d[1],LS_95=ic_d[2]) |>
  knitr::kable(digits=4)
n media_diferencias sd_diferencias EE t gl valor_p_unilateral LI_95 LS_95
12 -4.1667 0.9374 0.2706 -15.397 11 0 -4.7623 -3.571

Paso 4. Confirmar con t.test()

t.test(despues,antes,paired=TRUE,
       alternative="less",conf.level=.95)
## 
##  Paired t-test
## 
## data:  despues and antes
## t = -15.397, df = 11, p-value = 4.327e-09
## alternative hypothesis: true mean difference is less than 0
## 95 percent confidence interval:
##       -Inf -3.680674
## sample estimates:
## mean difference 
##       -4.166667

La media de las diferencias fue de -4,17 minutos. El valor-p unilateral es 0,0000, por lo que rechazamos \(H_0\) al nivel del 5 %. La evidencia apoya una disminución media del tiempo de proceso.

Nota sobre intervalos: el IC del 95 % calculado manualmente es bilateral; en cambio, la llamada anterior a t.test(..., alternative="less") reporta un intervalo unilateral superior, consistente con la hipótesis direccional. Ambos responden preguntas diferentes.

t.test(despues,antes,paired=TRUE,alternative="two.sided",conf.level=.95)
## 
##  Paired t-test
## 
## data:  despues and antes
## t = -15.397, df = 11, p-value = 8.654e-09
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
##  -4.762286 -3.571048
## sample estimates:
## mean difference 
##       -4.166667
Lectura para gerencia. El cambio promedio estimado es de -4,17 minutos por trabajador. Conviene combinar la evidencia estadística con una estimación de ahorro operativo (minutos por tarea multiplicados por número de tareas y costo del tiempo) y evaluar si el estudio permite atribuir el cambio a la capacitación.

¿Qué pasa si ignoramos el emparejamiento?

# Esta llamada trata equivocadamente ambos vectores como independientes.
t.test(despues,antes,paired=FALSE)$p.value
## [1] 0.002940947
# Esta llamada respeta el diseño del estudio.
t.test(despues,antes,paired=TRUE)$p.value
## [1] 8.653832e-09

La variabilidad entre personas puede ser grande, mientras que el cambio dentro de cada persona es estable. El análisis pareado aprovecha esa información. No debemos elegir la prueba con el valor-p más pequeño: debemos elegir la prueba correcta para el diseño.

Supuestos de la t pareada

  • Cada unidad debe estar emparejada correctamente con su segunda medición.
  • Las diferencias entre pares deben ser aproximadamente independientes.
  • Para muestras pequeñas, la distribución de las diferencias —no necesariamente las dos columnas por separado— debe ser aproximadamente normal y sin valores extremos problemáticos.
  • En un estudio observacional antes/después, el resultado no demuestra por sí solo que la intervención haya causado el cambio: pueden influir el tiempo, el aprendizaje y factores externos.
ggplot(data.frame(diferencia=d),aes(diferencia)) +
  geom_histogram(binwidth=1,fill="#3f92bc",color="white",boundary=-.5) +
  geom_vline(xintercept=d_media,color="#ae4f37",linetype="dashed",linewidth=1) +
  labs(title="Distribución de cambios individuales",
       x="Después − antes (minutos)",y="Número de trabajadores") + tema
La distribución relevante para revisar la t pareada es la de las diferencias individuales.

La distribución relevante para revisar la t pareada es la de las diferencias individuales.

Comparación de dos proporciones poblacionales

¿Cuándo comparamos proporciones?

Una proporción representa la fracción de unidades que tienen cierta característica: comprar/no comprar, pagar/no pagar, cumplir/no cumplir. Si comparamos dos campañas, interesan los parámetros \(p_1\) y \(p_2\).

La proporción observada en cada muestra es:

\[\hat p_1=\frac{x_1}{n_1},\qquad \hat p_2=\frac{x_2}{n_2},\]

con \(x_i\) igual al número de éxitos y \(n_i\) al número de unidades de cada grupo.

Intervalo de confianza para la diferencia

La diferencia estimada es \(\hat p_1-\hat p_2\). Para muestras independientes suficientemente grandes, el intervalo normal aproximado es:

\[IC(p_1-p_2)=(\hat p_1-\hat p_2) \pm z_{1-\alpha/2} \sqrt{\frac{\hat p_1(1-\hat p_1)}{n_1}+ \frac{\hat p_2(1-\hat p_2)}{n_2}}.\]

En este intervalo utilizamos las proporciones calculadas por separado. El método normal de Wald es introductorio y puede ser poco preciso con tamaños pequeños o probabilidades cercanas a cero o uno; en tales casos se prefieren métodos más adecuados.

Prueba de hipótesis de igualdad de proporciones

Para la prueba \(H_0:p_1=p_2\) se supone una proporción común. Por ello, el estimador de la proporción bajo la hipótesis nula es:

\[\hat p_c=\frac{x_1+x_2}{n_1+n_2}.\]

El estadístico es:

\[Z=\frac{\hat p_1-\hat p_2} {\sqrt{\hat p_c(1-\hat p_c)\left(\frac1{n_1}+\frac1{n_2}\right)}}.\]

Distinción fundamental. Para el intervalo normal introductorio utilizamos dos proporciones separadas; para probar igualdad se emplea la proporción combinada, porque \(H_0\) afirma que ambas poblaciones comparten el mismo valor de \(p\).

Ejemplo: conversión comercial de dos canales

Una empresa compara dos canales de venta en campañas realizadas durante el mismo periodo. Se registró si cada visitante terminó haciendo una compra.

Resultado Canal web Canal aplicación
Visitantes 400 350
Compraron 116 133
No compraron 284 217

¿Existe evidencia de que las tasas de conversión sean distintas? Trabajaremos con un 5 % de significancia.

Paso 1. Calcular proporciones

n_web <- 400; x_web <- 116
n_app <- 350; x_app <- 133
p_web <- x_web/n_web
p_app <- x_app/n_app
p_dif <- p_web-p_app

data.frame(canal=c("Web","Aplicación"),n=c(n_web,n_app),
           compradores=c(x_web,x_app),
           tasa_conversion=c(p_web,p_app)) |>
  knitr::kable(digits=4)
canal n compradores tasa_conversion
Web 400 116 0.29
Aplicación 350 133 0.38

Las conversiones muestrales son 29,0 % y 38,0 %, respectivamente. La diferencia web − aplicación es -9,0 puntos porcentuales, no un porcentaje relativo.

Paso 2. Hipótesis

\[H_0:p_{\mathrm{web}}-p_{\mathrm{app}}=0,\qquad H_1:p_{\mathrm{web}}-p_{\mathrm{app}}\neq 0.\]

Paso 3. Valor-p e intervalo manual

p_combinada <- (x_web+x_app)/(n_web+n_app)
se_h0 <- sqrt(p_combinada*(1-p_combinada)*(1/n_web+1/n_app))
z_prop <- p_dif/se_h0
p_val_prop <- 2*pnorm(-abs(z_prop))
se_ic_prop <- sqrt(p_web*(1-p_web)/n_web+p_app*(1-p_app)/n_app)
ic_prop <- p_dif+c(-1,1)*qnorm(.975)*se_ic_prop

data.frame(p_combinada=p_combinada, z=z_prop,
           valor_p=p_val_prop, LI=ic_prop[1],LS=ic_prop[2]) |>
  knitr::kable(digits=4)
p_combinada z valor_p LI LS
0.332 -2.6111 0.009 -0.1576 -0.0224

Paso 4. Graficar la diferencia

tasas <- data.frame(canal=c("Web","Aplicación"),tasa=c(p_web,p_app))
ggplot(tasas,aes(canal,tasa,fill=canal))+
  geom_col(width=.52,alpha=.85) +
  geom_text(aes(label=paste0(round(100*tasa,1)," %")),vjust=-.5,size=5)+
  scale_y_continuous(limits=c(0,.48),labels=function(x) paste0(round(x*100)," %"))+
  scale_fill_manual(values=c("#287ca8","#d89a4d"))+
  labs(title="Conversión observada por canal",x="Canal",y="Tasa de compra")+
  theme(legend.position="none") + tema
Tasas de conversión observadas, sin confundir diferencia porcentual con puntos porcentuales.

Tasas de conversión observadas, sin confundir diferencia porcentual con puntos porcentuales.

Paso 5. Comparar con funciones de R

La función prop.test() de R utiliza un estadístico ji-cuadrado para dos proporciones; sin corrección de continuidad, su estadístico equivale al cuadrado del Z anterior. El método y el intervalo que reporta pueden diferir del intervalo normal manual.

prop.test(x=c(x_web,x_app),n=c(n_web,n_app),correct=FALSE)
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  c(x_web, x_app) out of c(n_web, n_app)
## X-squared = 6.8177, df = 1, p-value = 0.009026
## alternative hypothesis: two.sided
## 95 percent confidence interval:
##  -0.15755177 -0.02244823
## sample estimates:
## prop 1 prop 2 
##   0.29   0.38

En este caso, el valor-p aproximado de la prueba manual es 0,0090. En consecuencia, rechazamos \(H_0\) al 5 %.

Interpretación empresarial. La comparación sugiere que los canales presentan tasas de conversión poblacionales distintas. La aplicación muestra una tasa muestral mayor, pero antes de atribuir la diferencia exclusivamente al canal debemos considerar los perfiles de visitantes, promociones y posibles factores de confusión.

Supuestos y advertencias

  • Una misma persona no debería contarse repetidamente como observaciones independientes sin modelar esa dependencia.
  • La muestra de cada canal debe ser adecuada y los grupos no deben solaparse de manera problemática.
  • La aproximación Z requiere tamaños suficientes: una regla práctica es revisar que los recuentos esperados de éxitos y fracasos sean razonablemente grandes en ambos grupos.
  • No conviene aplicar automáticamente métodos normales cuando los éxitos son escasos. Pueden considerarse alternativas exactas u otros intervalos.
  • Si la misma persona compra en dos momentos o canales emparejados, el procedimiento cambia; para resultados binarios pareados existe, por ejemplo, la prueba de McNemar.

Comparación de dos varianzas: prueba F

¿Por qué comparar la variabilidad?

En control de calidad y operaciones no basta con que dos procesos tengan el mismo promedio: uno puede producir resultados mucho más dispersos y, por tanto, ser menos predecible.

Para dos muestras aleatorias independientes de poblaciones normales, el estadístico:

\[F=\frac{S_1^2/\sigma_1^2}{S_2^2/\sigma_2^2}\]

sigue una distribución F con \(n_1-1\) y \(n_2-1\) grados de libertad. Bajo la hipótesis nula \(H_0:\sigma_1^2=\sigma_2^2\), se reduce a:

\[F_{obs}=\frac{s_1^2}{s_2^2},\quad F\sim F_{n_1-1,n_2-1}.\]

La distribución F solo toma valores positivos y generalmente es asimétrica.

Precaución importante. La prueba F clásica es sensible a la falta de normalidad y a valores extremos. Para analizar igualdad de dispersiones con datos claramente no normales pueden ser más adecuados procedimientos como Levene o Brown–Forsythe. La prueba F no es un detector universal de igualdad de variabilidad.

Ejemplo: consistencia de dos procesos de producción

Dos líneas producen componentes y se registra la longitud de una característica en milímetros. La empresa busca saber si sus varianzas poblacionales son diferentes.

linea_a <- c(10.2,9.9,10.1,10.0,10.3,9.8,10.2,10.1,9.9,10.0,10.2,10.1)
linea_b <- c(9.4,10.5,9.7,10.8,9.2,10.4,9.6,10.7,9.5,10.6,9.3,10.3)
produccion <- data.frame(
  longitud=c(linea_a,linea_b),
  linea=rep(c("Línea A","Línea B"),each=12)
)

s2_a <- var(linea_a); s2_b <- var(linea_b)
f_obs <- s2_a/s2_b
gl1 <- length(linea_a)-1
gl2 <- length(linea_b)-1

data.frame(linea=c("A","B"),n=c(length(linea_a),length(linea_b)),
           media=c(mean(linea_a),mean(linea_b)),
           varianza=c(s2_a,s2_b),
           desviacion=c(sd(linea_a),sd(linea_b))) |>
  knitr::kable(digits=4)
linea n media varianza desviacion
A 12 10.0667 0.0224 0.1497
B 12 10.0000 0.3618 0.6015

Paso 1. Visualizar antes de contrastar

ggplot(produccion,aes(linea,longitud,fill=linea))+
  geom_boxplot(alpha=.45,width=.5,outlier.shape=NA)+
  geom_jitter(width=.1,size=2,alpha=.8)+
  scale_fill_manual(values=c("#277eb3","#daa150"))+
  labs(title="Dispersión de medidas por línea de producción",
       x="Línea",y="Longitud (mm)")+
  theme(legend.position="none") + tema
La comparación de dispersión es distinta de la comparación de promedios.

La comparación de dispersión es distinta de la comparación de promedios.

Paso 2. Plantear hipótesis

\[H_0:\sigma_A^2=\sigma_B^2,\qquad H_1:\sigma_A^2\neq\sigma_B^2.\]

Paso 3. Estadístico F y valor-p bilateral

Para la prueba bilateral, el valor-p puede calcularse como dos veces la menor probabilidad de cola de la distribución F correspondiente, limitado a 1.

p_f <- min(1,2*min(pf(f_obs,gl1,gl2),pf(f_obs,gl1,gl2,lower.tail=FALSE)))
crit_inf <- qf(.025,gl1,gl2)
crit_sup <- qf(.975,gl1,gl2)

data.frame(F_observado=f_obs,gl_numerador=gl1,gl_denominador=gl2,
           critico_inferior=crit_inf,critico_superior=crit_sup,
           valor_p=p_f) |> knitr::kable(digits=5)
F_observado gl_numerador gl_denominador critico_inferior critico_superior valor_p
0.06198 11 11 0.28788 3.4737 6e-05

Paso 4. Visualizar las regiones de rechazo

fgrid <- data.frame(f=seq(.001,max(6,crit_sup*1.25),length.out=1200))
fgrid$dens <- df(fgrid$f,gl1,gl2)
fgrid$rechazo <- fgrid$f<crit_inf | fgrid$f>crit_sup
ggplot(fgrid,aes(f,dens))+
  geom_area(data=subset(fgrid,rechazo),fill="#e8a05d",alpha=.65)+
  geom_line(color="#226b9a",linewidth=1)+
  geom_vline(xintercept=c(crit_inf,crit_sup),linetype="dashed",color="#c38543")+
  geom_vline(xintercept=f_obs,color="#9e3041",linewidth=1.1)+
  labs(title="Distribución F bajo igualdad de varianzas",
       subtitle=paste0("Grados de libertad: ",gl1," y ",gl2),
       x="Estadístico F",y="Densidad")+tema
Prueba F bilateral: las dos regiones críticas se determinan con los grados de libertad del numerador y del denominador.

Prueba F bilateral: las dos regiones críticas se determinan con los grados de libertad del numerador y del denominador.

Paso 5. Verificar con la función var.test()

prueba_f <- var.test(linea_a,linea_b,alternative="two.sided",conf.level=.95)
prueba_f
## 
##  F test to compare two variances
## 
## data:  linea_a and linea_b
## F = 0.061977, num df = 11, denom df = 11, p-value = 6.275e-05
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.01784166 0.21528788
## sample estimates:
## ratio of variances 
##         0.06197655

El estadístico F calculado es 0,0620 y el valor-p es 1e-04. Por tanto, al 5 % rechazamos \(H_0\). Esto aporta evidencia de varianzas distintas, suponiendo válidos los requisitos de la prueba.

Intervalo de confianza para la razón de varianzas

Es útil complementar el contraste con un intervalo para \(\sigma_1^2/\sigma_2^2\):

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

ic_razon <- c(f_obs/qf(.975,gl1,gl2),
              f_obs/qf(.025,gl1,gl2))
data.frame(razon_muestral=f_obs,LI_95=ic_razon[1],LS_95=ic_razon[2]) |>
  knitr::kable(digits=4)
razon_muestral LI_95 LS_95
0.062 0.0178 0.2153

Si el intervalo para la razón de varianzas incluye 1, es compatible con igualdad de varianzas al nivel de confianza elegido; si no lo incluye, concuerda con el rechazo bilateral de \(H_0\).

Importante: comparar medias y varianzas son preguntas diferentes

La igualdad de medias no garantiza igualdad de varianzas y la desigualdad de varianzas no implica medias diferentes. Podemos tener una línea muy estable con un promedio alto y otra inestable con el mismo promedio.

Decisión de producción. Si un proceso resulta menos variable, puede ser más predecible. Pero menor varianza no significa necesariamente mayor calidad: también hay que revisar la ubicación del promedio frente a las especificaciones y el costo de los defectos.

Guía para elegir el procedimiento

Situación Parámetro Prueba/estimación Función de R
Dos medias independientes, \(\sigma_1,\sigma_2\) conocidas \(\mu_1-\mu_2\) Z pnorm(), qnorm() y cálculo manual
Dos medias independientes, varianzas desconocidas \(\mu_1-\mu_2\) t de Welch t.test(..., var.equal=FALSE)
Dos medias independientes, igualdad de varianzas justificada \(\mu_1-\mu_2\) t combinada t.test(..., var.equal=TRUE)
Antes/después o parejas \(\mu_D\) t pareada t.test(..., paired=TRUE)
Dos tasas de compra \(p_1-p_2\) Z de dos proporciones prop.test(..., correct=FALSE)
Dos dispersiones de poblaciones normales \(\sigma_1^2/\sigma_2^2\) F var.test()

Una secuencia razonable de análisis

  1. Comprender el problema e identificar claramente las poblaciones y la pregunta empresarial.
  2. Reconocer el diseño: muestras independientes, mediciones pareadas o datos binarios.
  3. Explorar los datos, sus unidades, posibles errores y valores extremos.
  4. Revisar los supuestos antes de elegir un procedimiento.
  5. Definir el parámetro, las hipótesis (si procede) y el nivel de significancia.
  6. Calcular la estimación, el intervalo y/o el estadístico.
  7. Interpretar el valor-p con cuidado: no es la probabilidad de que \(H_0\) sea verdadera.
  8. Traducir el resultado en una recomendación contextualizada, evitando confundir asociación con causalidad.

Caso integrador: ¿qué debe recomendar un analista?

Una empresa implementó una nueva plataforma comercial. Al presentar resultados al comité directivo se informa lo siguiente:

  • Las ventas medias de dos sedes parecen diferentes.
  • La capacitación de un equipo parece reducir los tiempos.
  • La tasa de compra de la aplicación supera a la del sitio web.
  • Una de las líneas de producción parece más estable.

Sin embargo, la gerencia formula una pregunta más exigente:

¿Qué podemos afirmar acerca de las poblaciones, qué incertidumbre permanece y qué información adicional necesitamos para tomar una decisión responsable?

Para elaborar el informe, un analista debe distinguir por lo menos tres niveles:

Nivel Pregunta Ejemplo de respuesta
Descriptivo ¿Qué ocurrió en los datos observados? La aplicación tuvo mayor conversión muestral.
Inferencial ¿Qué dice la evidencia sobre las poblaciones? El intervalo estima la diferencia poblacional y muestra su incertidumbre.
Gerencial ¿Qué hacemos con ese resultado? Evaluar costos, perfiles de usuarios, rentabilidad y reproducibilidad del cambio.

Actividades de aprendizaje autónomo

Las siguientes situaciones están planteadas para practicar la elección y justificación del procedimiento. Deben resolverse con operaciones estadísticas, código en R e interpretación contextual.

Ejercicio: dos sedes comerciales

Dos sedes obtuvieron los siguientes ingresos por operación (en miles de pesos):

sede_norte <- c(125,132,128,136,130,129,134,127,131,135,126,133)
sede_sur   <- c(119,121,124,118,126,123,120,125,122,117,127,121)

Preguntas: ¿son muestras independientes?, ¿qué prueba corresponde si se desconocen las varianzas?, ¿existe diferencia estadísticamente significativa al 5 %?, ¿qué indica el intervalo del 95 %? Explique por qué comparar únicamente los promedios puede llevar a una conclusión incorrecta.

Ejercicio: cambio en la productividad

Ocho analistas registran trámites procesados por día antes y después de automatizar una tarea:

productividad_antes   <- c(24,26,22,28,25,23,27,24)
productividad_despues <- c(28,30,25,31,29,26,31,27)

Preguntas: defina la diferencia como después − antes; plantee una prueba unilateral que corresponda a una mejora; calcule las diferencias y su media; ejecute la t pareada; interprete el valor-p y discuta si este diseño, por sí solo, permite atribuir el resultado a la automatización.

Ejercicio: campañas comerciales

En la campaña A compraron 84 de 300 visitantes y en la B compraron 105 de 300.

Preguntas: calcule las tasas y la diferencia en puntos porcentuales; contraste \(H_0:p_A=p_B\) al 5 %; construya un intervalo aproximado del 95 %; formule una recomendación considerando tanto significancia como costos por adquisición.

Ejercicio: estabilidad de los procesos

Dos máquinas tienen estos registros de tiempo por unidad (segundos):

maquina_1 <- c(32,31,33,32,32,31,33,32,31,32)
maquina_2 <- c(29,34,31,35,30,33,28,36,32,34)

Preguntas: represente los datos, estime las varianzas, explique el supuesto de normalidad de la prueba F, contraste la igualdad de varianzas e interprete la razón y su intervalo de confianza. ¿Una máquina con menor varianza es necesariamente la mejor?

Errores comunes: lo que debemos evitar

Error Por qué está mal Cómo corregirlo
Aplicar t independiente a datos antes/después Ignora el emparejamiento Analizar las diferencias por unidad
Decir que un valor-p alto demuestra igualdad No rechazar no equivale a aceptar Hablar de evidencia insuficiente; revisar precisión y potencia
Confundir porcentaje con puntos porcentuales Son magnitudes distintas Expresar correctamente la diferencia de tasas
Usar proporción combinada para todo intervalo La combinación corresponde a \(H_0:p_1=p_2\) en la prueba Z presentada Para el intervalo normal introductorio usar proporciones separadas
Elegir la F sin revisar normalidad Puede producir resultados engañosos Examinar datos, supuestos y alternativas robustas
Confundir diferencia estadística con causalidad El diseño puede contener sesgos y variables de confusión Revisar la asignación, el muestreo y las explicaciones alternativas
Interpretar solo el signo o el valor-p No informa completamente sobre magnitud e incertidumbre Reportar estimación, intervalo, valor-p y relevancia práctica

Cierre: inferir es comparar con responsabilidad

La inferencia sobre dos poblaciones exige mucho más que sustituir números en una fórmula. Primero debemos reconocer qué significa cada observación y cómo se relaciona con las demás. Luego seleccionamos la estimación o prueba que corresponde, cuantificamos la incertidumbre y redactamos una conclusión en el lenguaje del problema.

Idea final. Un analista no es quien consigue el menor valor-p. Es quien identifica el diseño correcto, calcula de manera rigurosa, reconoce los límites de la evidencia y ayuda a tomar mejores decisiones.

Bibliografía de apoyo

  • Anderson, D. R., Sweeney, D. J. y Williams, T. A. Estadística para administración y economía, 10.ª edición, capítulos 10 y 11.
  • Levin, R. I. y Rubin, D. S. Estadística para administración y economía, 7.ª edición, capítulos 9 y 11.
  • Wackerly, D. D., Mendenhall, W. y Scheaffer, R. L. Estadística matemática con aplicaciones, 7.ª edición, capítulos 8 y 10.

Material didáctico elaborado para Estadística Inferencial, Universidad Libre, periodo 2026-2. Los datos de los ejemplos y ejercicios de esta guía son ilustrativos; no corresponden a mediciones de empresas reales.