在具有2000点的数据中计算100天的窗口标准偏差

时间:2019-07-11 21:27:10

标签: r standard-deviation rolling-computation

我有2000个数据点,我想计算所有大小为100天的窗户的标准偏差,但我得到了一些NA值。任何人都可以建议修改。 这是csv的链接: https://drive.google.com/file/d/1NnavFM_FAXIGIyHsNXBbOpoysJYlGnm8/view?usp=sharing

df<- read.csv("BSE_DAX_DCC.csv")
nrow(df)
sd1=c()
for (i in 1:200){
duration = df[(100*(i-1)+1):100*(i),'corr']
sd1[i]=sd(duration)

}
sd1

1 个答案:

答案 0 :(得分:0)

这将计算以当前点为中心的100行的平均值(如果可用的行数较少,则减少行数)。您可以添加align=自变量(请参见?rollapply),但是如果您向右或向左对齐,那么将只有一行包含一个点,而sd的一个点是NA。 / p>

library(zoo)
transform(df, mean = rollapply(corr, 100, sd, partial = TRUE))

为清楚起见,使用一个较小的示例:

rollapply(1:5, 3, sd, partial = TRUE)
## [1] 0.7071068 1.0000000 1.0000000 1.0000000 0.7071068

# same
c(sd(1:2), sd(1:3), sd(2:4), sd(3:5), sd(4:5))
## [1] 0.7071068 1.0000000 1.0000000 1.0000000 0.7071068