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

时间序列自举法运行报错:unused argument (original)问题求解

解决R语言自举周期图时的报错问题及时间序列适配方案

报错原因

boot包要求统计函数必须接受两个参数:第一个是原始数据集,第二个是抽样的索引向量。你定义的periodogram_fun只有一个参数,无法接收boot函数自动传递的索引参数,因此触发unused argument (original)错误。

修复步骤及时间序列适配方案

由于你的数据是带季节性的时间序列,直接用普通非参数自举会破坏时序的自相关性和季节性结构,推荐使用boot包的tsboot函数(专门针对时间序列的自举工具),以下是完整流程:

1. 加载依赖包

library(boot)
library(TSA)

2. 修正统计函数

针对时间序列自举,函数只需接收数据参数即可(tsboot会自动处理抽样逻辑):

periodogram_ts_fun <- function(data) {
  # 返回周期图的谱密度值
  TSA::periodogram(data)$spec
}

3. 执行季节性块自举

使用type = "seasonal"指定季节性块自举,block.length设为你的季节周期长度(365天,对应年度季节性):

# 执行1000次自举
boot_result <- tsboot(tsdata, periodogram_ts_fun, R = 1000, 
                      type = "seasonal", block.length = 365)

4. 计算p值

对每个频率的谱密度,p值为自举样本中谱密度大于原序列谱密度的比例:

# 获取原序列的周期图谱密度
original_spec <- TSA::periodogram(tsdata)$spec
# 提取自举得到的所有谱密度结果(每行对应一次自举)
boot_spec_matrix <- boot_result$t
# 逐频率计算p值
p_values <- apply(boot_spec_matrix, 2, function(boot_vals) {
  mean(boot_vals > original_spec)
})

关键说明

  • 普通boot函数适用于独立同分布数据,时间序列存在自相关/季节性,必须用块自举或季节性块自举才能保证估计的有效性。
  • 如果你的数据是日内/周度季节性(比如日数据的7天周期),只需调整block.length为对应周期长度即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 09:15:23