рассчитать стандартное отклонение окна в 100 дней для данных, содержащих 2000 точек

У меня есть 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

person anadi    schedule 11.07.2019    source источник


Ответы (1)


Это вычисляет среднее значение для 100 строк, сосредоточенных вокруг текущей точки (или меньшего количества строк, если доступно меньше строк). Вы можете добавить аргумент align= (см. ?rollapply), но если вы выровняете вправо или влево, то будет одна строка, имеющая только одну точку, а sd из одной точки будет NA.

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
person G. Grothendieck    schedule 11.07.2019
comment
эй, я думаю, ты не понял мой вопрос. Я хочу рассчитать стандартное отклонение 200 образцов, взяв по 100 точек в каждом образце. Ваш код вычисляет некоторое среднее значение для каждой точки данных 2000 - person anadi; 12.07.2019
comment
Предлагаю прочитать ответ еще раз. Я поменял его со среднего на SD. - person G. Grothendieck; 12.07.2019