【问题标题】:Can glmmLasso be used with the Tweedie distribution?glmmLasso 可以与 Tweedie 发行版一起使用吗?
【发布时间】:2023-01-30 07:26:34
【问题描述】:

我有一个线性混合效应模型,我正在尝试进行变量选择。该模型正在测试 1000 个采样点的森林退化水平。大多数点没有退化,因此因变量高度偏斜且有许多零。因此,我使用 Tweedie 分布来拟合模型。我的主要问题是:Tweedie 分布实际上可以用在glmmLasso 函数中吗?我的第二个问题是:我什至需要在glmmLasso() 中使用这个发行版吗?任何帮助深表感谢!

当我使用 family = tweedie(var.power=1.2,link.power=0) 运行该函数时,出现以下错误:

Error in logLik.glmmLasso(y = y, yhelp = yhelp, mu = mu, family = family,  : 
  object 'loglik' not found

如果我将 link.power 从 0 更改为 1(我认为这对我的模型不正确,但只是为了找出问题),我会得到一个不同的错误:

Error in grad.lasso[b.is.0] <- score.beta[b.is.0] - lambda.b * sign(score.beta[b.is.0]) : 
  NAs are not allowed in subscripted assignments

这里tweedie来自statmod包。一个简单的例子:

library(tweedie)
library(tidyverse)
library(glmmLasso)
library(statmod)

power <- 2
mu <- 1
phi <- seq(2, 8, by=0.1)
set.seed(10000)
y <- rtweedie( 100, mu=mu, power=power, phi=3)

x <- rnorm(100)
z <- c(rep(1, 50), rep(2,50))
df = as.data.frame(cbind(y,x,z))
df$z = as.factor(df$z)
f = y ~ x

varSelect = glmmLasso(fix = f, rnd = list(z=~1), data = df, 
                      lambda = 5, family = tweedie(var.power=1.2,link.power=0))

【问题讨论】:

  • 看起来对数似然是硬编码的(参见glmmLasso:::logLik.glmmLasso),唯一允许的选择是泊松/二项式/“acat”/“累积”。我可能会尝试破解这个。我有点担心所有这一切背后的指数家族理论延伸到 Tweedie 的程度如何,但如果它有效......
  • 谢谢@BenBolker
  • 谢谢@BenBolker 如果 Tweedie 不兼容,对于与 glmmLasso 一起使用的零膨胀分布,您还有其他建议吗?或者也许是一种不同的方式来为具有零膨胀分布的混合模型进行变量选择?

标签: r mixed-models lasso-regression random-effects tweedie


【解决方案1】:

我创建了 glmmLasso 的黑客版本,其中包含 Tweedie 发行版作为选项。

remotes::install_github("bbolker/glmmLasso-bmb")
packageVersion("glmmLasso")
## [1] ‘1.6.2.9000’

你的例子现在为我运行,但我根本没有检查结果是否合理。

【讨论】:

    猜你喜欢
    • 2019-10-14
    • 2017-03-17
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 2018-08-03
    • 1970-01-01
    • 2017-02-01
    相关资源
    最近更新 更多