Lequazione di una funzione esponenziale è $ y = ae ^ {bx} $

I dati vengono tracciati come mostrato di seguito: Grafico esponenziale non trasformato

Trasformazione per la regressione lineare: $ ln (y) = ln (a) + bx $

Questa trasformazione è mostrata nel grafico sottostante: Trasformazione

Quindi lequazione di regressione lineare è: $ ln (y) = -369.9778 + 0.187693x $

Come posso trasformarla di nuovo nella forma di $ y = ae ^ { bx} $ ??

Il mio problema è in $ ln (a) = -369.9778 $. Di come ottenere il valore $ a $.

Anche Excel non riesce a ottenere lequazione correttamente, ma esiste una linea di tendenza? Non capisco come sia derivato. La linea di tendenza non rappresenta affatto lo scenario effettivo basato sui dati: Comportamento errato

Ma è piuttosto accurato quando utilizzo i punti dati più recenti: È più accurato quando ricevo i dati più recenti

I dati sono i seguenti:

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 

Commenti

  • Non ‘ uso Excel regolarmente e non ‘ non so quale sia la riga aggiunta nel tuo primo grafico. ‘ non è certamente un esponenziale in quanto non è monotono. Consiglio a studenti e colleghi di non fornire mai una curva se possono ‘ per spiegare come è stato prodotto. ‘ è probabilmente un polinomio o una spline.
  • Ho appena premuto esponenziale in Excel. Tu ‘ hai ragione, ho solo cliccato a caso su quello che ho lho sentito. Sto cercando di scoprire come adattare correttamente qualsiasi tipo di linea che conosco solo con la regressione lineare.
  • Grazie per aver fornito un file Excel su un altro sito. Ho ‘ ho preso i dati e li ho elencati nella tua domanda. Questo ‘ è un modo migliore per fornire esempi, eliminando uno o due altri programmi, senza utilizzare Excel, cosa che molte persone non ‘ fanno oppure non ‘, e dai alle persone qualcosa che possono copiare e incollare nel loro software preferito.

Risposta

Queste due regressioni non forniranno valori di parametro che possono essere trasformati esattamente luno nellaltro:

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

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

perché riducono al minimo le diverse somme di quadrati, vale a dire, rispettivamente, le seguenti:

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

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

e quelli non sono problemi di minimizzazione equivalenti.

La prima regressione può essere risolta per $ A $ e $ B $ utilizzando la regressione lineare .

Per risolvere la seconda regressione, inizia risolvendo la prima. Quindi usa $ a = exp (A) $ e $ b = B $ come valori iniziali per risolvere il secondo problema di regressione utilizzando un risolutore di regressione non lineare (cioè in Excel che sarebbe Risolutore). Inoltre, se il modello di regressione non lineare è sufficientemente lontano dal modello di regressione lineare, è possibile che questi valori iniziali non siano adeguati, nel qual caso sarà necessario provare altri valori iniziali.

Aggiunto

I dati sono stati aggiunti alla domanda in modo che ora possiamo eseguire lazione suggerita discussa nel paragrafo precedente. Di seguito mostriamo il codice R per farlo. Se installi R sulla tua macchina, copia e incolla il codice nella console R.

Prima leggiamo i dati in DF e poi eseguiamo un modello lineare, ovvero regressione, di log(Total) e Year. Tieni presente che log in R è logaritmo in base e. Vediamo che i coefficienti di regressione prodotti sono A = -369,977814 e B = 0,187693 per lintercetta e la pendenza. Quindi estraiamo la pendenza nella variabile b da utilizzare come valore iniziale nella regressione non lineare. Non abbiamo bisogno dellintercetta come valore iniziale poiché lalgoritmo di regressione non lineare, plineare, richiede solo valori iniziali per parametri non lineari. Quindi eseguiamo la regressione non lineare di Total vs. a * exp(b * Year). I coefficienti che produce sono b = 2.838264e-01 e a = 3.117445e-245. Tracciamo quindi il risultato e vediamo che sembra ragionevolmente vicino ai dati.

In generale, quando si esegue lottimizzazione non lineare, le considerazioni numeriche implicano che vogliamo che i parametri siano allincirca della stessa grandezza, il che non è il caso. Ciò suggerisce di riparametrare il modello in modo che sia:

$ y ~ vs. ~ exp (a ~ + ~ b ~ x_i) $ [modello non lineare re-parametrizzato]

e alla fine del codice seguente lo facciamo. Vediamo che ora i parametri sono a = -562,9959733 eb = 0.2838263 dove ora a è come definito nella definizione del modello non lineare riparamaterizzato. Questi parametri sono valori molto più comparabili, quindi il nostro modello non lineare riparametrato sembra preferibile.

Il grafico sarebbe simile a quello mostrato per il primo modello di regressione non lineare.

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) 

Ora esegui questo:

# 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 

screenshot

Commenti

  • Questo ‘ è corretto. In pratica, la linearizzazione prima non è solo più facile da implementare perché ‘ è solo una questione di regressione da allora in poi; per dati come questi sembra ragionevole in considerazione della struttura dellerrore implicita nel grafico del log $ y $ rispetto allanno, in particolare quella dispersione appare allincirca anche su scala logaritmica. Non ‘ abbiamo i dati grezzi da controllare, ma in esempi come questo la prima linearizzazione sembra improbabile che sia problematica o inferiore.
  • La regressione lineare non è riuscita a dare il risposta desiderata. Questo è il punto principale della domanda.
  • Non ‘ la leggo in questo modo. LOP non ‘ comprendeva tutto ciò che veniva fatto (a) in generale (b) da Excel. (È sconcertante che lOP abbia rivisitato il thread ma non stia rispondendo a nessuna delle risposte più lunghe finora.)
  • La discussione nella domanda alla fine e i grafici di accompagnamento sottolineano che ciò che era ottenuto dalla regressione lineare non era ciò che si voleva.
  • Cè ‘ un sacco che è confuso e persino contraddittorio nella domanda. Se i dati fossero esattamente esponenziali, ‘ non avrebbe importanza come è stato adattato il modello. ‘ è forse una scelta tra un adattamento medio che risulta inferiore a valori elevati; un attacco medio che presta loro maggiore attenzione; e pensare a un modello completamente diverso. LOP è lautorità su ciò che li infastidisce ma (come detto) ‘ non ha ancora chiarito alcun dettaglio importante. Indipendentemente da ciò, le risposte sollevano vari punti che potrebbero essere utili o interessanti per altri in questo territorio.

Risposta

Stai usando lanno solare come $ x $, quindi la conseguenza inevitabile è che $ a $ in $ y = a \ exp (bx) $ è o era il valore di $ y $ nellanno $ x = 0 $. Mettendo da parte il punto pedante che non cera lanno zero, che era lanno prima di $ 1 $ AD (CE), e la proiezione mentale della tua curva allindietro dovrebbe sottolineare che il valore adattato sarà (sarebbe stato!) Davvero molto piccolo nellanno $ 0 $ (ma comunque positivo, lo garantisce la funzione esponenziale).

Non ci dai i dati originali da controllare, ma non vedo motivo di dubitare di ciò che mostri. Ottengo $ \ exp (-369.9778) $ $ 2,09 \ volte 10 ^ {- 161 } $, davvero molto piccolo. Quindi Excel è corretto con le due cifre decimali che mostra. Inoltre, dovrai mostrare il tuo risultato in notazione di potenza.

Se questo fosse il mio problema, mi adatterei in termini di diciamo $ a \ exp [b (x – 2000)] $; allora $ a $ avrà linterpretazione più semplice di $ y $ quando $ x = 2000 $ e potrà essere confrontata più facilmente con i dati. (La precisione numerica non è danneggiata e può essere aiutato.)

JW Tukey ha sostenuto che dovremmo adattare “centercept”, non intercetta, e questo esempio sottolinea il punto. Autorità: Roger Koenker in questa sua pagina .

Tracciare su scala logaritmica suggerisce che lesponenziale è solo approssimativo, ma non è “è la domanda.

Discussione correlata sulla scelta dellorigine su Ha senso utilizzare una variabile di data in una regressione?

EDIT Dati i dati, li ho letti in Stata.

Ho adattato $ \ text {total} = a \ exp [b (\ text {year} – 2000)] $ regredendo $ \ ln (\ text {total}) $ su $ \ text {year} – 2000 $.

Ciò produce unequazione lineare di $ 5,40827 + 0,187693 (\ text {year} – 2000) $.

Il “centercept” per $ 2000 $ si trasforma quindi di nuovo in $ 223 $ circa. Il valore dei dati era $ 123 $. Un dettaglio importante qui è che $ 0,187693 $ corrisponde al risultato di Excel.

I quindi adattato direttamente la stessa equazione utilizzando i minimi quadrati non lineari e ottenuto il centercept di $ 105,2718 $ e il coefficiente di $ 0,2838264 $. Questo è molto diverso e non sorprendentemente, poiché i minimi quadrati non lineari non scartano t a valori alti come la linearizzazione per logaritmi. Il tuo grafico su scala logaritmica mostra che i valori più alti negli anni successivi sono sottostimati adattandosi alla scala logaritmica. Al contrario, i minimi quadrati non lineari si inclinano nellaltro modo.

Anche se un esponenziale sembrasse essere un ottimo adattamento, non tenterei di estrapolarlo molto lontano nel futuro.Con questi dati, dove un esponenziale è la migliore unapprossimazione approssimativa di zero e con unestrapolazione più modesta di quella richiesta, lincertezza è seria:

inserisci qui la descrizione dellimmagine

Commenti

  • Grazie per questi riferimenti i ‘ li leggerò. Non sono così bravo con i fondamenti riguardanti le origini delle equazioni e come funzionano, quindi applico gli strumenti in modo errato. Beh, immagino che ‘ sia il motivo per cui la maggior parte delle persone trova difficile la matematica

Risposta

Per cominciare, ti consiglio caldamente di cercare i video della Khan Academy sui log e sulle funzioni esponenziali.

Dovresti essere a posto semplicemente scrivendo a = e^(-369.9778).

Commenti

  • Non ‘ capisco bene come sei arrivato a quel valore. ‘ t log(a) = -369.9778 uguale a 10^(-369.9778) = a?
  • Aspetta scusa ‘ hai ragione ‘ s e^(-369.9778). Anche se non spiega il comportamento delle linee di tendenza e lequazione di regressione. Forse ‘ qualcosa ‘ mi manca
  • Quando hai scritto per la prima volta la domanda, ho pensato che fosse un semplice problema di matematica. Ora ho capito il tuo punto.
  • Scusa per la domanda fuorviante. Quando ho posto la domanda per la prima volta ho anche pensato che fosse la mia algebra imperfetta a causare il problema. ‘ non sono così bravo con i fondamenti della matematica e ho un sacco di buchi da colmare.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *