Der nls() Funktion in R
Hybrid Neue keynesianische Phillips-Kurve ist:
Nach ein paar Manipulationen, erhalten wir die folgenden schätzbaren Modell:
wo π ist inflation und x ist ein Maß der output-Lücke (= die zyklische Komponente des BIP mithilfe des Hodrick-Prescott-filter). Die erklärenden Variablen des Modells π und x beobachtbar sind.
Bin ich verpflichtet zur Schätzung dieses Modells mit nichtlinearen kleinsten Quadrate; jedoch, dieses Modell sieht linearen mir. Auch meine versuche, die nls()
Funktion in R, sind gescheitert.
Auch, meine Forschung auf nichtlineare regression führte mich zu dem logistischen Wachstum der Bevölkerung, aber ich bin nicht in der Lage, einen Weg zu finden, zu erzählen, was ich gelernt habe, zu dieser übung, vor allem, wenn es um die Ermittlung der Startwerte.
- wir brauchen ein wenig mehr Informationen/Kontext, und eine reproduzierbare Beispiel würde nicht Schaden. Insbesondere: sind beide pi und x beobachtet, oder nur x? Was wäre ein typischer Datensatz Aussehen? Und warum sind Sie "erforderlich", um das nichtlineare least-squares-ist dieses Hausaufgaben? (Offhand, es sieht aus wie ein state-space-Modell zu mir-z.B. check-out die
dynlm
- Paket) - gibt es tools in der dynlm-Paket für nichtlineare Regressionen? Ich verwende es für lineare Regressionen mit Zeitreihendaten. Und ja, pi und x zu beobachten sind. Und auch ja, das ist der Letzte Teil meiner Hausaufgaben. Alle Variablen in das Modell waren zuvor abgeleitet.
- wenn (wie Sie Ihre editierte version sagt)
pi
undx
sind sowohl beobachtbare, dann sollte perfekt sein, leicht tailliert mitlm()
. Das einzige argument fürnls
-passend wäre da eine Möglichkeit, die Variablena
,b
, undc
direkt, anstatt zurück zu berechnen (und so etwas wie die delta-Methode zu approximieren, deren Unsicherheiten). Ich würde vorschlagen, dass Sie (1) verwenden Sielm()
das Modell passt; (2) Holen Sie sich die Startwerte aus dernls
passen durch zurück-Berechnung aus diesen Koeffizienten. Wenn Sie möchten helfen, die Hausaufgaben, die Sie definitiv haben, um uns zu zeigen, was du schon versucht hast ... - Vielen Dank @BenBolker
- Ich meinte natürlich "erhalten ab Werten für die
nls
fit" oben ... der einfachste Weg, um die verzögerten Variablen für eine lineare regression ist, Kopien zu erstellen und anfügen vonNA
Werte/trim end-Werte entsprechend, z.B. lag-1 vonx
=c(NA,x[-length(x)])
- Wenn Sie es wirklich schaffen, dieses problem zu lösen Sie sich selbst auf der Grundlage der Hinweise oben (oder ganz auf deine eigene), kannst du bitte poste die Antwort hier?
- Dank Ihrer Hilfe war ich in der Lage das problem zu lösen. Unten Stelle ich eine ausführliche Anleitung, wie ich ging über es.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwendung von gewöhnlichen kleinsten Quadrate (OLS) mit der
lm()
Funktion zur Schätzung der Gleichung (2) in der Frage würde dazu führen, dass die Schätzung der Koeffizienten .Auf der anderen Seite, nichtlineare least-squares-mit der
nls()
Funktion zur Schätzung der Gleichung würde die Schätzung der Werte für die Parameter 'a', 'b' und 'c', das sind die Parameter von Interesse.Den
nls()
Funktion (nonlinear least squares) in R hat zwei wichtige Parameter: Erstens, dieformula
parameter und dann diestart
parameter. Läuft?nls
in R wird einige details, aber das wesentliche ist, dass dieformula
- parameter für den Ausdruck des nicht-linearen Modells will man zu schätzen (z.B.y ~ a /(b + c*x)
, wo 'y' und 'x' sind Variablen und 'a', 'b' und 'c' sind die Parameter von Interesse) und diestart
parameter nimmt die Startwerte der Parameter von Interesse, R verwendet in der iteration Prozess (wegen der nichtlinearen least-squares-im Grunde Berechnungen iteriert, bis die besten Werte für die Parameter sind, die).Unten sind die Schritte:
(i) Erhalten Sie die Startwerte der Parameter 'a', 'b' und 'c'
Hier habe ich die
lm()
Funktion zur Schätzung der Koeffizienten in Gleichung (2). Ich begann durch die Schaffung von verzögerten Variablen in der Funktion.NB: 'y' bezieht sich auf ''
Also, die Schätzung der Koeffizienten der Gleichung, die den folgenden code verwendet wurde:
Nun haben wir die Schätzungen für , wir können weiter gehen, und berechnen Sie die Werte für 'a', 'b' und 'c' in der folgenden Weise:
A
,B
undC
dienen dann als Startwerte in dienls()
Funktion(ii) die Verwendung der
nls()
FunktionDie Ergebnisse können gesehen werden, mit dem code:
Danke an Ben Bolker für die Bereitstellung der Einblick 🙂