Kurvetilpasning (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... 8 Fordeler med egendefinerte funksjoner ved kurvetilpasning... 10 Hurtigmeny for ulike kurvetilpasninger... 12 Hvilken regresjonsmodell er best? Sum av kvadratavvik... 13 Kilder:... 21
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): Kommand o Syntaks Eksempel Eksempel på resultat RegLin RegLin[ <liste med punkt> ] RegLin[ liste1 ] RegLinX RegLinX[ <liste med punkt> ] RegLinX[ liste1 ] a : 280x 80y 624 a : y 3.5x 7.8 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) Reg Reg[ <liste med punkt >, <liste Reg[ liste7, med funksjoner> ] a*sin(x)+b*x+c ] 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 Vi 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 drar et rektangel over de aktuelle punktene. Dersom punktene inngår i ei liste, kan en også få laget linja ved å klikke på lista i algebrafeltet. Likningen for linja kommer da automatisk opp i algebrafeltet. I dette tilfellet er ikke likningen ferdig forkortet. Ved å høyreklikke på likningen 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: 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. VI måtte da regne ut verdien av b e for å få x likningen på formen f ( x) a b. I GeoGebra 4.0 har jeg, som oversetter av x GeoGebra, valgt å la RegEksp gi likningen f ( x) a b og RegEksp2 resultere i bx 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. Dersom punktene vi skal bruke er gitt i liste3, skriver vi: 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å 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 være 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 i grafikkfeltet, og får fram likningen for denne i algebrafeltet. Figur 10 7
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 ] Nedenfor vil jeg vise begge disse variantene på datasettet i liste7. Plotter vi punktene i liste7, ser vi at de danner 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. 8
Figur 13 Figur 12 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 den første varianten, ville konstantleddet blitt skrevet som 0.5 4. 9
Figur 15 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 liste8. 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. 10
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 velger her å 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. Figur 17 11
Hurtigmeny for ulike kurvetilpasninger Vi har registrert følgende fire punkt, og ønsker å prøve ulike kurvetilpasninger: (1, 3), (2, 8), (3, 15) og (4, 24). Skriv koordinatene inn i regnearket og merk tallene. Figur 18 Velg Regresjonsanalyse fra verktøymenyen som tilhører regnearket. Figur 19 12
Velg for eksempel Polynomregresjon og 2 for graden av polynomet. Figur 20 Vi ser at y = x 2 + 2x tilsvarer en graf som er en god kurvetilpasning til disse punktene. Ønsker vi å tallfeste hvor gode ulike kurvetilpasninger er, må vi kjenne til noen viktige begreper som korrelasjonskoeffisient, R-kvadrat og sum av kvadratavvik. Hvilken regresjonsmodell er best? Sum av kvadratavvik Vi vil nå se på datasettet i liste 2 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 liste 2. 13
Figur 21 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 alle punktene. Den grafen som har den minste summen av kvadratavvik, er best tilpasset de aktuelle punktene. Figur 22 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 2 g( x) 1.29x 3.89x gir altså en graf som passer bedre med 14
punktene enn grafen til for g(x). 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 23 Det er nokså omstendelig å utføre denne metoden 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 24 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 25 ligger punktene på en parabel. Her er det tydelig at vi ikke har en lineær sammenheng mellom x- og y-verdiene. 15
r = 0,8 r = 0,8 Figur 24 Figur 25 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. For ikke-lineære grafer, kan en også bruke kommandoen RKvadrat[ navn på liste, funksjon ]. I eksempelet som er illustrert i figur 21, 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 26 16
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. Når vi taster inn datasettet i liste 2 på en grafisk kalkulator av merket Casio 9860 X SD (til venstre) eller TI-84 Plus (til høyre) og velger potensregresjon, får vi resultatet som vist i figur 27 nedenfor. Figur 27 På disse grafiske lommeregnerne får vi automatisk fram en verdi som blir kalt r ved regresjonsanalyse. Denne verdien blir ofte og misvisende referert til som korrelasjonskoeffisienten. I GeoGebra blir begrepet korrelasjonskoeffisient brukt om Pearsons produktmomentkorrelasjonskoeffisient, og denne har lite å gjøre med hvor godt en graf er tilpasset en punktmengde. I de grafiske kalkulatorene blir imidlertid likninger av formen y b b a x omformet til lny lna ln x b ln x lna. Tar vi logaritmen av x- og y-verdiene, vil disse ligge på ei rett linje dersom de var perfekt tilpasset grafen med likning y b a x. De grafiske kalkulatorene finner altså sine «korrelasjonskoeffisienter» ved å sjekke lineariteten til ln-verdiene av x- og y- koordinatene. Denne metoden fungerer ikke på sinus-regresjon og logistisk regresjon. Det er grunnen til at ikke de grafiske kalkulatorene finner «korrelasjonskoeffisienter» for disse typene av kurvetilpasning. Jeg vil her vise hvordan vi regner ut denne korrelasjonskoeffisienten, som altså bare sier noe om lineariteten til punktene. Jeg vil også vise utregningen av R-kvadrat, som på samme måte som summen av kvadratavvikene forteller hvor godt grafen er tilpasset det aktuelle datasettet. Fremgangsmåten for å beregne summen av kvadratavvikene ble vist på side 14 i dette heftet. Jeg bruker datasettet i liste 2 som eksempel. 17
Liste 2: x y 1 5 2 13 3 24 4 35 5 52 Middelverdien av x-verdiene er 3, og middelverdien av y-verdiene er 25,8. Standardavviket for x-verdiene er 1,41 og standardavviket for y-verdiene er 16,46. Korrelasjonskoeffisienten er gitt ved formelen: r n 1 n i 1 ( xi x)( yi y). Bruker vi tallene fra liste 2, får vi oppstillingen: x y r 1 5 r 0,9908 (1 3)(5 25,8) (2 3)(13 25,8) (3 3)(24 25,8) (4 3)(35 25,8) (5 3)(52 25,8) 1,414 16,56 Vi kan kontrollere denne utregningen ved å skrive inn dataene i regnearket i GeoGebra, lage ei liste med punkt (som vi her kaller liste2) og skrive Korrelasjonskoeffisient[ liste2]. Svaret blir naturligvis også nå 0,9908. Verdien R-kvadrat (R 2 ) blir regnet ut slik: R R R 2 2 2 SumKvadratavvik 1 Syy (5 4,91) (13 13,34) (24 23,93) (35 36,24) (52 50) 1 2 2 2 2 2 (5 25,8) (13 25,8) (24 25,8) (35 25,8) (52 25,8) 5,666 1 0,9959 1370,8 2 2 2 2 2 Du ser en grafisk framstilling av verdiene for Syy på figur 28. Du så en tilsvarende grafisk fremstilling for kommandoen SumKvadratavvik i figur 23 på side 15 i dette heftet. 18
Figur 28 Den aller raskeste måten å finne ut hvilken regresjonsmodell som passer best til dataene er å bruke hurtigverktøyet for kurvetilpasning. (Se side 12 13.) Om vi klikker på Innstillinger i dette verktøyet og velger Vis statistikk, ser vi verdiene for båre korrelasjonskoeffisienten r, verdien for kommandoen RKvadrat (R 2 ) og summen av kvadratavvikene (SSE). Figur 29 Legg merke til at verdien av r ikke forandrer seg når vi skifter mellom ulike regresjonsmodeller. Det er fordi r bare er et mål for lineariteten til selve punktmengden, og ikke er avhengig av likningen for kurvetilpasningen. En vanlig feil ved regresjonsanalyse er å gå ut fra at den modellen som gir høyest verdi for R 2 eller laveste sum av kvadratavvikene vil være den beste modellen. 19
Dersom vi velger polynomregresjon av høy grad, vil vi kunne få en graf som går nøyaktig gjennom alle punktene. R 2 blir da 1, og summen av kvadratavvikene blir 0. 3 4 17 3 141 2 83 Fjerdegradsfunksjonen f ( x) x x x x 12 passer for eksempel 8 4 8 4 perfekt til punktene i liste 2. Det er imidlertid ikke sikkert at dette er en kurvetilpasning som er egnet til å si oss noe fornuftig om hvordan situasjonen vil utvikle seg videre. Se figur 30 og 31 nedenfor. Figur 30 Figur 31 20
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 21