Я работаю над сетевыми моделями для политических сетей. Одна из вещей, которые я делаю, — это наказуемый вывод. Я использую подход адаптивного лассо, устанавливая штрафной коэффициент для glmnet. В моей модели есть разные параметры: alphas
и phis
. alphas
являются фиксированными эффектами, поэтому я хочу оставить их в модели, пока phis
наказываются.
У меня есть начальные коэффициенты из процесса оценки 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
, и я предполагаю, что перехват не является одной из моих переменных.