- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
生态学中的一种常见情况是具有二元结果(0 = 死亡,1 = 存活)的生存模型,其中个体(在此示例中考虑鸟类的个体嵌套尝试)在面临死亡风险的天数方面存在差异。为了解决这个问题,我们使用修改后的逻辑回归,将暴露天数纳入链接函数。
正如 Shaffer (2004) 所描述的:
“通过选择合适的预测函数,每日存活率是根据 x 建模的,在我们的例子中,它应该产生介于 0 和 1 之间的值。正如在逻辑回归中所做的那样,我们使用 S 形逻辑函数:
我们广义线性模型的系统组成部分是 [s(x)]t。接下来,我们考虑函数:
上述函数相对于 θ 是单调可微的,可以证明 g(θ) = β0 + β1x,满足广义线性模型中链接函数的标准。这三个组件:二项式响应分布、表达式 1 中给出的预测函数和表达式 2 中给出的链接函数,完全指定了我们的广义线性模型。该模型(以下称为“逻辑暴露模型”)类似于逻辑回归模型,但不同之处在于链接函数的形式。逻辑暴露链接函数在分子和分母中包含一个指数 (1/t),该指数在逻辑回归链接函数中不存在。指数是必要的,以说明在区间存活的概率取决于区间长度这一事实。”
这个链接函数的代码可以在网上找到,如果你输入“help(family)”,它也是 R 中描述的示例链接函数之一:
logexp <- function(days = 1)
{
linkfun <- function(mu) qlogis(mu^(1/days))
linkinv <- function(eta) plogis(eta)^days
mu.eta <- function(eta) days * plogis(eta)^(days-1) *
.Call("logit_mu_eta", eta, PACKAGE = "stats")
valideta <- function(eta) TRUE
link <- paste("logexp(", days, ")", sep="")
structure(list(linkfun = linkfun, linkinv = linkinv,
mu.eta = mu.eta, valideta = valideta, name = link),
class = "link-glm")
}
它在这样的模型中工作得很好:
glm(survive ~ date, family=binomial(link=logexp(days=dat$Days)),data=dat)
我遇到的问题是尝试在 GLMER 模型中使用此自定义链接函数并添加随机效果时(我在此处找到了此方法的一个在线示例:
http://rstudio-pubs-static.s3.amazonaws.com/4082_51aa699bd9f041c7b3f7cf7b9252f60c.html)。
glmer(survive ~ date + (1|site), family=binomial(link=logexp(days=dat$Days)),data=dat)
但是,现在我收到一条错误消息:
library(MASS)
logexp <- function(exposure = 1)
{
linkfun <- function(mu) qlogis(mu^(1/exposure))
## FIXME: is there some trick we can play here to allow
## evaluation in the context of the 'data' argument?
linkinv <- function(eta) plogis(eta)^exposure
mu.eta <- function(eta) exposure * plogis(eta)^(exposure-1) *
.Call(stats:::C_logit_mu_eta, eta, PACKAGE = "stats")
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")
}
最佳答案
您需要使用更新版本的 lme4
包,例如刚刚在 CRAN 上发布的 1.0-4 版本。早期版本不允许用户指定的链接功能。
另外,请注意,您在上面发布的代码不是最近版本的 ?family
中出现的代码。 ,其中(已过时).Call("logit_mu_eta", eta, PACKAGE = "stats")
被纯 R 实现取代:
logexp <- function(days = 1)
{
linkfun <- function(mu) qlogis(mu^(1/days))
linkinv <- function(eta) plogis(eta)^days
mu.eta <- function(eta) days * plogis(eta)^(days-1) * binomial()$mu_eta
valideta <- function(eta) TRUE
link <- paste0("logexp(", days, ")")
structure(list(linkfun = linkfun, linkinv = linkinv,
mu.eta = mu.eta, valideta = valideta, name = link),
class = "link-glm")
}
link you specified above事实上确实有这样一个模型的例子(但它确实需要最新版本的
lme4
)。
关于r - 用于已知命运生存建模的 glmer 的用户定义链接函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19012128/
我是一名优秀的程序员,十分优秀!