我正在尝试使用glmmLasso在广义线性混合模型中执行变量选择,但是我想出了一个错误和警告,我无法解决。数据集不平衡,一些参与者(PTNO)的样本多于其他参与者;没有遗漏数据。我的因变量是二进制的,所有其他变量(在ID变量PTNO旁边)是连续的。 我怀疑发生了一些非常通用的事情,但显然没有看到它,也没有在文档或网络上找到任何解决方案。 代码基本上只是改编自glmmLasso足球示例:
glm8 <- glmmLasso(Group~NDUFV2_dCTABL+GPER1_dCTABL+ ESR1_dCTABL+ESR2_dCTABL+KLF12_dCTABL+SP4_dCTABL+SP1_dCTABL+ PGAM1_dCTABL+ANK3_dCTABL+RASGRP1_dCTABL+AKT1_dCTABL+NUDT1_dCTABL+ POLG_dCTABL+ ADARB1_dCTABL+OGG_dCTABL+ PDE4B_dCTABL+ GSK3B_dCTABL+ APOE_dCTABL+ MAPK6_dCTABL, rnd = list(PTNO=~1),
family = poisson(link = log), data = stackdata, lambda=100,
control = list(print.iter=TRUE,start=c(1,rep(0,29)),q.start=0.7))
错误信息显示如下。特别是,我不相信数据集中有任何NA,我不确定关于因子变量的警告的含义。
迭代1 grad.lasso [b.is.0]&lt; - score.beta [b.is.0] - lambda.b * sign(score.beta [b.is.0])出错: 订阅的作业中不允许使用NA 另外:警告信息: 在Ops.factor(y,Mu)中:' - '对因子无意义
包含必要变量的缩略数据集以R格式提供,可以下载here。 我希望我可以引导一下如何继续进行分析。如果数据集有任何问题或者您无法下载,请告诉我。非常感谢任何帮助。
答案 0 :(得分:0)
只是跟进@Kristofersen上面的评论。确实是start
向量会混淆你的分析。
如果我跑
glm8 <- glmmLasso(Group~NDUFV2_dCTABL+GPER1_dCTABL+ ESR1_dCTABL+ESR2_dCTABL+KLF12_dCTABL+SP4_dCTABL+SP1_dCTABL+ PGAM1_dCTABL+ANK3_dCTABL+RASGRP1_dCTABL+AKT1_dCTABL+NUDT1_dCTABL+ POLG_dCTABL+ ADARB1_dCTABL+OGG_dCTABL+ PDE4B_dCTABL+ GSK3B_dCTABL+ APOE_dCTABL+ MAPK6_dCTABL,
rnd = list(PTNO=~1),
family = binomial(),
data = stackdata,
lambda=100,
control = list(print.iter=TRUE))
然后一切都很好和花花公子(即,它收敛并产生一个解决方案)。您已经使用泊松回归复制了示例,您需要根据您的情况调整代码。我不知道输出是否有意义。
快速注意:我在上面的代码中使用二项分布运行,因为结果是二进制的。如果估计相对风险是有意义的,那么泊松可能是合理的(并且它也会收敛),但是您需要重新编码您的结果,因为这两个组被定义为1
和2
,这肯定会弄得一团糟泊松回归。
换句话说,做一个
stackdata$Group <- stackdata$Group-1
在运行分析之前。