R에서 자동 상관 난수 생성


11

우리는 시계열로 사용될 자동 상관 난수 값을 만들려고 노력하고 있습니다. 참조하는 기존 데이터가 없으며 벡터를 처음부터 새로 작성하려고합니다.

한편으로 우리는 물론 배포와 SD를 가진 임의의 프로세스가 필요합니다.

다른 한편으로, 랜덤 프로세스에 영향을 미치는 자기 상관이 설명되어야한다. 벡터의 값은 여러 시간 지연에 따른 강도 감소와 자동 상관됩니다. 예를 들어 lag1은 0.5, lag2 0.3, lag1 0.1 등을 갖습니다.

결국 벡터는 2, 4, 7, 11, 10, 8, 5, 4, 2, -1, 2, 5, 9, 12, 13, 10, 8, 4, 3, 1, -2, -5

등등.

답변:


11

나는 종종 그 문제에 부딪칩니다. R에서 자동 상관으로 시계열을 생성하는 가장 좋아하는 두 가지 방법은 고정 프로세스를 원하는지 여부에 달려 있습니다.

고정되지 않은 시계열의 경우 Brownian 모션을 사용합니다. 예를 들어, 길이가 1000 인 경우 :

x <- diffinv(rnorm(999))

고정 시계열의 경우 가우시안 노이즈를 필터링합니다. 예를 들어 다음과 같습니다.

x <- filter(rnorm(1000), filter=rep(1,3), circular=TRUE)

이 경우 경우 지연 의 자동 상관 관계 는 0 입니다. 다른 경우에는 변수 합계 간의 상관 관계를 계산해야합니다. 예를 들어 경우 공분산은ττ>2τ=1

Cov(X1;X2)=Cov(Y1+Y2+Y3;Y2+Y3+Y4)=Var(Y2)+Var(Y3)=2.

따라서 자동 공분산은 선형 적으로 증가 할 때까지 n 어디 n 필터의 길이입니다.

소수의 브라운 운동과 같은 긴 메모리 시계열을 원할 수도 있지만 더 관련이 있습니다. 원하는 경우 보낼 수있는 Davies-Harte 방법의 R 구현이 있습니다.


긴 메모리 시계열을 실현하려면 Wornell의 1996 년 책 (link : books.google.cl/books/about/… ), :-)을 추천합니다. 긴 메모리 프로세스의 다루기 쉬움은 "그다지"쉽지는 않지만 여전히 할 수 있습니다.
Néstor

나는 당신의 접근 방식을 사용했고 일반적으로 작동하지만 필터에 사용 된 대상 함수와 결과 자기 상관 함수 사이에 약간의 편차가 있습니다. 이 질문을 살펴보십시오 : stats.stackexchange.com/questions/176722/…
nnn

7

주어진 자기 공분산 함수를 가지고 있다면 제가 생각할 수있는 가장 좋은 모델은 다루기 쉬운 가우시안 프로세스입니다. R(τ) 시차에 τ공분산 행렬을 쉽게 구성 할 수 있습니다.

Σ=[R(0)R(1)...R(N)R(1)R(0)...R(N1)...R(N)R(N1)...R(0)]

이 공분산 행렬이 주어지면 주어진 공분산 행렬로 다변량 가우스에서 데이터를 샘플링합니다. Σ즉, 분포에서 벡터를 샘플링

f(x)=1(2π)N/2|Σ|1/2exp(12(xμ)TΣ1(xμ)),
어디 μ 평균 벡터입니다.

5

자동 회귀 프로세스를 구성하여 상관 시퀀스를 생성 할 수 있습니다 (예 : AR (1) 프로세스). X(t)=aX(t1)+e(t). 일으키다e(0)선택한 분포에 균일 한 난수 생성기를 사용합니다. 그럼 보자X(0)=e(0) 가져 오기 X(1)=aX(0)+e(1)등등. 그만큼e(i)균일 한 난수를 사용하여 무작위로 연속적으로 선택됩니다. 주다X(i) 원하는 평균 및 표준 편차, 노이즈 시퀀스의 평균 및 분산에서 도출 할 수 있습니다. e(i). 고르다e(i) 적절하게.


4
arima.sim()여기서 함수 의 존재를 지적 할 가치가 있습니다.
fmark

OP가 알고 싶어하는 R을 구현하려는 제안을해야하는 사람들은 물론 R이다.
Michael R. Chernick
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.