2017-10-09 63 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保持者)