我正在尝试使用bam运行以下广义加性模型:

m <- bam(result ~ factor(city) + factor(year) + lnpopulation + s(lnincome), data=full_df, na.action=na.omit, family=ziP(theta = NULL, link = "identity",b=0))


但是出现以下错误:


bam中的错误(结果:bam不支持大家庭


bam的文档提到以下内容:


这是一个家庭对象,用于指定要在其中使用的分发和链接
配件等。有关详情,请参阅glm和家人。扩展
也可以使用family.mgcv中列出的家庭。


family.mgcv确实包含ziP。我究竟做错了什么?任何指导将不胜感激。谢谢!

从r-help重新发布。

真诚的

米露

最佳答案

错误消息表明您正在使用的mgcv版本不支持这些扩展家族,而这些扩展家族由mgcv的gam()函数提供支持。

值得庆幸的是,您的问题的解决方案很简单,因为Simon Wood现在从ChangeLog中提到的1.8-19版本开始实现了此功能(bam()中的扩展族):


1.8-19

** bam()现在接受扩展家族(即nbtwocat等)


当前版本为1.8-22,该版本修复了一些与所需功能有关的错误,因此请确保将其更新为最新版本。

这是从?ziP修改的示例

 ## function to simulated zip data

 rzip <- function(gamma,theta= c(-2,.3)) {
 ## generate zero inflated Poisson random variables, where
 ## lambda = exp(gamma), eta = theta[1] + exp(theta[2])*gamma
 ## and 1-p = exp(-exp(eta)).
   y <- gamma; n <- length(y)
   lambda <- exp(gamma)
   eta <- theta[1] + exp(theta[2])*gamma
   p <- 1- exp(-exp(eta))
   ind <- p > runif(n)
   y[!ind] <- 0
   np <- sum(ind)
   ## generate from zero truncated Poisson, given presence...
   y[ind] <- qpois(runif(np,dpois(0,lambda[ind]),1),lambda[ind])
   y
 }

 library('mgcv')

 ## Simulate some ziP data...
 set.seed(1);n<-400
 dat <- gamSim(1,n=n)
 dat$y <- rzip(dat$f/4-1)

 b <- bam(y ~ s(x0) + s(x1) + s(x2) + s(x3),
          family = ziP(), data = dat)


这为我提供了以下拟合模型:

> summary(b)

Family: Zero inflated Poisson(-1.855,1.244)
Link function: identity

Formula:
y ~ s(x0) + s(x1) + s(x2) + s(x3)

Parametric coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  0.97426    0.04988   19.53   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Approximate significance of smooth terms:
        edf Ref.df      F p-value
s(x0) 2.396  2.989  2.336  0.0759 .
s(x1) 2.784  3.464 77.217  <2e-16 ***
s(x2) 7.397  8.317 59.364  <2e-16 ***
s(x3) 1.235  1.428  0.269  0.5888
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Deviance explained =   69%
fREML = 593.94  Scale est. = 1         n = 400

关于r - 带bam的零充气模型(ziP)中的错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47152964/

10-11 22:57