2017-10-09 62 views
0

我正在使用mgcv :: gam擬合負二項模型,並且我注意到無效偏差從適合變爲適合。如果我使用negbin家庭功能而不是nb,問題就會消失。從mgcv :: gam與家庭變化的零偏差= nb

以下重現該問題。

library(mgcv) 
set.seed(3) 
n <- 400 
dat <- gamSim(1, n=n) 
g <- exp(dat$f/5) 

## negative binomial data... 
dat$y <- rnbinom(g, size=3, mu=g) 
## known theta fit ... 

# Now fit 3 different models 
preds <- c("x1", "x2", "x3") 

for (i in 1:length(preds)){ 
    fo <- formula(paste("y ~ x0 +", preds[i])) 
    #print(fo) 

    m1 <- gam(fo, data=dat, family=nb(theta=3)) # nb 
    m2 <- gam(fo, data=dat, family=negbin(3)) # negbin 

    print(paste(m1$null.deviance, ", ", m2$null.deviance)) 
} 

如果我運行它,我會得到以下結果。

[1] "820.724580736807 , 820.708788014928" 
[1] "820.747020281717 , 820.708788014928" 
[1] "820.708788454065 , 820.708788014928" 

使用nb的null.deviance從820.71到820.75不等。

在這種情況下,無效偏差只是略有變化,但在另一個例子中,它有很大的改變。

我缺少什麼?

感謝, 哈利

回答

1

對於'大家庭,如‘NB’,mgcv是使用近似零偏差,這是很容易計算,甚至家庭等有序分類,而是取決於根據模型的響應的位置參數的平均值。近似值爲零模型的位置參數將是擬合模型下觀測特定位置參數的平均值。

在下一個版本(1.8-23)中,將被替換爲直接最小化單個位置參數的偏差以找到無效偏差。

Simon Wood(mgcv保持者)