---
title: "01 · Pruebas t y razón de varianzas"
subtitle: "Sesión 2 — Inferencia aplicada, regresión y supuestos"
output:
  html_document:
    toc: true
    toc_float: true
    theme: flatly
---

## Objetivos

- Comparar dos líneas de producción con la $t$ de dos muestras (combinada y Welch).
- Comparar su variabilidad con la razón de varianzas $F$ y con Levene.
- Ver por qué datos **pareados** deben analizarse como pareados.

**Paquetes:** `tidyverse`, `knitr`, `car`.

> Teoría: [`../teoria/01-pruebas-t-varianzas.md`](../teoria/01-pruebas-t-varianzas.md).

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE,
                      fig.width = 7, fig.height = 4)
```

```{r paquetes}
library(tidyverse)
library(knitr)
library(car)
theme_set(theme_minimal(base_size = 12))
```

## 1. Dos líneas de ensamble

Se registró el **tiempo de ciclo (s)** de 15 ciclos en la línea A y 18 en la línea B.
¿Difieren en promedio? ¿Y en consistencia?

```{r datos-ciclo}
ciclo <- read_csv("../datos/tiempo-ciclo-lineas.csv")
ciclo |>
  group_by(linea) |>
  summarise(n = n(), media = mean(tiempo_ciclo_s), s = sd(tiempo_ciclo_s)) |>
  kable(digits = 2)
```

```{r graf-ciclo}
ggplot(ciclo, aes(linea, tiempo_ciclo_s, fill = linea)) +
  geom_boxplot(alpha = 0.5, width = 0.5, show.legend = FALSE) +
  geom_jitter(width = 0.08, show.legend = FALSE) +
  labs(x = "Línea", y = "Tiempo de ciclo (s)")
```

### 1.1 Supuestos

```{r normalidad-ciclo}
ciclo |> group_by(linea) |> summarise(shapiro_p = shapiro.test(tiempo_ciclo_s)$p.value) |>
  kable(digits = 3)
```

### 1.2 ¿Las varianzas son iguales?

$H_0: \sigma_A^2 = \sigma_B^2$ vs. $H_1: \sigma_A^2 \ne \sigma_B^2$.

```{r f-test}
prueba_f <- var.test(tiempo_ciclo_s ~ linea, data = ciclo)
prueba_f
leveneTest(tiempo_ciclo_s ~ factor(linea), data = ciclo)
```

La razón $s_A^2/s_B^2 =$ `r round(prueba_f$statistic, 3)` y el valor p
(`r round(prueba_f$p.value, 3)`) indican que la **línea B es más variable**. Esto es un
hallazgo de calidad en sí mismo, no solo un paso previo.

### 1.3 Comparación de medias

```{r t-tests}
welch <- t.test(tiempo_ciclo_s ~ linea, data = ciclo)              # Welch (por defecto)
combinada <- t.test(tiempo_ciclo_s ~ linea, data = ciclo, var.equal = TRUE)
welch
tibble(prueba = c("Welch", "Combinada"),
       t = c(welch$statistic, combinada$statistic),
       gl = c(welch$parameter, combinada$parameter),
       valor_p = c(welch$p.value, combinada$p.value),
       ic_inf = c(welch$conf.int[1], combinada$conf.int[1]),
       ic_sup = c(welch$conf.int[2], combinada$conf.int[2])) |>
  kable(digits = 3)
```

Como las varianzas difieren, se reporta **Welch**: la línea A es, en promedio, entre
`r round(-welch$conf.int[2], 1)` y `r round(-welch$conf.int[1], 1)` s **más rápida** que B
(IC 95 %). Observa que los grados de libertad de Welch no son enteros.

## 2. Datos pareados: dos durómetros

Se midió la dureza Rockwell de **12 probetas** con dos durómetros. ¿Miden lo mismo?

```{r datos-dureza}
dureza <- read_csv("../datos/dureza-durometros.csv") |>
  mutate(diferencia = durometro_1 - durometro_2)
kable(dureza)
```

```{r graf-dureza}
dureza |>
  pivot_longer(starts_with("durometro"), names_to = "instrumento", values_to = "dureza") |>
  ggplot(aes(instrumento, dureza, group = probeta)) +
  geom_line(colour = "grey60") + geom_point(size = 2) +
  labs(title = "Cada línea es una probeta", x = NULL, y = "Dureza (HRC)")
```

La variabilidad **entre probetas** es grande; la diferencia **dentro** de cada probeta es
pequeña pero casi siempre del mismo signo.

### 2.1 Análisis correcto (pareado) vs. incorrecto (independiente)

```{r pareada}
pareada <- t.test(dureza$durometro_1, dureza$durometro_2, paired = TRUE)
independiente <- t.test(dureza$durometro_1, dureza$durometro_2)
tibble(analisis = c("Pareado (correcto)", "Dos muestras (incorrecto)"),
       diferencia = c(pareada$estimate, diff(rev(independiente$estimate))),
       error_estandar = c(pareada$stderr, independiente$stderr),
       valor_p = c(pareada$p.value, independiente$p.value)) |>
  kable(digits = 4)
shapiro.test(dureza$diferencia)$p.value   # supuesto: normalidad de las diferencias
```

- **Pareado:** el error estándar es pequeño porque la variabilidad entre probetas se
  cancela; se detecta que el durómetro 2 lee en promedio
  `r round(-pareada$estimate, 2)` HRC más (IC 95 %:
  `r round(-pareada$conf.int[2], 2)` a `r round(-pareada$conf.int[1], 2)`).
- **Independiente:** la variabilidad entre probetas infla el error estándar y la
  diferencia **no** se detecta. Mismo dato, conclusión opuesta.

> Emparejar es la forma más simple de **bloqueo**, que retomarás en ASC22.

## 3. Conclusiones

- Línea A: menor tiempo de ciclo y menor variabilidad que B.
- El durómetro 2 tiene un sesgo positivo frente al 1: hay que calibrar antes de usarlos
  indistintamente.
- La prueba se elige por **cómo se recogieron los datos**, no por cuál da el valor p más bajo.
