Volver al inicio

Estadísticas sin ML: métodos clave en Python

El artículo describe métodos estadísticos como alternativa a ML: promedio ponderado, correlación, distribuciones de Poisson y binomial. Ejemplos de código Python con numpy y pandas para tareas de negocio. Adecuado para análisis rápido sin modelos complejos.

Estadísticas en lugar de ML: herramientas de Python para datos
Advertisement 728x90

# Métodos estadísticos para el análisis de datos sin aprendizaje automático

Las herramientas estadísticas te permiten evaluar rápidamente los datos sin modelos complejos de aprendizaje automático. Las medias ponderadas tienen en cuenta la importancia de las observaciones, la desviación estándar y la varianza revelan la heterogeneidad, mientras que las distribuciones de Poisson y binomial pronostican eventos raros. Estos métodos usando Python con numpy y pandas son ideales para desarrolladores intermedios/senior que analizan métricas de negocio.

Media ponderada: Corrigiendo distorsiones por valores atípicos

La media regular es vulnerable a los valores atípicos. Con salarios de $10 (director) y $0.10 (conserje, peso 10), la media es $5.05, que no refleja la realidad. La media ponderada resuelve esto:

import numpy as np

salary = np.array([10.0, 0.10])
weight = np.array([1, 10])

result = np.sum(salary * weight) / np.sum(weight)
print(f"Weighted average: ${result:.2f}")

Salida: $1.00. Aplicaciones:

Google AdInline article slot
  • Analizando ingresos por canales de ventas teniendo en cuenta el tráfico.
  • Evaluando métricas con frecuencias de eventos variables.
  • Agrupando clientes por segmentos con pesos.

Desviación estándar y varianza: Evaluando la estabilidad

La desviación estándar mide la dispersión alrededor de la media. Para salarios [500, 400, 450, 550, 5000]:

import pandas as pd
import numpy as np

data = {
    "Employee": ["Ivan", "Maria", "Oleg", "Anna", "CEO"],
    "Salary": [500, 400, 450, 550, 5000]
}

df = pd.DataFrame(data)
n = len(df['Salary'])
mean_ = df['Salary'].mean()
s = np.sqrt(np.sum((df['Salary'] - mean_) ** 2) / (n - 1))

print(f"Standard deviation: {s:.2f}")

Resultado: 2024.41 — indicador de un valor atípico fuerte. La varianza (cuadrado de la desviación) es útil para comparar conjuntos de datos:

import numpy as np

sales = np.array([90, 95, 92, 93, 91, 200, 210])
mean_sales = np.mean(sales)
dispersion = np.sum((sales - mean_sales) ** 2) / (len(sales) - 1)

print("Variance:", dispersion)

La dispersión por días (días laborables vs fines de semana) requiere segmentación de datos.

Google AdInline article slot

Correlación de Pearson: Relaciones lineales sin causalidad

El coeficiente de correlación de Pearson evalúa la dependencia lineal. Fórmula:

import numpy as np

X = np.array([1, 2, 3, 4, 5])  # study hours
Y = np.array([50, 55, 60, 65, 70])  # test scores

x_mean = np.mean(X)
y_mean = np.mean(Y)

corXY = np.sum((X - x_mean) * (Y - y_mean))
corr_sqrt = np.sqrt(np.sum((X - x_mean)**2) * np.sum((Y - y_mean)**2))

res = corXY / corr_sqrt
print(f"Pearson correlation: {res:.2f}")

r=1.00 — correlación perfecta. El cuadrado (r²) da la proporción de variación explicada (en regresión — coeficiente de determinación). Recuerda: correlación ≠ causalidad (ejemplo: golf y mortalidad en los ancianos).

Prueba de chi-cuadrado: Comprobando expectativas vs realidad

La prueba de chi-cuadrado compara valores observados (O) y esperados (E):

Google AdInline article slot
import numpy as np

O = np.array([1, 2, 3, 4, 7, 9, 11, 13, 14])  # observed
E = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])    # expected

xi = np.sum((O - E) ** 2 / E)
print(f"Chi-square statistic: {xi:.2f}")

Condiciones: misma longitud, E > 0. Valor mayor — mayor discrepancia. Se usa para validar pronósticos.

Distribución de Poisson: Modelando eventos raros

Para eventos con intensidad constante λ (promedio por intervalo). Probabilidad de k eventos:

import math

λ = 3   # srednesutochnoe count requests
k = 5   

prob = (λ ** k) * math.exp(-λ) / math.factorial(k)
print(f"Probability 5 requests: {prob:.4f}")

Resultado: 0.1008. Suposiciones: independencia, probabilidad constante, un evento a la vez. Aplicaciones:

  • Pronosticando llamadas de soporte.
  • Estimando pedidos en sitios web.
  • Analizando incidentes de seguridad.
  • Riesgos en finanzas.

Distribución binomial: Éxitos en ensayos

Para n ensayos con probabilidad de éxito p. Probabilidad de k éxitos:

import math

n = 100
k = 70
p = 0.7

b_coef = math.factorial(n) / (math.factorial(k) * math.factorial(n - k))
prob = b_coef * (p ** k) * ((1 - p) ** (n - k))
print(f"Probability 70 otkrytiy: {prob:.6f}")

Ejemplos: aperturas de correos electrónicos, pruebas A/B, control de calidad.

Distribución exponencial: Intervalos hasta eventos

Probabilidad de un evento después del tiempo x a λ:

import math

lambd = 4    # vyzovov/hour
x = 1 / 3    # 20 min

prob = lambd * math.exp(-lambd * x)
print(f"Probability vyzova cherez 20 min: {prob:.4f}")

Para colas, tiempo de inactividad de equipos.

Puntos clave

  • Media ponderada y desviación detectan distorsiones sin aprendizaje automático.
  • La correlación evalúa relaciones, r² — variación explicada.
  • Poisson y binomial — para pronosticar eventos en negocio.
  • Chi-cuadrado valida hipótesis con datos mínimos.
  • Todos los métodos implementables con numpy/pandas, sin GPU necesario.

— Editorial Team

Advertisement 728x90

Leer después