Сокращение длины вызовов функций в R - revoScaleR rxGLM()

Я использую R для создания некоторых моделей GLM на большом наборе данных в данный момент. Из-за своего размера я использую функцию rxGlm() в пакете revoScaleR - она ​​работает намного быстрее, чем базовая функция glm().

Я сохраняю все вызовы функций в сценарии R, чтобы потом можно было воспроизвести свою работу - контрольный журнал и т. Д.

Мои вызовы функций очень длинные, потому что у меня много факторов (~50). Все они выглядят примерно так:

rxGlm_C <- rxGlm(Dependent.Variable ~
               1 +
               Factor 1 +
               Factor 2 +
               Factor 3 +
                     ...........
               Factor N,
             family = tweedie(var.power = 1.5, link.power = 0),
             data = myDataFrame,
             pweights = "Weight.Variable",
)

Если впоследствии я захочу повторить подбор модели, но, возможно, с небольшим изменением формулы - как правило, удаляя один фактор за один раз - есть ли какое-нибудь сокращенное обозначение для этого? На данный момент я копирую и вставляю вызов функции в файл скрипта и вручную удаляю отдельные строки. Вместо этого есть какой-то синтаксис, который говорит:

"Пожалуйста, установите тот же GLM, что и в прошлый раз, но удалите фактор 13"?

Это сделало бы мои файлы сценариев намного короче. У меня сейчас около 3000 строк кода, и я еще не закончил!

Благодарю. Алан

1 ответ

Решение

Есть два случая. Если вы используете все переменные из myDataFrameтогда вы можете просто написать

rxGlm(Dependent.Variable ~ .,
      family = tweedie(var.power = 1.5, link.power = 0),
      data = myDataFrame, pweights = "Weight.Variable")

для полной модели, а затем, скажем,

rxGlm(Dependent.Variable ~ . - Factor13,
      family = tweedie(var.power = 1.5, link.power = 0),
      data = myDataFrame, pweights = "Weight.Variable")

бросить Factor13,

Если вы не используете все переменные, вы можете сохранить полную формулу, скажем,

frml <- y ~ Factor1 + Factor2 + Facto3

а затем использовать update:

update(frml, ~ . - Factor3)
# y ~ Factor1 + Factor2

Обратите внимание, однако, что в этом случае . означает "та же правая сторона, что и в frml", а не" все переменные ", как в первом варианте.

Кроме того, если это последний вариант, вы можете облегчить построение полной формулы с paste а также formula,

Другие вопросы по тегам