Como criar uma cadeia de markov com distribuição marginal gama e coeficiente AR (1) de

8

Eu quero gerar uma série temporal sintética. A série temporal precisa ser uma cadeia de markov com uma distribuição marginal gama e um parâmetro AR (1) de ρ . Posso fazer isso simplesmente usando uma distribuição gama como termo de ruído em um modelo AR (1) ou preciso usar uma abordagem mais sofisticada?

hidrologista
fonte
A definição de um processo AR (1) poderia ser esclarecida: trata-se de um Markov geral de primeira ordem, como está escrito no título, ou de um Markov de 1ª ordem, com uma forma específica de transição? No primeiro caso, ρ seria considerado como a autocorrelação de primeira ordem.
Yves
Obrigado Yves. Acho que tenho uma solução completa para o problema, graças ao seu e a outros comentários abaixo. Vou postar a solução completa amanhã, quando tiver tempo para escrevê-la!
hydrologist
1
Acabei de perceber que esta pergunta é uma duplicata do stats.stackexchange.com/q/180109/10479 e que minha própria resposta tinha muito em comum com a de @Glen_b. Desculpa.
Yves

Respostas:

3

Pode-se adivinhar (o que eu fiz inicialmente) que sim, mas que o processo AR (1) terá novos parâmetros. Para forma e escala , deixe . Escreva .s g t ~ Γ ( um , s ) ~ g t = g t - E ( g t )asgtΓ(a,s)g~t=gtE(gt)

Então, um processo AR (1) em , também pode ser escrito como Lembre-se e . Por propriedades dos processos AR (1), e Resolvendo o sistema das equações dos dois primeiros momentos de uma distribuição gama para seus dois parâmetros produz novos parâmetros de forma de , e .y t = ρ y t - 1 + g t y t = E ( g t ) + ρ y t - 1 + ˜ g t E ( g t ) = a s V a r ( g t ) = a s 2 E ( y t ) = a sgtyt=ρyt1+gt

yt=E(gt)+ρyt1+g~t
E(gt)=asVar(gt)=as2 Var(yt)=as2
E(yt)=as1ρ
ytumay=E(yt)2/Vumr(yt)sy=Vumr(yt)/E(yt)
Var(yt)=as21ρ2
ytay=E(yt)2/Var(yt)sy=Var(yt)/E(yt)

No entanto, esse argumento é incompleto, pois não mostra que é de fato . Basicamente, anote o representação de modo que pode ser visto como uma série ponderada de gamma rvs degradados Minha leitura de postagens como essa (consulte também as outras respostas mais recentes) sugere que essa não é uma variável gama. Γ M A ( ) y t = a sytΓMA()

yt=as1ρ+j=0ρjg~t,
yt

Dito isto, uma pequena simulação sugere que a abordagem produz uma aproximação bastante boa:

insira a descrição da imagem aqui

n <- 50000

shape.u <- 2
scale.u <- 1
u <- rgamma(n,shape=shape.u,scale=scale.u)

rho <- 0.75
y <- arima.sim(n=n, list(ar=rho), innov = u)
hist(y, col="lightblue", freq = F, breaks = 40)

(Theoretical.mean <- shape.u*scale.u/(1-rho))
mean(y)
(Theoretical.Variance <- shape.u*scale.u^2/(1-rho^2))
var(y)

shape.y <- Theoretical.mean^2/Theoretical.Variance
scale.y <- Theoretical.Variance/Theoretical.mean

grid <- seq(0,15,0.05)  
lines(grid,dgamma(grid,shape=shape.y,scale=scale.y))
Christoph Hanck
fonte
Obrigado @christophhank - isso é realmente útil. Vou ver se mais alguém entra nesse meio tempo!
hidrólogo
Obrigado. Traçar plot(grid,dgamma(grid,shape=shape.y,scale=scale.y), lwd=2, col="red", type = "l")e, lines(density(y), type="l", col="lightblue", lwd=2)no entanto, de fato sugere que há uma discrepância mesmo para muito grande n, quando o estimador de densidade do kernel densitydeve estar OK.
Christoph Hanck
1
Com , a transformação de Laplace da distribuição estacionária satisfaz . Quando segue uma gama deslocada, não segue uma distribuição gama. Uma distribuição mista com massa de probabilidade em 0 é necessária para . yt=ρyt1+εtψ(s):=E[esy]ψ(s)/ψ(ρs)=E[esε]εtytε
Yves
É ótimo ver mais conhecimento de domínio aqui do que eu acho - adaptei minha resposta de acordo.
Christoph Hanck
3

Agora tenho a resposta para essa pergunta que fiz, mas isso me leva a outra pergunta.

Então, primeiro, a solução é a seguinte:

Para uma Cadeia de Markov estacionária com uma distribuição marginal , a função de densidade de probabilidade de em é dada por:Γ[α,p]Ptx

fPt[x]=xp1exp[x/α]αpΓ[p]x0

então o pdf condicional de em dado $ P_t = u é:Pt+1x

fPt+1|Pt[x|u]=1α(1ρ)ρ(p1)/2[xu](p1)/2exp[x+ρuα(1ρ)]Ip1[2ρxuα(1ρ)]

onde denota a função Bessel modificada. Isso fornece uma cadeia de Markov com uma distribuição marginal gama e uma estrutura de correlação AR onde é . ρ ( 1 ) ρIνρ(1)ρ

Detalhes adicionais são fornecidos em um excelente artigo de David Warren, publicado em 1986 no Journal of Hydrology, "Skewness de vazão em reservatórios lineares não sazonais com entradas distribuídas por gama" (Volume 85, pp127-137; http: // www.sciencedirect.com/science/article/pii/0022169486900806# ).

Isso é ótimo, pois responde à minha pergunta inicial; no entanto, os sistemas que quero representar com este PDF exigem a geração de séries sintéticas. Se os parâmetros de forma e escala da distribuição são grandes, isso é simples. No entanto, se eu quero que os parâmetros sejam pequenos, não consigo gerar uma série com as características apropriadas. Estou usando o MATLAB para fazer isso e o código é o seguinte:

% specify parameters for distribution
p = 0.05;
a = 0.5;

% generate first value
u = gamrnd(p,a);

$ keep a version of the margins pdf
x = 0.00001:0.00001:6;

f = (x.^(p-1)).*(exp(-x./a))./((a.^p).*gamma(p));

% specify the correlation structure
rho = 0.5;

% store the first value
input(1,1) = u;

% generate 999 other cvalues using the conditional distribution
for i = 2:1:999

    i
    z = (2./(a.*(1-rho))).*sqrt(rho.*x.*u);

    PDF = (1./a).*(1./(1-rho)).*(rho.^(-(p-1)./2)).*((x./u).^((p-1)./2)).*...
           exp(-(x+rho.*u)./(a.*(1-rho))).*besseli(p-1,z);

    ycdf = cumsum(PDF,'omitnan')/sum(PDF,'omitnan');

    rn = rand;
    u = x(find(ycdf>rn,1));
    input(i,1) = u;

end

Se eu usar números muito maiores para os parâmetros de distribuição gama, o marginal aparece no local, mas preciso usar valores pequenos. Alguma idéia de como eu posso fazer isso?

hidrologista
fonte
Você poderia usar a representação do processo estocástico em vez da distribuição condicional. Veja minha resposta stats.stackexchange.com/a/289326/10479 para obter um exemplo de simulação de uma cadeia de Markov de primeira ordem com margem gama arbitrária usando um processo Shot Noise.
Yves
Obrigado @Yves. O motivo pelo qual desejo usar a distribuição marginal é porque posso derivar propriedades específicas da série de saída (variação, assimetria e curtose) em termos da distribuição de entrada - mas estou lutando para gerar a entrada aleatória a partir da distribuição condicional. Se eu seguisse seu modelo de ruído de tiro, as estatísticas derivadas da saída permaneceriam as mesmas?
hidrólogo
A distribuição condicional para o ruído do tiro (SN) pode não estar disponível em formato fechado, pois foram propostas aproximações do ponto de sela (pesquisas do Google com ruído e previsão do tiro ); tais aproximações são geralmente muito boas. A representação SN não envolve entradas e saídas como no artigo que você citou, mas saltos exponenciais podem ser considerados entradas que equilibram uma perda contínua, por exemplo, devido à evaporação.
Yves
2

Existem várias maneiras de obter um processo de Markov de primeira ordem com margens gama. Uma referência muito boa sobre esse tópico é o artigo de GK Grunwald, RJ Hyndman e LM Tedesko: Uma visão unificada dos modelos AR (1) .

Como você verá, a clássica "forma de inovação" não é a maneira mais fácil de especificar a transição de Markov , a menos que seja considerado aleatório. Usando distribuições bem escolhidas; Beta para e Gamma para , pode-se obter uma margem gama.yt=ϕyt1+εtp(yt|yt1)ϕϕεt

Um famoso processo de AR (1) em tempo contínuo com margem Gamma é o processo de ruído de tiro com etapas exponenciais, amplamente utilizadas, por exemplo, em hidrologia e relacionadas ao processo de Poisson. Isso também pode ser usado com uma amostragem em tempo discreto e, em seguida, aparece como um coeficiente aleatório AR (1) com distribuição de tipo misto para a inovação.

Yves
fonte
2

Uma idéia inspirada em cópula seria transformar um processo de Gaussian AR (1), digamos onde é onde tal que a distribuição marginal de para um novo processo onde é a função quantil da distribuição gama e é a função cumulativa de densidade normal padrão.w

xt=ϕ1xt1+wt
wtN(0,σw2)σw2=1ϕ2xtN(0,1)yt=F1(Φ(xt);a,s))F1Φ

Enquanto o processo resultante teria a propriedade Markov, não seria AR (1), no entanto, como sua função de autocorrelação parcial não é cortada para defasagens maiores que 1, como visto na seguinte simulação:yt

phi <- .5
x <- arima.sim(model=list(ar=phi),n=1e+6,sd=sqrt(1-phi^2))
y <- qgamma(pnorm(x), shape=.1)
par(mfrow=c(2,1))
acf(y)
pacf(y)

insira a descrição da imagem aqui

Se, em vez disso, deixar ser AR (p) com coeficientes adequados, talvez possível fazer aproximadamente AR (1), ou seja, escolha a ordem e modo que o pacf de se torne suficientemente pequeno para todos os atrasos maiores que 1. Mas agora o processo não teria mais a propriedade Markov.y t p & Phi 1 , ... , φ p y t y txtytpϕ1,,ϕpytyt

Jarle Tufto
fonte
Obrigado por todos os seus comentários - eles são muito apreciados. Como resultado de suas mensagens bem pensadas, acho que tenho uma solução, que postarei assim que for digitada ... #
hidrologist
A série é de fato uma cadeia Markov de 1ª ordem e possui margem gama (se iniciada adequadamente). Simplesmente não assume a forma clássica de inovação - aos meus olhos, não é uma preocupação. O uso da fórmula padrão para o PACF teórico é enganoso, pois se baseia na suposição de normalidade, que não se aplica mais aqui. yt
Yves
1
@Yves Não, a definição usual do pacf não assume normalidade, ela se aplica a qualquer processo estacionário de covariância, incluindo como definido acima. yt
Jarle Tufto
@JarleTufto +1 Ah, sim, você está certo. No entanto, eu ainda acredito que o processo é Markov: poderiam as propriedades da amostra PACF explicar o problema que você apontou na trama? yt
Yves
1
@JarleTufto Fui atraído por uma armadilha clássica, mas bastante sutil: e não têm correlação condicional (em ), mas eles têm correlação parcial . Portanto, o PACF para o atraso 2 pode ser diferente de zero. y t - 2 y t - 1ytyt2yt1
Yves