目前,我正在使用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行代码,但我还没有完成!
谢谢。 艾伦
答案 0 :(得分: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
构造完整公式。