Eksponentiaalisen funktion yhtälö on $ y = ae ^ {bx} $
Tiedot on piirretty alla olevan kuvan mukaisesti:
Tämän muuntaminen lineaariselle regressiolle: $ ln (y) = ln (a) + bx $
Tämä muunnos näkyy alla olevassa käyrässä:
Sitten lineaarinen regressioyhtälö on: $ ln (y) = -369.9778 + 0.187693x $
Kuinka muunnan sen takaisin muodossa $ y = ae ^ { bx} $ ??
Minun ongelmani on muodossa $ ln (a) = -369.9778 $. Kuinka saada $ a $ -arvo.
Edes Excel ei voi saada yhtälöä oikein, mutta trendiviiva on olemassa? En ymmärrä miten se johdetaan. Trendiviiva ei edes kuvaa todellista skenaariota tietojen perusteella:
Mutta se on jonkin verran tarkka, kun käytän uudempia datapisteitä:
Tiedot ovat seuraavat:
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
Kommentit
- En ’ en käytä Exceliä rutiininomaisesti ja en tiedä, mitä lisätty rivi on ’ ensimmäisessä juonessasi. Se ’ ei todellakaan ole eksponentiaalinen, koska se ei ole yksitoikkoinen. Kehotan opiskelijoita ja kollegoita olemaan koskaan antamatta käyrää, jos he voivat ’ t selitä miten se tuotettiin. Se ’ on todennäköisesti polynomi tai spline.
- Painin juuri eksponenttia Excelissä. Sinä ’ oikein, napsautin vain satunnaisesti mitä minä tunsin sen olevan. Yritän selvittää, kuinka sovittaa minkä tahansa tyyppinen rivi, jonka tunnen vain lineaarisesta regressiosta.
- Kiitos Excel-tiedoston toimittamisesta toiselle sivustolle. Olen ’ ottanut tiedot ja luetellut ne kysymykseesi. Se on ’ parempi tapa antaa esimerkkejä, leikkaamalla yksi tai kaksi muuta ohjelmaa käyttämättä Exceliä, jota monet ihmiset eivät tee ’ tai älä ’ ole, ja annat vain ihmisille jotain, jonka he voivat kopioida ja liittää suosikkiohjelmistoihin.
Vastaa
Nämä kaksi regressiota eivät anna parametriarvoja, jotka voidaan muuntaa tarkasti toisilleen:
$ ln (y) ~ vs. ~ A + B ~ x $
$ y ~ vs. ~ a ~ exp (b ~ x) $
koska ne minimoivat eri neliösummat, nimittäin seuraavat:
$ \ Sigma_i (ln (y_i) – (A + B ~ x_i)) ^ 2 $
$ \ Sigma_i (y_i – a ~ exp (b ~ x_i)) ^ 2 $
ja nämä eivät ole vastaavia minimointiongelmia.
Ensimmäinen regressio voidaan ratkaista $ A $: lla ja $ B $: lla käyttämällä lineaarista regressiota.
Ratkaise toinen regressio aloittamalla ratkaisemalla ensimmäinen. Käytä sitten $ a = exp (A) $ ja $ b = B $ lähtöarvoina toisen regressio-ongelman ratkaisemiseksi epälineaarisen regressio-ratkaisijan avulla (eli Excelissä, joka olisi Ratkaisija). Jos epälineaarinen regressiomalli on riittävän kaukana lineaarisesta regressiomallista, on mahdollista, että nämä lähtöarvot eivät ole riittäviä, jolloin sinun on kokeiltava muita lähtöarvoja.
Lisätty
Tiedot on lisätty kysymykseen, jotta voimme nyt suorittaa yllä olevassa kappaleessa esitetyn ehdotetun toiminnan. Alla näytetään R-koodi tehdäksesi tämän. Jos asennat R koneellesi, kopioi ja liitä koodi vain R-konsoliin.
Luemme ensin tiedot tiedostoon DF
ja suoritamme sitten lineaarisen mallin, ts. regressio log(Total)
vs. Year
. Huomaa, että log
R: ssä on lokin pohja e. Näemme, että tuotetut regressiokertoimet ovat A = -369,977814 ja B = 0,187693 leikkaukselle ja kaltevuudelle. Sitten puretaan kaltevuus muuttujaan b
käytettäväksi lähtöarvona epälineaarisessa regressiossa. Emme tarvitse leikkausta lähtöarvona, koska epälineaarinen regressioalgoritmi, plinaarinen, vaatii vain epälineaaristen parametrien aloitusarvot. Sitten suoritetaan epälineaarinen regressio Total
vs. a * exp(b * Year)
. Sen tuottamat kertoimet ovat b = 2.838264e-01 ja a = 3.117445e-245. Sitten piirrämme tuloksen ja näemme, että se näyttää kohtuullisen lähellä tietoja.
Suorittaessamme epälineaarista optimointia numeeriset näkökohdat tarkoittavat, että haluamme parametrien olevan suunnilleen saman suuruisia, mitä ei ole. Tämä ehdottaa mallin muuttamista uudelleen:
$ y ~ vs. ~ exp (a ~ + ~ b ~ x_i) $ [uudelleenparametroitu epälineaarinen malli]
ja teemme sen alla olevan koodin lopussa. Näemme, että nyt parametrit ovat a = -562.9959733 ja b = 0.2838263, jossa nyt a on määritelty uudelleen paramaterisoidun epälineaarisen mallin määritelmässä. Nämä parametrit ovat paljon vertailukelpoisempia arvoja, joten uudelleenparametroitu epälineaarinen mallimme vaikuttaa edullisemmalta.
Kaavio näyttäisi olevan samanlainen kuin ensimmäisessä epälineaarisessa regressiomallissa.
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)
Suorita nyt tämä:
# 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
kommentit
- Se ’ on oikein. Käytännössä linearisointi ensin ei ole vain helpompaa toteuttaa, koska se ’ on vain regressio sen jälkeen; tämänkaltaisille tiedoille se näyttää kohtuulliselta, kun otetaan huomioon virherakenne, johon log $ y $ -vuoden kaavio viittaa, varsinkin että sironta näkyy suunnilleen logaritmisessa mittakaavassa. Meillä ’ ei ole tarkistettavia raakatietoja, mutta tällaisissa esimerkeissä tällainen linearisointi ei todennäköisesti ole ongelmallista tai huonompaa.
- Lineaarinen regressio ei antanut haluttu vastaus. Se on kysymyksen pääkohde.
- En lukenut kysymystä ollenkaan tällä tavalla ’. OP ei ’ ymmärtänyt kaikkea, mitä Excel (a) yleensä (b) teki. (Hämmentävää on, että toimenpideohjelma on tarkistanut ketjun, mutta ei vastaa kumpaankaan toistaiseksi pidempään vastaukseen.)
- Aivan lopussa olevan kysymyksen keskustelu ja siihen liittyvät kaaviot osoittavat, että mikä oli saatu lineaarisesta regressiosta ei ollut sitä, mitä haluttiin.
- Siellä ’ on paljon sekoitettua ja jopa ristiriitaista kysymystä. Jos tiedot olisivat täsmälleen eksponentiaalisia, ei ’ ole väliä kuinka malli sovitettiin. Se ’ voi mahdollisesti valita keskitason sovituksen, joka alittaa korkeat arvot; keskitasoinen istuvuus, jossa kiinnitetään enemmän huomiota heihin; ja keksiä aivan erilainen malli. OP on auktoriteetti siitä, mikä häiritsee heitä, mutta (kuten sanottu) ei ole ’ ole vielä selvittänyt mitään tärkeitä yksityiskohtia. Siitä huolimatta vastaukset herättävät useita seikkoja, joista saattaa olla hyötyä tai kiinnostusta muille tällä alueella.
Vastaa
Käytät kalenterivuotta muodossa $ x $, joten väistämätön seuraus on, että $ a $ muodossa $ y = a \ exp (bx) $ on tai oli $ y $: n arvo vuonna $ x = 0 $. Jos jätät huomiotta pedanttisen pisteen, jonka mukaan ei ollut vuotta nolla, se oli vuosi ennen $ 1 $ AD (CE), ja käyrän henkisen ennusteen tulisi taaksepäin korostaa, että sovitettu arvo on (olisi ollut!) Hyvin pieni todellakin vuonna $ 0 $ (mutta silti positiivinen, koska eksponenttifunktio takaa sen).
Et anna alkuperäisiä tietoja tarkistettavaksi, mutta en näe mitään syytä epäillä, mitä näytät. Saan $ \ exp (-369.9778) $ olevan 2,09 $ \ kertaa 10 ^ {- 161 } $, todellakin hyvin pieni. Joten Excel on oikea kahden desimaalin tarkkuudella. Lisäksi sinun on näytettävä tulos virran merkinnöissä.
Jos tämä olisi minun ongelmani, sopisin sano $ a \ exp [b (x – 2000)] $; sitten $ a $: lla on helpompi tulkita $ y $, kun $ x = 2000 $, ja sitä voidaan verrata tietoihin helpommin. (Numeerista tarkkuutta ei vahingoiteta. joko, ja heitä voidaan auttaa.)
JW Tukey väitti, että meidän tulisi sovittaa ”senterseptit”, ei sieppauksia, ja tämä esimerkki korostaa asiaa. Auktoriteetti: Roger Koenker tällä sivulla .
Loki-asteikolla piirtäminen viittaa siihen, että eksponentti on vain karkea sovitus, mutta se ei ole ”t kysymys.
Aiheeseen liittyvä keskustelu alkuperän valinnasta osoitteessa Onko järkevää käyttää päivämäärämuuttujaa regressiossa?
MUOKKAA Tietojen perusteella luin ne Stataan.
Sovitin $ \ text {total} = a \ exp [b (\ text {vuosi} – 2000)] $ regressoimalla $ \ ln (\ text {total}) $ dollarilla $ \ text {vuosi} – 2000 $.
Siitä saadaan lineaarinen yhtälö 5,40827 + 0,187693 (\ text {vuosi} – 2000) $.
2000 dollarin ”keskipiste” muuttuu siten takaisin noin 223 dollariksi. Tietoarvo oli 123 dollaria. Tärkeä yksityiskohta tässä on, että 0,187693 dollaria vastaa Excel-tulosta.
I sovitti sitten saman yhtälön suoraan epälineaarisista pienimmistä neliöistä ja sai keskipisteen $ 105,2718 $ ja kertoimen $ 0,2838264 $. Se on hyvin erilainen eikä yllättävää, koska epälineaariset pienimmät neliöt eivät alenna t korkeat arvot, kuten logaritmien linearisointi tekee. Oma log-mittakaavan käyräsi osoittaa, että myöhempien vuosien korkeimmat arvot on ennustettu sovittamalla logaritmiseen asteikkoon. Päinvastoin, epälineaariset pienimmät neliöt kallistuvat toiseen suuntaan.
Vaikka eksponentti näytti olevan erittäin sopiva, en yritä ekstrapoloida sitä kovin pitkälle tulevaisuuteen.Näiden tietojen perusteella, jos eksponentti on paras karkea nollapistelaskelma ja vaatimattomammalla ekstrapoloinnilla kuin pyysit, epävarmuus on vakava:
kommentit
- kiitos viitteistä i ’ ll luen ne. En ole niin hyvä perusasioissa, jotka koskevat yhtälöiden alkuperää ja niiden toimintaa, joten sovellan työkaluja väärin. Luulen, että ’ siksi useimmat ihmiset pitävät matematiikkaa vaikeaksi
vastaus
Aluksi ehdotan, että etsit Khan Academy -videoita loki- ja eksponentiaalifunktioista.
Sinun pitäisi olla kunnossa tekemällä a = e^(-369.9778)
.
Kommentit
- En ymmärrä ’ tosi ymmärtämistään, kuinka pääset tähän arvoon. Eikö ’ t
log(a) = -369.9778
sama kuin10^(-369.9778) = a
? - Odota anteeksi olet ’ oikeassa ’ s
e^(-369.9778)
. Vaikka se ei selitä trendiviivojen ja regressioyhtälön käyttäytymistä. Ehkä ’ on jotain, mistä ’ m puuttuu - Kun kirjoitit kysymyksen ensimmäisen kerran, ajattelin, että se oli yksinkertainen matemaattinen ongelma. Nyt saan mielipiteesi.
- Anteeksi harhaanjohtavasta kysymyksestä. Kun tein ensimmäisen kerran kysymyksen, ajattelin myös, että se oli virheellinen algebra, joka aiheutti ongelman. En ’ m vain ole niin hyvä matematiikan perusteiden kanssa, että minulla on paljon aukkoja.