Intervalos de confianza en Python con SciPy

Resumen

Calcular intervalos de confianza en Python te permite estimar, con un porcentaje de certeza, entre qué valores se mueve una variable. Esta guía práctica te muestra cómo hacerlo con pandas, NumPy, Seaborn y SciPy, ideal si ya dominas la teoría y quieres llevarla al código.

La idea es simple: en vez de buscar valores en la tabla Z a mano, dejas que Python haga el trabajo y, además, visualizas el resultado en un gráfico que cualquier persona del equipo pueda leer.

¿Qué librerías necesitas para calcular intervalos de confianza?

Antes de tocar datos, importa el set mínimo de herramientas. Aquí entra una pieza nueva que probablemente no habías usado en ejercicios anteriores: scipy.stats, la librería que se encarga de los métodos estadísticos.

  • pandas para manejar la tabla de datos.
  • NumPy para generar números aleatorios y calcular la media.
  • Seaborn para visualizar la relación entre variables.
  • scipy.stats para calcular el intervalo de confianza [0:55].

python import pandas as pd import numpy as np import seaborn as sns import scipy.stats

¿Para qué sirve scipy.stats? Es el módulo de SciPy que reúne funciones estadísticas como medias, desviaciones e intervalos de confianza. Lo usas cuando necesitas cálculos que van más allá de lo que ofrece NumPy básico.

¿Cómo generar datos simulados con NumPy?

En lugar de importar un CSV o leer una URL, vas a crear tu propia distribución. Esto te da control total sobre el ejercicio y te ayuda a entender qué hace cada parámetro.

Fijamos una semilla aleatoria con np.random.seed(20) para que los resultados sean reproducibles. Después generas dos variables:

  • Variable 1, días de vacaciones: enteros aleatorios entre 0 y 10, con np.random.randint(0, 10, 10) [2:10].
  • Variable 2, dinero gastado: la variable 1 más un valor aleatorio normal entre 0 y 1, donde 0 significa que no gastó nada y 1 que gastó el 100% de su dinero.

La lógica narrativa es clara: 0 días equivale a no irse de vacaciones y 10 a unas vacaciones largas. Al correr variable1 ves números como 3, 9, 4, 6, y al correr variable2 aparecen valores que llegan hasta 9.55 porque suman ambas distribuciones.

¿Cómo visualizar el intervalo de confianza con Seaborn?

Antes de calcular números fríos, conviene mirar el gráfico. Seaborn incluye regplot, una función de regresión que dibuja los puntos de dispersión y, encima, una banda con el intervalo de confianza que tú definas.

python sns.regplot(x=variable1, y=variable2, ci=80)

El parámetro ci=80 indica un intervalo de confianza del 80%. El gráfico muestra los 10 puntos aleatorios y una franja más suave alrededor de la línea de regresión: esa franja es el rango donde, con 80% de confianza, se ubica la relación entre días de vacaciones y dinero gastado [3:30].

El resultado confirma una correlación positiva: a más días de vacaciones, más dinero gastado.

¿Qué significa el intervalo de confianza en un gráfico de regresión? Es la banda sombreada alrededor de la línea. Indica el rango donde, con cierto porcentaje de seguridad, caería la verdadera relación entre las variables si repitieras el experimento.

¿Cómo construir un DataFrame a partir de dos variables?

Para analizar los datos como tabla, primero unes ambas variables con zip dentro de una tupla, y luego conviertes esa lista en un DataFrame con pandas.

python tupla = list(zip(variable1, variable2)) tabla = pd.DataFrame(tupla, columns=['dias_vacaciones', 'dinero_gastado'])

Obtienes una tabla con 10 registros (del índice 0 al 9) y dos columnas listas para análisis [4:35]. Este paso es clave porque la función de SciPy que calcula el intervalo trabaja mejor sobre estructuras tabulares.

¿Cómo calcular el intervalo de confianza al 95% con scipy.stats?

Aquí es donde entra la fórmula que vas a reutilizar siempre. La función scipy.stats.t.interval recibe cuatro argumentos: el nivel de confianza, los grados de libertad, la media y la escala (error estándar).

python scipy.stats.t.interval( alpha=0.95, df=len(tabla)-1, loc=np.mean(tabla), scale=scipy.stats.sem(tabla) )

Un detalle importante: scale se escribe en inglés. Si lo pones como escala, Python lanza un error.

¿Cómo interpretar los resultados del intervalo?

Con los datos generados, el resultado al 95% de confianza es:

  • Días de vacaciones: entre 2.84 y 3 días. Prácticamente seguro que las personas viajan 3 días.
  • Dinero gastado: entre 0.686 y 0.699, es decir, entre el 68.6% y el 69.9% del presupuesto disponible [6:20].

Esa lectura es la que llevas a una presentación o a un reporte: no das un número único, sino un rango con su nivel de certeza.

¿Qué cambia si modificas el nivel de significancia?

El nivel de confianza define qué tan amplio es el rango. Cuanto más alto el porcentaje, más ancho el intervalo, porque exiges más certeza.

  • Al 68% el intervalo es estrecho, suficiente para una primera exploración.
  • Al 95% es el estándar en la mayoría de análisis estadísticos.
  • Al 99% es muy amplio, útil cuando el costo de equivocarte es alto.

Prueba el mismo cálculo cambiando alpha a 0.68 y a 0.99 sobre la misma tabla. Vas a ver cómo los límites se abren o se cierran según el nivel que elijas.

¿Te animas a replicar el ejercicio con tus propios datos? Cuéntame en los comentarios qué variables vas a usar y qué nivel de confianza tiene más sentido para tu caso.