Eu estou tentando gerar muitos draws (ou seja, realizações) de um processo de Gauss , com média 0 e função covariância .
Existe uma maneira eficiente de fazer isso que não envolveria calcular a raiz quadrada de um matriz de covariância? Como alternativa, alguém pode recomendar um R
pacote para fazer isso?
mvtnorm
possuirmvnorm(n, mean, sigma)
ondesigma
está a matriz de covariância; você teria que construir a matriz de covariância para o seu amostrados / selecionadarmvnorm
).Respostas:
Sim. Existe um algoritmo muito eficiente (tempo linear), e a intuição para isso vem diretamente do caso de amostra uniforme.
Suponhamos que temos uma partição de de modo a que 0 = t 0 < t 1 < t 2 < ⋯ < t n = T .[ 0 , T] 0 = t0 0< t1< t2< ⋯ < tn= T
Caso de amostra uniforme
Neste caso, temos onde Δ = T / n . Seja X i : = X ( t i ) denota o valor do processo amostrado discretamente no momento t i .tEu= i Δ Δ = T/ n XEu: = X( tEu) tEu
É fácil de ver que o formar um processo AR (1) com correlação ρ = exp ( - Δ ) . Portanto, podemos gerar um caminho de amostra { X t } para a partição da seguinte forma X i + 1 = ρ X i + √XEu ρ = exp( - Δ ) { Xt}
Em que Z i são iid N ( 0 , 1 ) e X 0 = Z 0 .
Caso Geral
Podemos então imaginar que seria possível fazer isso para uma partição geral . Em particular, seja e ρ i = exp ( - Δ i ) . Temos que γ ( t i , t i + 1 ) = ρ iΔEu= ti + 1- tEu ρEu= exp( - ΔEu)
e , portanto, podemos supor que
X i + 1 = ρ i X i + √
NB : Esta é uma técnica de amostragem exata , pois fornece uma versão amostrada do processo desejado com as distribuições de dimensões finitas exatamente corretas . Isso contrasta com os esquemas de discretização de Euler (e outros) para SDEs mais gerais, que sofrem um viés devido à aproximação via discretização.
fonte
Calcule a matriz de covariância decomposta por decomposição incompleta de Cholesky ou qualquer outra técnica de decomposição de matriz. A matriz decomposta deve ser TxM, onde M é apenas uma fração de T.
http://en.wikipedia.org/wiki/Incomplete_Cholesky_factorization
fonte