Hyperlink glmnet:使用套索或脊线安装GLMM,并添加二项式cloglog链接

Hyperlink glmnet:使用套索或脊线安装GLMM,并添加二项式cloglog链接,hyperlink,glmnet,Hyperlink,Glmnet,如何在glmnet中为套索/脊线/弹性网回归指定链接函数? 我找到了下面的帖子,但不确定这是否有助于我指定cloglog链接。 我有一个调查数据集,具有二元反应0/1(疾病否/是)和几个预测变量,这些变量大多是二元分类的(是/否,男性/女性),一些是计数(群体规模),还有一些是具有多个级别的分类 我之前使用glmer()函数和二项式族以及link=cloglog运行了一个广义线性混合模型,因为这样做创建了我想要的结果截距的精确解释(在疾病研究中,该设置的截距相当于随机效应(在我的案例中是地理单

如何在glmnet中为套索/脊线/弹性网回归指定链接函数?
我找到了下面的帖子,但不确定这是否有助于我指定cloglog链接。

我有一个调查数据集,具有二元反应0/1(疾病否/是)和几个预测变量,这些变量大多是二元分类的(是/否,男性/女性),一些是计数(群体规模),还有一些是具有多个级别的分类

我之前使用glmer()函数和二项式族以及link=cloglog运行了一个广义线性混合模型,因为这样做创建了我想要的结果截距的精确解释(在疾病研究中,该设置的截距相当于随机效应(在我的案例中是地理单元(村庄或子村庄或家庭)中指定的变异的平均值“感染力”——易感者感染的速率)

由于现在有几个调查变量可供我使用,我想尝试使用glmnet进行套索和岭回归。我的理解是,我最好将glmm公式放入glmnet中。但是,我找不到任何关于如何添加链接的文档。我这样做了,使用了我认为可行的语法,它确实运行了。但它也在link函数中输入了无意义的内容

以下是一个可复制的示例:

library(msm)

library(glmnet)

set.seed(1) 

N = 1000

X = cbind( rbinom(n=N,size=1,prob=0.5), rnorm(n=N) ) 

beta = c(-0.1,0.1)
phi.true = exp( X%*%beta ) 

p = 1 - exp(-phi.true)

y = rbinom(n=N,size=1,prob = p)

dat <- data.frame(x=X,y=y)

x <- model.matrix(y~., dat)

glmnet(x, y, family="binomial", link="logit", alpha = 1, lambda = 2)

无法更改glmnet中二项式族的默认链接函数吗?

我认为您希望使用family=binomonial(link=“cloglog”)


请参阅新的glmnet渐晕图:

我认为您希望使用family=binomial(link=“cloglog”)


查看新的glmnet小插曲:

我认为OP可能不在R4.0上。如果你用一个可复制的例子来展示它在R4.0中的工作原理,这是有意义的。谢谢!这很有帮助!我还希望添加随机效果,但这似乎是软件包中没有的。你是对的,在发布时,我是在R4.0的一个版本上到4.0我想OP可能不在R4.0上。如果你用一个可复制的例子来展示它在R4.0上的工作原理,这是有意义的。谢谢!这很有用!我也希望添加随机效果,但这似乎是软件包中没有的东西。你是对的,发帖时我在4.0之前的R版本上
> glmnet(x, y, family="binomial"(link="logit"), alpha = 1, lambda = 2)

Error in match.arg(family) : 'arg' must be NULL or a character vector

> glmnet(x, y, family="binomial", link="logit", alpha = 1, lambda = 2)

Call:  glmnet(x = x, y = y, family = "binomial", alpha = 1, lambda = 2,      link = "logit") 

  Df      %Dev Lambda
1  0 -7.12e-15      2

> glmnet(x, y, family="binomial", link="cloglog", alpha = 1, lambda = 2)

Call:  glmnet(x = x, y = y, family = "binomial", alpha = 1, lambda = 2,      link = "cloglog") 

  Df      %Dev Lambda
1  0 -7.12e-15      2

> glmnet(x, y, family="binomial", link="adam", alpha = 1, lambda = 2)

Call:  glmnet(x = x, y = y, family = "binomial", alpha = 1, lambda = 2,      link = "adam") 

  Df      %Dev Lambda
1  0 -7.12e-15      2