2016-10-04 7 views
0

Я хочу сделать регрессию хребта в R, используя glmnet или .Как сделать регрессию хребта с помощью log-link в R

мне нужно сделать эту регрессию с log(Y)

cost ~ size + weight ⇒ log(cost) ~ size + weight 

Однако, я обнаружил, что не существует никакой связи, как glm для glmnet или lm.ridge.

Любые идеи по этой проблеме?

ответ

0

Используйте параметр ввода alpha (с 0 значением) для функции ?glmnet. Как указано в документации:

alpha = 1 - штраф в лассо, а альфа = 0 - штраф за хребет.

попробовать что-то вроде следующего:

glmnet(x=cbind(size, weight), y=log(cost), alpha=0, family='gaussian') 

или может быть с poission регрессии

glmnet(x=cbind(size, weight), y=cost, alpha=0, family='poission') 

Если входные данные не слишком огромно, вы можете рассчитать изученные веса по хребтовой регрессии из данных обучения непосредственно с использованием формулы solve(t(X)%*%X + λ*I)%*%(t(X)%*%y), где X - ваш входной параметр матрица Ables, у переменной отклики и I единичная матрица, вы можете узнать наилучшее значение параметра лямбды с помощью перекрестной проверки из , удерживаемых из данных.

+0

Спасибо, sandipan, я попробую эти. –