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