Saltar al contingut principal
Capítol 3.1 bàsic regressió lineal OLS durbin-watson tendència statsmodels

Conceptes de regressió lineal aplicada a sèries temporals

5 min lectura
El model OLS amb el temps com a predictor, els supòsits que es violen, el test de Durbin-Watson i com visualitzar la recta de regressió de forma interactiva.

La regressió lineal ordinària (OLS) és probablement el model estadístic més conegut del món. La seva aplicació a sèries temporals és directa en teoria, però amaga un problema que pot invalidar les teves conclusions si no el detectes. En aquest subcapítol veuràs exactament què fa OLS, per què falla i com saber-ho.


El model: el temps com a predictor

La idea és simple: si la sèrie té tendència lineal, podem modelar-la usant l’índex temporal tt com a variable predictora.

y^t=β0+β1t+εt\hat y_t = \beta_0 + \beta_1 \cdot t + \varepsilon_t

  • β0\beta_0 és l’intercepte: el valor esperat de la sèrie en t=0t = 0.
  • β1\beta_1 és la pendent: quant creix (o decreix) la sèrie per cada període.
  • εt\varepsilon_t és el residu: el que el model no explica.

En Python, ajustar aquest model és directe:

import numpy as np
import pandas as pd
from statsmodels.regression.linear_model import OLS
import statsmodels.api as sm

# Sèrie d'exemple: 60 mesos de vendes amb tendència
np.random.seed(42)
t = np.arange(60)
vendes = 50 + 0.8 * t + 10 * np.sin(2 * np.pi * t / 12) + np.random.normal(0, 4, 60)
dates = pd.date_range(start='2020-01-01', periods=60, freq='ME')
serie = pd.Series(vendes, index=dates)

# Crear la variable t com a predictor
X = sm.add_constant(t)  # Afegeix l'intercepte (columna d'uns)
y = serie.values

# Ajustar OLS
model = OLS(y, X)
resultat = model.fit()
print(resultat.summary())

Experimenta: ajusta la recta a mà

El visualitzador següent mostra els punts de dades amb la recta de regressió. Ajusta la pendent (β₁) i l’intercepte (β₀) amb els sliders i observa com varia la Suma d’Errors al Quadrat (SSE).

OLS minimitza exactament aquesta suma: el punt on el SSE és mínim és on OLS col·loca la recta automàticament. Intenta arribar a l’òptim movent els sliders.

Ajusta la recta i minimitza l'error quadràtic

Suma de errores al cuadrado

Observaciones Recta ajustada OLS óptimo

Els supòsits d’OLS

OLS funciona bé quan es compleixen certes condicions. En sèries temporals, la més problemàtica és la tercera:

SupòsitEs compleix en sèries temporals?
Linealitat: la relació és linealDe vegades sí, si la tendència és lineal
Homoscedasticitat: variància constant d’errorsNo sempre: pot haver-hi més volatilitat en certs períodes
Independència de residusGairebé mai: l’error d’avui depèn del d’ahir
Normalitat de residusGeneralment tolerable

Detectar l’autocorrelació: el test de Durbin-Watson

El test de Durbin-Watson compara cada residu amb l’anterior per detectar autocorrelació de primer ordre. Calcula la relació entre la variació dels residus consecutius i la variació total: quan els residus consecutius s’assemblen molt, el numerador és petit i DW cau per sota de 2.

L’estadístic DW varia entre 0 i 4:

  • DW ≈ 2: no hi ha autocorrelació. Bon senyal.
  • DW < 1.5: autocorrelació positiva forta. Els residus consecutius s’assemblen massa.
  • DW > 2.5: autocorrelació negativa. Els residus alternen de signe.
from statsmodels.stats.stattools import durbin_watson

residus = resultat.resid
dw = durbin_watson(residus)
print(f'Estadístic Durbin-Watson: {dw:.4f}')

if dw < 1.5:
    print('Autocorrelació positiva detectada — els residus no són independents')
elif dw > 2.5:
    print('Autocorrelació negativa detectada — els residus alternen de signe')
else:
    print('Sense evidència forta d\'autocorrelació')

Comprova la teva comprensió

Apliques una regressió lineal simple a una sèrie temporal i el test de Durbin-Watson retorna DW = 0.8. Què indica això?

Resum

La regressió lineal és una eina vàlida per modelar tendències en sèries temporals, però els seus residus gairebé sempre mostren autocorrelació. El test de Durbin-Watson et permet detectar aquest problema ràpidament. La solució no és abandonar la regressió, sinó enriquir-la amb variables que capturin l’estructura temporal que la recta sola no pot. Això és exactament el que veurem al pròxim subcapítol.