Я работаю над сетевыми моделями для политических сетей. Одна из вещей, которые я делаю, - это оскорбление вывода. Я использую адаптивный подход лассо, устанавливая штрафный коэффициент для glmnet. У меня есть разные параметры в моей модели: alphas
и phis
. alphas
являются фиксированными эффектами, поэтому я хочу сохранить их в модели, а phis
наказываются.Проблема конвергенции GLMNet для оштрафованной регрессии
У меня есть начальные коэффициенты из процесса оценки MLE glm()
для вычисления адаптивных весов, которые устанавливаются через штрафный коэффициент glmnet()
.
Это код:
# Generate Generalized Linear Model
GenLinMod = glm(y ~ X, family = "poisson")
# Set coefficients
coefficients = coef(GenLinMod)
# Set penalty
penalty = 1/(coefficients[-1])^2
# Protect alphas
penalty[1:(n-1)] = 0
# Generate Generalized Linear Model with adaptive lasso procedure
GenLinModNet = glmnet(XS, y, family = "poisson", penalty.factor = penalty, standardize = FALSE)
Для некоторых сетей этого кода просто отлично, но у меня есть определенные сети, для которых я получаю эти ошибки:
Error: Matrices must have same number of columns in rbind2(.Call(dense_to_Csparse, x), y)
In addition: Warning messages:
1: from glmnet Fortran code (error code -1); Convergence for 1th lambda value not reached after maxit=100000 iterations; solutions for larger lambdas returned
2: In getcoef(fit, nvars, nx, vnames) :
an empty model has been returned; probably a convergence issue
Странным является то, что они все используют один и тот же код, поэтому мне интересно, является ли это проблемой данных. Дополнительная информация:
+ В одном случае у меня есть более 500 alphas
и 21 phis
и появляются эти ошибки, в другом случае, что не работает у меня есть 200 alphas
и 28 phis
. Но, с другой стороны, у меня есть случай с более чем 600 alphas
и 28 phis
, и он сходится красиво.
+ Я пробовал настройки для lambda.min.ratio
и nlambda
безрезультатно.
Другой вопрос: является ли первая запись штрафа связанной с перехватом? Или он автоматически добавляется glmnet()
? Я не нашел ясности об этом в виньетике glmnet
. Мои мысли состоят в том, что я не должен включать термин для перехвата, поскольку сказано, что штраф внутренне изменен на сумму nvars
, и я полагаю, что перехват не является одной из моих переменных.