我正在尝试修改mgcv软件包中的二项式GAM的logit链接,但没有取得太大的成功。下面由Ben Bolker提供的修改后的链接(此处的方法2:https://rpubs.com/bbolker/logregexp)适用于GLM,但不适用于GAM。我想根据Shaffer(2004; https://www.jstor.org/stable/pdf/4090416.pdf)描述的逻辑暴露方法在日常巢生存分析中使用该代码。任何帮助将不胜感激。
GLM链接的代码:
logexp <- function(exposure = 1)
{
linkfun <- function(mu) qlogis(mu^(1/exposure))
linkinv <- function(eta) plogis(eta)^exposure
logit_mu_eta <- function(eta) {
ifelse(abs(eta)>30,.Machine$double.eps,
exp(eta)/(1+exp(eta))^2)
## OR .Call(stats:::C_logit_mu_eta, eta, PACKAGE = "stats")
}
mu.eta <- function(eta) {
exposure * plogis(eta)^(exposure-1) *
logit_mu_eta(eta)
}
valideta <- function(eta) TRUE
link <- paste("logexp(", deparse(substitute(exposure)), ")",
sep="")
structure(list(linkfun = linkfun, linkinv = linkinv,
mu.eta = mu.eta, valideta = valideta,
name = link),
class = "link-glm")
}
我想将链接包含在gam中,形式为
mod<-gam(y~x1 + x2 + s(x3), family=binomial(logexp(df$expos), data=df)
在y = 1或0的情况下,x变量可以是连续的或分类的,而expos =两次观察之间的天数。