Existe-t-il un problème avec la multicolinéarité et la régression des splines?

12

Lors de l'utilisation de splines cubiques naturelles (c'est-à-dire restreintes), les fonctions de base créées sont hautement colinéaires et, lorsqu'elles sont utilisées dans une régression, semblent produire des statistiques VIF (facteur d'inflation de variance) très élevées, signalant la multicolinéarité. Lorsque l'on considère le cas d'un modèle à des fins de prédiction, est-ce un problème? Il semble que ce sera toujours le cas en raison de la nature de la construction des splines.

Voici un exemple dans R:

library(caret)
library(Hmisc)
library(car)
data(GermanCredit)

spl_mat<-rcspline.eval(GermanCredit$Amount,  nk=5, inclx=TRUE) #natural cubic splines with 5 knots

class<-ifelse(GermanCredit$Class=='Bad',1,0) #binary target variable
dat<-data.frame(cbind(spl_mat,class))

cor(spl_mat)

OUTPUT:
              x                              
    x 1.0000000 0.9386463 0.9270723 0.9109491
      0.9386463 1.0000000 0.9994380 0.9969515
      0.9270723 0.9994380 1.0000000 0.9989905
      0.9109491 0.9969515 0.9989905 1.0000000


mod<-glm(class~.,data=dat,family=binomial()) #model

vif(mod) #massively high

OUTPUT:
x         V2         V3         V4 
319.573 204655.833 415308.187  45042.675

MISE À JOUR:

J'ai contacté le Dr Harrell, l'auteur du package Hmisc dans R (et d'autres) et il a répondu que tant que l'algorithme converge (par exemple la régression logistique) et que les erreurs standard n'ont pas explosé (comme Maarten l'a dit ci-dessous) - et le modèle correspond bien, mieux illustré sur un ensemble de test, alors il n'y a pas de problème avec cette colinéarité.

De plus, il a déclaré (et cela se trouve à la page 65 de son excellent livre sur les stratégies de modélisation de la régression ) que la colinéarité entre les variables construites de manière algébrique comme les splines cubiques restreintes n'est pas un problème car la multicolinéarité n'a d'importance que lorsque cette colinéarité change d'un échantillon à l'autre.

B_Miner
la source
1
Vous pouvez toujours orthogonaliser les splines générées (par exemple, la rcsgencommande Stata utilise l'orthogonalisation Gram-Schmidt)
boscovich

Réponses:

7

La multicolinéarité peut conduire à des problèmes numériques lors de l'estimation d'une telle fonction. C'est pourquoi certains utilisent des splines B (ou des variations sur ce thème) au lieu de splines cubiques restreintes. Donc, j'ai tendance à voir les splines cubiques restreintes comme un outil potentiellement utile dans une boîte à outils plus grande.

Maarten Buis
la source
Salut Maarten, quand vous dites des problèmes numériques, vous référez-vous à la convergence ou autre? Si la régression a convergé et semble bien fonctionner sur un ensemble de tests - concluez-vous que la situation n'est pas un problème?
B_Miner
S'il y a des problèmes numériques, le manque de convergence est une conséquence probable (mais pas nécessaire). Des estimations de coefficient irréalistes et / ou des erreurs standard trop élevées sont d'autres conséquences possibles.
Maarten Buis
1
Des méthodes comme la décomposition QR ont beaucoup aidé. Cependant, vous pouvez toujours casser un logiciel moderne, il est devenu plus difficile de le faire.
Maarten Buis
1
Ce n'est peut-être pas un problème. Mais s'il y a un problème numérique, l' scale=TRUEargument de certaines des fonctions d'ajustement dans le rmspackage R normalisera toutes les colonnes avant l'ajustement et ne normalisera pas les coefficients après l'ajustement d'une manière que l'utilisateur n'a pas besoin de prendre en compte.
Frank Harrell
2
Ne regardez pas tant les coefficients individuels et les erreurs standard. Regardez toute la courbe ajustée.
Frank Harrell