道歉,如果答案是显而易见的,但我花了相当长的一段时间,试图在mgcv.gam自定义链接功能适用于GLM但不mgcv GAM
总之使用自定义链接功能,
- 我想用从包psyphy(我想用psyphy.probit_2asym,我把它叫做
custom_link
)改性概率链接 我可以创建此链接{统计}家庭对象和的“家庭”的说法用它GLM。
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?
在此先感谢您,如果您能给我提示我该怎么做。
Link功能
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")
}
非常感谢您编辑问题。 – user1436340