Grundsätzlich muss ich Hartleys "A User's Guide to Solving Real Business Cycle Models" ( http://www.econ.ucdavis.edu/faculty/kdsalyer/LECTURES/Ecn235a/Linearization/ugfinal.pdf ) replizieren . Insbesondere möchte ich das dynamische System simulieren, das durch das Modell impliziert wird, das wie folgt angegeben ist:
Dabei ist Verbrauch, das Arbeitskräfteangebot, das Kapital, der autoregressive technologische Prozess, der Output und die Investition.h k z y i
Ich simuliere es mit der folgenden Logik: Sagen wir zum Zeitpunkt , alles ist im stationären Zustand und alle Werte sind 0, von denen wir . Dann löse ich bei indem ich dem System durch einen Schock gebe , nach und (da ich das 'schockierte' und zuvor erhalten habe . Dann ich diese beiden ein, um den Rest abzurufen, nämlich - und wiederhole den Vorgang.k t + 1 t + 1 & epsi; c t + 1 h t + 1 z t + 1 k t + 1 y t + 1 , i t + 1 , k t + 2
Leider bekomme ich einen explosiven Prozess, der keinen Sinn ergibt:
Ich füge auch R-Code hinzu, der verwendet wird, um dies zu simulieren:
n<-300
data.simulated <- data.table(t = 0, zval = 0, cval = 0, hval = 0, kval = 0, yval = 0, ival = 0)
data.simulated <- rbind(data.simulated, data.table(t = 1, kval = 0), fill = TRUE)
for (ii in 1:n){
##initial shocks
eps <- rnorm(1, mean = 0, sd = 0.007)
zt1 <- data.simulated[t == ii - 1, zval]*0.95 + eps
kt1 <- data.simulated[t == ii, kval]
##solve for ct, ht
lmat <- matrix(c(1, -0.54, 2.78, 1), byrow = T, ncol = 2)
rmat <- matrix(c(0.02 * kt1 + 0.44 * zt1, kt1 + 2.78 * zt1), ncol = 1)
solution <- solve(lmat, rmat)
ct1 <- solution[1, ]
ht1 <- solution[2, ]
##now solve for yt1 and kt2 and it1
yt1 <- zt1 + 0.36 * kt1 + 0.64 * ht1
kt2 <- -0.07 * ct1 + 1.01 * kt1 + 0.06 * ht1 + 0.1 * zt1
it1 <- 3.92 * yt1 - 2.92 * ct1
##add to the data.table the results
data.simulated[t == ii, c("zval", "cval", "hval", "yval", "ival") := list(zt1, ct1, ht1, yt1, it1)]
data.simulated <- rbind(data.simulated, data.table(t = ii + 1, kval = kt2), fill = TRUE)
}
a <- data.simulated[, list(t, cval, ival, yval)]
a <- data.table:::melt.data.table(a, id.vars = "t")
ggplot(data = a, aes(x = t, y = value, col = variable)) + geom_line()
Meine Frage ist einfach: Ist das in diesem Dokument angegebene System von Natur aus instabil und führt zu Ergebnissen, oder habe ich irgendwo einen Fehler gemacht?
Letzte Neuigkeiten 20. März 2015 : Ich habe prof. K. Salyer, einer der Autoren des Benutzerhandbuchs. In einer wiederholten Mitteilung überprüfte er, dass beide Probleme (siehe meine Antwort unten sowie die Antwort von @ivansml) existieren:
a) Die korrekte Gleichung für das Gesetz der Konsumbewegung lautet wie @ivansml zeigt
b) Die Zahl wird im Papier fälschlicherweise als "Varianz" (S. 11) bezeichnet. In Wirklichkeit ist es die Standardabweichung , und tatsächlich ist eine solche Größe ein typischer Befund in den Daten (Prof. Salyer verwies auf "S. 22 aus Kapitel 1 von Cooley und Prescotts Frontiers of Business Cycle Research").0.007
Beide Fehler beziehen sich auf die gedruckte Version des Papiers. Mit anderen Worten, die Simulationen hinter Abbildung 1 des Papiers sind korrekt: Sie verwenden die richtige Gleichung für den Verbrauch und als Standardabweichung der Störung im Technologieprozess. Es ist also das zweite Diagramm darunter, das gültig ist.0.007
PHASE A
Ich habe durch Simulation (und unter Verwendung der richtigen Standardabweichung) überprüft, dass das Modell explodiert, obwohl dies eher nach oben als nach unten geschieht . Es muss einen Rechenfehler in der Arbeit geben, der dennoch irgendwie nicht auf die Simulationen der Autoren "übertragen" wurde. Im Moment fällt mir nichts anderes ein, da die Methodik Standard ist. Ich bin fasziniert und arbeite immer noch daran.
PHASE B0.007
Nach der Antwort von @ ivansml, bei der ein Fehler in der Arbeit festgestellt wurde (der anscheinend nicht in den Simulationen der Autoren gemacht wurde) , habe ich einen zweiten Fehler festgestellt , diesmal in den Simulationen : und es hängt damit zusammen, ob ist eine Standardabweichung oder ein Varianzwert.
Insbesondere: Unter Verwendung des korrigierten Gleichungssystems und einer zufälligen Störung (dh wie in der Veröffentlichung geschrieben ). Ich die folgende Grafik der letzten 120 Realisierungen von insgesamt 3.000:ϵi∼N(0,σ2=0.007),⟹SD=0.0837
Beachten Sie die Werte auf der vertikalen Achse: Sie sind viel größer als der Wertebereich, der in Abbildung 1 im Artikel der Autoren angegeben ist.
Aber wenn ich Störungen gemäß , dann ichϵi∼N(0,σ2=0.00049),⟹SD=0.007
Jetzt entspricht der Wertebereich denen im Diagramm des Papiers. Es kann vorkommen, dass die korrekte Varianz beträgt und die Autoren sie fälschlicherweise als StDev verwendet haben. Es kann jedoch auch vorkommen, dass die korrekte Varianz und die korrekte SD beträgt . Die Simulation war also korrekt (in Übereinstimmung mit der erhaltenen Schätzung), aber versehentlich wurde in der Arbeit "Varianz" genannt, was als "Standardabweichung" bezeichnet werden sollte.0,000049 0,0070.007 0.000049 0.007
Ich werde versuchen, die Autoren in diesen beiden Fragen zu kontaktieren.
quelle