BaşlayınÜcretsiz başlayın

ARMA (p, q) modeli

Bir otomatik regresif hareketli ortalama modeli (ARMA(p, q)), otomatik regresyonu (AR(p)) ve hareketli ortalamayı (MA(q)) tek bir modelde birleştirir. Benzetimi yapılan (simüle edilen) vektörün mevcut değeri, hem aynı vektörün önceki değerlerine hem de gürültü vektörünün önceki değerlerine bağlıdır.

arma() fonksiyon tanımını tamamla.

Bu egzersiz, kursun bir parçasıdır

Rcpp ile R Kodunu Optimize Etme

Kursa Göz Atın

Egzersiz talimatları

  • p ve q değerlerinin en büyüğüne bir ekleyip start adlı bir tamsayı değişkeni tanımla. max() fonksiyonunun std ad alanında olduğunu unutma.
  • Dıştaki for döngüsünün içinde, double türünde value değişkenini mu artı i. gürültü değeri olacak şekilde tanımla.
  • İlk iç for döngüsünde, value değerini theta'nın j. elemanı ile eps'in "i eksi j eksi 1". elemanının çarpımı kadar artır.
  • İkinci iç for döngüsünde, value değerini phi'nin j. elemanı ile x'in "i eksi j eksi 1". elemanının çarpımı kadar artır.

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

#include 
using namespace Rcpp;

// [[Rcpp::export]]
NumericVector arma(int n, double mu, NumericVector phi, NumericVector theta, double sd) {
  int p = phi.size();
  int q = theta.size();   
  NumericVector x(n);
  
  // Generate the noise vector
  NumericVector eps = rnorm(n, 0.0, sd);
  
  // Start at the max of p and q plus 1
  ___
  
  // Loop i from start to n
  for(int i = start; i < n; i++) {
    // Value is mean plus noise
    ___
    
    // The MA(q) part
    for(int j = 0; j < q; j++) {
      // Increase by the jth element of theta times
      // the "i minus j minus 1"th element of eps
      ___
    }
    
    // The AR(p) part
    for(int j = 0; j < p; j++) {
      // Increase by the jth element of phi times
      // the "i minus j minus 1"th element of x
      ___
    }
    
    x[i] = value;
  }
  return x;
}

/*** R
d <- data.frame(
  x = 1:50,
  y = arma(50, 10, c(1, -0.5), c(1, -0.5), 1)
)
ggplot(d, aes(x, y)) + geom_line()
*/
Kodu Düzenle ve Çalıştır