【发布时间】:2017-05-27 17:41:20
【问题描述】:
我正在研究政治网络的网络模型。我正在做的一件事是惩罚推理。我通过为 glmnet 设置惩罚因子来使用自适应套索方法。我的模型中有各种参数:alphas 和 phis。 alphas 是固定效果,所以我想在 phis 受到惩罚时将它们保留在模型中。
我有来自glm() 的 MLE 估计过程的起始系数来计算通过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 小插图中没有找到明确的说明。我的想法是我不应该包含拦截的术语,因为据说惩罚在内部重新调整为 sum nvars,我认为拦截不是我的变量之一。
【问题讨论】:
标签: r social-networking glmnet convergence