So erstellen Sie eine Markov-Kette mit einer Gamma-Randverteilung und einem AR (1) -Koeffizienten von

8

Ich möchte eine synthetische Zeitreihe generieren. Die Zeitreihe muss eine Markov-Kette mit einer Gamma-Randverteilung und einem AR (1) -Parameter von . Kann ich dies tun, indem ich einfach eine Gammaverteilung als Rauschbegriff in einem AR (1) -Modell verwende, oder muss ich einen differenzierteren Ansatz verwenden?ρ

Hydrologe
quelle
Die Definition eines AR (1) -Prozesses könnte klargestellt werden: Ist dies ein allgemeiner Markov erster Ordnung, wie im Titel geschrieben, oder ein Markov 1. Ordnung mit einer bestimmten Übergangsform? Im ersten Fall würde als Autokorrelation erster Ordnung betrachtet. ρ
Yves
Vielen Dank, Yves. Ich denke, ich habe eine vollständige Lösung für das Problem, dank Ihrer und anderer Kommentare unten. Ich werde die vollständige Lösung morgen veröffentlichen, wenn ich etwas Zeit hatte, sie aufzuschreiben!
Hydrologe
1
Ich habe gerade festgestellt, dass diese Frage ein Duplikat von stats.stackexchange.com/q/180109/10479 ist und dass meine eigene Antwort viel mit der von @Glen_b gemeinsam hat. Es tut uns leid.
Yves

Antworten:

3

Man könnte vermuten (ich auch anfangs), dass ja, aber dass der AR (1) -Prozess neue Parameter haben wird. Für Form und Skala sei . Schreiben Sie .s g tΓ ( a , s ) ˜ g t = g t - E ( g t )asgtΓ(a,s)g~t=gtE(gt)

Dann kann ein AR (1) in , werden, auch als Erinnere und . Durch Eigenschaften von AR (1) -Prozessen ist und Lösen des Systems von Gleichungen der ersten beiden Momente einer Gammaverteilung für ihre beiden Parameter ergibt neue Formparameter von , und .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ρ
ytay=E(yt)2/Var(yt)sy=Var(yt)/E(yt)
Var(yt)=as21ρ2
ytay=E(yt)2/Var(yt)sy=Var(yt)/E(yt)

Dieses Argument ist jedoch unvollständig, da es nicht zeigt, dass tatsächlich . Schreiben Sie grundsätzlich die Darstellung damit kann gesehen werden als eine gewichtete Reihe von demeaned Gamma Meine Lektüre der Beiträge rvs wie dies deutet darauf hin (siehe auch die anderen neueren Antworten) , dass dies kein Gamma variate ist. Γ M A ( ) y t = a sytΓMA()

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

Eine kleine Simulation legt jedoch nahe, dass der Ansatz eine ziemlich gute Annäherung liefert:

Geben Sie hier die Bildbeschreibung ein

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
quelle
Vielen Dank an @christophhank - das ist wirklich nützlich. Ich werde sehen, ob sich in der Zwischenzeit noch jemand einschaltet!
Hydrologe
Vielen Dank. Das Zeichnen plot(grid,dgamma(grid,shape=shape.y,scale=scale.y), lwd=2, col="red", type = "l")und lines(density(y), type="l", col="lightblue", lwd=2)deutet jedoch darauf hin, dass es auch bei sehr großen Daten eine Diskrepanz gibt n, wenn der Kernel-Dichteschätzer von densityin Ordnung sein sollte.
Christoph Hanck
1
Mit die Laplace-Transformation der stationären Verteilung . Wenn einem verschobenen Gamma folgt, folgt keiner Gammaverteilung. Für ist eine gemischte Verteilung mit einer Wahrscheinlichkeitsmasse von 0 erforderlich . yt=ρyt1+εtψ(s):=E[esy]ψ(s)/ψ(ρs)=E[esε]εtytε
Yves
Es ist großartig, hier mehr Domain-Wissen zu sehen, als ich vermute - ich habe meine Antwort entsprechend angepasst.
Christoph Hanck
3

Ich habe jetzt die Antwort auf diese Frage, die ich gestellt habe, aber sie führt mich zu einer weiteren Frage.

Die Lösung lautet also zunächst wie folgt:

Für eine stationäre Markov-Kette mit einer ist die Wahrscheinlichkeitsdichtefunktion von bei gegeben durch:Γ[α,p]Ptx

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

dann ist das bedingte PDF von bei bei $ P_t = u:Pt+1x

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

wobei die modifizierte Bessel-Funktion bezeichnet. Dies stellt eine Markov - Kette mit einer Gamma - Randverteilung, und eine AR - Korrelationsstruktur in dem ist .Iνρ(1)ρ

Weitere Einzelheiten hierzu finden sich in einem ausgezeichneten Artikel von David Warren, der 1986 im Journal of Hydrology veröffentlicht wurde, "Outflow Skewness in nicht saisonalen linearen Reservoirs mit gamma-verteilten Zuflüssen" (Band 85, S. 127-137; http: //) www.sciencedirect.com/science/article/pii/0022169486900806# ).

Das ist großartig, weil es meine anfängliche Frage beantwortet. Für die Systeme, die ich mit diesem PDF darstellen möchte, müssen jedoch synthetische Serien generiert werden. Wenn die Form- und Skalierungsparameter der Verteilung groß sind, ist dies unkompliziert. Wenn ich jedoch möchte, dass die Parameter klein sind, kann ich keine Serie mit den entsprechenden Merkmalen generieren. Ich benutze MATLAB, um dies zu tun und der Code ist wie folgt:

% 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

Wenn ich viel größere Zahlen für die Gammaverteilungsparameter verwende, kommt der Rand genau heraus, aber ich muss kleine Werte verwenden. Irgendwelche Gedanken darüber, wie ich das machen kann?

Hydrologe
quelle
Sie können eher die Darstellung des stochastischen Prozesses als die bedingte Verteilung verwenden. In meiner Antwort stats.stackexchange.com/a/289326/10479 finden Sie ein Beispiel für die Simulation einer Markov-Kette erster Ordnung mit beliebigem Gammarand unter Verwendung eines Shot Noise-Prozesses.
Yves
Vielen Dank @Yves. Der Grund, warum ich die Randverteilung verwenden möchte, ist, dass ich bestimmte Eigenschaften der Ausgabeserien (Varianz, Schiefe und Kurtosis) in Bezug auf die Eingabeverteilung ableiten kann - aber ich habe Schwierigkeiten, die zufällige Eingabe aus der bedingten Verteilung zu generieren. Wenn ich Ihrem Schussrauschmodell folgen würde, würden die abgeleiteten Statistiken für den Abfluss gleich bleiben?
Hydrologe
Die bedingte Verteilung für das Schussrauschen (Shot Noise, SN) ist möglicherweise nicht in geschlossener Form verfügbar, da Sattelpunktnäherungen vorgeschlagen wurden (Google-Suche mit Schussrauschen und Vorhersage ). solche Annäherungen sind normalerweise sehr gut. Die SN-Darstellung beinhaltet keine Zu- und Abflüsse wie in dem von Ihnen zitierten Artikel, aber exponentielle Sprünge können als Zuflüsse betrachtet werden, die einen kontinuierlichen Verlust ausgleichen, z. B. aufgrund von Verdunstung.
Yves
2

Es gibt verschiedene Möglichkeiten, einen Markov-Prozess erster Ordnung mit Gammarändern zu erhalten. Eine sehr gute Referenz zu diesem Thema ist das Papier von GK Grunwald, RJ Hyndman und LM Tedesko: Eine einheitliche Sicht auf AR (1) -Modelle .

Wie Sie sehen werden, ist die klassische "Innovationsform" nicht der einfachste Weg, den Markov-Übergang anzugeben. , es sei denn, wird als zufällig genommen. Verwendung gut ausgewählter Distributionen; Beta für und Gamma für , man kann eine Gamma-Marge erhalten.yt=ϕyt1+εtp(yt|yt1)ϕϕεt

Ein berühmter zeitkontinuierlicher AR (1) -Prozess mit Gamma-Rand ist der Schuss-Rausch-Prozess mit exponentiellen Schritten, der beispielsweise in der Hydrologie weit verbreitet ist und sich auf den Poisson-Prozess bezieht. Dies kann auch mit einer zeitdiskreten Stichprobe verwendet werden. Es erscheint dann als Zufallskoeffizient AR (1) mit gemischter Verteilung für die Innovation.

Yves
quelle
2

A Copula inspiriert Idee wäre, eine Gaußsche AR (1) Prozeß zu transformieren, sagen wo ist wobei so dass die Randverteilung von zu einem neuen Prozess wobei ist Die Quantilfunktion der Gammaverteilung und ist die kumulative Standardfunktion der normalen Dichte.w t N ( 0 , σ 2 w ) σ 2 w = 1 - ϕ 2 x tN ( 0 , 1 ) y t = F - 1 ( Φ ( x t) ) ; a , s ) ) F - 1 Φ

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

Während der resultierende Prozess die Markov-Eigenschaft haben würde, wäre er nicht AR (1), da seine partielle Autokorrelationsfunktion nicht für Verzögerungen größer als 1 abschneidet, wie in der folgenden Simulation gezeigt: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)

Geben Sie hier die Bildbeschreibung ein

xtytpϕ1,,ϕpytyt

Jarle Tufto
quelle
Vielen Dank für all Ihre Kommentare - sie werden sehr geschätzt. Aufgrund Ihrer nachdenklichen Beiträge denke ich, dass ich eine Lösung habe, die ich veröffentlichen werde, sobald ich sie
Hydrologe
yt
1
yt
yt
1
ytyt2yt1