Совокупные суммы, скользящие средние значения и SQL “группа” эквивалентами в R

Удостоверьтесь, что Вы используете JVM Sun для выполнения Eclipse.

На Linux, особенно Ubuntu, Eclipse установлен по умолчанию для использования GCJ с открытым исходным кодом, который имеет решительно более плохую производительность. Используйте update-alternatives --config java для переключения на JVM Sun для большого улучшения мгновенности UI в Eclipse.

8
задан Rob Hyndman 14 September 2009 в 11:39
поделиться

2 ответа

Зоопарк - это здорово, но иногда есть более простые способы. Если ваши данные ведут себя хорошо и равномерно распределены, функция embed () эффективно позволяет вам создавать несколько отсроченных версий временного ряда. Если вы заглянете внутрь пакета VARS на предмет векторной авторегрессии, вы увидите, что автор пакета выбирает этот маршрут.

Например, чтобы вычислить 3-периодное скользящее среднее x, где x = (1 -> 20) ^ 2:

> x <- (1:20)^2
> embed (x, 3)
      [,1] [,2] [,3]
 [1,]    9    4    1
 [2,]   16    9    4
 [3,]   25   16    9
 [4,]   36   25   16
 [5,]   49   36   25
 [6,]   64   49   36
 [7,]   81   64   49
 [8,]  100   81   64
 [9,]  121  100   81
[10,]  144  121  100
[11,]  169  144  121
[12,]  196  169  144
[13,]  225  196  169
[14,]  256  225  196
[15,]  289  256  225
[16,]  324  289  256
[17,]  361  324  289
[18,]  400  361  324
> apply (embed (x, 3), 1, mean)
 [1]   4.666667   9.666667  16.666667  25.666667  36.666667  49.666667
 [7]  64.666667  81.666667 100.666667 121.666667 144.666667 169.666667
[13] 196.666667 225.666667 256.666667 289.666667 324.666667 361.666667
9
ответ дан 5 December 2019 в 17:39
поделиться

Я поцарапал хороший ответ Ахима Зейлиса в списке r. Вот что он сказал:

library(zoo)
## create data

x <- rnorm(365)
## transform to regular zoo series with "Date" index

x <- zooreg(x, start = as.Date("2004-01-01")) plot(x)

## add rolling/running/moving average with window size 7 

lines(rollmean(x, 7), col = 2, lwd = 2)

## if you don't want the rolling mean but rather a weekly ## time series of means you can do
nextfri <- function(x) 7 * ceiling(as.numeric(x - 1)/7) + as.Date(1) xw <- aggregate(x, nextfri, mean)

## nextfri is a function which computes for a certain "Date" ## the next friday. xw is then the weekly series. 

lines(xw, col = 4)

Ахим продолжил:

Обратите внимание, что разница между скользящее среднее и агрегированный ряд происходит из-за разного выравнивания. Эта можно изменить, изменив выравнивание аргумент в rollmean () или nextfri () функция в совокупности вызов.

Все это пришло от Ахима, а не от меня: http://tolstoy.newcastle.edu.au/R/help/05/06/6785.html

1
ответ дан 5 December 2019 в 17:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: