Comment créer une chaîne de Markov avec une distribution marginale gamma et un coefficient AR (1) de

8

Je veux générer une série chronologique synthétique. La série chronologique doit être une chaîne de Markov avec une distribution marginale gamma et un paramètre AR (1) de . Puis-je le faire en utilisant simplement une distribution gamma comme terme de bruit dans un modèle AR (1), ou dois-je utiliser une approche plus sophistiquée?ρ

hydrologue
la source
La définition d'un processus AR (1) pourrait être clarifiée: s'agit-il d'un Markov général de premier ordre tel qu'il est écrit dans le titre ou d'un Markov de premier ordre avec une forme spécifique de transition? Dans le premier cas, serait considéré comme l'autocorrélation de premier ordre. ρ
Yves
Merci Yves. Je pense avoir une solution complète au problème, grâce au vôtre et aux autres commentaires ci-dessous. Je publierai la solution complète demain quand j'aurai le temps de l'écrire!
hydrologue
1
Je viens de réaliser que cette question est un doublon de stats.stackexchange.com/q/180109/10479 et que ma propre réponse avait beaucoup en commun avec celle de @Glen_b. Désolé.
Yves

Réponses:

3

On pourrait deviner (moi aussi au départ) que oui, mais que le processus AR (1) aura de nouveaux paramètres. Pour la forme et l'échelle , soit . Écrivez .asgtΓ(a,s)g~t=gtE(gt)

Ensuite, un AR (1) se dans , peut également s'écrire Rappelez et . Par les propriétés des processus AR (1), et Résolution du système des équations des deux premiers moments d'une distribution gamma pour ses deux paramètres donne de nouveaux paramètres de forme de , et .gtyt=ρyt-1+gt

yt=E(gt)+ρyt-1+g~t
E(gt)=unesVuner(gt)=unes2
E(yt)=unes1-ρ
Vuner(yt)=unes21-ρ2
ytuney=E(yt)2/Vuner(yt)sy=Vuner(yt)/E(yt)

Cet argument est cependant incomplet car il ne montre pas que est bien . Fondamentalement, notez la représentation de sorte que peut être vu comme une série pondérée de RV gamma dégradés Ma lecture de messages comme celui-ci (voir aussi les autres réponses plus récentes) suggère que ce n'est pas une variation gamma.ytΓMUNE()

yt=unes1-ρ+j=0ρjg~t,
yt

Cela dit, une petite simulation suggère que l'approche donne une assez bonne approximation:

entrez la description de l'image ici

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
la source
Merci @christophhank - c'est vraiment utile. Je verrai si quelqu'un d'autre intervient en attendant!
hydrologue
Merci. Le tracé plot(grid,dgamma(grid,shape=shape.y,scale=scale.y), lwd=2, col="red", type = "l")et lines(density(y), type="l", col="lightblue", lwd=2)cependant suggère effectivement qu'il y a un écart même pour les très grands n, lorsque l'estimateur de densité de noyau de densitydevrait être OK.
Christoph Hanck
1
Avec , la transformée de Laplace de la distribution stationnaire satisfait . Lorsque suit un gamma décalé, ne suit pas une distribution gamma. Une distribution mixte avec une masse de probabilité à 0 est requise pour . yt=ρyt-1+εtψ(s): =E[e-sy]ψ(s)/ψ(ρs)=E[e-sε]εtytε
Yves
C'est formidable de voir plus de connaissance du domaine ici qu'il n'y en a à mon avis - j'ai adapté ma réponse en conséquence.
Christoph Hanck
3

J'ai maintenant la réponse à cette question que j'ai posée, mais cela m'amène à une autre question.

Donc, tout d'abord, la solution est la suivante:

Pour une chaîne de Markov stationnaire avec une distribution marginale , la fonction de densité de probabilité de à est donnée par:Γ[α,p]PtX

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

alors le pdf conditionnel de à étant donné $ P_t = u est:Pt+1X

FPt+1|Pt[X|u]=1α(1-ρ)ρ(p-1)/2[Xu](p-1)/2exp[-X+ρuα(1-ρ)]jep-1[2ρXuα(1-ρ)]

où désigne la fonction de Bessel modifiée. Cela fournit une chaîne de Markov avec une distribution marginale gamma et une structure de corrélation AR où est .jeνρ(1)ρ

De plus amples détails à ce sujet sont donnés dans un excellent article de David Warren, publié en 1986 dans le Journal of Hydrology, "Outflow Skewness in non-saisonnier linear reservoirs with gamma-distribué flows" (Volume 85, pp127-137; http: // www.sciencedirect.com/science/article/pii/0022169486900806# ).

C'est génial, car cela répond à ma question initiale, cependant, les systèmes que je veux représenter avec ce PDF nécessitent la génération de séries synthétiques. Si les paramètres de forme et d'échelle de la distribution sont importants, cela est simple. Cependant, si je veux que les paramètres soient petits, je ne peux pas générer une série avec les caractéristiques appropriées. J'utilise MATLAB pour ce faire et le code est le suivant:

% 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

Si j'utilise des nombres beaucoup plus grands pour les paramètres de distribution gamma, alors le marginal ressort parfaitement, mais je dois utiliser de petites valeurs. Avez-vous des réflexions sur la façon dont je peux faire cela?

hydrologue
la source
Vous pouvez utiliser la représentation du processus stochastique plutôt que la distribution conditionnelle. Voir ma réponse stats.stackexchange.com/a/289326/10479 pour un exemple de simulation d'une chaîne de Markov de premier ordre avec une marge gamma arbitraire utilisant un processus Shot Noise.
Yves
Merci @Yves. La raison pour laquelle je veux utiliser la distribution marginale est parce que je peux dériver des propriétés spécifiques de la série de sortie (variance, asymétrie et kurtosis) en termes de distribution d'entrée - mais j'ai du mal à générer l'entrée aléatoire à partir de la distribution conditionnelle. Si je devais suivre votre modèle de bruit de tir, les statistiques dérivées pour l'écoulement resteraient-elles les mêmes?
hydrologue
La distribution conditionnelle du bruit de tir (SN) pourrait ne pas être disponible sous forme fermée, car des approximations de point de selle ont été proposées (recherches Google avec bruit de tir et prédiction ); ces approximations sont généralement très bonnes. La représentation SN n'implique pas d'entrées et de sorties comme dans l'article que vous avez cité, mais les sauts exponentiels peuvent être considérés comme des entrées équilibrant une perte continue, par exemple due à l'évaporation.
Yves
2

Il existe plusieurs façons d'obtenir un processus de Markov de premier ordre avec des marges gamma. Une très bonne référence sur ce sujet est l'article de GK Grunwald, RJ Hyndman et LM Tedesko: Une vue unifiée des modèles AR (1) .

Comme vous le verrez, la "forme d'innovation" classique yt=ϕyt-1+εt n'est pas le moyen le plus simple de spécifier la transition de Markov p(yt|yt-1), sauf si ϕest pris comme aléatoire. Utiliser des distributions bien choisies; Bêta pourϕ et Gamma pour εt, on peut obtenir une marge gamma.

Un processus AR (1) à temps continu célèbre avec une marge gamma est le processus de bruit de tir avec des étapes exponentielles, largement utilisé par exemple en hydrologie et lié au processus de Poisson. Ceci peut également être utilisé avec un échantillonnage à temps discret, il apparaît alors comme un coefficient aléatoire AR (1) avec une distribution de type mixte pour l'innovation.

Yves
la source
2

Une idée inspirée d'une copule serait de transformer un processus gaussien AR (1), par exemple

Xt=ϕ1Xt-1+wt
wt est N(0,σw2)σw2=1-ϕ2 de telle sorte que la distribution marginale de XtN(0,1) à un nouveau processus yt=F-1(Φ(Xt);une,s))F-1 est la fonction quantile de la distribution gamma et Φ est la fonction de densité normale standard cumulative.

Alors que le processus résultant yt aurait la propriété Markov, mais ne serait pas AR (1), cependant, car sa fonction d'autocorrélation partielle ne se coupe pas pour les décalages supérieurs à 1 comme le montre la simulation suivante:

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)

entrez la description de l'image ici

Si laisser plutôt Xt être AR (p) avec des coefficients appropriés, alors peut-être yt peut être fait approximativement AR (1), c'est-à-dire choisir l'ordre p et ϕ1,,ϕp de telle sorte que le pacf de yt devient suffisamment petit pour tous les décalages supérieurs à 1. Mais maintenant, le processus yt n'aurait plus la propriété Markov.

Jarle Tufto
la source
Merci pour tous vos commentaires - ils sont très appréciés. À la suite de vos messages réfléchis, je pense avoir une solution, que je publierai une fois que je pourrai la taper ...
hydrologue
Les séries ytest en effet une chaîne de Markov de premier ordre, et a une marge gamma (si elle est convenablement commencée). Cela ne prend tout simplement pas la forme classique de l'innovation - à mes yeux, pas une préoccupation. L'utilisation de la formule standard pour le PACF théorique est trompeuse car elle repose sur l'hypothèse de normalité, qui n'est plus valable ici.
Yves
1
@Yves Non, la définition habituelle du pacf ne suppose pas la normalité, elle s'applique à tout processus stationnaire de covariance, y compris ytcomme défini ci-dessus.
Jarle Tufto
@JarleTufto +1 Oh oui, vous avez raison. Pourtant, je crois toujours que le processusytest Markov: les propriétés de l' échantillon PACF pourraient-elles expliquer le problème que vous avez signalé sur le graphique?
Yves
1
@JarleTufto J'ai été attiré par un piège classique mais plutôt subtil: yt et yt-2n'ont pas de corrélation conditionnelle (suryt-1) mais ils ont une corrélation partielle . Ainsi, le PACF pour le décalage 2 peut être différent de zéro.
Yves