时间序列建模中是否存在类似线性模型的列名简写语法?
时间序列建模中是否支持列名简写(类似
lm()的~ .)? 在线性模型里,我们可以用~ .来简写所有列名,无需手动罗列:
linear1 <- lm(mpg ~ ., data = mtcars)
但在使用fpp3包的TSLM()进行时间序列建模时,尝试同样写法会报错:
library(fpp3) head(us_change) linear1 <- us_change %>% fabletools::model(TSLM(Consumption ~ .,)) %>% report() # Error in TSLM(Consumption ~ ., ) : unused argument (alist())
而手动写出所有自变量的代码可正常运行:
us_change %>% fabletools::model(TSLM(Consumption ~ Income + Production + Savings + Unemployment)) %>% report()
数据预览:
解决方案
在fpp3的TSLM()中,是支持类似~ .的列名简写的,报错的原因是你在~ .后面多写了一个多余的逗号,导致函数识别到无效的空参数。
修正后的正确代码:
library(fpp3) us_change %>% fabletools::model(TSLM(Consumption ~ .)) %>% report()
如果需要排除特定自变量,还可以用~ . - 列名的写法,比如排除Unemployment:
us_change %>% fabletools::model(TSLM(Consumption ~ . - Unemployment)) %>% report()
注:us_change中的时间索引列会被fpp3自动识别,不会被纳入自变量范围,无需额外处理。
内容的提问来源于stack exchange,提问作者Russ Conte
相关产品推荐
相关产品推荐

