1. 学习
  2. /
  3. 课程
  4. /
  5. Rcpp로 R 코드 최적화하기

Connected

练习

MA(q) 모형 시뮬레이션

이동 평균 (MA) 모형도 이전 반복에 의존합니다. AR 모형과 달리, 잡음 부분에 의존해요.

R에서의 알고리즘은 다음과 같습니다:

ma1 <- function(n, mu, theta, sd) {
  q <- length(theta)
  x <- numeric(n)
  eps <- rnorm(n, 0, sd)
  for(i in seq(q + 1, n)) {
    value <- mu + eps[i]
    for(j in seq_len(q)) {
      value <- value + theta[j] * eps[i - j]
    }
    x[i] <- value
  }
  x
}

n은 시뮬레이션할 관측치의 수, mu는 기댓값, theta는 이동 평균 계수의 숫자형 벡터, sd는 잡음의 표준편차입니다.

이 장의 앞부분에서 정규분포에서 단일 난수를 생성하기 위해 R::rnorm()을 사용했어요. 한편 Rcpp::rnorm()은 한 번에 전체 숫자형 벡터를 생성할 수 있습니다. 이는 R의 rnorm()과 동일한 인수를 받아요. ma1()을 C++로 옮긴 ma2() 함수 정의를 완성하세요.

说明

100 XP
  • 잡음 벡터를 eps로 생성하세요. Rcpp 네임스페이스의 rnorm()을 사용하세요(‘R 네임스페이스’가 아닙니다).
  • 바깥 for 루프 안에서 value를 mu에 i번째 잡음 값을 더한 것으로 계산하세요.
  • 안쪽 for 루프 안에서 value에 theta의 j번째 원소와 eps의 “i에서 j를 빼고 다시 1을 뺀” 원소를 곱한 값을 더하세요.
  • 루프가 끝나면 x의 i번째 원소를 value로 설정하세요.