Этот скрипт R генерирует ансамбли временных рядов. Серия получается из функции f (t) = alpha * f (t-0) + epsilon, где epsilon является случайным числом из нормального распределения.Векторизация генератора ансамбля временных рядов в R
Конечным результатом является список ансамблей, созданных из разных значений альфа.
Как это можно проставить в векторе? Использование базовых функций было бы здорово, но решения, требующие дополнительных пакетов, тоже приветствуются.
steps <- 1000 # number of times each "pseudo random walk" is iterated
N <- 5 # number of walks in each ensemble
mu <- 0 # normal distribution mean
mysd <- 1 # normal distribution standard deviation
alphas <- c(0, 0.5, 0.7, 1, 1.5, 2) # set of different alphas to generate ensembles with
# Pseudo random walk generator
generate.rw <- function(steps, alpha, my, mysd) {
epsilons <- rnorm(n = steps, mean = mu, sd = mysd)
rw <- vector(,steps)
rw[1] <- epsilons[1]
for (i in 2:steps) rw[i] <- alpha * rw[i-1] + epsilons[i]
return(rw)
}
# Ensemble generator
ensemble <- function(N, steps, alpha, mu, mysd) {
result <- matrix(,N,steps)
for (i in 1:N) result[i,] <- generate.rw(steps, alpha, my, mysd)
return(result)
}
# Get a list of ensembles with different values of alpha
ensembles <- lapply(alphas, ensemble, steps = steps, N = N, mu = mu, mysd = mysd)
'? Cumsum' является началом – rawr
Я посмотрел на cumsum, но это полезно, только когда alpha == 1. Коэффициент множителя усложняет ситуацию там – HAVB
@tospig исправлено сейчас, спасибо за уловку – HAVB