Kurvetilpasning (regresjon) med GeoGebra 4.2

Download Report

Transcript Kurvetilpasning (regresjon) med GeoGebra 4.2

Kurvetilpasning (regresjon)
med GeoGebra 4.2
av Sigbjørn Hals
Innhold
Liste over kommandoene .................................................................................... 2
Lineær regresjon ................................................................................................. 3
Polynomregresjon................................................................................................ 5
Potensregresjon .................................................................................................. 5
Eksponentialregresjon ......................................................................................... 6
Logaritmisk regresjon .......................................................................................... 6
Logistisk regresjon............................................................................................... 7
Sinusregresjon .................................................................................................... 7
Egendefinert regresjon ........................................................................................ 8
Fordeler med egendefinerte funksjoner ved kurvetilpasning ............................. 10
Hurtiganalyse av ulike regresjonsmodeller ........................................................ 12
Hvilken regresjonsmodell er best? Sum av kvadratavvik................................... 13
Sigbjørn Hals, Cappelen Damm. Publisert 20.08.11. Revidert 01.02.13
Liste over kommandoene
I GeoGebra 4.2 er det flere forandringer i forhold til versjon 3.2. Her er en oversikt
over de ulike kommandoene for regresjon (kurvetilpasning):
Kommando
Syntaks
Eksempel
RegLin
RegLin[ <liste med punkt> ]
RegLin[ Liste1 ]
RegLinX
RegLinX[ <liste med punkt> ]
RegLinX[ Liste1 ]
Eksempel på resultat
a : 280 x  80y  624
a : y  3.5 x  7.8
a : 35 x  10y  78
a : y  3.5 x  7.8
RegPot
RegPoly[ <liste med punkt>,
<polynomgrad> ]
RegPot[ <liste med punkt> ]
RegEksp
RegEksp[ <liste med punkt> ]
RegEksp[ Liste3 ]
f ( x )  4.98  1.62x
RegEksp2
RegEksp2[ <liste med punkt> ]
RegEksp2[ Liste3 ]
g( x )  4.98  e0.48 x
RegLog
RegLog[ <liste med punkt> ]
RegLog[ Liste4 ]
f ( x )  1.91  0.7  ln( x )
RegLogist
RegLogist[ <liste med punkt> ]
RegLogist[ Liste5 ]
f (x) 
RegSin
RegSin[ <liste med punkt> ]
f ( x )  4.46  1.79  sin(2.45x  3)
Reg
Reg[ <liste med punkt >, <liste
med funksjoner> ]
RegSin[ Liste6 ]
Se kommentarer på
side 7.
Reg[ Liste7,
a*sin(x)+b*x+c ]
RegPoly
RegPoly[ Liste1,1 ]
f ( x )  3.5x  7.8
RegPot[ Liste2 ]
f ( x )  4.91 x1.44
5634,29
1  42.52  e 0.36 x
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
1
-4,3
2
-0,8
3
2,7
4
6,2
Liste 2
1
5
2
13
3
24
4
35
5
52
Liste 3
0
5
1
8
2 13
3 21
4 34
5 55
Liste 4
1
1,9
2
2,4
3
2,7
4
2,9
5
3,0
Liste 6
0,0 4,2
0,8 2,9
1,6 5,9
2,4 4,9
3,1 2,7
3,9 5,4
4,7 5,5
Liste 5
0
180,6
2
234,4
4
368,5
6
981,3
8 1676,7
10 2663,5
12 3593,2
14 4295,0
17 5210,6
Liste 5 er hentet fra eksempelet på side 324 i Sinus R1.
2
Liste 7
0
2,0
1
3,8
2
4,4
3
3,7
4
2,9
5
3,1
6
4,6
7
6,5
8
7,5
9
7,1
10
6,2
Liste 8
0
80
5
71
10
64
15
57
20
52
25
47
30
43
35
40
40
37
45
35
50
33
55
31
60
30
Sigbjørn Hals, Cappelen Damm. Publisert 20.08.11. Revidert 01.02.13
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
Sigbjørn Hals, Cappelen Damm. Publisert 20.08.11. Revidert 01.02.13
OBS:
I GeoGebra 4.2, kan vi skrive for eksempel: a(3.2) og trykke Enter. Da får vi
regnet ut y-verdien for x = 3,2.
På dette datasettet gir kommandoen RegLinX gir det samme resultatet som RegLin,
når vi omformer likningene til formen y = ax + b. Vi får det samme resultatet fordi alle
punktene ligger på ei rett linje.
Figur 4
Dersom punktene ikke ligger på ei rett linje vil RegLin og RegLinX gi ulike likninger
for de tilpassede kurvene. RegLin plasserer linja slik at summen av kvadratene blir
minimert når vi ser på avstanden fra punktet til linja i y-retningen. RegLinX plasserer
linja slik at summen av kvadratene blir minimert når vi bruker avstanden fra punktet til
linja i x-retningen.
Figur 5
Figur 6
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.
4
Sigbjørn Hals, Cappelen Damm. Publisert 20.08.11. Revidert 01.02.13
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 7
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.
Potensregresjon
En potenspunksjon av typen f ( x )  a  x b 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).
Figur 8
5
Sigbjørn Hals, Cappelen Damm. Publisert 20.08.11. Revidert 01.02.13
Eksponentialregresjon
En eksponentialfunksjon av typen f ( x )  a  b x eller g( x )  a  ebx 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 ]
resultatet på formen f ( x )  a  ebx . En måtte da regne ut verdien av e b for å få
likningen på formen f ( x )  a  b x . I GeoGebra 4.2 har vi valgt å la RegEksp gi
likningen f ( x )  a  b x og RegEksp2 resultere i likningen g ( x )  a  ebx .
Figur 9
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 10
6
Sigbjørn Hals, Cappelen Damm. Publisert 20.08.11. Revidert 01.02.13
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.
Figur 11
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, og får fram likningen for denne i grafikkfeltet.
Figur 12
7
Sigbjørn Hals, Cappelen Damm. Publisert 20.08.11. Revidert 01.02.13
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 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 13
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 16 på neste side.
8
Sigbjørn Hals, Cappelen Damm. Publisert 20.08.11. Revidert 01.02.13
Figur 15
Figur 14
Figur 16
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 2  1 , 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 .
9
Sigbjørn Hals, Cappelen Damm. Publisert 20.08.11. Revidert 01.02.13
Figur 17
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.
10
Sigbjørn Hals, Cappelen Damm. Publisert 20.08.11. Revidert 01.02.13
Figur 18
Vi kan bruke kommandoen Reg og avkjølingsloven til Newton for å finne verdiene til
parameterne i likningen t ( x )  (t0  r )  ekx  r . Her er t(x) temperaturen etter x
minutter, t0 er starttemperaturen og r er romtemperaturen. Vi vet at t0 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
se om GeoGebra kan finne parameterverdiene i likningen t ( x )  a  ekx  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. Deretter kan vi ev. justere disse verdiene ved å lage en
glider for hver av dem. t(x) = Reg[ Liste8, a*e^(-k*x)+b ] gir oss da likningen
t ( x )  58  e0.034 x  22 . I figur 19 ser vi at grafen til denne likningen passer perfekt til
de målte verdiene.
Figur 19
11
Sigbjørn Hals, Cappelen Damm. Publisert 20.08.11. Revidert 01.02.13
Hurtiganalyse av ulike regresjonsmodeller
I stedet for å skrive de ulike regresjonskommandoene inn i inntastingsfeltet, kan vi
bruke verktøyet Regresjonsanalyse i verktøylinja for regnearket. Vi har da på forhånd
skrevet inn for eksempel Liste3 i regnearket, og merket disse tallene eller hele
kolonne A og B.
Figur 20
Vi ser at aksene stiller seg inn automatisk. Vi kan da velge mellom ulike
kurvetilpasninger fra nedtrekksmenyen.
Figur 21
12
Sigbjørn Hals, Cappelen Damm. Publisert 20.08.11. Revidert 01.02.13
Figur 22
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 x1.44 . Dersom vi prøver
polynomregresjon av andre grad ved å skrive inn RegPoly[ Liste2, 2 ], får vi likningen
g( x )  1.29x 2  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 23
13
Sigbjørn Hals, Cappelen Damm. Publisert 20.08.11. Revidert 01.02.13
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 24
For å regne ut kvadratavviket for f(x) i det første punktet tar vi altså:
(5  4,908)2  0,008 . Summen av kvadratavvikene er 2,1 for g(x) og 5,7 for f(x).
Andregradslikningen g( x )  1.29x 2  3.89x gir altså en graf som passer bedre med
punktene enn grafen til f ( x )  4.91 x1.44 , fordi summen av kvadratavvikene er minst
for g(x).
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 25
14
Sigbjørn Hals, Cappelen Damm. Publisert 20.08.11. Revidert 01.02.13
Nå er dette en nokså omstendelig metode å utføre trinnvis, slik jeg har vist ovenfor.
I GeoGebra 4.2 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.2 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 r2 = 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 26 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 27 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 26
Figur 27
GeoGebra 4.2 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 23, får vi en mindre verdi av RKvadrat
for potensfunksjonen f enn for andregradsfunksjonen g. Dette stemmer med at
15
Sigbjørn Hals, Cappelen Damm. Publisert 20.08.11. Revidert 01.02.13
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 28
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
16