簡體   English   中英

glmmLasso 可以與 Tweedie 發行版一起使用嗎?

[英]Can glmmLasso be used with the Tweedie distribution?

我有一個線性混合效果 model,我正在嘗試進行變量選擇。 model正在測試1000個采樣點的森林退化程度。 大多數點沒有退化,因此因變量高度偏斜且有許多零。 因此,我使用 Tweedie 分布來擬合 model。我的主要問題是:Tweedie 分布實際上可以用在glmmLasso function 中嗎? 我的第二個問題是:我什至需要在glmmLasso()中使用這個分布嗎? 任何幫助深表感謝!

當我使用family = tweedie(var.power=1.2,link.power=0)運行 function 時,出現以下錯誤:

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

如果我將link.power從 0 更改為 1(我認為這對我的 model 不正確,但只是為了找出問題),我會得到一個不同的錯誤:

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 package。一個簡單的例子:

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的黑客版本,將 Tweedie 發行版作為一個選項,並將其放在 Github 上。我必須更改代碼的兩個方面:

  • 如果family$family == "Tweedie"添加一個子句來計算對數似然
  • 在代碼本質上是if (family$family in list_of_families)...的許多地方,添加“Tweedie”作為選項。
remotes::install_github("bbolker/glmmLasso-bmb")
packageVersion("glmmLasso")
## [1] ‘1.6.2.9000’

你的例子現在為我運行,但我根本沒有檢查結果是否合理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM