glmmLasso错误和警告

4

我正在尝试使用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 Error in grad.lasso[b.is.0] <- score.beta[b.is.0] - lambda.b * sign(score.beta[b.is.0]) : 子脚本赋值中不允许出现NAs。 此外:警告消息: 在Ops.factor(y, Mu)中:“-” 对于因子没有意义。

提供了包含必要变量的简略数据集(R格式),可以从此处下载。希望能够得到一些关于如何继续分析的指导。如果数据集有问题或无法下载,请告诉我。非常感谢您的帮助。

请提供一个可以重现的示例或者样本数据的访问权限。 - Morgan Ball
作为第一步,您应该消除警告。 - Roland
样本数据可从上面的超链接(“数据集”)中获取(应该可以使用)。恐怕我不知道如何消除警告 - 这是我希望能够通过一些输入解决的问题之一。 - Klaus
我很抱歉目前还无法解决这个问题。非常感谢任何帮助。 - Klaus
@Klaus 我认为你遇到的错误是由于Delta.start长度不正确引起的。此外,您需要确保为ID的级别留出空间,并且因子的级别需要等于ID中唯一值的数量。我在这里写了更多关于它的内容:http://stackoverflow.com/questions/42793904/glmmlasso-try-error-for-all-lambda/42932514#42932514 - Kristofersen
显示剩余3条评论
1个回答

1

我来跟进一下@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

在分析之前运行。

谢谢!对我来说,略去起始向量也解决了这个问题。感谢@Kristofersen,并指出有关计算调整参数的相关帖子。 - Klaus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接