Statistiek

Basis Statistische Functies

Numpy is een bibliotheek die numerieke berekeningen in Python efficiënter en eenvoudiger maakt. De kern van Numpy is het Numpy array, een krachtige datastructuur die gebruikt kan worden voor vector- en matrixberekeningen.

Numpy Arrays

Voordat we de statistische functies bekijken, moeten we begrijpen wat een Numpy array is. Een Numpy array lijkt op een Python-lijst, maar is veel efficiënter voor wiskundige berekeningen.

Voorbeeld van een Numpy array:

import numpy as np

# Maak een Numpy array van een lijst
data = np.array([1, 2, 3, 4, 5, 6])
print(data)

Output:

[1 2 3 4 5 6]

Basis Statistische Functies

Numpy biedt verschillende ingebouwde functies om veelvoorkomende statistische berekeningen uit te voeren. De drie functies die we in dit deel bespreken zijn:

  1. mean(): Bereken het gemiddelde van de data.
  2. var(): Bereken de variantie van de data.
  3. std(): Bereken de standaardafwijking van de data.

1.1 mean() – Het Gemiddelde

Het gemiddelde van een dataset is de som van alle getallen, gedeeld door het aantal getallen. Het wordt gebruikt om een centrale tendens van de gegevens te beschrijven.

Voorbeeld:

import numpy as np

data = np.array([1, 2, 3, 4, 5, 6])
gemiddelde = np.mean(data)
print(f"Gemiddelde: {gemiddelde}")

Output:

Gemiddelde: 3.5

1.2 Variantie

De variantie meet hoe ver de waarden in een dataset gemiddeld afwijken van het gemiddelde. Variantie wordt berekend door de kwadraten van de afwijkingen van elke waarde ten opzichte van het gemiddelde te nemen, en dan het gemiddelde van die kwadraten te nemen.

Formule voor Variantie:

De variantie ($\sigma^2$) wordt berekend als:

\[\sigma^2 = \frac{1}{n} \sum_{i=1}^{n} (x_i - \mu)^2\]

Waarbij:

  • $(x_i)$ de individuele waarden zijn,
  • (\mu) het gemiddelde van de waarden is,
  • (n) het aantal waarden in de dataset is.

De variantie geeft een gemiddelde kwadraatafwijking van het gemiddelde. Omdat de kwadraten worden gebruikt, wordt het effect van grote afwijkingen benadrukt.

Interpretatie van Variantie:
  • Hoge variantie betekent dat de waarden in de dataset sterk verspreid zijn rond het gemiddelde.
  • Lage variantie betekent dat de waarden dicht bij het gemiddelde liggen.
  • Eenheid: De variantie wordt uitgedrukt in de kwadraateenheden van de oorspronkelijke data. Dit betekent dat als je data bijvoorbeeld in meters is, de variantie wordt uitgedrukt in vierkante meters.

1.3 Wat is Standaardafwijking?

De standaardafwijking ((\sigma)) is de vierkantswortel van de variantie. Net als de variantie meet de standaardafwijking de spreiding van de data ten opzichte van het gemiddelde, maar ze is uitgedrukt in dezelfde eenheden als de data zelf, omdat we de wortel nemen.

Formule voor Standaardafwijking:

De standaardafwijking ((\sigma)) wordt berekend als:

[ \sigma = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (x_i - \mu)^2} ]

Interpretatie van Standaardafwijking:
  • De standaardafwijking geeft een gemiddelde spreiding van de waarden rond het gemiddelde, maar in dezelfde eenheden als de data.
  • Hoge standaardafwijking betekent dat de waarden ver van het gemiddelde liggen.
  • Lage standaardafwijking betekent dat de waarden dicht bij het gemiddelde liggen.

Voorbeeld: Variantie en Standaardafwijking Berekenen

Laten we een concreet voorbeeld nemen met een kleine dataset:

import numpy as np

data = np.array([10, 12, 23, 23, 16, 23, 21, 16])

# Berekenen van de variantie
variantie = np.var(data)
print(f"Variantie: {variantie:.2f}")

# Berekenen van de standaardafwijking
standaardafwijking = np.std(data)
print(f"Standaardafwijking: {standaardafwijking:.2f}")

Output:

Variantie: 17.23
Standaardafwijking: 4.15

In dit voorbeeld is de variantie 17.23, wat aangeeft dat de waarden in de dataset een redelijke spreiding hebben. De standaardafwijking is 4.15, wat betekent dat de meeste waarden ongeveer 4.15 eenheden van het gemiddelde afliggen.

1.4 Wanneer gebruik je Variantie of Standaardafwijking?

  • Variantie wordt vaak gebruikt in theoretische statistiek en probabiliteitsmodellen omdat het wiskundig eenvoudiger is om te manipuleren. De kwadraten van de afwijkingen maken sommige berekeningen eenvoudiger, vooral als het gaat om het optellen van spreidingen van verschillende datasets.

  • Standaardafwijking is gemakkelijker te interpreteren omdat deze in dezelfde eenheden wordt uitgedrukt als de data zelf. Het is meestal de voorkeur wanneer je het publiek wilt helpen de variatie van de gegevens intuïtief te begrijpen. Als je dataset bijvoorbeeld in centimeters is, zal de standaardafwijking ook in centimeters zijn, terwijl de variantie in vierkante centimeters zou zijn.

Keuze tussen de twee:
  • Gebruik standaardafwijking als je de spreiding in dezelfde eenheden als de data wilt communiceren. Dit is meestal het geval in rapporten, presentaties of visuele weergaven van gegevens.
  • Gebruik variantie in wiskundige of statistische berekeningen waar de kwadratische term een rol speelt, zoals bij ANOVA (Analyse van Variantie), covariantie of probabiliteitsmodellen.

1.5 Voorbeeld: Vergelijking van Variantie en Standaardafwijking

Laten we twee datasets vergelijken met dezelfde gemiddelde waarde, maar verschillende spreidingen.

import numpy as np

# Dataset 1: Kleine spreiding
data1 = np.array([50, 51, 49, 50, 52, 48])

# Dataset 2: Grote spreiding
data2 = np.array([30, 70, 20, 80, 25, 75])

# Gemiddelden
print(f"Gemiddelde data1: {np.mean(data1)}")
print(f"Gemiddelde data2: {np.mean(data2)}")

# Variantie
print(f"Variantie data1: {np.var(data1):.2f}")
print(f"Variantie data2: {np.var(data2):.2f}")

# Standaardafwijking
print(f"Standaardafwijking data1: {np.std(data1):.2f}")
print(f"Standaardafwijking data2: {np.std(data2):.2f}")

Output:

Gemiddelde data1: 50.0
Gemiddelde data2: 50.0
Variantie data1: 2.67
Variantie data2: 616.67
Standaardafwijking data1: 1.63
Standaardafwijking data2: 24.83

Beide datasets hebben hetzelfde gemiddelde van 50, maar de spreiding van de data is heel anders:

  • De variantie en standaardafwijking van dataset 1 zijn laag, wat betekent dat de waarden dicht bij het gemiddelde liggen.
  • De variantie en standaardafwijking van dataset 2 zijn veel hoger, wat aangeeft dat de waarden verder van het gemiddelde liggen.

Dit toont aan dat, hoewel de gemiddelden gelijk zijn, de datasets heel verschillend zijn in termen van spreiding. De standaardafwijking geeft een beter intuïtief begrip van de spreiding in dezelfde eenheden als de gegevens zelf.

1.6 Wanneer is spreiding belangrijk?

Spreiding is essentieel bij het begrijpen van je dataset. Gemiddelden alleen vertellen niet het hele verhaal. Twee datasets kunnen hetzelfde gemiddelde hebben, maar als hun spreiding anders is, kan de onderliggende dynamiek van de data drastisch verschillen.

  • In de wetenschap: Spreiding kan inzicht geven in de precisie van meetwaarden. Een lage standaardafwijking kan wijzen op betrouwbare en consistente metingen.
  • In financiën: Een hoge standaardafwijking in de prijs van een aandeel betekent dat de prijs volatieler is en meer risico met zich meebrengt.

Matplotlib

Een Histogram Maken

Een histogram verdeelt data in intervallen (binnen) en toont hoe vaak de data in elk interval valt. Dit helpt om de frequentieverdeling van de gegevens visueel te begrijpen.

Voorbeeld: Een Histogram Maken: Laten we een dataset genereren met willekeurige normaal verdeelde waarden en een histogram plotten om te zien hoe de data verdeeld is.

import numpy as np
import matplotlib.pyplot as plt

# Genereer willekeurige normaal verdeelde data
data = np.random.normal(loc=0, scale=1, size=1000)

# Maak een histogram van de data
plt.hist(data, bins=30, edgecolor='black')

# Voeg een titel en labels toe
plt.title("Histogram van Normaal Verdeelde Data")
plt.xlabel("Waarde")
plt.ylabel("Frequentie")

# Toon het histogram
plt.show()

Uitleg:

  • np.random.normal(): Dit genereert 1000 willekeurige getallen uit een normale verdeling met gemiddelde 0 en standaardafwijking 1.
  • plt.hist(): Dit maakt het histogram. Het argument bins=30 verdeelt de data in 30 intervallen. Het argument edgecolor='black' voegt een zwarte rand toe aan elke bin voor duidelijkheid.
  • plt.title(), plt.xlabel(), en plt.ylabel(): Deze functies voegen een titel en labels toe aan de grafiek.

De resulterende grafiek laat zien hoe vaak elke waarde voorkomt in de dataset, wat een visuele weergave geeft van de frequentieverdeling van de gegevens.

Oefeningen

Bedankt voor je feedback! Ik begrijp nu dat je graag een balans wilt tussen variatie en het gebruik van de statistische functies mean(), var(), en std(). Hier is een nieuwe reeks oefeningen die zowel de genoemde statistische functies als andere wiskundige en visuele elementen omvat. Elke oefening biedt nu een ander scenario met verschillende bewerkingen en visualisaties, terwijl de statistieken mean(), var(), en std() regelmatig aan bod komen.

Oefening 1: Analyses van Examenscores

Maak een class Examenscores die de scores van studenten bijhoudt. Voeg methoden toe om het gemiddelde, de variantie en de standaardafwijking van de scores te berekenen. Maak een histogram van de scores en voeg een verticale lijn toe die het gemiddelde markeert.

Code:

import numpy as np
import matplotlib.pyplot as plt

# Voorbeeldgebruik
scores = [55, 62, 70, 85, 90, 95, 78, 88, 92, 60, 75, 80, 68, 77]
examen = Examenscores(scores)

print(f"Gemiddelde score: {examen.gemiddelde():.2f}")
print(f"Variantie: {examen.variantie():.2f}")
print(f"Standaardafwijking: {examen.standaardafwijking():.2f}")

examen.plot_histogram()

Oefening 2: Dagelijkse Temperatuurmetingen

Maak een class DagelijkseTemperaturen die de dagelijkse temperatuurmetingen van een maand bijhoudt. Voeg methoden toe om het gemiddelde, de standaardafwijking en de koudste en warmste dagen te berekenen. Plot een histogram van de temperatuurmetingen en geef lijnen weer voor het gemiddelde en de standaardafwijking.

Code:

import numpy as np
import matplotlib.pyplot as plt

# Voorbeeldgebruik
temperaturen = [12, 14, 13, 15, 12, 16, 14, 14, 13, 17, 18, 19, 16, 15, 14, 13, 12, 16, 18, 17]
dag_temp = DagelijkseTemperaturen(temperaturen)

print(f"Gemiddelde temperatuur: {dag_temp.gemiddelde():.2f} °C")
print(f"Standaardafwijking: {dag_temp.standaardafwijking():.2f} °C")
print(f"Koudste dag: {dag_temp.koudste_dag()} °C")
print(f"Warmste dag: {dag_temp.warmste_dag()} °C")

dag_temp.plot_histogram()

Oefening 3: Financiële Aandelenanalyse

Maak een class AandelenAnalyse die dagelijkse koersveranderingen van een aandeel bijhoudt. Voeg methoden toe om het gemiddelde rendement, de variantie en de standaardafwijking te berekenen. Plot een histogram van de koersveranderingen.

Code:

import numpy as np
import matplotlib.pyplot as plt

# Voorbeeldgebruik
koersveranderingen = [-0.5, 0.3, 0.7, -0.1, 0.4, 0.5, -0.3, 0.6, 0.8, -0.4, 0.1]

# Gebruik je functies en toon het histogram

Next section:
Navigatie