Etikettarkiv: datapunkter

GeoGebra för lärare: Regressioner

I och med datorernas intåg har nu sedan några år tillbaka begreppet regression med alla dess tillhörande procedurer letat sig in i matematikkurserna. Jag brukar personligen ta upp det redan i Ma1c som ”problemlösningsknep” på uppgifter av typen ”Vilken funktion går genom dessa båda punkter…”. Mer formellt introduceras ”Begreppen regressionsanalys och korrelationskoefficient. Digitala metoder för regressionsanalys” sedan i Ma2, där vi anpassar koefficienterna i en målfunktion med hjälp av minsta kvadratmetoden. I Ma3 och Ma4 utgår författarna till de nationella proven från att eleverna kan anpassa en godtycklig standardfunktion till mätpunkter. På (långt) högre nivå finns det alternativ till minsta kvadratmetoden, men låt oss än så länge hålla oss på gymnasienivå och vad vi kan göra med GeoGebra.

(Minsta kvadratmetoden kan för övrigt visualiseras som om punkterna ”drar” i linjen med hjälp av fjädrar – se den här korta artikeln med sin suggestiva animering.)

Lite nostalgi och teori

Regressionsanalys är alltså en metod för att anpassa en funktion till en mängd datapunkter. Då jag började på universitetet 1982 gjorde vi detta genom att dra en rät linje med penna och linjal längs våra datapunkter som vi noggrant markerat på millimeterrutat papper (ibland med logaritmiska axlar).

Det fanns till och med speciella linjaler för detta ändamål

Jag minns också hur stolt jag var när jag en gång härledde de teoretiska uttrycken för att beräkna parametrarna i en anpassad kvadratisk funktion teoretiskt med hjälp av linjär algebra. Lite senare i kurserna dök det upp datorbaserade metoder i Minitab, ett kolumnbaserat program som skapades 1972 och fortfarande är vid god hälsa.

Från vår verklighet (de empiriska datapunkterna) så skapar vi alltså en matematisk modell (funktionen). Den modell vi får fram är i någon mening ”den bästa” modell vi kan använda av den givna typen.

Den sista anmärkningen om ”i någon mening” är viktig. Det är bättre att använda en funktionstyp som stämmer med den underliggande teorin än att ta en godtycklig funktion som ”stämmer bäst”. Om det finns teoretiska skäl att en linjär funktion borde vara en bra funktion till dina 10 datapunkter så försök inte anpassa ett polynom av 9:e graden. Visst, det går perfekt genom alla dina datapunkter, men har ungefär noll prediktionsvärde eftersom det tenderar att svänga kraftigt och oförutsägbart.

Polynom av hög grad är dåliga på att förutsäga vad som händer utanför dina data

Skapa en lista med punkter

I GeoGebra kan du skapa punkterna på i huvudsak två olika sätt.

Antingen matar du in punkterna en och en, i koordinatform, till exempel som (2.3, 19.2). Därefter använder du verktyget Skapa lista och klickar och drar upp en rektangel runt punkterna vilket skapar listan. Listan heter i de flesta fall l1 (ett gement L följt av en etta).

Eller så matar du in x– och y-koordinaterna i kalkylbladet. Du visar kalkylbladet antingen med kortkommandot Ctrl-Shift-S eller från Visa-menyn. Markera sedan alla numeriska värden (alltså inte eventuella rubriker), högerklicka och välj Skapa… -> Lista med punkter.

I onlineversionen av GeoGebra (= Calculator Suite) finns inget regelrätt kalkylblad, men där finns tabeller istället som fungerar på liknande sätt bortsett från att punkterna visas automatiskt. Du får dock använda Skapa lista för att få listan.

Observera dock att verktyget Skapa lista inte syns i Calculator Suite förrän du klickar på Mer verktyg i botten av verktygslistan. Då finns verktyget under Punktverktygen.

Standardregressioner

GeoGebra har ett stort antal standardregressioner att välja mellan. Linjära funktioner y = kx + m, exponentialfunktioner y = C ax eller y = C ekx, potensfunktioner y = C xa, polynom av olika grad, logistiska, trigonometriska och andra funktioner.

Du kommer åt alla dessa genom att skiva kommandon av typen RegressionLin(l1), RegressionExp(l1) eller RegressionPoly(l1, 3). I det sista exemplet skapas ett tredjegradspolynom. En lista på alla tillgängliga kommandon får du när du börjar skriva Regre….

I Classicversionerna kan du också använda verktyget Tvåvariabels regressionsanalys som ger dig ett eget fönster där du snabbt kan prova olika standardregressioner för att se vilken som passar bäst.

Generella regressioner

Det finns dock situationer där standardfunktionerna inte räcker till. Exempelvis finns det gott om fysiklaborationer där du vill anpassa en rät linje direkt genom origo, alltså en funktion av typen y = kx.

I GeoGebra kan du då göra en regression där du själv anger typen av funktion som ska användas. Du använder då kommandot Regression(…) på något av de två möjliga sätten som beskrivs nedan.

Om funktionen kan delas upp i separata termer där parametrarna som ska anpassas bara är multiplikativa konstanter kan du ange dessa funktioner i en lista:

  • Regression(l1, {x}) ger en funktion av typen y = kx (y = ax)
  • Regression(l1, {1, x2}) ger en funktion av typen y = a + bx2
  • Regression(l1, {2x, x2}) ger en funktion av typen y = a2x + bx2
Att tvinga en rät linje genom origo kan förändra k-värdet en hel del

Om funktionen inte kan delas upp på det sättet, eller om parametrarna inte bara är multiplikativa konstanter så behöver du först definiera din modellfunktion tydligt med hjälp av glidare:

Definiera till exempel funktionen m(x) = c ax + b där a, b och c är oanvända bokstäver. Dessa kommer då att tolkas som glidare. I Classic 5 får du bekräfta detta i en popup-fönster. Du måste inte använda namnet m på funktionen men jag brukar göra det för att påminna mig om att det är min modellfunktion. m(x) ser troligen inte alls ut som något som passar dina datapunkter. Det är för att parametrarnas startvärden är långt ifrån rätt inställda. Vi ignorerar detta för tillfället och om du vill går det bra att dölja m(x). Den är bara till för att GeoGebra ska veta vad vi vill ha i nästa steg. Den här funktionstypen är för övrigt användbar då du undersöker avsvalning mot en rumstemperatur som är skild från noll.

Skriv sedan kommandot Regression(l1, m). Om allt går väl har nu GeoGebra skapat en funktion till dina datapunkter i listan l1 av typen m.

Det kan inträffa (särskilt för mer komplicerade funktioner och trigonometriska funktioner) att algoritmen som jobbar i bakgrunden misslyckas med att hitta en bra funktion. Då får du visa funktionen m(x) igen och ändra glidarna så att modellfunktionen åtminstone påminner om det du är ute efter. Dessa glidarvärden är startvärdena för algoritmen och bra startvärden kan få den att producera ett bättre resultat. För trigonometriska funktioner är parametern som styr frekvensen särskilt känslig.

Koefficienterna

Om du ska räkna vidare med koefficienterna, som ofta är fallet i fysiklaborationer, så kan det vara bra att känna till kommandot Koefficienter(f). Det genererar en lista med de anpassade parametrarna till funktionen f som kan vara antingen en regressionsfunktion, ett polynom eller ett kägelsnitt. Observera att dessa inte är i bokstavsordning i listan. Vill du använda en särskild parameter kan du döpa den genom att skriva t.ex. T0 = l2(1) (det vill säga det första elementet i listan l2).

Felgränser då?

Det skull vara fint att kunna ange felgränser för de beräknade parametrarna. Tyvärr finns inte denna funktion i GeoGebra men jag kommer i ett framtida inlägg beskriva hur du kan göra med hjälp av så kallad jackknife resampling eller genom att använda Python.

Mer om modellering

Tycker du det är kul att lösa problem som handlar om matematiska modeller? Då kanske boken Handbok för matematisk modellering med GeoGebra är något för dig.