微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

任何人都可以帮助解决以下glmmLasso R软件包错误吗?

如何解决任何人都可以帮助解决以下glmmLasso R软件包错误吗?

我一直在尝试运行以下代码,但遇到各种错误。有人知道如何解决当前问题吗?我正在尝试运行带有调整参数(特别是LASSO)的广义线性混合模型,但是试图从基础开始,并使固定效果首先起作用。谢谢!

y <- rbinom(n = 50,size = 1,prob = .5)
x <- rnorm(n = 50,mean = 1,sd = .5)

data <- data.frame(x,y)

mod1 <- glmmLasso(fix = y ~ x,rnd = NULL,family = binomial(link = logit),lambda = 10,data = data)

错误:条件的长度> 1并且仅使用第一个元素;条件的长度> 1并且仅使用第一个元素

一个错误:数据长度不是分割变量的倍数(此模拟数据不会发生这种情况,但我的真实数据会发生这种情况)

一个说明-我已经在帮助文档中尝试了针对带有足球数据的广义线性混合模型的确切代码,但在长度> 1时也遇到了相同的错误

解决方法

我的猜测是,只有1个预测变量和没有关系的数据,您的lambda对于1个变量而言过高,并引发了矩阵的怪异解,您可以检查看看source code在这两个变量上是否出错行:

finish<-(sqrt(sum((Eta.ma[l,]-Eta.ma[l+1,])^2))/sqrt(sum((Eta.ma[l,])^2))<eps)
finish2<-(sqrt(sum((Eta.ma[l-1,])^2))/sqrt(sum((Eta.ma[l-1,])^2))<eps)

if(finish ||  finish2) 

要使其重现:

set.seed(2)

y <- rbinom(n = 50,size = 1,prob = .5)
x <- rnorm(n = 50,mean = 1,sd = .5)

data <- data.frame(x,y)

mod1 <- glmmLasso(fix = y ~ x,rnd = NULL,family = binomial(link = logit),lambda = 10,data = data)

Error in if (finish || finish2) break : 
  missing value where TRUE/FALSE needed

mod1 <- glmmLasso(fix = y ~ x,lambda = 1,data = data)

mod1
Call:
glmmLasso(fix = y ~ x,data = data,family = binomial(link = logit))

Fixed Effects:

Coefficients:
(Intercept)           x 
 -0.8089034   0.8678967 

如果我们尝试其他种子,则可以看到没有问题,尽管最终解决方案是将系数设置为零:

set.seed(1)
y <- rbinom(n = 50,sd = .5)
data <- data.frame(x,y)
    
mod1 <- glmmLasso(fix = y ~ x,family = binomial(link = logit))

Fixed Effects:

Coefficients:
(Intercept)           x 
  0.1603426   0.0000000

总结一下..最有可能收集您的数据,您需要将其移动一些lambda来检查拟合度

,

我猜这是 R 4.0.3 的问题。 我使用 glmmLasso 没有任何错误,当我将 Base R 从 3.6 更新到 4.0.3 时发生了这个错误。我给作者写了一封电子邮件。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。