首页 > 解决方案 > 缩短 R 中函数调用的长度 - revoScaleR rxGLM()

问题描述

我目前正在使用 R 在大型数据集上创建一些 GLM 模型。由于它的大小,我在 revoScaleR 包中使用了 rxGlm() 函数——它的运行速度比基本的 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”?

它会使我的脚本文件更短。我现在有大约 3,000 行代码,我还没有完成!

谢谢。艾伦

标签: rglmrevoscaler

解决方案


有两种情况。如果您使用来自 的所有变量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


推荐阅读