[英]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.