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

如何在R中实现多个xts残差序列的联合重采样

R xts对象联合重采样实现方法

核心思路

联合重采样的本质是保证三个序列抽取的行索引完全一致,从而让抽样结果的相同位置对应同一原始时间点的取值,不需要找支持多序列输入的重采样函数,只需统一生成一次抽样索引再分别取值即可。

前置检查

首先确认三个xts序列长度一致、时间索引对齐,若未对齐先执行合并对齐:

# 合并三个序列自动对齐时间,缺失值可根据需求自定义处理
combined_res <- merge(residuals1, residuals2, residuals3)
# 可选:去除含缺失值的行
combined_res <- na.omit(combined_res)

实现方法

方法1:合并后整体抽样(推荐)

合并为多列xts对象后直接对行抽样,一次操作即可得到同步的三列抽样结果:

# 生成2000个有放回的随机行索引
sample_idx <- sample(nrow(combined_res), size = 2000, replace = TRUE)
# 抽取得到同步的联合重采样结果,每一行对应三个序列的同步取值
sampled_joint <- combined_res[sample_idx, ]

# 按需拆分出单个序列的抽样结果
sampled1 <- sampled_joint[,1]
sampled2 <- sampled_joint[,2]
sampled3 <- sampled_joint[,3]

方法2:单独生成索引分别抽样

如果不想合并原序列,可以单独生成一次统一索引后分别对三个序列取值:

# 确认三个序列长度一致后生成统一索引,习惯用resample函数也可以替换sample为resample
sample_idx <- sample(seq_along(residuals1), size = 2000, replace = TRUE)

# 分别抽取三个序列,取值完全同步
sampled1 <- residuals1[sample_idx]
sampled2 <- residuals2[sample_idx]
sampled3 <- residuals3[sample_idx]

如果要兼容你之前使用的resample()函数,只需把生成索引的代码替换为:
sample_idx <- resample(seq_along(residuals1), 2000, replace = TRUE)
后续取值逻辑完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:24:02