1. Nauka
  2. /
  3. Kursy
  4. /
  5. Optimizing R Code with Rcpp

Connected

ćwiczenie

Simulace modelu AR(p)

Autoregresní (AR) modely jsou typem lineární regrese pro časové řady, kde předpovídané hodnoty závisí na hodnotách z předchozích časových bodů. Kvůli této závislosti je nutné model počítat postupně, bod po bodu – a právě tady se hodí cyklus for a rychlost C++!

Takhle vypadá algoritmus v R:

ar1 <- function(n, constant, phi, eps) {
  p <- length(phi)
  x <- numeric(n)
  for(i in seq(p + 1, n)) {
    value <- rnorm(1, constant, eps)
    for(j in seq_len(p)) {
      value <- value + phi[j] * x[i - j]
    }
    x[i] <- value
  }
  x
}

n je počet simulovaných pozorování, c je konstanta, phi je numerický vektor koeficientů autokorelace a eps je směrodatná odchylka šumu. Dokonči definici funkce ar2() – překladu ar1() do C++.

Instrukcje

100 XP
  • Pomocí R API Rcpp vygeneruj náhodné číslo z normálního rozdělení se střední hodnotou c a směrodatnou odchylkou eps.
  • Nastav vnitřní cyklus for tak, aby iteroval od 0 do p.
  • Uvnitř vnitřního cyklu zvyš value o j-tý prvek phi vynásobený prvkem x na indexu „i minus j minus 1".