Ctrl + Shift + Enter)..html generado. Si el documento no compila,
no se puede corregir.Nombre(s): ______________________________________
La empresa Envasadora del Valle llena botellas de jugo con un contenido nominal de 500 ml. Un cliente mayorista reclama que las botellas vienen con menos producto. La jefatura de calidad le encarga a usted analizar una muestra de la producción.
La planta tiene dos máquinas llenadoras (A y B). Además, inspección visual registra si cada botella sale defectuosa (etiqueta mal puesta, tapa suelta, etc.).
El siguiente bloque genera los datos de la muestra. No lo
modifique: set.seed() hace que todos obtengan
exactamente los mismos números.
set.seed(2026)
maquina_A <- round(rnorm(30, mean = 498.6, sd = 4.0), 1)
maquina_B <- round(rnorm(35, mean = 501.2, sd = 3.0), 1)
llenado <- data.frame(
ml = c(maquina_A, maquina_B),
maquina = factor(c(rep("A", 30), rep("B", 35)))
)
head(llenado)
#> ml maquina
#> 1 500.7 A
#> 2 494.3 A
#> 3 499.2 A
#> 4 498.3 A
#> 5 495.9 A
#> 6 488.5 A
str(llenado)
#> 'data.frame': 65 obs. of 2 variables:
#> $ ml : num 501 494 499 498 496 ...
#> $ maquina: Factor w/ 2 levels "A","B": 1 1 1 1 1 1 1 1 1 1 ...
Piense en un pescador que lanza una red a un lago donde hay un pez quieto (el parámetro \(\mu\), que nadie ve). Cada muestra es un lanzamiento; cada intervalo es la red. Una red de “95%” no significa que esta red tenga 95% de probabilidad de atrapar al pez: significa que el método atrapa al pez en el 95% de los lanzamientos.
Comprobémoslo simulando 100 muestras de un proceso donde sí sabemos que \(\mu = 500\):
set.seed(1)
mu_real <- 500
n_rep <- 100
li <- ls <- numeric(n_rep)
for (i in 1:n_rep) {
m <- rnorm(25, mean = mu_real, sd = 4)
ic <- t.test(m, conf.level = 0.95)$conf.int
li[i] <- ic[1]; ls[i] <- ic[2]
}
atrapa <- li <= mu_real & ls >= mu_real
cat("Intervalos que contienen a mu:", sum(atrapa), "de", n_rep, "\n")
#> Intervalos que contienen a mu: 96 de 100
plot(NULL, xlim = range(c(li, ls)), ylim = c(1, n_rep),
xlab = "ml", ylab = "Muestra", main = "100 intervalos de confianza al 95%")
segments(li, 1:n_rep, ls, 1:n_rep, col = ifelse(atrapa, "grey40", "red"), lwd = 2)
abline(v = mu_real, col = "blue", lwd = 2, lty = 2)
Pregunta 1. ¿Cuántos intervalos no contienen a \(\mu = 500\) (en rojo)? ¿Es coherente con un 95% de confianza?
Respuesta:
Antes de cualquier prueba, mire los datos.
summary(llenado$ml)
#> Min. 1st Qu. Median Mean 3rd Qu. Max.
#> 488.4 497.7 499.5 499.6 501.7 506.2
tapply(llenado$ml, llenado$maquina, mean)
#> A B
#> 498.3167 500.6257
tapply(llenado$ml, llenado$maquina, sd)
#> A B
#> 4.388157 2.304387
boxplot(ml ~ maquina, data = llenado, col = c("#9ecae1", "#fdae6b"),
ylab = "Contenido (ml)", main = "Llenado por máquina")
abline(h = 500, lty = 2, col = "red")
Pregunta 2. A simple vista, ¿alguna máquina parece llenar bajo los 500 ml? ¿Cuál tiene mayor variabilidad?
Respuesta:
Trabajaremos con todas las botellas (\(n = 65\)). Como \(\sigma\) es desconocida, usamos la distribución \(t\) de Student:
\[ \bar{x} \pm t_{\alpha/2,\; n-1}\cdot \frac{s}{\sqrt{n}} \]
x <- llenado$ml
n <- length(x)
media <- mean(x)
s <- sd(x)
t_crit <- qt(0.975, df = n - 1) # 95% -> deja 2,5% en cada cola
error <- t_crit * s / sqrt(n)
c(media = media, s = s, t_crit = t_crit, error = error)
#> media s t_crit error
#> 499.5600000 3.5905605 1.9977297 0.8896973
c(limite_inf = media - error, limite_sup = media + error)
#> limite_inf limite_sup
#> 498.6703 500.4497
t.test()t.test(x, conf.level = 0.95)$conf.int
#> [1] 498.6703 500.4497
#> attr(,"conf.level")
#> [1] 0.95
Ambos resultados deben coincidir.
Pregunta 3. Interprete el intervalo en el contexto de la empresa. ¿Incluye el valor 500?
Respuesta:
Pregunta 4. Cambie conf.level a
0.99. ¿El intervalo se hace más ancho o más angosto? ¿Por
qué?
t.test(x, conf.level = 0.99)$conf.int
#> [1] 498.3776 500.7424
#> attr(,"conf.level")
#> [1] 0.99
Respuesta:
El reclamo del cliente es sobre la máquina A. Siga siempre los cinco pasos:
xA <- maquina_A
t_obs <- (mean(xA) - 500) / (sd(xA) / sqrt(length(xA)))
p_val <- pt(t_obs, df = length(xA) - 1) # cola izquierda
c(t_observado = t_obs, valor_p = p_val)
#> t_observado valor_p
#> -2.10110918 0.02221855
t.test()t.test(xA, mu = 500, alternative = "less")
#>
#> One Sample t-test
#>
#> data: xA
#> t = -2.1011, df = 29, p-value = 0.02222
#> alternative hypothesis: true mean is less than 500
#> 95 percent confidence interval:
#> -Inf 499.6779
#> sample estimates:
#> mean of x
#> 498.3167
El argumento
alternativedebe calzar con \(H_1\):"less"(\(<\)),"greater"(\(>\)) o"two.sided"(\(\neq\)).
Pregunta 5. Con \(\alpha = 0{,}05\), ¿se rechaza \(H_0\)? Redacte la conclusión para la jefatura de calidad (sin usar la palabra “hipótesis”).
Respuesta:
Pregunta 6. Repita la prueba para la máquina B. ¿Llega a la misma conclusión?
# Escriba aquí su código
Respuesta:
¿Las dos máquinas llenan, en promedio, lo mismo?
\[ H_0:\ \mu_A = \mu_B \qquad H_1:\ \mu_A \neq \mu_B \]
Usamos la prueba \(t\) de Welch, que no supone varianzas iguales (es la opción por defecto en R).
t.test(ml ~ maquina, data = llenado)
#>
#> Welch Two Sample t-test
#>
#> data: ml by maquina
#> t = -2.592, df = 42.314, p-value = 0.01304
#> alternative hypothesis: true difference in means between group A and group B is not equal to 0
#> 95 percent confidence interval:
#> -4.1064275 -0.5116677
#> sample estimates:
#> mean in group A mean in group B
#> 498.3167 500.6257
Pregunta 7. ¿Hay diferencia significativa entre máquinas? Interprete el intervalo de confianza para \(\mu_A - \mu_B\): ¿qué significa que no contenga (o contenga) el 0?
Respuesta:
De la producción del día se inspeccionaron 400 botellas y 18 resultaron defectuosas. El contrato con el cliente exige que la proporción de defectuosas no supere el 3%.
\[ H_0:\ p = 0{,}03 \qquad H_1:\ p > 0{,}03 \]
\[ z = \frac{\hat{p} - p_0}{\sqrt{p_0(1-p_0)/n}} \]
n_insp <- 400
defect <- 18
p_hat <- defect / n_insp
p0 <- 0.03
z_obs <- (p_hat - p0) / sqrt(p0 * (1 - p0) / n_insp)
p_val <- 1 - pnorm(z_obs) # cola derecha
c(p_hat = p_hat, z = z_obs, valor_p = p_val)
#> p_hat z valor_p
#> 0.04500000 1.75863115 0.03932009
Verificación de supuestos: se requiere \(n p_0 \geq 5\) y \(n(1-p_0) \geq 5\).
c(n_p0 = n_insp * p0, n_1menos_p0 = n_insp * (1 - p0))
#> n_p0 n_1menos_p0
#> 12 388
prop.test()prop.test(x = defect, n = n_insp, p = p0, alternative = "greater", correct = FALSE)
#>
#> 1-sample proportions test without continuity correction
#>
#> data: defect out of n_insp, null probability p0
#> X-squared = 3.0928, df = 1, p-value = 0.03932
#> alternative hypothesis: true p is greater than 0.03
#> 95 percent confidence interval:
#> 0.03079222 1.00000000
#> sample estimates:
#> p
#> 0.045
prop.test()entrega el estadístico \(\chi^2 = z^2\). Compruebe:z_obs^2. Para muestras pequeñas use la prueba exactabinom.test(defect, n_insp, p = p0, alternative = "greater").
Pregunta 8. ¿Hay evidencia de que la empresa incumple el contrato? ¿Qué le recomendaría a la jefatura?
Respuesta:
E1. Construya un intervalo de confianza al 90% para el contenido medio de la máquina B. Interprételo.
Respuesta:
E2. Una auditora afirma que la máquina B llena más de 500 ml (sobrellenado, que cuesta dinero). Plantee las hipótesis y realice la prueba con \(\alpha = 0{,}05\).
Respuesta:
E3. Calcule a mano (con mean,
sd, qt) el intervalo al 95% para la
máquina A y verifique con t.test().
E4. Construya un intervalo de confianza al 95% para la proporción de defectuosas. ¿Incluye el 3%? Relacione su respuesta con la Pregunta 8.
Respuesta:
E5 (desafío). ¿Cuántas botellas defectuosas, de 400,
harían falta como mínimo para rechazar \(H_0:\ p = 0{,}03\) con \(\alpha = 0{,}05\)? Pista: pruebe varios
valores en un ciclo for o con sapply().
Respuesta:
| Objetivo | Función en R |
|---|---|
| Valor crítico \(t\) | qt(1 - alfa/2, df = n - 1) |
| Valor crítico \(z\) | qnorm(1 - alfa/2) |
| Probabilidad acumulada \(t\) / \(z\) | pt(t, df) / pnorm(z) |
| IC y prueba para una media | t.test(x, mu = , alternative = , conf.level = ) |
| Comparar dos medias | t.test(y ~ grupo, data = ) |
| IC y prueba para una proporción | prop.test(x, n, p = , alternative = , correct = FALSE) |
| Prueba exacta de proporción | binom.test(x, n, p = ) |