M3.1 Grote Aantallen III ****

In deze opdracht gaan we het eindresultaat van M2.1 ‘fitten’ met de kleinste kwadraten methode.

We hebben gezien dat er verband is tussen de grootte van onze steekproef van kogels en de onzekerheid op het bepaalde gemiddelde. Deze volgt de n\sqrt{n}-wet. We gaan in deze opdracht een lineaire regressie (ofwel een functie fitten) aan de data punten maken met behulp van de kleinste kwadraten methode.

We gaan eerst even terug naar het experiment om te kijken welke statistiek we eigenlijk proberen te bepalen. We hebben een ton met kogels en een heel nauwkeurige weegschaal. We kunnen ons verschillende vragen stellen over de massa van de kogels.

We willen bepalen wat een gemiddelde kogel uit de ton weegt, en om dit in te schatten nemen we een steekproef van kogels uit de ton. We onderzoeken hoe de onzekerheid op de centrale waarde van dit gemiddelde afhangt van de grootte van de steekproef. We focussen dus op de spreiding van de berekende gemiddeldes. In M2.1 hebben we een verband gezien tussen de spreiding van de bepaalde gemiddeldes en de grootte van de steekproef. In deze opdracht gaan we deze nu ‘fitten’ met behulp van de kleinste kwadraten methode.

We beginnen met het fitten van datapunten met gelijke fouten. Later gebruiken we meer realistische onzekerheden op de datapunten. Met de volgende instructie kun je de datapunten opvragen:

inv_sqrt_n,std_n,std_n_err = ds.GroteAantallenFitSetGenerator() 

De inv_sqrt_n punten zijn de waardes van 1/n1/\sqrt{n} waarbij nn de grootte is van de steekproef zoals je die in M2.1 hebt genomen, std_n is de onzekerheid sgns_{g_{n}} en std_n_err zijn de onzekerheden op de waardes van sgns_{g_n}. In deze opdracht noteren we sgns_{g_n} als sns_n en de onzekerheid op deze standaardafwijking als Δsn\Delta s_n.

Voor deze dataset zijn de waardes van Δsn\Delta s_n dus nog allemaal gelijk, later in deze opdracht zullen we met meer realistische onzekerheden gaan werken en kijken we naar het effect van de fouten op het fit resultaat. Maar eerst gaan we de fit opzetten.

Naar aanleiding van de n\sqrt{n}-wet verwachten we dat de relatie tussen nn en sns_{n} er als volgt uitziet:
sn=σ/n.{\displaystyle s_{n} = \sigma/\sqrt{n}.}

De parameter σ\sigma is nu de standaardafwijking van de originele verdeling van de massa van de kogels, dus van de populatie. De variabele σ^\hat{\sigma} is de geschatte waarde van σ\sigma die we proberen te bepalen met de fit.

  • Maak eerst een grafiek waarbij je std_n tegen inv_sqrt_n uitzet met de foutenvlaggen. Gebruik hier niet de code voor uit M2.1 maar maak gebruik van de dataset die je met het commando dat hier boven beschreven staat verkrijgt. Kijk goed naar de punten en probeer alvast voor jezelf in te schatten welke waarde je verwacht voor σ\sigma.

  • Vind nu de meest optimale waarde van σ\sigma door gebruik te maken van de kleinste-kwadraten methode.

    1. Schrijf eerst een functie die voor een waarde van inv_sqrt_n en een gegeven waarde voor σ\sigma een waarde teruggeeft voor de voorspelling van std_n. Gebruik hierbij de formule die hierboven gegeven is.

    2. Schrijf een functie die de χ2\chi^2 uitrekent volgens de formule die je vindt in het hoofdstuk de kleinste-kwadraten.

    3. Schrijf een loop die over verschillende waardes van σ\sigma loopt voor het optimalisatie proces en voor elke waarde van σ\sigma de χ2\chi^2 uitrekent.

    4. Vind nu voor welke waarde van σ\sigma de laagste waarde van χ2\chi^2 voorkomt. Dit is je schatting σ^\hat{\sigma}.
      Tip: Weet je zeker dat de waarde van σ\sigma in het gebied ligt waar je probeert te optimaliseren? Probeer met de grafiek die je eerder maakte af te schatten welke waarde voor σ\sigma je verwacht te vinden.

  • M3.1a) Welke waarde voor σ\sigma geeft de beste fit? Met andere woorden wat is, na het optimaliseren met de kleinste kwadraten methode, je geschatte σ^\hat{\sigma}?

  • M3.1b) Wat is de waarde voor de geminimaliseerde χ2\chi^2? Noteer ook hoeveel vrijheidsgraden er zijn en bereken de χν2.\chi^2_\nu.

  • M3.1c) Maak een grafiek waarin je de waarde voor χ2\chi^2 uitzet tegen σ\sigma.

  • M3.1d) Maak een grafiek met de datapunten, de foutenvlaggen en het fit resultaat.
    Tip: De gefitte functie kun je het makkelijkste plotten door met behulp van de inv_sqrt_n lijst een bijbehorende lijst te maken met behulp van de functie die je in stap 1 hebt gemaakt.

Nadat we de fit hebben uitgevoerd bekijken we of het resultaat overeenkomt met de standaardafwijking van de populatie.

Met de functie:

s_true = ds.GroteAantallenStdTrue()

Kun je de werkelijke ‘true’-waarde van σ\sigma terugvragen.

  • M3.1e) Controleer of jouw gefitte waarde van σ^\hat{\sigma} overeenkomt met je uitkomst voor s_true. Je verwacht altijd nog wel wat verschillen te zien - vooral omdat de onzekerheden op de waardes van s_n niet realistisch waren.

We gaan nu de fit uitvoeren met realistische onzekerheden op de datapunten. Deze datapunten genereer je met de volgende functie:

 inv_sqrt_n,std_n,std_n_err = ds.GroteAantallenStdGenerator()
  • M3.1f) Vind nu de meest optimale waarde van σ^\hat{\sigma} door gebruik te maken van de realistische foutenvlaggen. Bij welke χ2\chi^2 ligt deze optimale waarde?

  • M3.1g) Maak nu een grafiek met de datapunten, de foutenvlaggen en het fit resultaat voor de dataset met reële foutenvlaggen.

  • M3.1h) Vergelijk nu de gevonden σ^\hat{\sigma} met de ‘true’ waarde van σ\sigma. Komt deze nu meer of minder overeen in vergelijking met je eerste fit?

  • M3.1i) Bereken nu de gereduceerde χ2\chi^2, dat wil zeggen corrigeer de gevonden χ2\chi^2 voor het aantal vrijheidsgraden van de fit. Is deze beter of slechter dan de gevonden waarde in opgave b. Geef hiervoor een verklaring.