R语言中滚动相关性结果居中显示的实现方法咨询
滚动相关性结果居中实现方案
Python(pandas)
pandas的rolling方法原生支持结果居中对齐,只需设置center=True参数即可,无需手动调整日期索引。示例代码:
import pandas as pd import numpy as np # 构造示例数据 df = pd.DataFrame({ 'x': np.random.randn(20), 'y': np.random.randn(20) }) # 窗口宽度9,结果居中的滚动相关性计算 df['rolling_corr'] = df['x'].rolling(window=9, center=True).corr(df['y'])
计算后,首个有效相关系数会自动对应窗口的中心位置(第5行,索引从0开始为第4位),前后窗口不足的部分会填充NaN,完全避免手动调整带来的错位问题。
R语言
使用zoo包的rollapply
zoo包的rollapply函数支持通过align="center"参数指定结果居中,示例:
library(zoo) # 构造示例数据 x <- rnorm(20) y <- rnorm(20) df <- data.frame(x, y) # 窗口9,居中对齐的滚动相关计算 df$rolling_corr <- rollapply(df, width=9, FUN=function(z) cor(z[,1], z[,2]), align="center", by.column=FALSE)
使用slider包(更简洁)
slider包通过.before和.after参数精确控制窗口范围,直接实现结果居中:
library(slider) # 窗口覆盖当前行前4个、后4个观测(共9个),结果对应当前行 df$rolling_corr <- slide2_dbl(df$x, df$y, ~cor(.x, .y), .before=4, .after=4)
内容的提问来源于stack exchange,提问作者justaneconomist
相关产品推荐
相关产品推荐

