Propósito de la clase. Aprender a seleccionar, calcular e interpretar herramientas estadísticas que respondan preguntas concretas de negocios. Cada tema incluye una explicación, un caso empresarial resuelto en R y ejercicios de aplicación sin solución.

Ruta de aprendizaje: (1) diseño completamente aleatorizado y ANOVA; (2) tablas de contingencia y prueba chi-cuadrado; (3) correlación de Pearson; (4) correlación de Spearman; (5) práctica integradora.

Antes de empezar. Los datos son simulados para fines pedagógicos. Los códigos pueden copiarse y ejecutarse por bloques en RStudio o Posit Cloud. El nivel de significancia por defecto es \(\alpha=0.05\). Los resultados estadísticos orientan decisiones, pero no sustituyen criterios de costo, viabilidad y contexto empresarial.

1 Diseño experimental: de la pregunta a la prueba

Un experimento modifica deliberadamente un factor para estudiar sus efectos sobre una variable respuesta. En un diseño completamente aleatorizado (DCA), las unidades experimentales se asignan al azar a los tratamientos. La aleatorización ayuda a evitar sesgos sistemáticos; la independencia de los errores depende además de cómo se implementa y mide el experimento.

Concepto Significado En el ejemplo
Unidad experimental Elemento al que se asigna un tratamiento Tienda participante
Factor Variable que controla el investigador Campaña publicitaria
Tratamientos Niveles del factor Redes, correo, influenciadores
Respuesta Resultado numérico de interés Ventas semanales (millones)
Réplica Otra unidad independiente con el mismo tratamiento Otra tienda asignada
Atención: medir varias veces una sola tienda no equivale a tener varias tiendas independientes. Tampoco es válido llamar «experimento aleatorizado» a la simple comparación de tres grupos formados por conveniencia.

1.1 Ejemplo resuelto 1. ¿Qué campaña genera mayores ventas?

Situación. Una empresa selecciona 15 tiendas comparables y asigna aleatoriamente cinco a cada campaña, durante una misma semana. Evalúa sus ventas semanales (millones de pesos).

ventas <- data.frame(
  campana = factor(rep(c('Redes','Correo','Influenciadores'), each=5)),
  ventas = c(12.4,13.1,12.8,13.5,12.9,
             14.8,15.2,14.5,15.7,15.1,
             16.1,17.3,16.8,17.1,16.5)
)
ventas
aggregate(ventas ~ campana, data=ventas, FUN=mean)

1.1.1 Paso 1. Formular hipótesis

  • \(H_0:\mu_{\mathrm{Redes}}=\mu_{\mathrm{Correo}}=\mu_{\mathrm{Influenciadores}}\).
  • \(H_1\): al menos una de las medias poblacionales difiere.

Importante: ANOVA no plantea que todas las medias son distintas; basta con que una difiera.

1.1.2 Paso 2. Explorar gráficamente

ggplot(ventas, aes(x=campana, y=ventas, fill=campana)) +
  geom_boxplot(alpha=.65, width=.5, outlier.shape=NA) +
  geom_jitter(width=.08, size=2.5, alpha=.85) +
  scale_fill_manual(values=c('#265D91','#169B83','#EA8B35')) +
  labs(title='Ventas semanales por tipo de campaña',
       x='Campaña', y='Ventas (millones de pesos)') +
  guides(fill='none') + tema

1.1.3 Paso 3. Comprender el ANOVA

El modelo de un factor es \(Y_{ij}=\mu+\tau_i+\varepsilon_{ij}\), donde \(\mu\) es la media global, \(\tau_i\) es el efecto del tratamiento \(i\) y \(\varepsilon_{ij}\) es el error individual.

ANOVA separa la variación total en variación entre tratamientos y variación dentro de tratamientos. La estadística \(F\) compara los cuadrados medios de ambas fuentes:

\[F=\frac{CM_{\mathrm{entre}}}{CM_{\mathrm{dentro}}}.\]

Un valor de \(F\) suficientemente grande aporta evidencia de diferencias entre medias, bajo los supuestos del modelo.

1.1.4 Paso 4. Ajustar el modelo e interpretar

modelo_aov <- aov(ventas ~ campana, data=ventas)
summary(modelo_aov)
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## campana      2  36.63  18.314    92.5 5.11e-08 ***
## Residuals   12   2.38   0.198                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Lectura del resultado: ubique el valor Pr(>F). Si \(p<0.05\), rechace \(H_0\); si \(p\geq0.05\), no la rechace. No rechazar no significa demostrar que las medias sean idénticas.

En este caso, el valor \(p\) calculado es 5.11e-08. Por tanto, existe evidencia estadística de que al menos una media es diferente.

1.1.5 Paso 5. Revisar supuestos del modelo

Para el ANOVA clásico se consideran: observaciones independientes (según el diseño), residuos aproximadamente normales dentro del modelo y varianzas similares entre tratamientos.

plot(modelo_aov, which=1) # Residuos vs. valores ajustados

plot(modelo_aov, which=2) # Gráfico de normalidad de residuos

shapiro.test(residuals(modelo_aov))
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(modelo_aov)
## W = 0.95552, p-value = 0.6152
bartlett.test(ventas ~ campana, data=ventas)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  ventas by campana
## Bartlett's K-squared = 0.1026, df = 2, p-value = 0.95

Interpretación responsable: con cinco unidades por grupo, las pruebas formales de supuestos tienen poca potencia. Examine también los gráficos y el conocimiento del proceso. La independencia se fundamenta en el diseño, no se demuestra con shapiro.test().

1.1.6 Paso 6. Comparar campañas y tomar una decisión

TukeyHSD(modelo_aov)
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = ventas ~ campana, data = ventas)
## 
## $campana
##                         diff        lwr       upr     p adj
## Influenciadores-Correo  1.70  0.9491966  2.450803 0.0001598
## Redes-Correo           -2.12 -2.8708034 -1.369197 0.0000192
## Redes-Influenciadores  -3.82 -4.5708034 -3.069197 0.0000000
plot(TukeyHSD(modelo_aov), col=col_azul)

Decisión gerencial: las ventas de influenciadores parecen superiores, pero elegir esa campaña requiere conocer el costo de cada alternativa y evaluar la rentabilidad incremental. Una diferencia estadística no equivale automáticamente a una decisión rentable.

1.2 Ejercicios de clase: diseño experimental y ANOVA

Ejercicio 1A · Productividad logística. Una empresa asigna aleatoriamente 18 equipos comparables a tres procedimientos de preparación de pedidos (seis por tratamiento). ¿Hay diferencias en la productividad media? Construya el gráfico, formule las hipótesis, aplique ANOVA, revise supuestos y concluya.
logistica <- data.frame(
  metodo = factor(rep(c('Tradicional','Zonas','Automatizado'), each=6)),
  pedidos_hora = c(42,45,43,41,46,44, 48,51,49,52,50,47, 53,57,55,58,56,54)
)
logistica
# Funciones que pueden ayudar: ggplot(), aov(), summary(), TukeyHSD()
Ejercicio 1B · Tiempos de atención. Se asignan aleatoriamente 20 agentes a cuatro protocolos. La respuesta es el tiempo promedio de atención por agente. ¿Qué protocolo reduciría los tiempos? Compare las medias y explique si el protocolo más rápido necesariamente es el mejor.
atencion <- data.frame(
  protocolo = factor(rep(c('A','B','C','D'), each=5)),
  minutos = c(18,21,19,20,22, 15,14,16,13,15,
              12,13,11,14,12, 16,15,17,14,16)
)
atencion

Preguntas de discusión: ¿qué ocurre si los agentes más experimentados quedan todos en el mismo protocolo? ¿Qué cambia cuando los tratamientos se asignan sin aleatorización?

2 Tablas de contingencia y prueba chi-cuadrado

Una tabla de contingencia cruza dos variables categóricas y muestra sus frecuencias conjuntas. Para comparar grupos de distinto tamaño conviene usar porcentajes condicionados al grupo correspondiente.

La prueba chi-cuadrado de independencia permite evaluar si dos variables categóricas están asociadas en la población representada por la muestra.

  • \(H_0\): las variables son independientes.
  • \(H_1\): existe asociación entre las variables.

Bajo \(H_0\), la frecuencia esperada de la celda \((i,j)\) es

\[E_{ij}=\frac{(\mathrm{total\ fila\ }i)(\mathrm{total\ columna\ }j)}{n}.\]

La estadística de contraste es

\[\chi^2=\sum_i\sum_j\frac{(O_{ij}-E_{ij})^2}{E_{ij}},\]

con \((r-1)(c-1)\) grados de libertad para una tabla \(r\times c\).

2.1 Ejemplo resuelto 2. Canal de compra y satisfacción

Situación. Una empresa encuesta a 300 clientes y registra el canal utilizado y su nivel de satisfacción.

canal <- matrix(c(65,25,10,
                  55,30,15,
                  75,15,10),
                nrow=3, byrow=TRUE,
                dimnames=list(
                  Canal=c('Tienda','Web','App'),
                  Satisfaccion=c('Satisfecho','Neutral','Insatisfecho')))
canal
##         Satisfaccion
## Canal    Satisfecho Neutral Insatisfecho
##   Tienda         65      25           10
##   Web            55      30           15
##   App            75      15           10
addmargins(canal)
##         Satisfaccion
## Canal    Satisfecho Neutral Insatisfecho Sum
##   Tienda         65      25           10 100
##   Web            55      30           15 100
##   App            75      15           10 100
##   Sum           195      70           35 300
round(prop.table(canal, margin=1)*100, 1) # Porcentajes dentro de cada canal
##         Satisfaccion
## Canal    Satisfecho Neutral Insatisfecho
##   Tienda         65      25           10
##   Web            55      30           15
##   App            75      15           10

2.1.1 Paso 1. Visualizar proporciones

datos_canal <- as.data.frame(as.table(canal))
ggplot(datos_canal, aes(x=Canal, y=Freq, fill=Satisfaccion)) +
  geom_col(position='fill', color='white') +
  scale_y_continuous(labels=function(x) paste0(round(x*100),'%')) +
  scale_fill_manual(values=c('#169B83','#EA8B35','#C76D78')) +
  labs(title='Composición de satisfacción por canal',
       x='Canal', y='Proporción de clientes', fill='Satisfacción') + tema

2.1.2 Paso 2. Ejecutar la prueba

prueba_chi <- chisq.test(canal, correct=FALSE)
prueba_chi
## 
##  Pearson's Chi-squared test
## 
## data:  canal
## X-squared = 9.5055, df = 4, p-value = 0.04963
prueba_chi$expected        # Frecuencias esperadas
##         Satisfaccion
## Canal    Satisfecho  Neutral Insatisfecho
##   Tienda         65 23.33333     11.66667
##   Web            65 23.33333     11.66667
##   App            65 23.33333     11.66667
prueba_chi$residuals       # Residuos de Pearson por celda
##         Satisfaccion
## Canal    Satisfecho    Neutral Insatisfecho
##   Tienda   0.000000  0.3450328   -0.4879500
##   Web     -1.240347  1.3801311    0.9759001
##   App      1.240347 -1.7251639   -0.4879500

Lectura: el valor \(p\) es 0.0496. A nivel de significancia del 5 %, se rechaza la independencia.

2.1.3 Paso 3. Evaluar condiciones y magnitud de la asociación

La prueba chi-cuadrado habitual requiere observaciones independientes y frecuencias esperadas suficientemente grandes para que su aproximación sea adecuada. Revise las esperadas; si son pequeñas, considere otras pruebas o métodos según el tipo de tabla.

Para cuantificar asociación en tablas generales puede utilizarse V de Cramér, con valores entre 0 y 1. Un valor mayor indica mayor intensidad de asociación, no causalidad.

n <- sum(canal)
v_cramer <- sqrt(as.numeric(prueba_chi$statistic) /
                   (n * min(nrow(canal)-1, ncol(canal)-1)))
v_cramer
## [1] 0.125867
Decisión gerencial: compare el porcentaje de clientes insatisfechos por canal; si hay evidencia de asociación, investigue las causas operativas antes de invertir en un rediseño. La prueba no identifica por sí misma por qué ocurre la asociación.

2.2 Ejercicios de clase: chi-cuadrado

Ejercicio 2A · Promociones y compra. ¿La compra se asocia con haber recibido una promoción? Calcule las tasas de compra, las frecuencias esperadas, el contraste de independencia y el coeficiente \(\phi=\sqrt{\chi^2/n}\) para la tabla \(2\times 2\).
promo <- matrix(c(84,36, 51,69), nrow=2, byrow=TRUE,
  dimnames=list(Promocion=c('Si','No'), Compra=c('Si','No')))
promo
##          Compra
## Promocion Si No
##        Si 84 36
##        No 51 69
# Sugerencia: prop.table(), chisq.test()
Ejercicio 2B · Mercado y presentación. Una empresa quiere decidir qué presentación exportar a cada mercado. Construya porcentajes por país, aplique chi-cuadrado, calcule V de Cramér y explique si los hallazgos justifican inventarios diferenciados.
mercado <- matrix(c(45,35,20, 25,45,30, 20,30,50), nrow=3, byrow=TRUE,
  dimnames=list(Pais=c('Colombia','Mexico','Chile'),
                Presentacion=c('Pequena','Mediana','Grande')))
mercado
##           Presentacion
## Pais       Pequena Mediana Grande
##   Colombia      45      35     20
##   Mexico        25      45     30
##   Chile         20      30     50

3 Correlación de Pearson: relación lineal

El coeficiente de Pearson \(r\) mide la dirección y fuerza de la asociación lineal entre dos variables cuantitativas. Toma valores entre \(-1\) y \(1\): valores cercanos a \(1\) sugieren asociación lineal positiva, cercanos a \(-1\) asociación negativa, y cercanos a \(0\) poca asociación lineal.

\[r=\frac{\sum_{i=1}^n(x_i-\bar{x})(y_i-\bar{y})}{\sqrt{\sum_{i=1}^n(x_i-\bar{x})^2\sum_{i=1}^n(y_i-\bar{y})^2}}.\]

No confunda: \(r\approx 0\) no demuestra independencia y una correlación alta no demuestra causalidad. Los valores atípicos pueden modificar mucho el coeficiente.

3.1 Ejemplo resuelto 3. Publicidad y ventas

publicidad <- data.frame(
  inversion=c(2,3,4,5,6,7,8,9),
  ventas=c(24,27,33,35,41,43,48,51))
publicidad

3.1.1 Paso 1. Explorar la nube de puntos

ggplot(publicidad, aes(inversion, ventas)) +
  geom_point(color=col_azul, size=3) +
  geom_smooth(method='lm', se=FALSE, color=col_naranja) +
  labs(title='Inversión publicitaria y ventas',
       x='Inversión (millones de pesos)',
       y='Ventas (millones de pesos)') + tema

3.1.2 Paso 2. Calcular el coeficiente y contrastar

cor(publicidad$inversion, publicidad$ventas, method='pearson')
## [1] 0.9959476
cor.test(publicidad$inversion, publicidad$ventas, method='pearson')
## 
##  Pearson's product-moment correlation
## 
## data:  publicidad$inversion and publicidad$ventas
## t = 27.126, df = 6, p-value = 1.659e-07
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.9768331 0.9992968
## sample estimates:
##       cor 
## 0.9959476

La prueba contrasta \(H_0:\rho=0\) frente a \(H_1:\rho\neq0\) (bilateral). El coeficiente muestral es 0.996 y la prueba arroja \(p\) = 1.66e-07.

Decisión gerencial: existe una relación lineal observada, pero la empresa no debe prometer que incrementar la publicidad causará exactamente un aumento en ventas. También podrían intervenir la temporada, la demanda y la segmentación.

3.2 Ejercicio de clase: Pearson

Ejercicio 3A · Experiencia y ventas. Represente los datos, calcule \(r\) de Pearson, contraste \(H_0:\rho=0\) y explique si la forma de la relación parece estrictamente lineal. Discuta si los años de experiencia bastan para contratar vendedores.
vendedores <- data.frame(
  experiencia=1:10,
  ventas=c(18,24,30,35,39,42,44,45,46,46))
vendedores

4 Correlación de Spearman: relación monótona

El coeficiente de Spearman \(\rho_s\) calcula la correlación de Pearson entre los rangos de los datos. Es útil para datos ordinales y para estudiar relaciones monótonas, aunque no sean lineales. Si hay empates, R asigna rangos promedio.

Para datos sin empates se puede usar \(\rho_s=1-\frac{6\sum d_i^2}{n(n^2-1)}\), donde \(d_i\) es la diferencia de rangos. Con empates, utilice el cálculo de correlación sobre rangos, en lugar de aplicar mecánicamente esa fórmula simplificada.

4.1 Ejemplo resuelto 4. Calidad del servicio y recompra

Situación. Diez clientes califican la calidad percibida y su intención de volver a comprar en escalas ordinales de 1 a 5.

clientes <- data.frame(
  calidad=c(1,2,2,3,3,4,4,5,5,5),
  recompra=c(2,1,3,2,4,4,3,5,4,5))
clientes$rango_calidad <- rank(clientes$calidad)
clientes$rango_recompra <- rank(clientes$recompra)
clientes

4.1.1 Paso 1. Graficar y calcular

ggplot(clientes, aes(calidad, recompra)) +
  geom_count(color=col_verde, alpha=.85) +
  scale_size_area(max_size=10) +
  scale_x_continuous(breaks=1:5) + scale_y_continuous(breaks=1:5) +
  labs(title='Calidad percibida e intención de recompra',
       x='Calidad (1 a 5)', y='Recompra (1 a 5)', size='Clientes') + tema

cor(clientes$calidad, clientes$recompra, method='spearman')
## [1] 0.8259494
cor.test(clientes$calidad, clientes$recompra,
         method='spearman', exact=FALSE)
## 
##  Spearman's rank correlation rho
## 
## data:  clientes$calidad and clientes$recompra
## S = 28.718, p-value = 0.003236
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##       rho 
## 0.8259494

El coeficiente muestral de Spearman es 0.826. La opción exact=FALSE evita solicitar una prueba exacta no disponible con estos empates; el valor \(p\) es aproximado.

Decisión gerencial: la asociación puede orientar una investigación sobre la experiencia del cliente, pero intención de recompra no es idéntica a recompra efectiva.

4.2 Ejercicio de clase: Pearson frente a Spearman

Ejercicio 4A · Entregas y satisfacción. Calcule ambos coeficientes, construya el gráfico de dispersión y observe el efecto del registro de 12 días. ¿Qué coeficiente describe mejor el patrón? Explique la diferencia y sus límites.
entregas <- data.frame(
  dias=c(1,2,3,4,5,6,7,12),
  satisfaccion=c(10,9,8,7,6,5,4,2))
entregas
# Sugerencias: cor(..., method='pearson'), cor(..., method='spearman')

5 Síntesis: ¿qué análisis corresponde a cada pregunta?

Pregunta de negocios Variables Técnica Precaución central
¿Difieren las medias de ventas entre tratamientos aleatorizados? Factor categórico y respuesta cuantitativa ANOVA de un factor Diseño y supuestos
¿Canal y satisfacción categórica están asociados? Dos categóricas Chi-cuadrado de independencia Frecuencias esperadas e independencia
¿Publicidad y ventas se relacionan linealmente? Dos cuantitativas Pearson Linealidad y valores atípicos
¿Las calificaciones ordinales se relacionan de forma monótona? Dos ordinales Spearman Empates e interpretación de rangos

5.1 Ejercicio integrador de cierre (sin resolver)

Una empresa distribuidora quiere mejorar sus resultados. El gerente pregunta:

  1. ¿Cuál de tres métodos de alistamiento produce mayor número promedio de pedidos por hora? Los equipos se asignaron aleatoriamente.
  2. ¿El tipo de cliente (minorista o mayorista) se asocia con la decisión de comprar (sí/no)?
  3. ¿La inversión mensual en publicidad se asocia linealmente con las ventas?
  4. ¿La posición ordinal de satisfacción se asocia con la posición ordinal de fidelidad?

Trabajo durante la clase: para cada pregunta, identifique variables, formule hipótesis cuando corresponda, seleccione prueba y gráfica, indique qué supuestos verificaría y escriba una conclusión de máximo cuatro líneas dirigida al gerente. Utilice los datos de los ejercicios anteriores como referencia de estructura; en el cierre no se proporcionan nuevas observaciones.

Regla de interpretación para toda la clase: no basta con escribir «p < 0.05». Una conclusión estadística completa indica qué se estudió, cuál fue el resultado, qué significa para el negocio y qué no puede afirmarse a partir del análisis.

6 Referencias recomendadas

  • Montgomery, D. C. Design and Analysis of Experiments. Wiley.
  • Agresti, A. An Introduction to Categorical Data Analysis. Wiley.
  • Lind, D. A., Marchal, W. G. y Wathen, S. A. Estadística aplicada a los negocios y la economía.
  • Documentación de R: ?aov, ?chisq.test, ?cor.test.