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

R中ts()的合适频率与起止日期设置及ARIMA-GARCH技术问题

问题

我有如下数据集,希望将其转换为时间序列对象以用于auto.arima预测:

head(df)

total_score return
1539    121.77          
1074    422.18          
901    -229.79          
843     96.30           
1101   -55.25           
961    -48.28   

该数据集共13104行,每行代表一小时的推特情感评分与BTC收益,第一行对应2021-01-01 00:00,第二行对应2021-01-01 01:00,以此类推至2022-06-30 23:00(经核算该时间区间共13104小时,数据行数匹配)。

请问:

  1. 如何设置ts()函数以适配auto.arima的预测需求?
  2. 已知auto.arima要求误差同方差,但我的数据存在异方差,因此考虑使用GARCH模型。若auto.arima选定的阶数为(2,0,0),是否意味着对应的GARCH模型阶数应为(0,0,2)?

附:我仍困惑为何我的数据看似平稳,我原本认为加密货币(包括其收益)大概率是非平稳的,不过这个问题留待后续处理。


解答

1. 使用ts()创建适配auto.arima的时间序列对象

由于你的数据是小时频率(每天24个观测),且起始时间为2021-01-01 00:00,可以通过以下参数设置ts()函数:

# 以BTC收益列为例,创建时间序列对象
ts_return <- ts(
  data = df$return,
  start = c(2021, 1),  # 第二个元素代表2021年的第1天(即1月1日)
  frequency = 24       # 每天24个观测,对应小时频率
)
  • frequency=24:指定单位时间(天)内的观测数量,确保auto.arima能识别小时级别的周期性。
  • 若需要更直观的时间轴标签,也可以使用xts或zoo包创建时间序列(auto.arima同样支持这类对象):
library(xts)
# 创建带精准时间戳的xts对象
dates <- seq(as.POSIXct("2021-01-01 00:00"), as.POSIXct("2022-06-30 23:00"), by = "hour")
xts_return <- xts(df$return, order.by = dates)

2. ARIMA与GARCH阶数的关系

两者阶数没有直接对应关系:

  • auto.arima选定的(2,0,0)是均值方程的AR(2)模型,描述的是收益序列自身的线性依赖关系;
  • GARCH模型针对的是方差方程,用于捕捉异方差性,其阶数(GARCH(p,q)中的p和q)需要通过分析ARIMA模型的残差来确定:
    1. 先拟合ARIMA(2,0,0)模型,提取残差;
    2. 对残差进行ARCH LM检验,确认异方差的显著性;
    3. 观察残差平方的ACF和PACF图,选择合适的p(GARCH项阶数)和q(ARCH项阶数)。

你提到的(0,0,2)是MA(2)模型,和GARCH阶数逻辑完全不同,不能直接从ARIMA阶数推导。

关于加密货币收益平稳性的补充

加密货币的价格序列通常是非平稳的(符合随机游走特征),但收益序列(价格的差分/变化量)大多是平稳的——这是金融时间序列的普遍特征,因为收益反映的是价格的相对波动,而非绝对水平,所以你的收益序列平稳是正常现象。


内容的提问来源于stack exchange,提问作者A. Jahanyar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:35:20