# 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:
- 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.
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):
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
Aún no hay comentarios.