Estadísticas (std::stats)
En esta página
std::stats provee funciones estadísticas sobre arrays numéricos — desde medias
y medianas hasta desviación estándar, percentiles y regresión lineal. Todas las
operaciones son cómputos puros sobre datos en memoria y se ejecutan directamente
en el sandbox.
Tendencia central
stats.mean, stats.median y stats.mode calculan las tres medidas de
tendencia central. stats.min, stats.max y stats.sum completan el conjunto
de utilidades básicas sobre una secuencia.
Media, mediana, moda, min, max y suma de un array de muestras.
// Feature: stats.mean / stats.median / stats.mode — central tendencies
// When to use: data analysis, performance metrics, monitoring.
use std::stats
let sample = [10, 20, 30, 40, 50]
// arithmetic mean.
print(stats.mean(sample)) // expected: 30
// median (middle value once sorted).
print(stats.median(sample)) // expected: 30
// mode (most frequent value).
let bimodal = [1, 2, 2, 3, 3, 3, 4]
print(stats.mode(bimodal)) // expected: 3
// min, max, sum — basic utilities.
print(stats.min(sample)) // expected: 10
print(stats.max(sample)) // expected: 50
print(stats.sum(sample)) // expected: 150
Dispersión, percentiles y correlación
Para series de latencias o métricas de monitoreo, stats.variance y
stats.stddev miden la dispersión; stats.percentile(arr, p) calcula el
percentil p (útil para p95/p99). stats.correlation devuelve el coeficiente de
Pearson entre dos vectores, y stats.linear_regression ajusta una recta
y = slope * x + intercept.
Varianza, desviación estándar, p95, correlación y regresión lineal simple.
// Feature: stats.variance / stats.stddev / stats.percentile / correlation
// When to use: measure dispersion, deviation-based alerts, correlations.
use std::stats
let latencies = [120, 130, 125, 140, 110, 135, 128, 122]
// variance (mean of the squared deviations).
print(stats.variance(latencies)) // expected: float ~80
// standard deviation = sqrt(variance).
let sd = stats.stddev(latencies)
print(sd > 0) // expected: true
// percentile(arr, p) — p in [0, 100].
print(stats.percentile(latencies, 50)) // expected: ~127 (median)
print(stats.percentile(latencies, 95)) // expected: p95 ~140
// Pearson correlation between two series (-1.0 .. 1.0).
let xs = [1, 2, 3, 4, 5]
let ys = [2, 4, 6, 8, 10]
let r = stats.correlation(xs, ys)
print(r) // expected: 1.0 (perfectly correlated)
// Simple linear regression -> { slope, intercept }.
let lr = stats.linear_regression(xs, ys)
print(lr.slope) // expected: 2.0
print(lr.intercept) // expected: 0.0
Desafío
Carga una lista de tiempos de respuesta de una API y emite una alerta vía
std::log.warn si el p95 supera 200 ms. Combina std::stats y std::log.
Consulta también