这是可行的。您需要将全局变量lambda 和gamma 设置为等于car::bcnPower() 记录的相应参数值。
tran = list (
linkfun = function(mu) {
s = sqrt(mu^2 + gamma^2)
if (abs(lambda) < 1e-10) log(.5*(mu + s))
else ((0.5 * (mu + s))^lambda - 1) / lambda },
linkinv = function(eta) {
q = if (abs(lambda) < 1e-10) 2 * exp(eta)
else 2 * (lambda * eta + 1) ^ (1/lambda)
(q^2 - gamma^2) / (2 * q) },
mu.eta = function(eta) {
if (abs(lambda) < 1e-10) { q = 2 * exp(eta); dq = q }
else { q = 2 * (lambda * eta + 1) ^ (1/lambda)
dq = 2 * (lambda * eta + 1)^(1/lambda - 1) }
0.5 * (1 + (gamma/q)^2) * dq },
valideta = function(eta) all(eta > 0),
param = c(lambda, gamma),
name = paste0("bcnPower(", signif(lambda,3), ", ", signif(gamma,3), ")")
)
然后使用tran,就好像你是通过make.tran()创建的一样。
一个月或更长时间后,当下一个版本上传到 CRAN 时,将通过 make.tran("bcnPower, c(lambda, gamma)) 提供。