Ao usar splines cúbicos naturais (isto é, restritos), as funções básicas criadas são altamente colineares e, quando usadas em uma regressão, parecem produzir estatísticas VIF (fator de inflação de variação) muito altas, sinalizando multicolinearidade. Quando se está considerando o caso de um modelo para fins de previsão, isso é um problema? Parece que sempre será o caso devido à natureza da construção do spline.
Aqui está um exemplo em 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
ATUALIZAR:
Entrei em contato com o Dr. Harrell, autor do pacote Hmisc em R (e outros) e ele respondeu que, enquanto o algoritmo convergir (por exemplo, a regressão logística) e os erros padrão não explodirem (como Maarten disse abaixo) - e o modelo se encaixa bem, melhor mostrado em um conjunto de teste, então não há problema com essa colinearidade.
Além disso, ele afirmou (e isso está presente na página 65 de seu excelente livro Estratégias de modelagem de regressão ) que a colinearidade entre variáveis construídas de maneira algébrica como splines cúbicos restritos não é um problema, pois a multicolinearidade só importa quando essa colinearidade muda de amostra para amostra.
fonte
rcsgen
comando Stata usa Gram-Schmidt orthogonalizaton)Respostas:
A multicolinearidade pode levar a problemas numéricos ao estimar essa função. É por isso que alguns usam splines B (ou variações nesse tema) em vez de splines cúbicos restritos. Portanto, costumo ver splines cúbicos restritos como uma ferramenta potencialmente útil em uma caixa de ferramentas maior.
fonte
scale=TRUE
argumento para algumas das funções de ajuste norms
pacote R padronizará todas as colunas antes de ajustar e não padronizará os coeficientes após o ajuste, de uma maneira que o usuário não precise prestar atenção.