Równanie funkcji wykładniczej to $ y = ae ^ {bx} $

Dane są wykreślane w sposób pokazany poniżej: Nieprzekształcony wykres wykładniczy

Przekształcenie tego dla regresji liniowej: $ ln (y) = ln (a) + bx $

Ta transformacja jest pokazana na poniższym wykresie: Transformacja

W takim razie równanie regresji liniowej wygląda następująco: $ ln (y) = -369,9778 + 0,187693x $

Jak przekształcić je z powrotem w postać $ y = ae ^ { bx} $ ??

Mój problem jest w $ ln (a) = -369.9778 $. Jak obliczyć wartość $ a $.

Nawet Excel nie może poprawnie uzyskać równania, ale istnieje linia trendu? Nie rozumiem, skąd się bierze. Linia trendu w ogóle nie przedstawia faktycznego scenariusza opartego na danych: Niewłaściwe zachowanie

Ale jest trochę dokładny, gdy używam nowszych punktów danych: Jest dokładniejszy kiedy otrzymam najnowsze dane

Dane są następujące:

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 

Komentarze

  • Nie ' rutynowo używam Excela i nie ' nie wiem, co to jest dodana linia na pierwszym wykresie. ' z pewnością nie jest wykładniczy, ponieważ nie jest monotoniczny. Radzę uczniom i współpracownikom nigdy nie wyznaczać krzywej, jeśli mogą ' t wyjaśnić, jak został utworzony. ' to prawdopodobnie wielomian lub splajn.
  • Właśnie nacisnąłem wykładniczy w programie Excel. Ty ' dobrze Po prostu losowo kliknąłem to, co mam czułem, że tak jest. Próbuję dowiedzieć się, jak prawidłowo dopasować dowolny rodzaj linii, znam tylko regresję liniową.
  • Dziękujemy za udostępnienie pliku Excel w innej witrynie. ' pobrałem dane i umieściłem je w Twoim pytaniu. To ' to lepszy sposób na podanie przykładów, wycięcie jednego lub dwóch innych programów bez korzystania z Excela, czego wiele osób ' nie robi lub nie ' nie masz i po prostu daj ludziom coś, co mogą skopiować i wkleić do swojego ulubionego oprogramowania.

Odpowiedz

Te dwie regresje nie dadzą wartości parametrów, które można dokładnie przekształcić jedna w drugą:

$ ln (y) ~ vs. ~ A + B ~ x $

$ y ~ vs. ~ a ~ exp (b ~ x) $

ponieważ minimalizują one różne sumy kwadratów, a mianowicie odpowiednio:

$ \ Sigma_i (ln (y_i) – (A + B ~ x_i)) ^ 2 $

$ \ Sigma_i (y_i – a ~ exp (b ~ x_i)) ^ 2 $

i nie są to równoważne problemy z minimalizacją.

Pierwszą regresję dla $ A $ i $ B $ można rozwiązać za pomocą regresji liniowej .

Aby rozwiązać drugą regresję, zacznij od rozwiązania pierwszej. Następnie użyj $ a = exp (A) $ i $ b = B $ jako wartości początkowych, aby rozwiązać drugi problem regresji za pomocą nieliniowego rozwiązania do rozwiązywania regresji (tj. W programie Excel byłby to Solver). Ponadto, jeśli model regresji nieliniowej jest wystarczająco daleko od modelu regresji liniowej, możliwe jest, że te wartości początkowe nie będą odpowiednie, w takim przypadku będziesz musiał wypróbować inne wartości początkowe.

Dodano

Dane zostały dodane do pytania, więc możemy teraz wykonać sugerowane działanie omówione w powyższym akapicie. Poniżej pokazujemy kod R., aby to zrobić. Jeśli zainstalujesz R na swoim komputerze, po prostu skopiuj i wklej ten kod do konsoli R.

Najpierw wczytujemy dane do DF, a następnie uruchamiamy model liniowy, tj. regresja log(Total) w porównaniu z Year. Zauważ, że log w R to podstawa dziennika e. Widzimy, że uzyskane współczynniki regresji wynoszą A = -369,977814 i B = 0,187693 dla punktu przecięcia z osią. Następnie wyodrębniamy nachylenie do zmiennej b, aby użyć jej jako wartości początkowej w regresji nieliniowej. Nie potrzebujemy przecięcia jako wartości początkowej, ponieważ algorytm regresji nieliniowej, plinear, wymaga tylko wartości początkowych dla parametrów nieliniowych. Następnie uruchamiamy regresję nieliniową Total vs. a * exp(b * Year). Wytworzone przez niego współczynniki to b = 2,838264e-01 i a = 3,117445e-245. Następnie wykreślamy wynik i widzimy, że wydaje się on dość zbliżony do danych.

Ogólnie rzecz biorąc, podczas przeprowadzania optymalizacji nieliniowej rozważania numeryczne sugerują, że chcemy, aby parametry miały mniej więcej taką samą wielkość, co nie ma miejsca. Sugeruje to, aby ponowna parametryzacja modelu była następująca:

$ y ~ vs. ~ exp (a ~ + ~ b ~ x_i) $ [ponownie sparametryzowany model nieliniowy]

i na końcu poniższego kodu robimy to. Widzimy, że teraz parametry są a = -562,9959733 i b = 0.2838263 gdzie teraz a jest takie, jak zdefiniowano w definicji ponownie sparamaterizowanego modelu nieliniowego. Te parametry są znacznie bardziej porównywalnymi wartościami, więc nasz ponownie sparametryzowany model nieliniowy wydaje się lepszy.

Wykres wyglądałby podobnie do tego pokazanego dla pierwszego nieliniowego modelu regresji.

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) 

Teraz uruchom to:

# 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 

zrzut ekranu

Komentarze

  • To ' jest poprawne. W praktyce linearyzacja w pierwszej kolejności jest nie tylko łatwiejsza do wdrożenia, ponieważ ' jest tylko kwestią późniejszej regresji; w przypadku takich danych wydaje się to rozsądne, biorąc pod uwagę strukturę błędu wynikającą z wykresu log $ y $ w stosunku do roku, zwłaszcza że rozrzut pojawia się z grubsza nawet w skali logarytmicznej. Nie mamy ' surowych danych do sprawdzenia, ale w przykładach takich jak ta linearyzacja na początku nie wydaje się być problematyczna lub gorsza.
  • Regresja liniowa nie dała pożądana odpowiedź. To jest główny punkt pytania.
  • W ogóle nie ' nie czytałem pytania w ten sposób. OP nie ' nie rozumiał wszystkiego, co jest robione (a) ogólnie (b) przez program Excel. (To niepokojące, że PO ponownie odwiedził wątek, ale jak dotąd nie odpowiedział na żadną z dłuższych odpowiedzi).
  • Dyskusja w pytaniu na końcu i towarzyszące wykresy wskazują, że uzyskany z regresji liniowej nie był tym, czego oczekiwano.
  • Istnieje ' wiele zagmatwanych, a nawet sprzecznych pytań. Gdyby dane były dokładnie wykładnicze, nie ' nie miałoby znaczenia, jak model został dopasowany. Jest to prawdopodobnie ' wybór między średnim dopasowaniem, które powoduje niedociągnięcia przy dużych wartościach; średnie dopasowanie, które zwraca na nie większą uwagę; i wymyślenie całkiem innego modelu. OP jest autorytetem w kwestii tego, co ich niepokoi, ale (jak wspomniano) nie ' nie wyjaśnił jeszcze żadnych ważnych szczegółów. Niezależnie od tego odpowiedzi podnoszą różne kwestie, które mogą być przydatne lub interesujące dla innych na tym terytorium.

Odpowiedź

Używasz roku kalendarzowego jako $ x $, więc nieuniknioną konsekwencją jest to, że $ a $ w $ y = a \ exp (bx) $ jest lub było wartością $ y $ w roku $ x = 0 $. Pomijając pedantyczny punkt, że nie było roku zerowego, czyli rok przed 1 $ AD (CE), i mentalna projekcja twojej krzywej wstecz powinna podkreślić, że dopasowana wartość będzie (byłaby!) Bardzo mała w roku. $ 0 $ (ale nadal dodatnie, ponieważ funkcja wykładnicza to gwarantuje).

Nie podajesz nam oryginalnych danych do sprawdzenia, ale nie widzę powodu, by wątpić w to, co pokazujesz. Otrzymuję $ \ exp (-369.9778) $ na 2,09 $ \ razy 10 ^ {- 161 } $, rzeczywiście bardzo mały. Więc Excel jest poprawny do dwóch miejsc po przecinku, które pokazuje. Ponadto, będziesz musiał pokazać swój wynik w notacji potęgowej.

Gdyby to był mój problem, pasowałbym pod względem powiedz $ a \ exp [b (x – 2000)] $; wtedy $ a $ będzie miał łatwiejszą interpretację $ y $, gdy $ x = 2000 $ i będzie można go łatwiej porównać z danymi. (Dokładność numeryczna nie jest zagrożona albo i można im pomóc.)

JW Tukey argumentował, że powinniśmy dopasować „centra”, a nie przecięcia, a ten przykład podkreśla ten punkt. Autorytet: Roger Koenker na tej stronie swojej .

Wykres na skali logarytmicznej sugeruje, że wykładniczy jest tylko przybliżonym dopasowaniem, ale to nie jest „Nie jest to pytanie.

Powiązana dyskusja na temat wyboru pochodzenia w Czy ma sens używanie zmiennej daty w regresji?

EDYCJA Biorąc pod uwagę dane, wczytywałem je do Stata.

Dopasowałem $ \ text {total} = a \ exp [b (\ text {rok} – 2000)] $ poprzez regresję $ \ ln (\ text {total}) $ on $ \ text {rok} – 2000 $.

To daje równanie liniowe 5,40827 $ + 0,187693 (\ text {rok} – 2000) $.

„Centercept” dla 2000 $ zamienia się w ten sposób z powrotem na około 223 $. Wartość danych wyniosła 123 $. Ważnym szczegółem jest to, że 0,187693 $ odpowiada wynikowi w Excelu.

I następnie dopasowałem to samo równanie bezpośrednio przy użyciu nieliniowych najmniejszych kwadratów i otrzymałem centercept wynoszący 105,2718 USD i współczynnik 0,2838264 USD. Wysokie wartości, jak ma to miejsce w przypadku linearyzacji przez logarytmy. Twój własny wykres na skali logarytmicznej pokazuje, że najwyższe wartości w późniejszych latach są niedoszacowane przez dopasowanie na skali logarytmicznej. I odwrotnie, nieliniowe metody najmniejszych kwadratów przechylają się w drugą stronę.

Nawet jeśli wykładnia wykładnicza wydawałaby się bardzo dobrze dopasowana, nie próbowałbym ekstrapolować jej bardzo daleko w przyszłość.Z tymi danymi, gdzie wykładniczy jest najlepszym przybliżeniem zera i przy skromniejszej ekstrapolacji niż prosiłeś, niepewność jest poważna:

tutaj wprowadź opis obrazu

Komentarze

  • Dziękuję za referencje i ' przeczytam o nich. Nie jestem zbyt dobry w podstawach dotyczących pochodzenia równań i sposobu ich działania, więc niepoprawnie stosuję narzędzia. Cóż, wydaje mi się, że ' dlatego większość ludzi ma trudności z matematyką

Odpowiedź

Na początek gorąco zachęcam do obejrzenia filmów Khan Academy o funkcjach dziennika i funkcji wykładniczych.

Wszystko powinno być w porządku, po prostu tworząc a = e^(-369.9778).

Komentarze

  • Nie ' nie całkiem rozumiem, w jaki sposób osiągnąłeś tę wartość. Czy nie ' t log(a) = -369.9778 to samo co 10^(-369.9778) = a?
  • Czekaj, przepraszam jesteś ' dobrze to ' s e^(-369.9778). Chociaż nie wyjaśnia zachowania linii trendu i równania regresji. Być może ' jest coś, co ' brakuje
  • Kiedy po raz pierwszy pisałeś pytanie, pomyślałem, że to proste problem matematyczny. Teraz rozumiem.
  • Przepraszamy za mylące pytanie. Kiedy po raz pierwszy zadałem pytanie, pomyślałem, że przyczyną problemu była moja wadliwa algebra. Jestem ' Po prostu nie jestem za dobry w podstawach matematyki, mam wiele luk do wypełnienia.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *