MODELOS CONTINUOS

TALLER No 2

Autor/a
Afiliación

Carolina Pineda
Vilma Montaña
Andres Vera

Fecha de publicación

1 de septiembre de 2025

LOGO

1 .Activar Paquetes

Ver código
# Verificar, instalar y activar el paquete "tidyverse"
if (!require(tidyverse)) {
  install.packages("tidyverse")
}
library(tidyverse)

# Verificar, instalar y activar el paquete "kableExtra"
if (!require(kableExtra)) {
  install.packages("kableExtra")
}
library(kableExtra)


# Verificar, instalar y activar el paquete "readxl"
if (!require(dplyr)) {
  install.packages("dplyr")
}
library(dplyr)

# Verificar, instalar y activar el paquete "tibble"
if (!require(tibble)) {
  install.packages("tibble")
}
library(tibble)

/[Wickham et al. (2019); Zhu (2024); Wickham et al. (2023)](Müller y Wickham 2025)

2 .Distribución Chi-Cuadrada (\chi^{2})

Definición

La distribución chi-cuadrada es una distribución de probabilidad continua que se utiliza ampliamente en estadística para pruebas de hipótesis y análisis de varianza. Surge principalmente cuando se suman los cuadrados de variables aleatorias normales estándar independientes.

Formalmente, si Z_1, Z_2, \ldots, Z_k son variables aleatorias independientes con distribución normal estándar N(0,1), entonces:

chi^{2} = \sum_{i=1}^{k} Z_i^{2}

Relación con Otras Distribuciones

  • Es un caso particular de la distribución Gamma:

\chi^{2}(k) = \text{Gamma}\left(\alpha = \frac{k}{2},\, \theta = 2\right)

  • Se usa en la construcción de la distribución t de Student y la F de Fisher, que dependen de chi-cuadrada.

Caracteristicas principales

  • Es una distribución continua.

  • Toma solo valores positivos: x \in [0, \infty).

  • Depende de un único parámetro: los grados de libertad (k).

  • Asimétrica a la derecha para valores pequeños de k.

  • Conforme k aumenta, la distribución se aproxima a una normal con media k y varianza 2k.

Momentos

  • Media: E(\chi^{2}) = k. \

  • Varianza: \mathrm{Var}(\chi^{2}) = 2k. \

  • Moda: k - 2 ; (para k > 2). \

  • Curtosis: \dfrac{12}{k}.

Usos Principales en la estadistica aplicada

  • Prueba de bondad de ajuste (Goodness of Fit): Evalúa si los datos observados siguen una distribución teórica esperada.

  • Prueba de independencia en tablas de contingencia: Determina si dos variables categóricas están asociadas.

  • Prueba de homogeneidad de proporciones: Comprueba si varias muestras tienen la misma distribución.

  • Intervalos de confianza para la varianza: En una población normal, la varianza muestral se distribuye como chi-cuadrada.

Ejemplo de Uso

Supón que se tiene una muestra de tamaño n = 20 de una población normal, con varianza muestral s^{2} = 16, y se quiere construir un intervalo de confianza para la varianza poblacional \sigma^{2} al 95%.

La fórmula es:

\frac{(n - 1)s^2}{\chi^2_{\alpha/2}} \; < \; \sigma^2 \; < \; \frac{(n - 1)s^2}{\chi^2_{1-\alpha/2}}

donde los valores críticos provienen de la distribución chi-cuadrada.

Ventajas Y Limitaciones

Ventajas:

  1. Simplicidad y aplicabilidad amplia: Es una de las pruebas más utilizadas para datos categóricos.

  2. No requiere conocer parámetros poblacionales complejos: Se basa en frecuencias observadas y esperadas.

  3. Fácil interpretación en tablas de contingencia: Permite evaluar independencia o asociación entre variables.

  4. Flexibilidad: Se aplica en diferentes contextos estadísticos (bondad de ajuste, independencia, homogeneidad).

  5. Distribución conocida: La distribución y sus valores críticos están ampliamente tabulados.

Limitaciones:

Requiere tamaño de muestra suficiente: Las frecuencias esperadas deben ser generalmente ≥ 5 por celda.

  1. Sensibilidad a tamaños grandes de muestra: Con muestras muy grandes, diferencias pequeñas pueden resultar significativas.

  2. No proporciona magnitud del efecto: Indica asociación, pero no mide la fuerza de la relación.

  3. Supone independencia de las observaciones: Si las observaciones están correlacionadas, los resultados se distorsionan.

  4. Solo se aplica a datos categóricos (frecuencias): No es adecuada para variables continuas sin agrupar.

  • .Familias de Curvas Ji-cudrado
Ver código
# Instalar y cargar paquetes necesarios
# install.packages("ggplot2")
library(ggplot2)

# Definir los grados de libertad que quieres graficar
grados_libertad <- c(3,4,5)

# Crear una secuencia de valores para x
x <- seq(0, 40, length.out = 500)

# Crear un data frame con las densidades para cada grado de libertad
df <- data.frame(
  x = rep(x, times = length(grados_libertad)),
  gl = factor(rep(grados_libertad, each = length(x)))
)

# Calcular las densidades
df$density <- dchisq(df$x, df = as.numeric(as.character(df$gl)))

# Graficar usando ggplot2
ggplot(df, aes(x = x, y = density, color = gl)) +
  geom_line(size = 1) +
  labs(
    title = "Familias de curvas de la distribución Chi-cuadrado",
    x = "Valor de χ²",
    y = "Densidad de probabilidad",
    color = "Grados de libertad (k)"
  ) +
  theme_minimal()

3 .Ejercicios

Para una distribución chi cuadrada encuentre

  1. \chi^2_{0.025} cuando v = 15;
  2. \chi^2_{0.01} cuando v = 7;
  3. \chi^2_{0.05} cuando v = 24
Ver código
# a) Chi-cuadrado al 0.025 con v = 15
chi_a <- qchisq(0.025, df = 15, lower.tail = FALSE)

# b) Chi-cuadrado al 0.01 con v = 7
chi_b <- qchisq(0.01, df = 7, lower.tail = FALSE)

# c) Chi-cuadrado al 0.05 con v = 24
chi_c <- qchisq(0.05, df = 24, lower.tail = FALSE)

# Mostrar resultados
chi_a
[1] 27.48839
Ver código
chi_b
[1] 18.47531
Ver código
chi_c
[1] 36.41503

3.1 .Grafica

Ver código
# Cargar paquete
library(ggplot2)

# Definir grados de libertad y niveles de significancia
grados <- c(15, 7, 24)
alfa <- c(0.025, 0.01, 0.05)

# Calcular valores críticos
criticos <- qchisq(alfa, df = grados, lower.tail = FALSE)

# Crear rango para x
x <- seq(0, 50, length.out = 500)

# Generar gráficos por separado
for (i in seq_along(grados)) {
  
  # Calcular densidad para el grado de libertad correspondiente
  df <- data.frame(
    x = x,
    density = dchisq(x, df = grados[i])
  )
  
  # Crear gráfico
  p <- ggplot(df, aes(x = x, y = density)) +
    geom_line(color = "blue", size = 1) +
    geom_vline(xintercept = criticos[i], linetype = "dashed", color = "red") +
    labs(
      title = paste("Distribución Chi-cuadrada (v =", grados[i], ")"),
      subtitle = paste("Valor crítico al nivel", alfa[i], "=", round(criticos[i], 3)),
      x = expression(chi^2),
      y = "Densidad de probabilidad"
    ) +
    theme_minimal()
  
  print(p)  # Mostrar gráfico en la sesión
}

Ver código
# Cargar paquete
library(ggplot2)

# Definir grados de libertad y valores críticos
grados <- c(15, 7, 24)
alfa <- c(0.025, 0.01, 0.05)

# Calcular valores críticos
criticos <- qchisq(alfa, df = grados, lower.tail = FALSE)

# Crear rango común de x
x <- seq(0, 50, length.out = 500)

# Crear data frame con densidades para cada distribución
df <- data.frame(
  x = rep(x, times = length(grados)),
  gl = factor(rep(grados, each = length(x)))
)
df$density <- dchisq(df$x, df = as.numeric(as.character(df$gl)))

# Graficar
ggplot(df, aes(x = x, y = density, color = gl)) +
  geom_line(size = 1) +
  # Agregar líneas verticales para los valores críticos
  geom_vline(xintercept = criticos, linetype = "dashed") +
  # Etiquetas
  labs(
    title = "Distribuciones Chi-cuadrada con valores críticos",
    x = expression(chi^2),
    y = "Densidad de probabilidad",
    color = "Grados de libertad"
  ) +
  theme_minimal()

3.2 .Ejercicio

Para una distribución chi cuadrada encuentre \chi^2_{\alpha} tal que:

  1. P(X^2 > \chi^2_{\alpha}) = 0.99 cuando v = 4;
  2. P(X^2 > \chi^2_{\alpha}) = 0.025 cuando v = 19;
  3. P(37.652 < X^2 < \chi^2_{\alpha}) = 0.045 cuando v = 25.
Ver código
# a) P(X^2 > chi) = 0.99 con v = 4
chi_a <- qchisq(0.99, df = 4, lower.tail = FALSE)

# b) P(X^2 > chi) = 0.025 con v = 19
chi_b <- qchisq(0.025, df = 19, lower.tail = FALSE)

# c) P(37.652 < X^2 < chi) = 0.045 con v = 25
# Paso 1: Calcular probabilidad acumulada hasta 37.652
F_lower <- pchisq(37.652, df = 25)

# Paso 2: Sumar 0.045 para obtener la probabilidad acumulada hasta chi
target <- F_lower + 0.045

# Paso 3: Obtener chi crítico
chi_c <- qchisq(target, df = 25, lower.tail = TRUE)

# Mostrar resultados
chi_a
[1] 0.2971095
Ver código
chi_b
[1] 32.85233
Ver código
chi_c
[1] 46.92392

3.3 .Graficas

Ver código
# Cargar paquete
library(ggplot2)

# Definir grados de libertad y niveles de significancia para cada caso
grados <- c(4, 19, 25)
alfa <- c(0.99, 0.025, NA)  # El tercero no es cola derecha directa

# Calcular valores críticos
# a) y b) son colas derechas
criticos <- c(
  qchisq(0.99, df = 4, lower.tail = FALSE),  # a)
  qchisq(0.025, df = 19, lower.tail = FALSE) # b)
)

# c) Intervalo: P(37.652 < X² < chi) = 0.045
F_lower <- pchisq(37.652, df = 25)
target <- F_lower + 0.045
critico_c <- qchisq(target, df = 25, lower.tail = TRUE)

# Añadir a la lista de críticos
criticos <- c(criticos, critico_c)

# Crear rango común de x
x <- seq(0, 60, length.out = 500)

# Crear data frame con densidades para cada distribución
df <- data.frame(
  x = rep(x, times = length(grados)),
  gl = factor(rep(grados, each = length(x)))
)
df$density <- dchisq(df$x, df = as.numeric(as.character(df$gl)))

# Graficar las tres distribuciones juntas
ggplot(df, aes(x = x, y = density, color = gl)) +
  geom_line(size = 1) +
  # Agregar líneas verticales para los valores críticos
  geom_vline(xintercept = criticos, linetype = "dashed") +
  # Etiquetas
  labs(
    title = "Distribuciones Chi-cuadrada con valores críticos",
    x = expression(chi^2),
    y = "Densidad de probabilidad",
    color = "Grados de libertad"
  ) +
  theme_minimal()

Ver código
# Cargar paquete
library(ggplot2)

# --- a) P(X² > chi) = 0.99 con v = 4 ---
critico_a <- qchisq(0.99, df = 4, lower.tail = FALSE)

x <- seq(0, 30, length.out = 500)
df_a <- data.frame(x = x, density = dchisq(x, df = 4))

p_a <- ggplot(df_a, aes(x = x, y = density)) +
  geom_line(color = "blue", size = 1) +
  geom_vline(xintercept = critico_a, linetype = "dashed", color = "red") +
  labs(
    title = expression(paste("Distribución ", chi^2, " (v = 4)")),
    subtitle = paste("Valor crítico (cola derecha 0.99) =", round(critico_a, 3)),
    x = expression(chi^2),
    y = "Densidad"
  ) +
  theme_minimal()


# --- b) P(X² > chi) = 0.025 con v = 19 ---
critico_b <- qchisq(0.025, df = 19, lower.tail = FALSE)

x <- seq(0, 50, length.out = 500)
df_b <- data.frame(x = x, density = dchisq(x, df = 19))

p_b <- ggplot(df_b, aes(x = x, y = density)) +
  geom_line(color = "blue", size = 1) +
  geom_vline(xintercept = critico_b, linetype = "dashed", color = "red") +
  labs(
    title = expression(paste("Distribución ", chi^2, " (v = 19)")),
    subtitle = paste("Valor crítico (cola derecha 0.025) =", round(critico_b, 3)),
    x = expression(chi^2),
    y = "Densidad"
  ) +
  theme_minimal()


# --- c) P(37.652 < X² < chi) = 0.045 con v = 25 ---
F_lower <- pchisq(37.652, df = 25)
target <- F_lower + 0.045
critico_c <- qchisq(target, df = 25, lower.tail = TRUE)

x <- seq(0, 60, length.out = 500)
df_c <- data.frame(x = x, density = dchisq(x, df = 25))

p_c <- ggplot(df_c, aes(x = x, y = density)) +
  geom_line(color = "blue", size = 1) +
  geom_vline(xintercept = critico_c, linetype = "dashed", color = "red") +
  geom_vline(xintercept = 37.652, linetype = "dotted", color = "darkgreen") +
  labs(
    title = expression(paste("Distribución ", chi^2, " (v = 25)")),
    subtitle = paste("Intervalo: 37.652 a", round(critico_c, 3)),
    x = expression(chi^2),
    y = "Densidad"
  ) +
  theme_minimal()


# Mostrar los tres gráficos
print(p_a)

Ver código
print(p_b)

Ver código
print(p_c)

4 .Distribucion T De Student

La distribución t de Student es una distribución de probabilidad continua utilizada para realizar inferencias sobre la media de una población cuando:

  • El tamaño de la muestra es pequeño (n < 30).
  • La desviación estándar poblacional (\sigma) es desconocida.

Es una versión ajustada de la distribución normal, que incorpora la incertidumbre adicional al estimar la desviación estándar a partir de la muestra.

Relación con otras distribuciones

Con la distribución normal: A medida que los grados de libertad (v) tienden a infinito, la distribución t se aproxima a la normal estándar N(0,1). * Con la distribución chi-cuadrado: La t de Student se deriva de una combinación entre la distribución normal estándar y la distribución chi-cuadrado:

t = \frac{Z}{\sqrt{\chi^2_v / v}}

donde:

  • Z es una variable normal estándar.
  • \chi^2_v es una variable chi-cuadrado con v grados de libertad.

Características principales

  1. Simétrica y con forma de campana (como la normal).
  2. Media = 0.
  3. Varianza > 1, disminuye a medida que los grados de libertad aumentan y tiende a 1 cuando v \to \infty.
  4. Colas más gruesas que la normal, lo que implica mayor probabilidad de valores extremos en muestras pequeñas.
  5. Determinada por los grados de libertad (v).

Momentos

  1. Media

\mu = \begin{cases} 0, & v > 1 \\ \text{indefinida}, & v \leq 1 \end{cases}

2. Varianza

\sigma^2 = \begin{cases} \frac{v}{v - 2}, & v > 2 \\ \infty, & 1 < v \leq 2 \\ \text{indefinida}, & v \leq 1 \end{cases}

3. Asimetría (Skewness)

\text{Asimetría} = 0, \quad v > 3

Para v \leq 3, no está definida, ya que depende de momentos superiores que divergen.

4. Curtosis (Exceso de curtosis)

\text{Curtosis (exceso)} = \begin{cases} \frac{6}{v - 4}, & v > 4 \\ \infty, & 2 < v \leq 4 \\ \text{indefinida}, & v \leq 2 \end{cases}

La curtosis total sería:

\text{Curtosis} = 3 + \frac{6}{v - 4}, \quad v > 4

Usos principales en estadística aplicada

  • Prueba t para una muestra. Prueba t para dos muestras independientes.

  • Prueba t para muestras relacionadas (pareadas).

  • Estimación de intervalos de confianza para la media cuando \sigma es desconocida.

  • Comparación de medias en estudios experimentales con tamaños de muestra pequeños.

Ejemplo de uso

Supón que una empresa quiere evaluar si la media del tiempo de entrega de pedidos es diferente a 48 horas. Se toma una muestra de 15 pedidos, con:

\end{document}

La estadística t sería:

t = \frac{\bar{x} - \mu_0}{s / \sqrt{n}} = \frac{50 - 48}{4 / \sqrt{15}} \approx 1.94

Se compara este valor con la distribución t de Student con v = 14 grados de libertad para decidir si hay diferencia significativa.

Ventajas

  1. Permite realizar inferencias con muestras pequeñas.
  2. Se ajusta a la incertidumbre adicional generada por estimar la desviación estándar.
  3. Es la base de muchas pruebas estadísticas fundamentales.

Limitaciones

  1. Menos precisa para muestras muy pequeñas si no se cumplen supuestos de normalidad.
  2. Supone que la muestra proviene de una población normal; si esta condición no se cumple, los resultados pueden ser inexactos.
  3. No es adecuada cuando la desviación estándar poblacional es conocida (en ese caso se usa la distribución normal).
Ver código
# Librerías
library(ggplot2)
library(dplyr)

# Rango del eje X
x <- seq(-4, 4, length.out = 500)

# Definimos grados de libertad
df_values <- c(3, 5, 10)

# Generamos los datos para cada curva t
t_data <- data.frame(
  x = rep(x, times = length(df_values)),
  df = factor(rep(df_values, each = length(x)))
)

# Calculamos densidad de cada t-student
t_data$y <- dt(t_data$x, df = as.numeric(as.character(t_data$df)))

# Datos para la normal estándar
normal_data <- data.frame(
  x = x,
  y = dnorm(x),
  df = "Normal"
)

# Unimos todo
all_data <- bind_rows(
  t_data,
  normal_data
)

# Graficamos
ggplot(all_data, aes(x = x, y = y, color = df)) +
  geom_line(size = 1.2) +
  theme_minimal(base_size = 14) +
  labs(
    title = "Familias de curvas t-Student vs Normal estándar",
    x = "Valores",
    y = "Densidad",
    color = "Distribución"
  ) +
  theme(
    legend.position = "bottom"
  )

4.1 .Ejercicios

  1. Encuentre P(T \leq 2.365) cuando v = 7.
  2. Encuentre P(T > 1.318) cuando v = 24.
  3. Encuentre P(-1.356 < T < 2.179) cuando v = 12.
  4. Encuentre P(T > -2.567) cuando v = 17.
Ver código
# a) P(T <= 2.365) con v = 7
p_a <- pt(2.365, df = 7)

# b) P(T > 1.318) con v = 24
p_b <- pt(1.318, df = 24, lower.tail = FALSE)

# c) P(-1.356 < T < 2.179) con v = 12
p_c <- pt(2.179, df = 12) - pt(-1.356, df = 12)

# d) P(T > -2.567) con v = 17
# Ojo: como el límite es negativo, usamos la simetría:
p_d <- pt(-2.567, df = 17, lower.tail = FALSE)

# Mostrar resultados
p_a
[1] 0.9750138
Ver código
p_b
[1] 0.09997295
Ver código
p_c
[1] 0.8749748
Ver código
p_d
[1] 0.9900014

5 .Graficas

Ver código
# Cargar paquete
library(ggplot2)

# Definir grados de libertad y límites para cada caso
grados <- c(7, 24, 12, 17)
limites <- list(
  c(-Inf, 2.365),          # a) P(T <= 2.365)
  c(1.318, Inf),           # b) P(T > 1.318)
  c(-1.356, 2.179),        # c) P(-1.356 < T < 2.179)
  c(-2.567, Inf)           # d) P(T > -2.567)
)

# Crear rango común de x para t-Student
x <- seq(-4, 4, length.out = 500)

# Generar gráficos por separado
for (i in seq_along(grados)) {
  
  # Calcular densidad para cada distribución t
  df <- data.frame(
    x = x,
    density = dt(x, df = grados[i])
  )
  
  # Crear gráfico sombreando el área correspondiente
  p <- ggplot(df, aes(x = x, y = density)) +
    geom_line(color = "blue", size = 1) +
    geom_area(data = subset(df, x >= limites[[i]][1] & x <= limites[[i]][2]),
              aes(y = density), fill = "lightblue", alpha = 0.5) +
    geom_vline(xintercept = limites[[i]], linetype = "dashed", color = "red") +
    labs(
      title = paste("Distribución t (v =", grados[i], ")"),
      subtitle = paste("Intervalo sombreado:",
                       limites[[i]][1], "a", limites[[i]][2]),
      x = "t",
      y = "Densidad de probabilidad"
    ) +
    theme_minimal()
  
  print(p)  # Mostrar gráfico
}

5.1 .Distribución F de Fisher-Snedecor

La distribución F es una distribución continua que surge principalmente cuando se comparan dos varianzas muestrales o se analiza la relación entre la variabilidad explicada y no explicada en modelos estadísticos (como en el ANOVA y la regresión lineal). Fue desarrollada por Ronald Fisher y es una de las distribuciones fundamentales en la inferencia estadística.

Sea:

v_1 y v_2 grados de libertad, respectivamente.

La variable aleatoria:

F = \frac{X / v_1}{Y / v_2}

sigue una distribución F con parámetros v_1 y v_2, llamados grados de libertad del numerador y denominador, respectivamente.

Caracteristicas principales

Dominio: 0 F≥0 (no toma valores negativos).

Asimetría: Es asimétrica hacia la derecha, aunque se vuelve más simétrica conforme aumentan los grados de libertad.

Parámetros:

𝑣1v1 : grados de libertad del numerador.

𝑣2v2 : grados de libertad del denominador.

Media:

E(F) = \frac{v_2}{v_2 - 2}, \quad \text{para } v_2 > 2

Varianza:

\mathrm{Var}(F) = \frac{2 v_2^2 (v_1 + v_2 - 2)}{v_1 (v_2 - 2)^2 (v_2 - 4)}, \quad \text{para } v_2 > 4

Usos principales

  • Análisis de varianza (ANOVA): Contrastar si varias medias poblacionales son iguales.

  • Pruebas de hipótesis sobre varianzas: Evaluar si dos poblaciones tienen la misma varianza.

  • Modelos de regresión: Para verificar la significancia global de un modelo.

Caracteristicas importantes

  • No simétrica Solo tiende a la simetría para grados de libertad grandes.

Relación con su recíproco:

F_{v_1, v_2} = \frac{1}{F_{v_2, v_1}}

  • Valores críticos: Se utilizan para determinar regiones de rechazo en pruebas F.

Ejemplo de Uso

Supón que un investigador quiere saber si tres métodos de enseñanza (A, B y C) producen diferencias significativas en el rendimiento de los estudiantes. Se toman muestras aleatorias de cada método y se calculan sus medias y varianzas.

H₀: Las medias de los tres métodos son iguales.

H₁: Al menos una de las medias es diferente.

Estadístico F

F = \frac{\text{Varianza entre grupos}}{\text{Varianza dentro de los grupos}}

Si F es mayor que el valor crítico obtenido de la distribución F para los grados de libertad correspondientes

v_1 = k - 1, v_2 = N - k,

se rechaza H_0.

Por ejemplo:

  • v1 =2 (3 grupos – 1)

  • 𝑣2=27v2 =27 (30 estudiantes – 3 grupos)

  • Nivel de significancia: α=0.05 α=0.05

Si el valor calculado es:

F = 5.78 \quad \text{y el valor crítico es} \quad F_{0.05,2,27} = 3.35

Como

F = 5.78 > 3.35,

se rechaza H_0 \; \rightarrow Hay evidencia de que al menos un método es diferente.

Ventajas Y Limites

Ventajas:

  • Fundamental para pruebas de hipótesis: Especialmente en ANOVA, regresión y comparación de varianzas.

  • Flexible: Se adapta a diferentes grados de libertad según el problema.

  • Amplio uso en estadística inferencial: Es la base de muchos métodos de comparación entre grupos.

  • Permite análisis de modelos complejos: Como modelos lineales generales.

Limites:

  • Sensibilidad a supuestos: Requiere que los datos provengan de poblaciones normales y con varianzas homogéneas (homocedasticidad).

  • No simétrica: Difícil de interpretar intuitivamente para quienes esperan distribuciones simétricas como la normal.

  • Poco robusta a valores atípicos: Los outliers pueden distorsionar los resultados de la prueba F.

  • Interpretación limitada: Solo indica si existen diferencias, no cuál grupo es diferente (para eso se necesitan pruebas post-hoc).

Ver código
# Cargar paquetes
library(ggplot2)

# Definir grados de libertad para el numerador y denominador
v1 <- c(2, 5)  # grados de libertad del numerador
v2 <- c(10, 15) # grados de libertad del denominador

# Crear combinaciones de pares (v1, v2)
grados <- expand.grid(v1 = v1, v2 = v2)

# Crear un rango para x (valores de F)
x <- seq(0, 5, length.out = 500)

# Construir el data frame con densidades para cada combinación
df <- do.call(rbind, apply(grados, 1, function(g) {
  data.frame(
    x = x,
    density = df(x, df1 = g["v1"], df2 = g["v2"]),
    v1 = as.factor(g["v1"]),
    v2 = as.factor(g["v2"])
  )
}))

# Crear la gráfica
ggplot(df, aes(x = x, y = density, color = interaction(v1, v2))) +
  geom_line(size = 1) +
  labs(
    title = "Familias de curvas F de Fisher",
    subtitle = "Variando grados de libertad del numerador (v1) y denominador (v2)",
    x = "Valor F",
    y = "Densidad de probabilidad",
    color = "v1-v2"
  ) +
  theme_minimal()

5.2 .Ejercicio

  1. f_{0.05} con v_1 = 7 y v_2 = 15;
  2. f_{0.05} con v_1 = 15 y v_2 = 7;
  3. f_{0.01} con v_1 = 24 y v_2 = 19;
  4. f_{0.95} con v_1 = 19 y v_2 = 24;
  5. f_{0.99} con v_1 = 28 y v_2 = 12.
Ver código
# Valores críticos de la distribución F

# a) f_0.05 con v1 = 7, v2 = 15
f_a <- qf(0.05, df1 = 7, df2 = 15, lower.tail = FALSE)

# b) f_0.05 con v1 = 15, v2 = 7
f_b <- qf(0.05, df1 = 15, df2 = 7, lower.tail = FALSE)

# c) f_0.01 con v1 = 24, v2 = 19
f_c <- qf(0.01, df1 = 24, df2 = 19, lower.tail = FALSE)

# d) f_0.95 con v1 = 19, v2 = 24
f_d <- qf(0.95, df1 = 19, df2 = 24, lower.tail = FALSE)

# e) f_0.99 con v1 = 28, v2 = 12
f_e <- qf(0.99, df1 = 28, df2 = 12, lower.tail = FALSE)

# Mostrar resultados
f_a
[1] 2.706627
Ver código
f_b
[1] 3.51074
Ver código
f_c
[1] 2.924866
Ver código
f_d
[1] 0.4730049
Ver código
f_e
[1] 0.3453181
Ver código
# Cargar librería
library(ggplot2)

# Definir grados de libertad y niveles de significancia
v1 <- c(7, 15, 24, 19, 28)
v2 <- c(15, 7, 19, 24, 12)
alfa <- c(0.05, 0.05, 0.01, 0.05, 0.01)
criticos <- qf(alfa, df1 = v1, df2 = v2, lower.tail = FALSE)

# Rango de F
x <- seq(0, 5, length.out = 500)

# Construir data frame con todas las densidades
df <- do.call(rbind, lapply(1:length(v1), function(i) {
  data.frame(
    x = x,
    density = df(x, df1 = v1[i], df2 = v2[i]),
    label = paste0("v1=", v1[i], ", v2=", v2[i]),
    critico = criticos[i]
  )
}))

# Graficar todas las curvas F en un mismo gráfico
ggplot(df, aes(x = x, y = density, color = label)) +
  geom_line(size = 1) +
  geom_vline(aes(xintercept = critico, color = label),
             linetype = "dashed") +
  labs(
    title = "Familia de distribuciones F de Fisher",
    subtitle = "Curvas F con sus valores críticos",
    x = "F",
    y = "Densidad de probabilidad",
    color = "Grados de libertad"
  ) +
  theme_minimal()

Ver código
# Cargar librería
library(ggplot2)

# Definir grados de libertad y niveles de significancia
v1 <- c(7, 15, 24, 19, 28)
v2 <- c(15, 7, 19, 24, 12)
alfa <- c(0.05, 0.05, 0.01, 0.05, 0.01)  # ajustado para representación visual
criticos <- qf(c(0.05,0.05,0.01,0.05,0.01), df1 = v1, df2 = v2, lower.tail = FALSE)

# Rango común de F
x <- seq(0, 5, length.out = 500)

# Generar gráficos por separado
for (i in seq_along(v1)) {
  
  # Calcular densidad para cada distribución F
  df <- data.frame(
    x = x,
    density = df(x, df1 = v1[i], df2 = v2[i])
  )
  
  # Crear gráfico con área sombreada para la región crítica
  p <- ggplot(df, aes(x = x, y = density)) +
    geom_line(color = "blue", size = 1) +
    geom_area(data = subset(df, x >= criticos[i]),
              aes(y = density), fill = "lightblue", alpha = 0.5) +
    geom_vline(xintercept = criticos[i], linetype = "dashed", color = "red") +
    labs(
      title = paste("Distribución F (v1 =", v1[i], ", v2 =", v2[i], ")"),
      subtitle = paste("Valor crítico al nivel =", round(criticos[i], 3)),
      x = "F",
      y = "Densidad de probabilidad"
    ) +
    theme_minimal()
  
  print(p)
}

5.3 Quarto


Quarto enables you to weave together content and executable code into a finished document. To learn more about Quarto see <https://quarto.org>.

## Running Code

When you click the **Render** button a document will be generated that includes both content and the output of embedded code. You can embed code like this:

::: {.cell layout-align="center"}

```{.r .cell-code}
1 + 1
[1] 2

:::

You can add options to executable code like this

[1] 4

The echo: false option disables the printing of code (only output is displayed). ````

Referencias

Müller, Kirill, y Hadley Wickham. 2025. «tibble: Simple Data Frames». https://doi.org/10.32614/CRAN.package.tibble.
Wickham, Hadley, Mara Averick, Jennifer Bryan, Winston Chang, Lucy D’Agostino McGowan, Romain François, Garrett Grolemund, et al. 2019. «Welcome to the tidyverse» 4: 1686. https://doi.org/10.21105/joss.01686.
Wickham, Hadley, Romain François, Lionel Henry, Kirill Müller, y Davis Vaughan. 2023. «dplyr: A Grammar of Data Manipulation». https://doi.org/10.32614/CRAN.package.dplyr.
Zhu, Hao. 2024. «kableExtra: Construct Complex Table with ’kable’ and Pipe Syntax». https://doi.org/10.32614/CRAN.package.kableExtra.