He estado leyendo la descripción de la regresión de crestas en los modelos estadísticos lineales aplicados , 5ª edición, capítulo 11. La regresión de crestas se realiza con los datos de grasa corporal disponibles aquí .
El libro de texto coincide con la salida en SAS, donde los coeficientes transformados hacia atrás se dan en el modelo ajustado como:
Esto se muestra desde SAS como:
proc reg data = ch7tab1a outest = temp outstb noprint;
model y = x1-x3 / ridge = 0.02;
run;
quit;
proc print data = temp;
where _ridge_ = 0.02 and y = -1;
var y intercept x1 x2 x3;
run;
Obs Y Intercept X1 X2 X3
2 -1 -7.40343 0.55535 0.36814 -0.19163
3 -1 0.00000 0.54633 0.37740 -0.13687
Pero R da coeficientes muy diferentes:
data <- read.table("http://www.cst.cmich.edu/users/lee1c/spss/V16_materials/DataSets_v16/BodyFat-TxtFormat.txt",
sep=" ", header=FALSE)
data <- data[,c(1,3,5,7)]
colnames(data)<-c("x1","x2","x3","y")
ridge<-lm.ridge(y ~ ., data, lambda=0.02)
ridge$coef
coef(ridge)
> ridge$coef
x1 x2 x3
10.126984 -4.682273 -3.527010
> coef(ridge)
x1 x2 x3
42.2181995 2.0683914 -0.9177207 -0.9921824
>
¿Alguien puede ayudarme a entender por qué?
r
sas
ridge-regression
B_Miner
fuente
fuente
Respuestas:
Aunque la regresión de cresta se ve al principio como un algoritmo simple, el diablo está en los detalles. Aparentemente, las variables originales están escaladas, y el parámetro no es el parámetro que pensarías que se le da la descripción original. Por lo que reuní leyendo la referencia dada en la página de ayuda de R, no hay una forma acordada de hacer regresión de crestas. Entonces, la diferencia en los resultados solo puede explicarse por diferentes algoritmos utilizados por R y SAS. Esperemos que alguien más conocedor pueda dar una respuesta más detallada.λ
lm.ridge
Puede ver qué tipo de algoritmo se aplica en R mirando la fuente de
lm.ridge
. Simplemente escribalm.ridge
el indicador R.fuente
El uso de lm.ridge también produce un vector de escala (pruebe head (modelo) para ver toda la salida). Para obtener los valores pronosticados en R que ve en SAS, tome los coeficientes y divídalos por el vector escalar.
fuente