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

使用tsibble拟合ARIMA模型时出现‘lambda未找到’错误求助

问题解决:object 'lambda' not found 错误修复

错误原因

  1. 生成的sum_tourism丢失了时间索引(Quarter),导致拆分后的子集不是有效的时间序列对象(tsibble),feasts::features无法正确提取Guerrero lambda值。
  2. 传递给fit函数的col参数是数值向量(.x$sum_trips),而非列名引用,函数内部无法正确解析变量。

修正后的代码

library(tsibble)
library(feasts)
library(dplyr)
library(purrr)

# 生成带时间索引的分组汇总tsibble
sum_tourism <- tourism %>% 
  group_by(Region, Quarter) %>% 
  summarise(sum_trips = sum(Trips), .groups = "drop_last") %>% 
  as_tsibble(key = Region, index = Quarter)

# 修正拟合函数:使用整洁语法引用列
fit <- function(ts, col) {
  lambda <- ts %>% 
    features({{col}}, features = guerrero) %>% 
    pull(lambda_guerrero)
  mod <- model(ts, arima = ARIMA(box_cox({{col}}, lambda = lambda)))
  return(mod)
}

# 按Region拆分并拟合模型
models <- sum_tourism %>% 
  group_split(Region) %>% 
  map(~fit(.x, sum_trips))

关键修正点

  • 保留时间序列结构:sum_tourism必须明确指定Region为键、Quarter为时间索引,确保每个拆分后的子集都是合法的tsibble。
  • 整洁评估语法:用{{col}}引用列名,替代直接传递数值向量,让函数能正确识别数据框中的目标列。
  • 使用group_split:替代基础split函数,保留子集的tsibble结构,避免转换为普通数据框导致的功能失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 21:52:48