【发布时间】:2017-02-09 02:59:01
【问题描述】:
如果答案很明显,我很抱歉,但我花了很长时间尝试在 mgcv.gam 中使用自定义链接函数
总之,
- 我想使用来自包psyphy的修改后的概率链接(我想使用psyphy.probit_2asym,我称之为
custom_link) -
我可以用这个链接创建一个 {stats}family 对象,并在 glm 的 'family' 参数中使用它。
m <- glm(y~x, family=binomial(link=custom_link), ... ) -
当用作 {mgcv}gam 的参数时它不起作用
m <- gam(y~s(x), family=binomial(link=custom_link), ... )我收到错误
Error in fix.family.link.family(family) : link not recognised
我不明白这个错误的原因,如果我指定标准link=probit,glm 和 gam 都可以工作。
所以我的问题可以概括为:
这个适用于 glm 但不适用于 gam 的自定义链接中缺少什么?
如果你能告诉我我应该做什么,请提前感谢。
链接功能
probit.2asym <- function(g, lam) {
if ((g < 0 ) || (g > 1))
stop("g must in (0, 1)")
if ((lam < 0) || (lam > 1))
stop("lam outside (0, 1)")
linkfun <- function(mu) {
mu <- pmin(mu, 1 - (lam + .Machine$double.eps))
mu <- pmax(mu, g + .Machine$double.eps)
qnorm((mu - g)/(1 - g - lam))
}
linkinv <- function(eta) {
g + (1 - g - lam) *
pnorm(eta)
}
mu.eta <- function(eta) {
(1 - g - lam) * dnorm(eta) }
valideta <- function(eta) TRUE
link <- paste("probit.2asym(", g, ", ", lam, ")", sep = "")
structure(list(linkfun = linkfun, linkinv = linkinv,
mu.eta = mu.eta, valideta = valideta, name = link),
class = "link-glm")
}
【问题讨论】:
-
非常感谢您编辑问题。
标签: r regression glm gam mgcv