Fitten van data en foutenbepaling

Om de onderliggende fenomenen van (natuurkundige) verschijnselen te achterhalen wordt data verzameld om afhankelijkheden te onderzoeken. Dat kan de massa van het Higgs boson zijn, de vervaltijd van uranium, maar ook het aantal kinderen in een gezin als functie van de gemiddelde lengte van de ouders. Je kan dan zoeken naar een (causaal) verband: lineair, exponentieel,etc. en daarbij ook de bijbehorende parameters bepalen met hun onzekerheid. Als je een goede beschrijving hebt gevonden kan je daarmee vervolgens ook voorspellingen doen. Elk meetpunt komt met een onzekerheid die de precisie aangeeft waaramee een grootheid gemeten is. Hoe kleiner de fout, hoe nauwkeuriger de meting en hoe ‘belangrijker’ hij is als je gaat kijken of de meetpunten wel met je model overeenkomen.

Om de ‘beste’ waarde te vinden hebben we een maat (metriek) nodig die de goedheid van de fit beschrijft. We doen dat hier met de -maat: de som van de gemiddelde afwijking van de meetpunten tot het model gewogen met hun fout.

Voor elk punt bepalen we dus hoeveel standaardafwijkingen ligt dit punt weg van mijn model/voorspelling?

Hierbij is de vector met de parameters die je gebruikt in je model. Voor elke keuze van de parameters in je model verandert de afstand van elk meetpunt tot je model en krijg je dus een nieuwe . Ter volledigheid: de is gewoon een getal.

De beste waarde van je model en de onzekerheid

De beste waarde van je model () en de onzekerheid daarop ().

In de fitprocedure zoeken we naar de waarde van de parameters in je model die de kleinste opleveren. Dat zijn namelijk de ‘beste’ waardes van het model omdat met die waarde van de parameters je model de data het best beschrijft.

Elke waarde van je parameters die anders is dat zal de waarde van de veranderen (die wordt groter wat een slechtere overeenkomst met de data betekent). Het verschil tussen de waarde van de waarbij de precies 1 unit toeneemt en noemen we de onzekerheid.

Het resultaat van je fit presenteer je dan als volgt:

Hoewel we hier aannemen dat de fout in symmetrisch is hoeft dat niet altijd het geval te zijn. Evalueer dus altijd de negatieve en positieve fout afzonderlijk door te kijken hoe de verandert als je de parameters respectievelijk kleiner en groter maakt.

Voorbeeld: Wesley Sneijder

Iemand heeft heel keurig het percentage goede passes (-waarde) bepaald die Wesley Sneijder heeft gegeven tijdens de verschillende wedstrijden (-waarde) tijdens de kwalificatie voor het WK voetbal. Omdat de nauwkeurigheid waarmee het percentage bepaald wordt afhangt van het aantal passes in een wedstrijd is de fout erop niet voor elke wedstrijd hetzelfde.

wedstrijdnummer (x) 1 2 3 4 5 6 7 8 9 10
(y) 55 50 39 58 54 57 78 66 62 82
(fout op y) 5 4 9 4 5 5 7 3 6 6

De data is weergegeven in de linker plot hieronder. We nemen aan dat zijn prestaties constant zijn en nemen daarom aan dat het model dat deze data het best beschrijft een constante is. Ons model heeft dus maar 1 parameter: . De vraag is nu: welke waarde van beschrijft de data het best en welke onzekerheid moeten we aan die schatting toekennen?

Het uitrekenen van

We gaan verschillende waardes van proberen en rekenen voor elke de uit. Als we bijvoorbeeld als hypothese nemen dan hoort daar de volgende bij:

Je kan nu verschillende waardes van proberen en voor elk de berekenen. De distributie is getekend in de rechterplot hierboven. Er is een duidelijk minimum zichtbaar: bij is de minimaal, namelijk . De waarde beschrijft de data het best.

Bij het berekenen van de zien we dat er een gebied is waarvoor de minder dan 1 unit verschilt van . De linkergrens en rechtergrens in hypotheses van zijn beide 1.5 van verwijderd. De onzekerheid op is dus 1.5.

Het resultaat van de fit van ons model aan de data is als volgt: percentage goede passes =

Opdracht: fitten van een model aan de data

Schrijf een functie fit() in een bestand fit.py die het bovenstaande resultaat verifieert.

  1. Maak een plot van deze data met fouten

    Tip: gebruik de functie plt.errorbar(x,y, yerr=yerror). Zoek op internet op hoe je deze functie moet gebruiken.

  2. Print de beste waarde van .

  3. Print op een losse regel de bijbehorende onzekerheid .

Beantwoord voor jezelf de vraag: hoe verandert het resultaat als de fout op elk van de metingen 2x zo groot wordt?

Testen

checkpy fit