Regresjon med GeoGebra 4.0 av Sigbjørn Hals Innhold Liste over kommandoene... 2 Lineær regresjon... 3 Potensregresjon... 5 Eksponentiell regresjon... 5 Logaritmisk regresjon... 6 Logistisk regresjon... 6 Sinusregresjon... 7 Egendefinert regresjon... 7 Fordeler med egendefinerte funksjoner ved kurvetilpasning... 10 Hvilken regresjonsmodell er best? Sum av kvadratavvik... 11
Liste over kommandoene I GeoGebra 4.0 er det flere forandringer i forhold til versjon 3.2. Her er en oversikt over de ulike kommandoene for regresjon (kurvetilpasning): Kommando Syntaks Eksempel Eksempel på resultat RegLin RegLin[ <liste med punkt> ] RegLin[ liste1 ] a : 280x 80y 624 a : y 3.5x 7.8 RegLinX RegLinX[ <liste med punkt> ] RegLinX[ liste1 ] a : 35x 10y 78 a : y 3.5x 7.8 RegPoly RegPoly[ <liste med punkt>, <polynomgrad> ] RegPoly[ liste1,1 ] f( x) 3.5x 7.8 RegPot RegPot[ <liste med punkt> ] RegPot[ liste2 ] 1.44 f( x) 4.91 x RegEksp RegEksp[ <liste med punkt> ] RegEksp[ liste3 ] f( x) 4.98 1.62 x RegEksp2 RegEksp2[ <liste med punkt> ] RegEksp2[ liste3 ] g( x) 4.98 e RegLog RegLog[ <liste med punkt> ] RegLog[ liste4 ] f( x) 1.91 0.7 ln( x) RegLogist RegLogist[ <liste med punkt> ] RegLogist[ liste5 ] 5634,29 f( x) 0.36x 1 42.52 e RegSin RegSin[ <liste med punkt> ] RegSin[ liste6 ] f( x) 4.46 1.79 sin(2.45 x 3) Se kommentarer på Reg a*sin(x)+b*x+c ] Reg[ <liste med punkt >, <liste side med funksjoner> ] Reg[ liste7, f( x) 1.5sin( x) 0.5x 2 De to øverste er eldre kommandoer, som gir rette linjer med likninger av typen ax by c, som kan omformes til y = ax + b. Resten av regresjonskommandoene viser resultatet på funksjonsformen f(x) = Nedenfor vises listene som er brukte i eksemplene. Liste 1 Liste 3 Liste 4 Liste 6 Liste 7 Liste 8 1-4,3 0 5 1 1,9 0,0 4,2 0 2,0 0 80 2-0,8 1 8 2 2,4 0,8 2,9 1 3,8 5 71 3 2,7 2 13 3 2,7 1,6 5,9 2 4,4 10 64 4 6,2 3 21 4 2,9 2,4 4,9 3 3,7 15 57 4 34 5 3,0 3,1 2,7 4 2,9 20 52 5 55 3,9 5,4 5 3,1 25 47 Liste 2 Liste 5 4,7 5,5 6 4,6 30 50 1 5 0 180,6 7 6,5 35 40 2 13 2 234,4 8 7,5 40 37 3 24 4 368,5 9 7,1 45 35 4 35 6 981,3 10 6,2 50 33 5 52 8 1676,7 55 31 10 2663,5 60 30 12 3593,2 14 4295,0 17 5210,6 Liste 5 er hentet fra eksempelet på side 324 i Sinus R1. 0.48 x 2
Lineær regresjon En plasserer først de aktuelle punktene direkte på grafikkfeltet med punktverktøyet, eller ved å skrive x- og y-verdiene inn i hver sin kolonne i regnearket, merke disse, høyreklikke og velge Lag og deretter Lag liste med punkt. (Figur 1.) Dette gjelder for alle typer regresjon. Figur 1 Figur 2 Når punktene er plasserte, er det enklest å bruke verktøyet Beste tilpasset linje for å finne likningen for ei rett linje som er tilpasset disse punktene (Figur 2). En velger dette verktøyet og klikker på ett av punktene (dersom det er et punkt i ei liste) eller drar et rektangel over de aktuelle punktene. Likningen for linja kommer da automatisk opp i algebrafeltet. I dette tilfellet er ikke likningen ferdig forkortet. Ved å høyreklikke på likningen i algebrafeltet og velge Likning y = ax + b, blir denne omformet til formen a: y = 3.5x 7.8. Figur 3 3
OBS: I GeoGebra 4.0, kan vi nå skrive for eksempel: a(3.2) og trykke Enter. Da får vi regnet ut y-verdien for x = 3,2. Kommandoen RegLinX gir det samme resultatet som RegLin, når vi omformer likningene til formen y = ax + b. Figur 4 Dersom vi ønsker å få likningen for den rette linja på funksjonsform f(x) = ax + b, må vi bruke kommandoen RegPoly[ navn på liste, 1]. Se mer om dette under Polynomregresjon. Polynomregresjon I eksempelet i oversikten har jeg valgt å finne en polynomfunksjon av første grad (en lineær funksjon). Som vist i oversikten på side 2, skriver vi da inn RegPoly[ liste1, 1]. Figur 5 Dersom vi vil finne polynomfunksjoner av høyere grad, skriver vi bare: RegPoly[ navn på liste, 2 ] for å få en andregradsfunksjon, og RegPoly[ navn på liste, 3 ] for å få en tredjegradsfunksjon, osv. 4
Potensregresjon b En potenspunksjon av typen f ( x) a x vil alltid gå gjennom origo. OBS! Ved potensregresjon må alle punktene ligge i første kvadrant (x > 0 og y > 0). Vi skriver inn RegPot [ liste2 ] og trykker Enter (dersom navnet på lista som blir laget er liste2). Eksponentiell regresjon Figur 6 x bx En eksponentialfunksjon av typen f( x) a b eller g( x) a e vil skjære y-aksen i punktet (0, a). OBS! Fordi funksjoner av denne typen ikke kan gi negative y-verdier, må punktene ligge i første og/eller andre kvadrant (y > 0). I tidligere versjoner av GeoGebra ga kommandoen RegEksp[ navn på liste ] bx resultatet på formen f ( x) a e. En måtte da regne ut verdien av b e for å få x likningen på formen f ( x) a b. I GeoGebra 4.0 har vi valgt å la RegEksp gi x bx likningen f ( x) a b og RegEksp2 resultere i likningen g( x) a e. 5
Figur 7 Logaritmisk regresjon Vi kan ikke ta logaritmen av et negativt tall. Grafen vil derfor her bli tegnet for positive x-verdier. Vi skriver inn koordinatene for RegLog[ liste3 ] og trykker Enter. Likningen som er best tilpasset punktene i liste3, er f( x) 1.91 0.71 ln( x). OBS! Fordi vi ikke kan ta logaritmen av et negativt tall, må derfor punktene ligge i første og/eller fjerde kvadrant (x > 0). Figur 8 Logistisk regresjon Her er det viktig at en velger punkt som representerer alle deler av den logistiske utviklingen. Problemer i forbindelse med logistisk regresjon skyldes ofte at en har lagt inn urimelige verdier, eller verdier fra et for snevert område av utviklingen. Det er veldig viktig at det er tilstrekkelig med punkt fra krumningene på begge sider av vendepunktet. Dersom dette kravet ikke er oppfylt, blir det vanskelig å få en god kurvetilpasning ved logistisk regresjon. Du vil heller ikke få en fornuftig likning dersom du har med y-verdier som er lik 0. 6
Figur 9 Sinusregresjon Her bruker vi radianer som vinkelmål. Vi kunne også ha latt x-verdiene vere grader, men da måtte vi brukt tegnet etter hver x-verdi i tabellen. I GeoGebra fungerer gradetegnet bare som en omregningskonstant fra grader til radianer. Når vi skriver 45 sin(45 ), er GeoGebra programmert til å regne ut sin 180. Vi skriver inn RegSin[ liste6 ] og trykker Enter. Som for de andre regresjonstypene får vi tegnet den best tilpassede grafen, og får fram likningen for denne i grafikkfeltet. Figur 10 Egendefinert regresjon Den generelle kommandoen Reg lar oss kombinere funksjoner, og selv bestemme utformingen av likningen som er best tilpasset de gitte punktene. Vi har to muligheter for egendefinerte funksjoner ved kurvetilpasning: 1. Reg[ navn på liste, funksjon ] 2. Reg[ navn på liste, liste med funksjoner ] 7
Nedenfor vil jeg vise begge disse variantene på datasettet i liste7. Plotter vi punktene i liste7, ser vi at de avbilder en kombinasjon av periodiske svingninger og en gradvis stigning mot høyre. Det ser også ut til at symmetrilinja for grafen skjærer y-aksen i punktet (0, 2). Mye tyder på at grafen representerer en funksjon med likningen f( x) a sin( x) b x c. Vi sier at f er en lineær kombinasjon av delfunksjonene sin(x), x og konstanten c, når vi kan skrive funksjonsuttrykket til f som en sum av disse delfunksjonene, og der delfunksjonene er multipliserte med konstanter som vi ønsker å finne. Figur 11 Første variant Vi definerer først de aktuelle delfunksjonene som f(x) er en lineær kombinasjon av, og skriver da g(x) = sin(x), h(x) = x og i(x) = 1. Vi trykker Enter etter å ha skrevet inn hver av delfunksjonene, og kan skjule grafene til disse i grafikkfeltet ved å klikke i punktene foran hver av likningene i algebrafeltet. Deretter skriver vi inn Reg[liste7, {g,h,i}]. Pass på parentesene. Med avrunding til en desimal, får vi svaret som er vist i figur 14 på neste side. Figur 13 Figur 12 8
Figur 14 Andre variant Vi antar også her at likningen vi skal fram til har formen f( x) a sin( x) b x c. Vi må da først gi parameterne a, b og c startverdier, og skriver inn a = 1, b = 1 og c = 2. (Vi får det samme resultatet om vi bruker startverdien 1 for c også.) Vi trykker Enter mellom hver inntasting. Så skriver vi Reg[ liste7, a*sin(x) + b*x + c ]. Grafen blir tegnet i grafikkfeltet, og likningen blir vist i algebrafeltet, som i første variant. Legg merke til at der var konstantleddet skrevet som 21, men her blir det skrevet som 2. Hadde vi valgt i(x) = 0.5 i første variant, ville konstantleddet blitt skrevet som 0.5 4. Figur 15 9
Dersom vi har en ikke-lineær kombinasjon av funksjoner, som for eksempel f( x) a sin( x) ln( x), må vi bruke Reg[ navn på liste, funksjon ], der a er definert først som en glider. (Glideren behøver ikke å vises i grafikkfeltet.) Vi kaller dette en ikke-lineær kombinasjon, fordi f her ikke består av en sum, men et produkt av delfunksjoner. Fordeler med egendefinerte funksjoner ved kurvetilpasning Vi skal nå se på et eksempel som viser fordelene med det kraftige generelle regresjonsverktøyet Reg. Du har stående en kopp te med temperatur 80 C. Romtemperaturen er 22 C. Som et forsøk måler du temperaturen i teen hvert 5. minutt i en hel time. Resultatet av målingene er gitt i liste nr. 8. Vi skriver disse målingene inn i regnearket i GeoGebra, lager ei liste med punkt og plotter punktene i grafikkfeltet. Dersom vi bruker kommandoene RegEksp eller RegEksp2, får vi en graf som nærmer seg x-aksen når x går mot uendelig. Vi ser at dette ikke er noen god kurvetilpasning, fordi grafen ikke nærmer seg 22 C. Det er ikke logisk at temperaturen i teen skal bli lavere enn romtemperaturen. Figur 16 Vi kan bruke kommandoen Reg og avkjølingsloven til Newton for å finne verdiene til kx parameterne i likningen t( x) ( t0 r ) e r. Her er t(x) temperaturen etter x minutter, t 0 er starttemperaturen og r er romtemperaturen. Vi vet at t 0 er 80 og at r = 22. Da blir likningen t( x) 58 e kx 22. Her blir det bare å bestemme verdien til k. Vi vil imidlertid jobbe mer generelt, som om vi ikke kjenner romtemperaturen, og vil kx se om GeoGebra kan finne parameterverdiene i likningen t( x) a e b, ut fra datasettet. Vi må først gi a, b og k noen startverdier, og skriver for eksempel inn a = 70, b = 25 og k = 0.01. t(x) = Reg[ liste8, a*e^(-k*x)+b ] gir oss da likningen t x 0.034 x ( ) 58 e 22. I figur 17 på neste side ser vi at grafen til denne likningen passer perfekt til de målte verdiene. 10
Figur 17 Hvilken regresjonsmodell er best? Sum av kvadratavvik Vi vil nå se på datasettet i liste2 på nytt. I eksempelet i oversikten på side 2, så vi at kommandoen RegPot gav likningen f ( x) 4.91 1.44 x. Dersom vi prøver polynomregresjon av andre grad ved å skrive inn RegPoly[ liste2, 2 ], får vi likningen 2 g( x) 1.29x 3.89x. Tegner vi begge grafene i det samme koordinatsystemet, ser vi at det ikke er lett å avgjøre hvilken av grafene som er best tilpasset punktene i liste2. Figur 18 For å få et objektivt mål på hvilken kurvetilpasning som er best, kan vi regne ut summen av kvadratavvikene. Det gjør vi ved å finne ut hvor mye hver av funksjonene ligger over eller under hvert av punktene på grafen. Vi kvadrerer så denne avstanden (tar avstanden og ganger med seg selv), og summerer de kvadrerte avstandene for 11
alle punktene. Den grafen som har den minste summen av kvadratavvik, er best tilpasset de aktuelle punktene. Figur 19 For å regne ut kvadratavviket for f(x) i det første punktet tar vi altså: 2 (5 4,908) 0,008. Summen av kvadratavvikene er 2,1 for g(x) og 5,7 for f(x). Andregradslikningen punktene enn grafen til for g(x). 2 g( x) 1.29x 3.89x gir altså en graf som passer bedre med f ( x) 4.91 1.44 x, fordi summen av kvadratavvikene er minst Vi finner den største forskjellen i kvadratavvik for det siste punktet. I figuren nedenfor er det aktuelle utsnittet forstørret opp. Aksene er stilt inn slik at forholdet x : y = 1 : 1. Figur 20 12
Nå er dette en nokså omstendelig metode å utføre trinnvis, slik jeg har vist ovenfor. I GeoGebra 4.0 er det imidlertid en kommando som gjør hele jobben for oss: Dersom vi skriver SumKvadratavvik[ liste2, f ], får vi resultatet 5.6655. Skriver vi SumKvadratavvik[ liste2, g ], får vi resultatet 2,0571. GeoGebra 4.0 regner altså ut summen av kvadratavvikene direkte. Denne summen er et bedre mål enn korrelasjonskoeffisienten for hvor god kurvetilpasningen er. Korrelasjonskoeffisienten r er bare et mål for om punktene ligger på ei rett linje. Nedenfor ser vi to eksempler på punktmengder som begge har en korrelasjonskoeffisient på 0,8. Da er r 2 = 0,64. Det betyr at 64 % av dataene har en direkte lineær sammenheng. Korrelasjonskoeffisienten er altså bare et mål for lineariteten til punktene, og ikke et mål på hvor godt tilpasset for eksempel en tredjegradsfunksjon er til en bestemt punktmengde. På figur 21 kan det jo godt være at det siste punktet er en målefeil, og at alle de andre målingene er korrekte. Tar vi bort det siste punktet, vil korrelasjonskoeffisienten være 1,0, og vi har 100 % linearitet. På figur 22 ligger punktene på en parabel. Her er det tydelig at vi ikke har en lineær sammenheng mellom x- og y-verdiene. r = 0,8 r = 0,8 Figur 21 Figur 22 GeoGebra 4.0 kan også gi korrelasjonskoeffisienten for lister med punkt. Du skriver da inn Korrelasjonskoeffisient[ navn på liste ], og trykker Enter. Som vi ser, er dette en egenskap ved forholdet mellom x- og y-verdiene i lista med punkt. Det har ingenting med forholdet mellom regresjonsgrafen og punktene å gjøre, bortsett fra at korrelasjonskoeffisienten forteller oss i hvilken grad punktene ligger på ei rett linje. Dersom korrelasjonskoeffisienten er 1,0, vil det finnes ei rett linje som går gjennom alle punktene. 13
For ikke-lineære grafer, kan en også bruke kommandoen RKvadrat[ navn på liste, funksjon ]. I eksempelet som er illustrert i figur 18, får vi en mindre verdi av RKvadrat for potensfunksjonen f enn for andregradsfunksjonen g. Dette stemmer med at potensfunksjonen har et større kvadratavvik enn andregradsfunksjonen. (For å se forskjellen må vi endre innstillingene for avrunding til minst fire desimaler. Dette er gjerne upraktisk i andre sammenhenger.) Figur 23 Korrelasjonskoeffisienten r ligger i dette området: r 1,1. RKvadrat ligger i dette området: R,1. Dersom alle punktene ligger på ei rett linje, vil både Korrelasjonskoeffisienten og RKvadrat ha verdien 1, men RKvadrat vil også ha verdien 1 dersom alle punktene ligger på en ikke-lineær graf. Det er ikke tilfellet med r. Jeg foretrekker SumKvadratavvik som mål på beste kurvetilpasning. Som vi har sett av eksemplene, krever regresjonsanalyse en kritisk og reflektert behandling av alle data som vi har tenkt å bruke i modelleringsprosessen. Kilder: Anscombe, F. (1973) Graphs in statistical analysis. American Statistician, 27, 17 21 http://www.ulven.biz/r2/funksjoner/modellering.pdf. Ulven, 2011 Oldervoll, Orskaug, Vaaje, Hanisch og Hals, 2008. Sinus R2, Cappelen Damm 14