【发布时间】: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