D.8 Regresión no paramétrica

No se supone ninguna forma concreta en el efecto de las variables explicativas: \[Y=f\left( \mathbf{X}\right) +\varepsilon,\] con f función “cualquiera” (suave).

  • Métodos disponibles en R:

    • Regresión local (métodos de suavizado): loess(), KernSmooth, sm, …

    • Modelos aditivos generalizados (GAM): gam, mgcv, …

D.8.1 Modelos aditivos

Se supone que: \[Y=\beta_{0}+f_{1}\left( \mathbf{X}_{1}\right) +f_{2}\left( \mathbf{X}_{2}\right) +\cdots+f_{p}\left( \mathbf{X}_{p}\right) +\varepsilon\text{,}\] con \(f_{i},\) \(i=1,...,p,\) funciones cualesquiera.

  • Los modelos lineales son un caso particular considerando \(f_{i}(x) = \beta_{i}x\).

  • Son mucho más flexibles pero siguen siendo fáciles de interpretar.

  • Adicionalmente se puede considerar una función link: Modelos aditivos generalizados (GAM)

    • Hastie, T.J. y Tibshirani, R.J. (1990). Generalized Additive Models. Chapman & Hall.

    • Wood, S. N. (2006). Generalized Additive Models: An Introduction with R. Chapman & Hall/CRC

Utilizaremos como ejemplo el conjunto de datos Prestige de la librería carData (Companion to Applied Regression Data Sets, paquete car). Se tratará de explicar prestige (puntuación de ocupaciones obtenidas a traves de una encuesta) a partir de income (media de ingresos en la ocupación) y education (media de los años de educación).

library(mgcv)
data(Prestige, package = "carData")
modelo <- gam(prestige ~ s(income) + s(education), data = Prestige)
summary(modelo)
## 
## Family: gaussian 
## Link function: identity 
## 
## Formula:
## prestige ~ s(income) + s(education)
## 
## Parametric coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  46.8333     0.6889   67.98   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Approximate significance of smooth terms:
##                edf Ref.df     F p-value    
## s(income)    3.118  3.877 14.61  <2e-16 ***
## s(education) 3.177  3.952 38.78  <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## R-sq.(adj) =  0.836   Deviance explained = 84.7%
## GCV = 52.143  Scale est. = 48.414    n = 102

En este caso la función plot representa los efectos (parciales) estimados de cada covariable:

par.old <- par(mfrow = c(1, 2))
plot(modelo, shade = TRUE) # 

par(par.old)