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

基于ARIMA的R语言多商品时间序列预测:数据格式适配问题

多商品ARIMA预测:CSV格式适配与代码调整方案

报错原因

你遇到的Error: id variables not found in data: Code Article,核心问题是代码需要**商品唯一标识列(Code Article)**来区分不同商品,但当前数据要么是读入方式错误导致结构混乱,要么是原始CSV格式不符合分组建模的要求。


方案一:调整代码适配现有CSV(无需修改CSV)

你的CSV是分号分隔,但读入时没指定分隔符,R默认用逗号拆分,所以才会变成单列。按以下步骤修正:

  1. 正确读入CSV
    指定分号作为分隔符,把数据拆成多列:

    # 替换成你的文件路径
    df <- read.csv("sales_data.csv", sep = ";", header = TRUE, stringsAsFactors = FALSE)
    

    读入后应该是宽格式:第一列是日期,后续每一列对应一个商品的销量,列名最好是商品的Code Article编码。

  2. 转成长格式(适配分组建模)
    用tidyr包把宽格式转成每行对应一个商品月度数据的长格式,生成Code Article列:

    library(tidyr)
    long_df <- pivot_longer(df,
                            cols = -日期,  # 排除日期列,其他列都是商品销量
                            names_to = "Code Article",  # 把原列名作为商品编码
                            values_to = "销量")
    
  3. 分组拟合ARIMA并预测
    用dplyr和forecast包按商品分组,每个商品单独拟合ARIMA并生成18个月预测:

    library(dplyr)
    library(forecast)
    
    forecast_list <- long_df %>%
      group_by(`Code Article`) %>%
      mutate(
        # 转换为月度时间序列
        ts_data = list(ts(销量, start = c(year(min(日期)), month(min(日期))), frequency = 12)),
        # 自动选择最优ARIMA模型
        arima_model = list(auto.arima(ts_data[[1]])),
        # 生成18个月预测
        forecast_result = list(forecast(arima_model[[1]], h = 18))
      ) %>%
      ungroup()
    

方案二:规范CSV结构(更推荐,长期维护更省心)

如果可以修改CSV,直接改成长格式,每一行对应一个商品的一个月销量,列结构如下(分号分隔):

日期;Code Article;销量
2023-01-01;ART001;120
2023-01-01;ART002;85
2023-02-01;ART001;135
2023-02-01;ART002;90
...

这种格式读入后无需转换,直接就能用上面的分组建模代码,结构清晰,不容易出错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 14:50:21