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.
la source
rcsgen
commande Stata utilise l'orthogonalisation Gram-Schmidt)Réponses:
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.
la source
scale=TRUE
argument de certaines des fonctions d'ajustement dans lerms
package 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.