使用 BCNPower 变换(汽车)和 emmeans
Using BCNPower Transform (car) and emmeans
R 中的汽车包实现了具有非正数 (BCN) 的 Box-Cox。这不是标准的 Box-Cox 变换,尽管它建立在它的基础上。
emmeans 包可以处理转换后的数据。如果定义了适当的函数,它可以反向转换。 make.tran 下有内置转换。这是 emmeans 使用的界面。
make.tran returns 包含变换、其逆、雅可比和测试域的函数的列表。
如何将 BCN 转换添加到内置转换?
是否只需创建一个包含适当内容(如 make.tran 指定)的新列表并在调用 emmeans 的环境中使用它?
谢谢
这是有用的东西。您需要将全局变量 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()
创建的一样。
这将在一个月或更长时间后通过 make.tran("bcnPower, c(lambda, gamma))
的方式提供,当下一个版本上传到 CRAN 时。
R 中的汽车包实现了具有非正数 (BCN) 的 Box-Cox。这不是标准的 Box-Cox 变换,尽管它建立在它的基础上。
emmeans 包可以处理转换后的数据。如果定义了适当的函数,它可以反向转换。 make.tran 下有内置转换。这是 emmeans 使用的界面。
make.tran returns 包含变换、其逆、雅可比和测试域的函数的列表。
如何将 BCN 转换添加到内置转换?
是否只需创建一个包含适当内容(如 make.tran 指定)的新列表并在调用 emmeans 的环境中使用它?
谢谢
这是有用的东西。您需要将全局变量 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()
创建的一样。
这将在一个月或更长时间后通过 make.tran("bcnPower, c(lambda, gamma))
的方式提供,当下一个版本上传到 CRAN 时。