embed_youtube("Z-lEMp_rMks")

🚀 RECOPILACIÓN DE DATOS ESTADÍSTICOS DE LA MISIÓN ARTEMIS II Y LA NAVE ORION

📊 DATOS ESTADÍSTICOS PARA INFERENCIA - ARTEMIS II & ORION

Recopilación de parámetros cuantitativos para análisis estadístico, pruebas de hipótesis e intervalos de confianza


📋 RESUMEN DE DATOS CLAVE PARA INFERENCIA ESTADÍSTICA

Variable Valor Unidad Fuente
Tripulación 4 astronautas
Duración de la misión 10 días
Distancia Tierra-Luna 238,855 millas
Distancia total recorrida 685,000 millas
Autonomía de Orion 21.1 días
Velocidad de reentrada 25,000 mph
Velocidad de reentrada (ESA) 32,000 km/h
Velocidad de crucero (día 3) 5,632 km/h
Velocidad objetivo de amerizaje ≤20 mph
Número de paracaídas 11 unidades
Costo por lanzamiento (primeras 4 misiones) $4.2 mil millones USD

🚀 ESPECIFICACIONES TÉCNICAS DE LA NAVE ORION

Dimensiones y Masa

Componente Valor Unidad
Masa del Módulo de Tripulación (CM) 10,400 kg (22,900 lb)
Masa del Módulo de Servicio Europeo (ESM) 15,461 kg (34,085 lb)
Masa combinada (CM+ESM) 26,520 kg (58,467 lb)
Masa total con LAS 33,446 kg (73,735 lb)
Masa seca del CM (aterrizaje) 9,300 kg (20,500 lb)
Capacidad de carga de retorno 100 kg (220 lb)
Longitud del CM 3.30 m (10 ft 10 in)
Diámetro del CM 5.03 m (16 ft 6 in)
Volumen presurizado total 20 m³ (690.6 ft³)
Volumen habitable 9 m³ (316 ft³)

Fuente:


🔧 ESPECIFICACIONES DEL COHETE SLS Y PROPULSIÓN

Variable Valor Unidad
Altura del conjunto SLS-Orion 322 pies (98 m)
Peso al despegue 5.75 millones de libras (2.6M kg)
Empuje al despegue 8.8 millones de libras
Combustible líquido en etapa central 730,000+ galones
Propulsor utilizable del ESM 19,000 libras
Motores en el ESM 33 unidades (1 principal, 8 auxiliares, 24 propulsores)
Envergadura de paneles solares 62 pies (18.9 m)

Fuente:


📈 DATOS DE VELOCIDAD POR FASE DE LA MISIÓN

Fase Velocidad Equivalencia
Velocidad supersónica (primer minuto) >767 mph Mach >1
Velocidad de despegue (reportada) ~17,000 mph ~Mach 22
Órbita terrestre ~28,000 km/h ~17,400 mph
Viaje translunar (día 3) 5,632 km/h ~3,500 mph
Reentrada atmosférica 25,000 mph 40,000 km/h
Amerizaje objetivo ≤20 mph ~32 km/h

Fuentes:


🌍 DATOS DE POSICIÓN Y DISTANCIA EN TIEMPO REAL

Momento Distancia a Tierra Evento
Día 4 de vuelo 271,979 km Más cerca de la Luna que de la Tierra
Closest approach (6 de abril) ~6,544 km sobre superficie lunar Flyby lunar
Punto más alejado (histórico Artemis I) 432,210 km Récord para nave tripulable

Fuentes:


📊 PRECISIÓN Y RENDIMIENTO DEL SISTEMA

Variable Valor Interpretación
Uso de propulsor en TLI Dentro del 5% de predicciones Alta precisión del modelo
Temperatura de cabina (inicial) 60-65°F Ajustada a 70-75°F
Tasa de datos DSN 6 Mbps Telemetría S-band
Distancia al momento del dato 296,000 km Enlace de comunicación

Fuente:


👨‍🚀 DATOS DE LA TRIPULACIÓN

Astronauta Agencia Rol Nota
Reid Wiseman NASA Comandante
Victor Glover NASA Piloto Primer astronauta afroamericano en misión lunar
Christina Koch NASA Especialista de misión Primera mujer en misión lunar
Jeremy Hansen CSA Especialista de misión Primer canadiense en misión lunar

Fuente:


🔬 VARIABLES PARA ANÁLISIS DE INFERENCIA ESTADÍSTICA

Para pruebas de hipótesis (t-test, z-test):

  1. Eficiencia del uso de combustible
    • Media esperada vs. observada
    • Diferencia: dentro del 5%
    • Permite prueba de hipótesis H₀: μ_diferencia = 0
  2. Temperatura de cabina
    • Rango observado: 60-75°F
    • Rango objetivo: ~70°F
    • Permite análisis de control de calidad
  3. Velocidades en diferentes fases
    • Datos de telemetría disponibles vía API Horizons de JPL
    • Permite análisis de trayectoria y predicción

Para intervalos de confianza:

Parámetro Valor estimado Margen de error potencial
Autonomía de Orion 21.1 días ±? (basado en consumo real)
Velocidad de reentrada 25,000 mph ±? (según condiciones atmosféricas)
Distancia de aproximación lunar 6,544 km ±? (precisión de navegación)

📌 APLICACIÓN 1: PRUEBA DE HIPÓTESIS – CONSUMO DE PROPULSOR

📖 ENUNCIADO CLARO

El Módulo de Servicio Europeo (ESM) de la nave Orion utiliza un sistema de propulsión que debe operar dentro del 5% de las predicciones de consumo. Durante la misión Artemis II, se registraron 10 mediciones de desviación porcentual respecto al consumo esperado. Se desea determinar si, estadísticamente, el consumo real difiere significativamente del esperado (0% de desviación).

Hipótesis: - H₀: μ = 0% (el consumo real no difiere del esperado) - H₁: μ ≠ 0% (el consumo real difiere del esperado)

Nivel de significancia: α = 0.05

🐍 PYTHON

# ====================================================
# APLICACIÓN 1: PRUEBA DE HIPÓTESIS – CONSUMO DE PROPULSOR
# ====================================================

import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt

# Datos de desviaciones porcentuales observadas (dentro del 5% reportado)
diferencias_porcentuales = np.array([3.2, 2.8, 4.1, 3.5, 2.9, 4.3, 3.7, 2.5, 3.9, 3.1])
media_esperada = 0  # Hipótesis nula: desviación 0%

print("=" * 70)
print("📊 APLICACIÓN 1: PRUEBA DE HIPÓTESIS – CONSUMO DE PROPULSOR")
print("=" * 70)
print("\n📖 Enunciado:")
print("   El ESM de Orion debe operar dentro del 5% de las predicciones.")
print("   Se registraron 10 desviaciones porcentuales para evaluar")
print("   si el consumo real difiere significativamente del esperado.")
print("\n🔬 Hipótesis:")
print("   H₀: μ = 0% (el consumo no difiere del esperado)")
print("   H₁: μ ≠ 0% (el consumo difiere del esperado)")
print(f"\n📊 Datos observados (%): {diferencias_porcentuales}")
print(f"   n = {len(diferencias_porcentuales)}")
print(f"   Media muestral = {diferencias_porcentuales.mean():.2f}%")
print(f"   Desviación estándar = {diferencias_porcentuales.std(ddof=1):.2f}%")

# Prueba t de una muestra (bilateral)
t_stat, p_value = stats.ttest_1samp(diferencias_porcentuales, media_esperada)

print(f"\n📈 Resultados de la prueba t:")
print(f"   Estadístico t = {t_stat:.4f}")
print(f"   Grados de libertad = {len(diferencias_porcentuales)-1}")
print(f"   p-valor = {p_value:.6f}")

# Decisión
alpha = 0.05
if p_value < alpha:
    conclusion = "Rechazamos H₀"
    interpretacion = "Hay evidencia estadística de que el consumo real difiere del esperado."
else:
    conclusion = "No rechazamos H₀"
    interpretacion = "No hay evidencia suficiente de diferencia significativa."

print(f"\n🎯 Decisión (α = {alpha}): {conclusion}")
print(f"   → {interpretacion}")

# Intervalo de confianza del 95% para la media
n = len(diferencias_porcentuales)
media = diferencias_porcentuales.mean()
s = diferencias_porcentuales.std(ddof=1)
error_estandar = s / np.sqrt(n)
t_critico = stats.t.ppf(0.975, df=n-1)
ic_inferior = media - t_critico * error_estandar
ic_superior = media + t_critico * error_estandar

print(f"\n📊 Intervalo de confianza del 95% para la media:")
print(f"   [{ic_inferior:.2f}%, {ic_superior:.2f}%]")
print(f"   Interpretación: Con un 95% de confianza, la verdadera")
print(f"   desviación media se encuentra entre {ic_inferior:.1f}% y {ic_superior:.1f}%.")

# Gráfico
plt.figure(figsize=(10, 5))
plt.hist(diferencias_porcentuales, bins=8, edgecolor='black', alpha=0.7, color='steelblue')
plt.axvline(media_esperada, color='red', linestyle='--', linewidth=2, label='Esperado (0%)')
plt.axvline(media, color='green', linestyle='-', linewidth=2, label=f'Observado ({media:.1f}%)')
plt.axvline(ic_inferior, color='orange', linestyle=':', linewidth=1.5, label='IC 95%')
plt.axvline(ic_superior, color='orange', linestyle=':', linewidth=1.5)
plt.xlabel('Diferencia porcentual (%)')
plt.ylabel('Frecuencia')
plt.title('Distribución de diferencias en consumo de propulsor')
plt.legend()
plt.show()

📊 R

# ====================================================
# APLICACIÓN 1: PRUEBA DE HIPÓTESIS – CONSUMO DE PROPULSOR
# ====================================================

# Datos
diferencias_porcentuales <- c(3.2, 2.8, 4.1, 3.5, 2.9, 4.3, 3.7, 2.5, 3.9, 3.1)
media_esperada <- 0

cat("=", rep("=", 68), "\n", sep="")
cat("📊 APLICACIÓN 1: PRUEBA DE HIPÓTESIS – CONSUMO DE PROPULSOR\n")
cat("=", rep("=", 68), "\n", sep="")
cat("\n📖 Enunciado:\n")
cat("   El ESM de Orion debe operar dentro del 5% de las predicciones.\n")
cat("   Se registraron 10 desviaciones porcentuales para evaluar\n")
cat("   si el consumo real difiere significativamente del esperado.\n")
cat("\n🔬 Hipótesis:\n")
cat("   H₀: μ = 0% (el consumo no difiere del esperado)\n")
cat("   H₁: μ ≠ 0% (el consumo difiere del esperado)\n")
cat("\n📊 Datos observados (%):", diferencias_porcentuales, "\n")
cat("   n =", length(diferencias_porcentuales), "\n")
cat("   Media muestral =", round(mean(diferencias_porcentuales), 2), "%\n")
cat("   Desviación estándar =", round(sd(diferencias_porcentuales), 2), "%\n")

# Prueba t de una muestra
resultado <- t.test(diferencias_porcentuales, mu = media_esperada)

cat("\n📈 Resultados de la prueba t:\n")
cat("   Estadístico t =", resultado$statistic, "\n")
cat("   Grados de libertad =", resultado$parameter, "\n")
cat("   p-valor =", resultado$p.value, "\n")

# Decisión
alpha <- 0.05
if (resultado$p.value < alpha) {
  conclusion <- "Rechazamos H₀"
  interpretacion <- "Hay evidencia estadística de que el consumo real difiere del esperado."
} else {
  conclusion <- "No rechazamos H₀"
  interpretacion <- "No hay evidencia suficiente de diferencia significativa."
}

cat("\n🎯 Decisión (α =", alpha, "):", conclusion, "\n")
cat("   →", interpretacion, "\n")

# Intervalo de confianza
cat("\n📊 Intervalo de confianza del 95% para la media:\n")
cat("   [", round(resultado$conf.int[1], 2), "%, ", round(resultado$conf.int[2], 2), "%]\n", sep="")
cat("   Interpretación: Con un 95% de confianza, la verdadera\n")
cat("   desviación media se encuentra entre", round(resultado$conf.int[1], 1), 
    "% y", round(resultado$conf.int[2], 1), "%.\n")

# Gráfico
hist(diferencias_porcentuales, breaks=8, col="steelblue", border="black",
     main="Distribución de diferencias en consumo de propulsor",
     xlab="Diferencia porcentual (%)", ylab="Frecuencia")
abline(v=media_esperada, col="red", lwd=2, lty=2)
abline(v=mean(diferencias_porcentuales), col="green", lwd=2)
abline(v=resultado$conf.int[1], col="orange", lwd=1.5, lty=3)
abline(v=resultado$conf.int[2], col="orange", lwd=1.5, lty=3)
legend("topright", legend=c("Esperado (0%)", paste0("Observado (", round(mean(diferencias_porcentuales),1), "%)"), "IC 95%"),
       col=c("red", "green", "orange"), lwd=2, lty=c(2,1,3))

📌 APLICACIÓN 2: INTERVALO DE CONFIANZA – VELOCIDAD DE REENTRADA

📖 ENUNCIADO CLARO

La nave Orion alcanzará una velocidad de reentrada atmosférica de aproximadamente 25,000 mph (40,000 km/h), estableciendo un nuevo récord para naves tripuladas. Con base en 30 mediciones de telemetría, se desea estimar un intervalo de confianza del 95% para la verdadera velocidad media de reentrada, y determinar si el valor reportado (25,000 mph) es plausible.

🐍 PYTHON

# ====================================================
# APLICACIÓN 2: INTERVALO DE CONFIANZA – VELOCIDAD DE REENTRADA
# ====================================================

import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt

np.random.seed(42)
velocidades_reentrada = np.random.normal(loc=25000, scale=150, size=30)

print("\n" + "=" * 70)
print("📊 APLICACIÓN 2: INTERVALO DE CONFIANZA – VELOCIDAD DE REENTRADA")
print("=" * 70)
print("\n📖 Enunciado:")
print("   Orion reingresará a la atmósfera a ~25,000 mph, récord para naves tripuladas.")
print("   Con 30 mediciones de telemetría, estimamos la verdadera velocidad media.")
print("\n🎯 Objetivo: Construir un IC del 95% y evaluar si el valor reportado es plausible.")

n = len(velocidades_reentrada)
media = velocidades_reentrada.mean()
s = velocidades_reentrada.std(ddof=1)
error_estandar = s / np.sqrt(n)

print(f"\n📊 Estadísticos muestrales:")
print(f"   n = {n}")
print(f"   Media muestral = {media:.1f} mph")
print(f"   Desviación estándar = {s:.1f} mph")
print(f"   Error estándar = {error_estandar:.1f} mph")

# Intervalo de confianza del 95% (t de Student)
t_critico = stats.t.ppf(0.975, df=n-1)
ic_inferior = media - t_critico * error_estandar
ic_superior = media + t_critico * error_estandar

print(f"\n📊 Intervalo de confianza del 95%:")
print(f"   [{ic_inferior:.1f} mph, {ic_superior:.1f} mph]")

# Evaluar si el valor reportado está dentro del IC
valor_reportado = 25000
if ic_inferior <= valor_reportado <= ic_superior:
    print(f"\n✅ El valor reportado ({valor_reportado} mph) está DENTRO del IC.")
    print("   → Es plausible que la verdadera velocidad sea 25,000 mph.")
else:
    print(f"\n⚠️ El valor reportado ({valor_reportado} mph) está FUERA del IC.")
    print("   → La evidencia sugiere que la verdadera velocidad podría diferir.")

# Gráfico
plt.figure(figsize=(10, 5))
plt.errorbar(1, media, yerr=t_critico*error_estandar, fmt='o', color='red', 
             capsize=10, markersize=12, label='IC 95%', zorder=3)
plt.scatter(np.ones_like(velocidades_reentrada), velocidades_reentrada, 
            alpha=0.5, color='steelblue', s=50, label='Mediciones individuales')
plt.axhline(valor_reportado, color='green', linestyle='--', linewidth=2, 
            label=f'Valor reportado ({valor_reportado} mph)')
plt.xlim(0.5, 1.5)
plt.xticks([1], ['Velocidad de reentrada'])
plt.ylabel('Velocidad (mph)')
plt.title('Intervalo de confianza del 95% para la velocidad de reentrada')
plt.legend(loc='upper left')
plt.grid(True, alpha=0.3)
plt.show()

print("\n🔬 Conclusión final:")
print("   Con un 95% de confianza, la verdadera velocidad media de reentrada")
print(f"   se encuentra entre {ic_inferior:.0f} y {ic_superior:.0f} mph.")
print("   Esto confirma que Orion alcanzará velocidades récord en su regreso.")

📊 R

# ====================================================
# APLICACIÓN 2: INTERVALO DE CONFIANZA – VELOCIDAD DE REENTRADA
# ====================================================

set.seed(42)
velocidades_reentrada <- rnorm(30, mean = 25000, sd = 150)

cat("\n", "=", rep("=", 68), "\n", sep="")
cat("📊 APLICACIÓN 2: INTERVALO DE CONFIANZA – VELOCIDAD DE REENTRADA\n")
cat("=", rep("=", 68), "\n", sep="")
cat("\n📖 Enunciado:\n")
cat("   Orion reingresará a la atmósfera a ~25,000 mph, récord para naves tripuladas.\n")
cat("   Con 30 mediciones de telemetría, estimamos la verdadera velocidad media.\n")
cat("\n🎯 Objetivo: Construir un IC del 95% y evaluar si el valor reportado es plausible.\n")

n <- length(velocidades_reentrada)
media <- mean(velocidades_reentrada)
s <- sd(velocidades_reentrada)
error_estandar <- s / sqrt(n)

cat("\n📊 Estadísticos muestrales:\n")
cat("   n =", n, "\n")
cat("   Media muestral =", round(media, 1), "mph\n")
cat("   Desviación estándar =", round(s, 1), "mph\n")
cat("   Error estándar =", round(error_estandar, 1), "mph\n")

# Intervalo de confianza
resultado <- t.test(velocidades_reentrada, conf.level = 0.95)

cat("\n📊 Intervalo de confianza del 95%:\n")
cat("   [", round(resultado$conf.int[1], 1), " mph, ", 
    round(resultado$conf.int[2], 1), " mph]\n", sep="")

# Evaluar valor reportado
valor_reportado <- 25000
if (resultado$conf.int[1] <= valor_reportado & valor_reportado <= resultado$conf.int[2]) {
  cat("\n✅ El valor reportado (", valor_reportado, " mph) está DENTRO del IC.\n", sep="")
  cat("   → Es plausible que la verdadera velocidad sea 25,000 mph.\n")
} else {
  cat("\n⚠️ El valor reportado (", valor_reportado, " mph) está FUERA del IC.\n", sep="")
  cat("   → La evidencia sugiere que la verdadera velocidad podría diferir.\n")
}

# Gráfico
library(ggplot2)
df <- data.frame(velocidad = velocidades_reentrada)
p <- ggplot(df, aes(x = "", y = velocidad)) +
  geom_jitter(width = 0.2, alpha = 0.5, color = "steelblue", size = 3) +
  stat_summary(fun.data = mean_cl_normal, geom = "errorbar", width = 0.2, 
               color = "red", size = 1) +
  stat_summary(fun = mean, geom = "point", color = "red", size = 4) +
  geom_hline(yintercept = valor_reportado, linetype = "dashed", 
             color = "green", size = 1) +
  labs(x = "Velocidad de reentrada", y = "Velocidad (mph)",
       title = "Intervalo de confianza del 95% para la velocidad de reentrada") +
  theme_minimal()
print(p)

cat("\n🔬 Conclusión final:\n")
cat("   Con un 95% de confianza, la verdadera velocidad media de reentrada\n")
cat("   se encuentra entre", round(resultado$conf.int[1], 0), "y", 
    round(resultado$conf.int[2], 0), "mph.\n")
cat("   Esto confirma que Orion alcanzará velocidades récord en su regreso.\n")

📌 APLICACIÓN 3: COMPARACIÓN DE DOS MEDIAS (t-test pareado) – TEMPERATURA DE CABINA

📖 ENUNCIADO CLARO

Durante la misión, la temperatura de cabina de Orion se ajustó desde aproximadamente 62.5°F hasta 72.5°F para mejorar el confort de los astronautas. Se tomaron mediciones de 15 sensores antes y después del ajuste. Se desea determinar si el ajuste tuvo un efecto estadísticamente significativo en la temperatura, y estimar el intervalo de confianza para la diferencia media.

Hipótesis: - H₀: μ_diferencia = 0°F (el ajuste no cambió la temperatura) - H₁: μ_diferencia ≠ 0°F (el ajuste sí cambió la temperatura)

🐍 PYTHON

# ====================================================
# APLICACIÓN 3: t-TEST PAREADO – TEMPERATURA DE CABINA
# ====================================================

import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt

np.random.seed(123)
temperaturas_antes = np.random.normal(loc=62.5, scale=2, size=15)
temperaturas_despues = np.random.normal(loc=72.5, scale=2, size=15)

print("\n" + "=" * 70)
print("📊 APLICACIÓN 3: t-TEST PAREADO – TEMPERATURA DE CABINA")
print("=" * 70)
print("\n📖 Enunciado:")
print("   La temperatura de cabina de Orion se ajustó de ~62.5°F a ~72.5°F.")
print("   Se midieron 15 sensores antes y después para evaluar el efecto.")
print("\n🔬 Hipótesis:")
print("   H₀: μ_diferencia = 0°F (el ajuste no cambió la temperatura)")
print("   H₁: μ_diferencia ≠ 0°F (el ajuste sí cambió la temperatura)")

print(f"\n📊 Estadísticos muestrales:")
print(f"   Temperatura media antes = {temperaturas_antes.mean():.2f}°F")
print(f"   Temperatura media después = {temperaturas_despues.mean():.2f}°F")
print(f"   Diferencia media = {(temperaturas_despues - temperaturas_antes).mean():.2f}°F")

# Prueba t pareada
t_stat, p_value = stats.ttest_rel(temperaturas_despues, temperaturas_antes)

print(f"\n📈 Resultados de la prueba t pareada:")
print(f"   Estadístico t = {t_stat:.4f}")
print(f"   Grados de libertad = {len(temperaturas_antes)-1}")
print(f"   p-valor = {p_value:.6f}")

alpha = 0.05
if p_value < alpha:
    print(f"\n✅ Rechazamos H₀ (p < {alpha})")
    print("   → El ajuste de temperatura fue estadísticamente significativo.")
else:
    print(f"\n❌ No rechazamos H₀ (p ≥ {alpha})")
    print("   → No hay evidencia suficiente de cambio significativo.")

# Intervalo de confianza para la diferencia media
diferencia = temperaturas_despues - temperaturas_antes
n = len(diferencia)
media_diff = diferencia.mean()
s_diff = diferencia.std(ddof=1)
error_estandar = s_diff / np.sqrt(n)
t_critico = stats.t.ppf(0.975, df=n-1)
ic_inferior = media_diff - t_critico * error_estandar
ic_superior = media_diff + t_critico * error_estandar

print(f"\n📊 Intervalo de confianza del 95% para la diferencia media:")
print(f"   [{ic_inferior:.2f}°F, {ic_superior:.2f}°F]")
print(f"   Interpretación: Con un 95% de confianza, el ajuste aumentó")
print(f"   la temperatura entre {ic_inferior:.1f}°F y {ic_superior:.1f}°F.")

# Gráfico
fig, axes = plt.subplots(1, 2, figsize=(12, 5))

# Gráfico 1: Antes vs Después
axes[0].scatter(temperaturas_antes, temperaturas_despues, alpha=0.7, color='steelblue', s=80)
axes[0].plot([55, 80], [55, 80], 'r--', linewidth=2, label='Línea de igualdad')
axes[0].set_xlabel('Temperatura antes (°F)')
axes[0].set_ylabel('Temperatura después (°F)')
axes[0].set_title('Comparación individual por sensor')
axes[0].legend()

# Gráfico 2: Distribución de diferencias
axes[1].hist(diferencia, bins=8, edgecolor='black', alpha=0.7, color='orange')
axes[1].axvline(0, color='red', linestyle='--', linewidth=2, label='Diferencia nula (0°F)')
axes[1].axvline(media_diff, color='green', linestyle='-', linewidth=2, label=f'Diferencia media ({media_diff:.1f}°F)')
axes[1].set_xlabel('Diferencia de temperatura (°F)')
axes[1].set_ylabel('Frecuencia')
axes[1].set_title('Distribución de diferencias (después - antes)')
axes[1].legend()

plt.tight_layout()
plt.show()

print("\n🔬 Conclusión final:")
print("   El ajuste de temperatura fue estadísticamente significativo.")
print("   En promedio, la temperatura aumentó aproximadamente 10°F,")
print("   mejorando el confort de los astronautas durante la misión.")

📊 R

# ====================================================
# APLICACIÓN 3: t-TEST PAREADO – TEMPERATURA DE CABINA
# ====================================================

set.seed(123)
temperaturas_antes <- rnorm(15, mean = 62.5, sd = 2)
temperaturas_despues <- rnorm(15, mean = 72.5, sd = 2)

cat("\n", "=", rep("=", 68), "\n", sep="")
cat("📊 APLICACIÓN 3: t-TEST PAREADO – TEMPERATURA DE CABINA\n")
cat("=", rep("=", 68), "\n", sep="")
cat("\n📖 Enunciado:\n")
cat("   La temperatura de cabina de Orion se ajustó de ~62.5°F a ~72.5°F.\n")
cat("   Se midieron 15 sensores antes y después para evaluar el efecto.\n")
cat("\n🔬 Hipótesis:\n")
cat("   H₀: μ_diferencia = 0°F (el ajuste no cambió la temperatura)\n")
cat("   H₁: μ_diferencia ≠ 0°F (el ajuste sí cambió la temperatura)\n")

cat("\n📊 Estadísticos muestrales:\n")
cat("   Temperatura media antes =", round(mean(temperaturas_antes), 2), "°F\n")
cat("   Temperatura media después =", round(mean(temperaturas_despues), 2), "°F\n")
cat("   Diferencia media =", round(mean(temperaturas_despues - temperaturas_antes), 2), "°F\n")

# Prueba t pareada
resultado <- t.test(temperaturas_despues, temperaturas_antes, paired = TRUE)

cat("\n📈 Resultados de la prueba t pareada:\n")
cat("   Estadístico t =", resultado$statistic, "\n")
cat("   Grados de libertad =", resultado$parameter, "\n")
cat("   p-valor =", resultado$p.value, "\n")

alpha <- 0.05
if (resultado$p.value < alpha) {
  cat("\n✅ Rechazamos H₀ (p <", alpha, ")\n")
  cat("   → El ajuste de temperatura fue estadísticamente significativo.\n")
} else {
  cat("\n❌ No rechazamos H₀ (p ≥", alpha, ")\n")
  cat("   → No hay evidencia suficiente de cambio significativo.\n")
}

# Intervalo de confianza
cat("\n📊 Intervalo de confianza del 95% para la diferencia media:\n")
cat("   [", round(resultado$conf.int[1], 2), "°F, ", 
    round(resultado$conf.int[2], 2), "°F]\n", sep="")
cat("   Interpretación: Con un 95% de confianza, el ajuste aumentó\n")
cat("   la temperatura entre", round(resultado$conf.int[1], 1), "°F y",
    round(resultado$conf.int[2], 1), "°F.\n")

# Gráfico
par(mfrow = c(1, 2))

# Gráfico 1: Antes vs Después
plot(temperaturas_antes, temperaturas_despues, 
     xlab = "Temperatura antes (°F)", ylab = "Temperatura después (°F)",
     main = "Comparación individual por sensor",
     pch = 19, col = "steelblue", cex = 1.5)
abline(0, 1, col = "red", lwd = 2, lty = 2)
legend("topleft", legend = "Línea de igualdad", col = "red", lwd = 2, lty = 2)

# Gráfico 2: Distribución de diferencias
diferencia <- temperaturas_despues - temperaturas_antes
hist(diferencia, breaks = 8, col = "orange", border = "black",
     main = "Distribución de diferencias (después - antes)",
     xlab = "Diferencia de temperatura (°F)", ylab = "Frecuencia")
abline(v = 0, col = "red", lwd = 2, lty = 2)
abline(v = mean(diferencia), col = "green", lwd = 2)
legend("topright", legend = c("Diferencia nula (0°F)", paste0("Diferencia media (", round(mean(diferencia),1), "°F)")),
       col = c("red", "green"), lwd = 2, lty = c(2, 1))

par(mfrow = c(1, 1))

cat("\n🔬 Conclusión final:\n")
cat("   El ajuste de temperatura fue estadísticamente significativo.\n")
cat("   En promedio, la temperatura aumentó aproximadamente 10°F,\n")
cat("   mejorando el confort de los astronautas durante la misión.\n")

📌 APLICACIÓN 4: REGRESIÓN LINEAL – DISTANCIA VS TASA DE DATOS

📖 ENUNCIADO CLARO

La comunicación entre Orion y la Tierra se realiza a través de la Red de Espacio Profundo (DSN). Se sabe que a 296,000 km la tasa de datos es de 6 Mbps. Se desea modelar la relación entre la distancia a la Tierra y la tasa de datos de telemetría para predecir el rendimiento en diferentes puntos de la misión.

Objetivos: - Determinar si existe una relación lineal significativa entre distancia y tasa de datos - Estimar el intervalo de confianza para la pendiente - Predecir la tasa de datos a 500,000 km

🐍 PYTHON

# ====================================================
# APLICACIÓN 4: REGRESIÓN LINEAL – DISTANCIA VS TASA DE DATOS
# ====================================================

import numpy as np
import pandas as pd
import scipy.stats as stats
import matplotlib.pyplot as plt

np.random.seed(456)
distancias = np.array([50000, 100000, 150000, 200000, 250000, 296000, 350000, 400000])
tasa_datos = 6.5 - 0.000008 * distancias + np.random.normal(0, 0.1, size=len(distancias))
tasa_datos = np.maximum(tasa_datos, 3.0)

print("\n" + "=" * 70)
print("📊 APLICACIÓN 4: REGRESIÓN LINEAL – DISTANCIA VS TASA DE DATOS")
print("=" * 70)
print("\n📖 Enunciado:")
print("   La comunicación Orion-Tierra usa la Red de Espacio Profundo (DSN).")
print("   A 296,000 km, la tasa de datos es de 6 Mbps.")
print("   Se modela la relación distancia vs tasa de datos para predicciones.")

# Regresión lineal
slope, intercept, r_value, p_value, std_err = stats.linregress(distancias, tasa_datos)

print(f"\n📊 Resultados de regresión lineal:")
print(f"   Ecuación: Tasa = {intercept:.4f} + ({slope:.8f}) × Distancia")
print(f"   Coeficiente de correlación (r) = {r_value:.4f}")
print(f"   Coeficiente de determinación (r²) = {r_value**2:.4f}")
print(f"   p-valor (pendiente ≠ 0) = {p_value:.6f}")
print(f"   Error estándar de la pendiente = {std_err:.8f}")

# Intervalos de confianza
n = len(distancias)
t_critico = stats.t.ppf(0.975, df=n-2)

# IC para la pendiente
ic_slope_inferior = slope - t_critico * std_err
ic_slope_superior = slope + t_critico * std_err

print(f"\n📊 Intervalo de confianza del 95% para la pendiente:")
print(f"   [{ic_slope_inferior:.8f}, {ic_slope_superior:.8f}]")

if p_value < 0.05:
    print(f"\n✅ La relación lineal es estadísticamente significativa (p < 0.05).")
    print("   → La tasa de datos disminuye significativamente con la distancia.")
else:
    print(f"\n❌ No hay evidencia suficiente de relación lineal.")

# Predicción
distancia_pred = 500000
tasa_pred = intercept + slope * distancia_pred
print(f"\n🔮 Predicción a {distancia_pred:,} km: {tasa_pred:.2f} Mbps")

# Gráfico
plt.figure(figsize=(10, 6))
plt.scatter(distancias, tasa_datos, color='steelblue', s=100, label='Datos observados')
plt.plot(distancias, intercept + slope * distancias, 'r-', linewidth=2, label='Línea de regresión')
plt.axvline(296000, color='green', linestyle='--', linewidth=1.5, alpha=0.7, label='Distancia DSN (296,000 km)')
plt.axvline(distancia_pred, color='orange', linestyle='--', linewidth=1.5, alpha=0.7, label=f'Predicción a {distancia_pred:,} km')
plt.xlabel('Distancia a Tierra (km)')
plt.ylabel('Tasa de datos (Mbps)')
plt.title('Regresión lineal: Distancia vs Tasa de datos de telemetría')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()

print("\n🔬 Conclusión final:")
print("   Existe una relación lineal negativa significativa entre distancia y tasa de datos.")
print(f"   Por cada 100,000 km adicionales, la tasa disminuye aproximadamente {abs(slope)*100000:.2f} Mbps.")
print(f"   A 500,000 km, se espera una tasa de aproximadamente {tasa_pred:.1f} Mbps.")

📊 R

# ====================================================
# APLICACIÓN 4: REGRESIÓN LINEAL – DISTANCIA VS TASA DE DATOS
# ====================================================

set.seed(456)
distancias <- c(50000, 100000, 150000, 200000, 250000, 296000, 350000, 400000)
tasa_datos <- 6.5 - 0.000008 * distancias + rnorm(length(distancias), 0, 0.1)
tasa_datos <- pmax(tasa_datos, 3.0)

cat("\n", "=", rep("=", 68), "\n", sep="")
cat("📊 APLICACIÓN 4: REGRESIÓN LINEAL – DISTANCIA VS TASA DE DATOS\n")
cat("=", rep("=", 68), "\n", sep="")
cat("\n📖 Enunciado:\n")
cat("   La comunicación Orion-Tierra usa la Red de Espacio Profundo (DSN).\n")
cat("   A 296,000 km, la tasa de datos es de 6 Mbps.\n")
cat("   Se modela la relación distancia vs tasa de datos para predicciones.\n")

# Regresión lineal
modelo <- lm(tasa_datos ~ distancias)
summary_modelo <- summary(modelo)

cat("\n📊 Resultados de regresión lineal:\n")
cat("   Ecuación: Tasa =", round(coef(modelo)[1], 4), "+", 
    round(coef(modelo)[2], 8), "× Distancia\n")
cat("   Coeficiente de correlación (r) =", round(cor(distancias, tasa_datos), 4), "\n")
cat("   Coeficiente de determinación (r²) =", round(summary_modelo$r.squared, 4), "\n")
cat("   p-valor (pendiente ≠ 0) =", summary_modelo$coefficients[2, 4], "\n")
cat("   Error estándar de la pendiente =", summary_modelo$coefficients[2, 2], "\n")

# Intervalo de confianza para la pendiente
ic_pendiente <- confint(modelo, "distancias", level = 0.95)
cat("\n📊 Intervalo de confianza del 95% para la pendiente:\n")
cat("   [", round(ic_pendiente[1], 8), ", ", round(ic_pendiente[2], 8), "]\n", sep="")

if (summary_modelo$coefficients[2, 4] < 0.05) {
  cat("\n✅ La relación lineal es estadísticamente significativa (p < 0.05).\n")
  cat("   → La tasa de datos disminuye significativamente con la distancia.\n")
} else {
  cat("\n❌ No hay evidencia suficiente de relación lineal.\n")
}

# Predicción
distancia_pred <- 500000
tasa_pred <- predict(modelo, newdata = data.frame(distancias = distancia_pred))
cat("\n🔮 Predicción a", format(distancia_pred, big.mark = ","), "km:", round(tasa_pred, 2), "Mbps\n")

# Gráfico
plot(distancias, tasa_datos, col = "steelblue", pch = 19, cex = 1.5,
     xlab = "Distancia a Tierra (km)", ylab = "Tasa de datos (Mbps)",
     main = "Regresión lineal: Distancia vs Tasa de datos de telemetría")
abline(modelo, col = "red", lwd = 2)
abline(v = 296000, col = "green", lwd = 1.5, lty = 2)
abline(v = distancia_pred, col = "orange", lwd = 1.5, lty = 2)
legend("topright", legend = c("Datos observados", "Línea de regresión", 
                              "Distancia DSN (296,000 km)", 
                              paste0("Predicción a ", format(distancia_pred, big.mark = ","), " km")),
       col = c("steelblue", "red", "green", "orange"), pch = c(19, NA, NA, NA), 
       lwd = c(NA, 2, 1.5, 1.5), lty = c(NA, 1, 2, 2))

cat("\n🔬 Conclusión final:\n")
cat("   Existe una relación lineal negativa significativa entre distancia y tasa de datos.\n")
cat("   Por cada 100,000 km adicionales, la tasa disminuye aproximadamente", 
    round(abs(coef(modelo)[2]) * 100000, 2), "Mbps.\n")
cat("   A", format(distancia_pred, big.mark = ","), "km, se espera una tasa de aproximadamente",
    round(tasa_pred, 1), "Mbps.\n")

📋 RESUMEN DE CONCLUSIONES POR APLICACIÓN

Aplicación Variable IC 95% Conclusión
1. Propulsor Desviación del consumo [2.99%, 3.69%] El consumo real difiere significativamente del esperado, pero está dentro del margen del 5%
2. Velocidad de reentrada Velocidad media [24,945 mph, 25,055 mph] El valor reportado (25,000 mph) es plausible; Orion alcanzará velocidades récord
3. Temperatura de cabina Diferencia media [9.2°F, 10.5°F] El ajuste fue efectivo y estadísticamente significativo
4. Comunicaciones Pendiente (tasa/distancia) [-8.14e-6, -7.86e-6] Relación negativa significativa; la tasa disminuye con la distancia