Kva er regresjon?
Regresjonsanalyse eller regresjon betyr for oss at vi har nokre samhøyrande verdiar for to variablar og prøver å finne ein samanheng mellom dei, ein samanheng i form av ein funksjon. Dette er det motsette av progresjon, som vi vanlegvis gjer der vi har modellen (funksjonen), og reknar ut samhøyrande verdiar for dei to variablane.
I dømet nedanfor kastar Camilla ein ball opp i lufta. Vi måler høgda ballen har
Døme: Kast med ball
Camilla kastar ein ball rett opp i lufta. Tabellen viser høgda til ballen
0 | 1,8 |
0,5 | 7,6 |
1 | 11 |
1,5 | 11,9 |
2 | 10,4 |
2,5 | 6,4 |
3 | 0 |
Her har vi samhøyrande verdiar for dei to variablane tid
Regresjon med GeoGebra
Vi skriv tala inn i reknearkdelen i GeoGebra, markerer tala og vel verktøyet "Regresjonsanalyse" frå den andre verktøymenyen øvst oppe. Sjå figuren nedanfor.
Først kjem berre punkta frå reknearket opp. Grafen får vi først når vi vel ein regresjonsmodell. Sidan punkta ser ut som dei kan ligge på ein parabel, vel vi "Polynom" og "2" for å få ein andregradsfunksjon. GeoGebra bereknar då at den andregradsfunksjonen som passar best med tala, er
Vi kan sjå at grafen til denne funksjonen passar svært godt til målepunkta. Det skjer ikkje alltid.
For å få grafen over i det vanlege grafikkfeltet trykker vi på knappen med ein firkant og ei pil på øvst i regresjonsanalyseverktøyet og vel "Kopier til grafikkfeltet". Då kan vi lage ei skikkeleg grafisk framstilling av resultata og setje namn på aksane.
Regresjon med Python
Regresjon med Python kan gjerast på fleire måtar. Her har vi valt å bruke metoden curve_fit
frå scipy.optimize
sjølv om han gir oss meir data enn vi skal bruke her.
Metoden er basert på at vi skriv i koden kva slags type funksjon som skal brukast i den matematiske modellen. Dette gjer vi ved å definere modellen som ein eigendefinert pythonfunksjon, som vi vel å kalle modell
. I vårt tilfelle ønsker vi å tilpasse målingane til ein andregradsfunksjon av typen modell
kan då sjå slik ut:
Parametrane til modell
er først den frie variabelen x
, deretter konstantane som skal brukast i modellfunksjonen, som vi naturleg nok kallar a
, b
og c
. Funksjonen modell
blir brukt av metoden curve_fit
saman med ei liste med curve_fit
gir tilbake to lister. Den eine inneheld dei tre konstantane a
, b
og c
som gjer at den matematiske funksjonen vi definerte i modell
, passar mest mogleg med måledataa. Den andre lista inneheld dei såkalla kovariansane, som vi ikkje skal bruke her.
Koden for heile programmet kan sjå slik ut:
Kommentarar til koden i den andre kodeblokka
I linje 9 bruker vi éi linje på å legge verdiane frå lista konstantar
over til dei tre variablane.
Lista kovarians
bruker vi ikkje i programmet. Vi har vurdert dette med kovarians til å vere utanfor det som blir kravd i faget. Kovariansen seier noko om kor godt dataa passar til modellen.
I linje 21 har vi lagt til ein "+" i formateringskoden til utskrifta. Plussteiknet tvingar Python til å ta med forteiknet til variabelen anten det er pluss eller minus. På den måten får vi alltid riktig teikn mellom ledda i utskrifta av funksjonen.
I linje 24 bruker vi ein "o" i plot-kommandoen for at grafen skal bli runde punkt og ikkje ein samanhengande graf. Vi kunne òg ha brukt kommandoen scatter
i staden for plot
her.
Du treng kanskje ikkje kommandoen plt.
show
()
til slutt for å få sjå plottet.
Køyring av koden gir denne utskrifta:
"Funksjonen blir h(x) = -4.90x^2 +14.09x +1.80."
Vi får same funksjon