r - 滑动窗口:将系列与之前/之后的所有系列进行比较
问题描述
我对滚动窗户相当陌生。我正在寻找一个函数来比较数据中的一个窗口与相同大小之前/之后的所有窗口之间的相关性。假设没有间隙。我想使用 tidyverse-sque 方法,例如tsibble
和/或 @Davis Vaughanslider
df <- structure(list(sales = c(2, 4, 6, 2, 8, 10, 9, 3, 5, 2), index = structure(c(1567123200, 1567209600, 1567296000, 1567382400, 1567468800, 1567555200, 1567641600, 1567728000, 1567814400, 1567900800), class = c("POSIXct", "POSIXt"), tzone = "UTC")), row.names = c(NA, -10L), class = ("tbl_df", "tbl", "data.frame"))
假设我想计算该系列的前 3 天与所有前 3 天窗口之间的 Pearson 相关性:
解决方案
gl
我们可以在删除前 3 行后为每 3 行创建一个分组索引,然后在前 3 行cor
和“销售”的每个块之间进行
library(dplyr)
n <- 3
df %>%
slice(-seq_len(n)) %>%
group_by(grp = as.integer(gl(n(), n, n()))) %>%
filter(n() == n) %>%
summarise(cor = cor(df$sales[seq_len(n)], sales))
-输出
# A tibble: 2 x 2
# grp cor
# <int> <dbl>
#1 1 0.961
#2 2 -0.655
数据
df <- data.frame(sales = c(2, 4, 6, 2, 8, 10, 9, 3, 5, 2),
index = seq(as.Date("2019-08-30"), length.out = 10, by = '1 day'))
推荐阅读
- database - 对 Apache HBase 基础知识感到困惑?
- javascript - 如何在不打开新标签的情况下播放音频文件
- ios - 从 QRCode 中的自定义 URL 打开 iOS 应用程序
- android - 如何在 WebView Android App 中启用谷歌翻译
- hibernate - Hibernate Criteria 取第一条记录
- reactjs - 已解决:React Hook useEffect - 重新渲染/重置问题
- netty - fireChannelRead() - 它的语义是什么?
- javascript - React Native,从嵌套在状态中的数组中访问单个元素
- php - 图像在浏览器 chrome 和火狐浏览器上没有显示为较小的图标
- reactjs - React - 在 ssr 之前获取一些数据并在客户端获取一些数据