Использование BCNPower Transform (автомобиль) и emmeans - PullRequest
2 голосов
/ 11 октября 2019

В автомобильном пакете R реализован Box-Cox с неположительными значениями (BCN). Это не стандартное преобразование Бокса-Кокса, хотя оно основано на нем.

Пакет emmeans может обрабатывать преобразованные данные. Он может преобразовать обратно, если определены правильные функции. В make.tran есть встроенные преобразования. Это интерфейс, используемый emmeans.

make.tran возвращает список, содержащий преобразование, его инверсию, якобиан и функцию для проверки домена.

Как добавить преобразование BCNк встроенным?

Это просто вопрос создания нового списка с соответствующим содержимым (как указано в make.tran) и использования его в среде, вызывающей emmeans?

Спасибо

1 Ответ

0 голосов
/ 29 октября 2019

Вот то, что работает. Вам необходимо установить глобальные переменные 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...