Files
fn_registry/python/functions/datascience/trend_slope.md
T
egutierrez 763e06c127 feat(browser): auto-commit con 178 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-20 18:22:23 +02:00

3.9 KiB

id, name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, example, tested, tests, test_file_path, file_path, params, output
id name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports example tested tests test_file_path file_path params output
trend_slope_py_datascience trend_slope function py datascience 1.0.0 pure def trend_slope(values: list, x: list = None) -> dict Detecta la tendencia (sube/baja/plana) de una serie via regresion lineal simple del grupo eda y su significancia estadistica. Devuelve slope, r, r_squared, p_value, direction y significant. Descarta pares con None/NaN. Funcion pura, determinista, no muta el input.
eda
models
trend
regression
timeseries
datascience
false
scipy
from datascience import trend_slope trend_slope([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) # {"slope": 1.0, "intercept": 1.0, "r": 1.0, "r_squared": 1.0, # "p_value": 0.0, "std_err": 0.0, "direction": "up", # "significant": True, "n": 10} true
test_increasing_series_slope_positive_up_significant
test_decreasing_series_slope_negative_down_significant
test_flat_constant_series_not_significant
test_random_series_flat_not_significant
test_custom_x_axis
test_too_few_pairs_returns_none_slope
test_drops_none_and_nan_pairs
test_too_few_valid_pairs_after_dropping
python/functions/datascience/trend_slope_test.py python/functions/datascience/trend_slope.py
name desc
values Serie de valores numericos (variable dependiente, eje Y). Acepta huecos: los elementos None o NaN se descartan, emparejados con su x correspondiente, antes del ajuste.
name desc
x Posiciones de cada valor (variable independiente, eje X). Si es None se usa el indice posicional 0..n-1. Cuando se proporciona debe tener la misma longitud que values; los pares con x None/NaN tambien se descartan.
dict con slope (float|None), intercept (float), r (float), r_squared (float), p_value (float), std_err (float), direction ("up"|"down"|"flat"|"unknown"), significant (bool, True si p_value<0.05) y n (int, pares validos usados). Con menos de 3 pares validos devuelve {slope:None, direction:"unknown", significant:False, n:<n>}.

Ejemplo

from datascience import trend_slope

# Serie creciente: tendencia al alza, significativa.
trend_slope([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# {
#   "slope": 1.0, "intercept": 1.0, "r": 1.0, "r_squared": 1.0,
#   "p_value": 0.0, "std_err": 0.0,
#   "direction": "up", "significant": True, "n": 10,
# }

# Serie plana (constante): no hay tendencia significativa.
trend_slope([5.0] * 12)
# {... "slope": 0.0, "direction": "flat", "significant": False, "n": 12}

# Eje x explicito (no equiespaciado) y serie con hueco.
trend_slope([1, None, 3, float("nan"), 5], x=[0, 1, 2, 3, 4])
# {... "direction": "up", "significant": True, "n": 3}

# Menos de 3 pares validos -> sin ajuste.
trend_slope([1, 2])
# {"slope": None, "direction": "unknown", "significant": False, "n": 2}

Cuando usarla

Cuando tengas una serie (ventas por dia, precio en el tiempo, una metrica del grupo eda) y necesites saber rapido si sube, baja o esta plana, y si ese movimiento es estadisticamente real o ruido. Util para semaforos de tendencia en un dashboard, alertas ("esta metrica cae de forma significativa"), o como feature barata antes de un modelo mas caro. Pasa x cuando los puntos no estan equiespaciados (fechas con huecos); deja x=None para tratar la serie como secuencia ordenada.

Gotchas

Funcion pura sin I/O, pero depende de scipy.stats.linregress. La direccion solo es "up"/"down" cuando ademas hay significancia (p_value < 0.05); una pendiente no nula pero ruidosa se reporta como "flat". El umbral 0.05 es fijo (no parametrizable, KISS). Con menos de 3 pares validos tras descartar None/NaN no se ajusta nada y slope es None — comprobar ese caso antes de usar el valor numerico. Series constantes dan r_squared 0 y direction "flat".