You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

fpp3包TSLM建模是否支持.号指代全部自变量的简写语法

fpp3中TSLM模型全变量建模简写方案

TSLM()作为fpp3包提供的时间序列线性模型函数,本身没有内置基础lm()函数中y ~ .的全变量自动匹配语法,因为其公式需要同时支持普通数值自变量、trend()/season()这类特殊时间项,公式解析逻辑和基础回归有差异。你遇到的unused argument (alist())报错首先是因为代码中TSLM(Total_Employees ~ .,))末尾多写了一个多余的逗号,传入了空参数;但即便删掉多余逗号,直接写.也无法被TSLM正确解析。

可以通过以下两种方式实现无需手动列全变量的批量建模:

方法1:动态生成公式(最稳定,推荐)

提前提取数据集中除响应变量、时间索引外的所有自变量,拼接生成标准公式后传入模型,完全自定义纳入规则,不会误把索引列当自变量:

# 配置参数
response_col <- "Total_Employees"  # 因变量列名
index_col <- "Month" # 时间索引列名
add_trend <- TRUE # 是否纳入趋势项
add_season <- TRUE # 是否纳入季节项

# 提取所有普通自变量
predictor_cols <- colnames(Monthly_labor_data_small) |> 
  setdiff(c(response_col, index_col))

# 拼接公式
formula_parts <- c(predictor_cols)
if(add_trend) formula_parts <- c(formula_parts, "trend()")
if(add_season) formula_parts <- c(formula_parts, "season()")
tslm_formula <- as.formula(
  paste(response_col, "~", paste(formula_parts, collapse = " + "))
)

# 建模
fit <- Monthly_labor_data_small |> 
  model(linear = TSLM(tslm_formula))
report(fit)

后续数据集新增列时无需修改建模代码,会自动把新列纳入自变量。

方法2:用dplyr选择器快速匹配

如果不需要严格排除索引列,可以直接用tidyverse自带的everything()选择器匹配所有列,TSLM会自动识别时间索引列并处理为趋势项,不会重复计算:

fit <- Monthly_labor_data_small %>% 
  model(
    linear = TSLM(Total_Employees ~ everything() + trend() + season())
  )

*注意:如果你的tsibble中存在非数值、非自变量的其他列(比如文本标签列),不要用这个方法,优先用第一种动态生成公式的方案提前过滤掉不需要的列。


内容的提问来源于stack exchange,提问作者Russ Conte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 04:42:22