Die Gleichung einer Exponentialfunktion lautet $ y = ae ^ {bx} $
Die Daten werden wie folgt dargestellt:
Transformation für lineare Regression: $ ln (y) = ln (a) + bx $
Diese Transformation ist in der folgenden Darstellung dargestellt:
Dann lautet die lineare Regressionsgleichung: $ ln (y) = -369.9778 + 0.187693x $
Wie transformiere ich sie zurück in Form von $ y = ae ^ { bx} $ ??
Mein Problem ist in $ ln (a) = -369.9778 $. Wie man den $ a $ -Wert erhält.
Selbst Excel kann die Gleichung nicht richtig ermitteln, aber es gibt eine Trendlinie? Ich verstehe nicht, wie es abgeleitet wird. Die Trendlinie repräsentiert überhaupt nicht das tatsächliche Szenario basierend auf den Daten:
Aber es ist etwas genau, wenn ich die neueren Datenpunkte verwende:
Die Daten lauten wie folgt:
Year Asymptomatic AIDS Total 1984 0 2 2 1985 6 4 10 1986 18 11 29 1987 25 13 38 1988 21 11 32 1989 29 10 39 1990 48 18 66 1991 68 17 85 1992 51 21 72 1993 64 38 102 1994 61 57 118 1995 65 51 116 1996 104 50 154 1997 94 23 117 1998 144 45 189 1999 80 78 158 2000 83 40 123 2001 117 57 174 2002 140 44 184 2003 139 54 193 2004 160 39 199 2005 171 39 210 2006 273 36 309 2007 311 31 342 2008 505 23 528 2009 804 31 835 2010 1562 29 1591 2011 2239 110 2349 2012 3151 187 3338 2013 4477 337 4814 2014 5468 543 6011 2015 7328 503 7831 2016 8151 1113 9264
Kommentare
- Ich ‚ verwende Excel nicht routinemäßig und ‚ weiß nicht, was die hinzugefügte Zeile ist in Ihrem ersten Plot. Es ‚ ist sicherlich kein Exponential, da es nicht monoton ist. Ich rate Studenten und Kollegen, niemals eine Kurve zu geben, wenn sie ‚ Ich erkläre nicht, wie es hergestellt wurde. ‚ ist wahrscheinlich ein Polynom oder ein Spline.
- Ich habe gerade in Excel exponentiell gedrückt. Sie ‚ Ich habe nur zufällig auf das geklickt, was ich habe fühlte es zu sein. Ich versuche herauszufinden, wie jede Art von Linie, die ich nur mit linearer Regression kenne, richtig angepasst werden kann.
- Vielen Dank, dass Sie eine Excel-Datei auf einer anderen Site bereitgestellt haben. Ich ‚ habe die Daten genommen und in Ihrer Frage aufgelistet. Das ‚ ist eine bessere Möglichkeit, Beispiele zu nennen, indem ein oder zwei andere Programme ausgeschnitten werden, ohne Excel zu verwenden, was viele Leute ‚ nicht tun oder ‚ nicht haben und den Leuten nur etwas geben, das sie kopieren und in ihre Lieblingssoftware einfügen können.
Antwort
Diese beiden Regressionen ergeben keine Parameterwerte, die genau ineinander transformiert werden können:
$ ln (y) ~ vs. ~ A + B ~ x $
$ y ~ vs. ~ a ~ exp (b ~ x) $
, weil sie unterschiedliche Quadratsummen minimieren, nämlich die folgenden:
$ \ Sigma_i (ln (y_i) – (A + B ~ x_i)) ^ 2 $
$ \ Sigma_i (y_i – a ~ exp (b ~ x_i)) ^ 2 $
und dies sind keine äquivalenten Minimierungsprobleme.
Die erste Regression kann für $ A $ und $ B $ mithilfe der linearen Regression gelöst werden.
Um die zweite Regression zu lösen, lösen Sie zunächst die erste. Verwenden Sie dann $ a = exp (A) $ und $ b = B $ als Startwerte, um das zweite Regressionsproblem unter Verwendung eines nichtlinearen Regressionslösers zu lösen (d. H. In Excel wäre dies Solver). Wenn das nichtlineare Regressionsmodell ausreichend weit vom linearen Regressionsmodell entfernt ist, sind diese Startwerte möglicherweise nicht ausreichend. In diesem Fall müssen Sie andere Startwerte ausprobieren.
Hinzugefügt
Die Daten wurden der Frage hinzugefügt, damit wir nun die im obigen Absatz beschriebene vorgeschlagene Aktion ausführen können. Unten zeigen wir den R-Code, um dies zu tun. Wenn Sie R auf Ihrem Computer installieren, kopieren Sie diesen Code einfach und fügen Sie ihn in die R-Konsole ein.
Zuerst lesen wir die Daten in DF
und führen dann ein lineares Modell aus. dh Regression von log(Total)
vs. Year
. Beachten Sie, dass log
in R die Protokollbasis e ist. Wir sehen, dass die erzeugten Regressionskoeffizienten A = -369,977814 und B = 0,187693 für den Achsenabschnitt und die Steigung sind. Dann extrahieren wir die Steigung in die Variable b
, um sie als Startwert für die nichtlineare Regression zu verwenden. Wir brauchen den Achsenabschnitt nicht als Startwert, da der nichtlineare Regressionsalgorithmus plinear nur Startwerte für nichtlineare Parameter benötigt. Dann führen wir die nichtlineare Regression von Total
vs. a * exp(b * Year)
. Die von ihm erzeugten Koeffizienten sind b = 2,838264e-01 und a = 3,117445e-245. Wir zeichnen dann das Ergebnis und sehen, dass es den Daten ziemlich nahe zu kommen scheint.
Wenn nichtlineare Optimierungen durchgeführt werden, implizieren numerische Überlegungen im Allgemeinen, dass die Parameter ungefähr dieselbe Größe haben sollen, was nicht der Fall ist. Dies schlägt vor, das Modell wie folgt neu zu parametrisieren:
$ y ~ vs. ~ exp (a ~ + ~ b ~ x_i) $ [neu parametrisiertes nichtlineares Modell]
und am Ende des folgenden Codes machen wir das. Wir sehen jetzt die Parameter sind a = -562.9959733 und b = 0.2838263 wobei nun a wie in der Definition des reparametrisierten nichtlinearen Modells definiert ist. Diese Parameter sind viel vergleichbarere Werte, daher scheint unser neu parametrisiertes nichtlineares Modell vorzuziehen.
Das Diagramm würde dem für das erste nichtlineare Regressionsmodell gezeigten ähnlich aussehen.
Lines <- "Year Asymptomatic AIDS Total 1984 0 2 2 1985 6 4 10 1986 18 11 29 1987 25 13 38 1988 21 11 32 1989 29 10 39 1990 48 18 66 1991 68 17 85 1992 51 21 72 1993 64 38 102 1994 61 57 118 1995 65 51 116 1996 104 50 154 1997 94 23 117 1998 144 45 189 1999 80 78 158 2000 83 40 123 2001 117 57 174 2002 140 44 184 2003 139 54 193 2004 160 39 199 2005 171 39 210 2006 273 36 309 2007 311 31 342 2008 505 23 528 2009 804 31 835 2010 1562 29 1591 2011 2239 110 2349 2012 3151 187 3338 2013 4477 337 4814 2014 5468 543 6011 2015 7328 503 7831 2016 8151 1113 9264" DF <- read.table(text = Lines, header = TRUE)
Führen Sie nun Folgendes aus:
# run linear regression model fit.lm <- lm(log(Total) ~ Year, DF) coef(fit.lm) ## (Intercept) Year ## -369.977814 0.187693 b <- coef(fm.lm)[[2]] b ## [1] 0.187693 # run nonlinear regresion model fit.nls <- nls(Total ~ exp(b * Year), DF, start = list(b = b), alg = "plinear") coef(fit.nls) ## b .lin ## 2.838264e-01 3.117445e-245 plot(Total ~ Year, DF) lines(fitted(fit.nls) ~ Year, DF, col = "red") a <- coef(fit.lm)[[1]] a ## [1] -369.9778 # run reparameterized nonlinear regression model fit2.nls <- nls(Total ~ exp(a + b * Year), DF, start = list(a = a, b = b)) coef(fit2.nls) ## a b ## -562.9959733 0.2838263
Kommentare
- Das ‚ ist korrekt. In der Praxis ist die Linearisierung zunächst nicht nur einfacher zu implementieren, da ‚ danach nur noch eine Frage der Regression ist. Für Daten wie diese erscheint es angesichts der Fehlerstruktur, die der Graph von log $ y $ gegenüber dem Jahr impliziert, vernünftig, insbesondere, dass die Streuung selbst im logarithmischen Maßstab ungefähr auftritt. Wir haben nicht ‚ die zu überprüfenden Rohdaten, aber in Beispielen wie diesem scheint es zunächst unwahrscheinlich, dass die Linearisierung problematisch oder minderwertig ist.
- Die lineare Regression ergab keine gewünschte Antwort. Das ist der Hauptpunkt der Frage.
- Ich habe ‚ die Frage überhaupt nicht so gelesen. Das OP hat ‚ nicht alles verstanden, was (a) im Allgemeinen (b) von Excel ausgeführt wurde. (Es ist beunruhigend, dass das OP den Thread erneut besucht hat, aber bisher auf keine der längeren Antworten reagiert.)
- Die Diskussion in der Frage am Ende und die zugehörigen Grafiken zeigen, was war Aus der linearen Regression erhalten wurde nicht das, was gewünscht wurde.
- Es gibt ‚ eine Menge, die in der Frage verwirrt und sogar widersprüchlich ist. Wenn die Daten genau exponentiell wären, wäre es ‚ egal, wie das Modell angepasst wurde. ‚ ist möglicherweise die Wahl zwischen einer mittleren Anpassung, die bei hohen Werten unterschreitet. ein mittelmäßiger Anfall, der ihnen mehr Aufmerksamkeit schenkt; und sich ein ganz anderes Modell ausdenken. Das OP ist die Autorität darüber, was sie stört, hat aber (wie gesagt) ‚ noch keine wichtigen Details geklärt. Unabhängig davon werfen die Antworten verschiedene Punkte auf, die für andere in diesem Gebiet von Nutzen oder Interesse sein könnten.
Antwort
Sie verwenden das Kalenderjahr als $ x $. Die unvermeidliche Folge ist also, dass $ a $ in $ y = a \ exp (bx) $ der Wert von $ y $ im Jahr $ x = 0 ist oder war $. Wenn Sie den pedantischen Punkt außer Acht lassen, dass es kein Jahr Null gab, das war das Jahr vor $ 1 $ AD (CE), und die mentale Projektion Ihrer Kurve nach hinten sollte unterstreichen, dass der angepasste Wert im Jahr tatsächlich sehr klein sein wird (gewesen wäre!) $ 0 $ (aber immer noch positiv, da die Exponentialfunktion dies garantiert).
Sie geben uns nicht die Originaldaten zur Überprüfung, aber ich sehe keinen Grund, daran zu zweifeln, was Sie zeigen. Ich erhalte $ \ exp (-369.9778) $ als $ 2.09 \ mal 10 ^ {- 161 } $, in der Tat sehr klein. Excel ist also auf die zwei angezeigten Dezimalstellen korrekt. Außerdem müssen Sie Ihr Ergebnis in Potenznotation anzeigen.
Wenn dies mein Problem wäre, würde ich in Bezug auf passen Sagen Sie $ a \ exp [b (x – 2000)] $; dann hat $ a $ die einfachere Interpretation von $ y $, wenn $ x = 2000 $ ist, und kann leichter mit Daten verglichen werden. (Numerische Genauigkeit wird nicht beeinträchtigt entweder und kann geholfen werden.)
JW Tukey argumentierte, dass wir „Mittelbegriffe“ und keine Abschnitte anpassen sollten, und dieses Beispiel unterstreicht den Punkt. Autorität: Roger Koenker bei dieser Seite seiner .
Das Zeichnen auf der Protokollskala legt nahe, dass das Exponential nur eine grobe Anpassung ist, aber das ist nicht der Fall „t die Frage.
Verwandte Diskussion über die Wahl des Ursprungs bei Ist es sinnvoll, eine Datumsvariable in einer Regression zu verwenden?
BEARBEITEN Angesichts der Daten habe ich sie in Stata eingelesen.
Ich habe $ \ text {total} = a \ exp [b (\ text {Jahr} – 2000)] $ durch Regression angepasst $ \ ln (\ text {total}) $ on $ \ text {year} – 2000 $.
Dies ergibt eine lineare Gleichung von $ 5.40827 + 0.187693 (\ text {year} – 2000) $.
Das „Centercept“ für $ 2000 $ wandelt sich somit wieder in $ 223 $ oder so um. Der Datenwert betrug $ 123 $. Ein wichtiges Detail hierbei ist, dass $ 0.187693 $ mit Ihrem Excel-Ergebnis übereinstimmt.
I. passte dann dieselbe Gleichung direkt unter Verwendung nichtlinearer kleinster Quadrate an und erhielt einen Mittelpunkt von 105,2718 $ und einen Koeffizienten von 0,2838264 $. Das ist sehr unterschiedlich und nicht überraschend, da die nichtlinearen kleinsten Quadrate t nicht diskontieren Die hohen Werte wie die Linearisierung durch Logarithmen. Ihr eigenes Diagramm auf der logarithmischen Skala zeigt, dass die höchsten Werte in späteren Jahren durch Anpassen auf der logarithmischen Skala unterprognostiziert werden. Umgekehrt neigen sich nichtlineare kleinste Quadrate in die andere Richtung.
Selbst wenn ein Exponential sehr gut passt, würde ich nicht versuchen, es sehr weit in die Zukunft zu extrapolieren.Bei diesen Daten, bei denen ein Exponential am besten eine grobe nullte Näherung ist, und bei einer bescheideneren Extrapolation als gewünscht, ist die Unsicherheit ernst:
Kommentare
- Vielen Dank für diese Referenzen i ‚ wird sie nachlesen. Ich bin nicht so gut mit den Grundlagen bezüglich der Herkunft der Gleichungen und wie sie funktionieren, deshalb wende ich die Werkzeuge falsch an. Nun, ich denke, dass ‚ der Grund ist, warum die meisten Leute Mathe schwer finden.
Antwort
Zunächst würde ich Ihnen dringend empfehlen, nach Videos der Khan Academy über Protokoll- und Exponentialfunktionen zu suchen.
Sie sollten in Ordnung sein, indem Sie einfach a = e^(-369.9778)
erstellen.
Kommentare
- Ich verstehe ‚ nicht ganz, wie Sie zu diesem Wert gekommen sind. Ist ‚ t
log(a) = -369.9778
nicht dasselbe wie10^(-369.9778) = a
? - Sie ‚ haben Recht ‚ s
e^(-369.9778)
. Obwohl es das Verhalten der Trendlinien und der Regressionsgleichung nicht erklärt. Vielleicht fehlt ‚ etwas, das ich ‚ vermisse - Als Sie die Frage zum ersten Mal geschrieben haben, dachte ich, das sei einfach Matheproblem. Jetzt verstehe ich Ihren Standpunkt.
- Entschuldigen Sie die irreführende Frage. Als ich die Frage zum ersten Mal stellte, dachte ich auch, dass es meine fehlerhafte Algebra war, die das Problem verursachte. Ich ‚ bin einfach nicht so gut mit den Grundlagen der Mathematik. Ich muss viele Lücken füllen.