r - 为什么 gamm 返回错误 "unused argument (offset= ...)"?

标签 r

全部-

这里是第一次发帖,所以如果我违反了一些提问惯例(例如提供可复制的示例),请多多包涵。

我正在尝试使用“gamm”函数和以下代码来估计广义加法混合模型:

fit1.1 = gamm(opioidNonFatalOD ~ s(mandatoryReg.l2, k = 3, fx = TRUE, 
                                         bs = "cr") +
                  s(coalitionActive.l2, k = 3, fx = TRUE, bs = "cr") +
                  monthsSinceJan2011 +
                  everFunded +
                  ICD10 +
                  spoke5 +
                  hub +
                  s(monthly2, bs = "cc", fx = FALSE, k = 4) +
                  s(county2, bs = "re"),
                  #+ offset(log(population / 100000)),
           correlation = corAR1(form = ~ monthsSinceJan2011 | county2),
           data = tsData,
           family = quasipoisson, offset = log(population / 100000),
           niterPQL = 20,
           verbosePQL = TRUE)

出于某种原因,“offset”参数似乎没有传递给 gammPQL。我收到此错误:

iteration 1
Quitting from lines 201-220 (pfs_model_experiments_041520.Rmd) 
Error in lme(fixed = fixed, random = random, data = data, correlation = correlation,  : 
  unused argument (offset = log(population/1e+05))
Calls: <Anonymous> ... withVisible -> eval -> eval -> gamm -> eval -> eval -> gammPQL
Execution halted

这是回溯消息:

Error in lme(fixed = fixed, random = random, data = data, correlation = correlation, : unused argument (offset = log(population/1e+05))
4.
gammPQL(y ~ X - 1, random = rand, data = strip.offset(mf), family = family, correlation = correlation, control = control, weights = weights, niter = niterPQL, verbose = verbosePQL, mustart = mustart, etastart = etastart, ...) at <text>#1
3.
eval(parse(text = paste("ret$lme<-gammPQL(", deparse(fixed.formula), ",random=rand,data=strip.offset(mf),family=family,", "correlation=correlation,control=control,", "weights=weights,niter=niterPQL,verbose=verbosePQL,mustart=mustart,etastart=etastart,...)", sep = "")))
2.
eval(parse(text = paste("ret$lme<-gammPQL(", deparse(fixed.formula), ",random=rand,data=strip.offset(mf),family=family,", "correlation=correlation,control=control,", "weights=weights,niter=niterPQL,verbose=verbosePQL,mustart=mustart,etastart=etastart,...)", sep = "")))
1.
gamm(opioidNonFatalOD ~ s(mandatoryReg.l2, k = 3, fx = TRUE, bs = "cr") + s(coalitionActive.l2, k = 3, fx = TRUE, bs = "cr") + monthsSinceJan2011 + everFunded + ICD10 + spoke5 + hub + s(monthly2, bs = "cc", fx = FALSE, k = 4) + s(county2, bs = "re"), ...

我尝试使用偏移量作为模型中的术语(请参阅注释掉的代码),但出现类似的错误。

只是检查代码,有人知道我做错了什么吗?

谢谢, 大卫

最佳答案

tl;博士; 在 gamm 之外创建偏移量函数,然后使用 ...+offset() 将其传递给公式。 在您的示例中然后使用:

tsData$off = log(tsData$population/100000)
gamm(opioidNonFatalOD ~ <other variables> + s(county2, bs = "re") + offset(off), 
                                                                        <other stuffs>)

gams 添加偏移量的一般语法是将其包含在公式中,例如 y ~ ... + x + offset(offset_variable) 。然而,如下面的示例所示,似乎 gamm正在努力解析 log 中的函数(即 offset 或除法)功能。

一些例子:

library(mgcv)
# create some data
set.seed(1)
dat <- gamSim(6,n=200,scale=.2,dist="poisson")
# create an offset
dat$off1 = (dat$y+1)*sample(2:10, 200, TRUE)

尝试 1:找到 off1但错误可能是由于 off1 中的值较大所致(我们真的希望日志被转换,或者使用任何链接功能)

m1 <- gamm(y~s(x0)+s(x1)+s(x2) + offset(off1), 
           family=poisson,data=dat,random=list(fac=~1))

Maximum number of PQL iterations: 20
iteration 1
iteration 2
Show Traceback
Rerun with Debug
Error in na.fail.default(list(Xr.1 = c(-0.00679246534326368, -0.0381904761033802,
:missing values in object

尝试 2:似乎找不到 off1之后logoffset内进行变换功能

m2 <- gamm(y~s(x0)+s(x1)+s(x2) + offset(log(off1)), 
           family=poisson, data=dat,random=list(fac=~1))

Maximum number of PQL iterations: 20
iteration 1
Show Traceback
Rerun with Debug
Error in eval(predvars, data, env) : object 'off1' not found

尝试 3:在 offset 之外定义偏移项功能

# Success  
dat$off2 = log(dat$off1)
m3 <- gamm(y~s(x0)+s(x1)+s(x2) + offset(off2), 
           family=poisson, data=dat, random=list(fac=~1))

因此在外部创建偏移变量,然后将其传递给 gamm公式。

关于r - 为什么 gamm 返回错误 "unused argument (offset= ...)"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61785717/

相关文章:

r - 如何在 Shiny 的应用程序内调用应用程序

用该列的中位数替换矩阵每一列中的 NA

ggplot geom_area的R堆叠区域顺序

R的data.table截断位?

R 中 coord_flip 之后的相反顺序

r - R 中的 Euler 项目 #1

r - 如何在 purrr::map_df 之后使用映射向量添加列

r - 在 R 中使用 MCMC Metropolis-Hastings 算法对多维度后验分布进行采样

r - 每个 facet_grid 的 ggplot2 个人 ylabs

r - Julia 创建一个与 R 类 ngCMatrix 相当的 "Empty"稀疏矩阵