Werkplaats / De werkplaats
In jouw eigen tempo
← Wiskunde-fundament
MODULE 04 · LES 13

Eén gemiddeld getal vertelt niet alles

Bereken gemiddelde, mediaan en variantie en onderzoek de invloed van een uitschieter.

45 min3 checkpoints
DIT GA JE ONTDEKKEN
  • Je vergelijkt gemiddelde en mediaan bij een uitschieter.
  • Je onderscheidt populatievariantie van steekproefvariantie.

Een chatbot reageert op vier oefenvragen na 1, 2, 3 en 10 seconden. De gemiddelde wachttijd is vier seconden, hoewel drie antwoorden sneller klaar zijn. Eén getal kan dus een juist maar onvolledig beeld geven van je gegevens.

We gebruiken eindige getallen zonder ontbrekende waarden. Je bouwt drie samenvattingen: een evenwichtspunt, een middelste waarde en een maat voor de verschillen. Houd de oorspronkelijke metingen erbij, want geen van deze getallen vertelt het hele verhaal.

1. De totale wachttijd eerlijk verdelen

Samen duren de vier antwoorden 1 + 2 + 3 + 10 = 16 seconden. Verdeel die totale tijd gelijk over vier antwoorden: ieder krijgt 4 seconden. Dat is het rekenkundig gemiddelde (mean).

m=Tn=164=4

m noemt het gemiddelde, T de som van alle waarden en n het aantal waarnemingen. Elke waarde telt even zwaar mee in de som. In Python geeft len(xs) het aantal elementen van de lijst xs:

xs = [1, 2, 3, 10]
totaal = 0
for i in range(len(xs)):
    totaal = totaal + xs[i]
m = totaal / len(xs)
print(m)   # 4.0

Maak gemiddelde(xs) voor een willekeurig lange lijst. Een lege lijst heeft lengte nul en geen gemiddelde; geef daarvoor None terug vóór je deelt. Die keuze gebruiken we ook bij de mediaan.

01
CHECKPOINTEen evenwichtspunt van de data

2. De positie in de rij bekijken

Zet de wachttijden van klein naar groot. De mediaan (median) ligt in het midden: bij [1, 2, 3, 10] zijn de twee middelste waarden 2 en 3. Hun gemiddelde is (2 + 3)/2 = 2.5 seconden.

Bij een oneven aantal is er één middelste waarde: [1, 2, 10] heeft mediaan 2. De mediaan kijkt naar de posities in de gesorteerde rij. Verander je in de eerste lijst alleen 10 in 100, dan blijft de mediaan 2.5 terwijl het gemiddelde stijgt naar 26.5.

mediaan=2+32=2.5

sorted(xs) maakt een nieuwe, gesorteerde lijst; xs blijft intact. Bij lengte n wijst n // 2 naar het middelste element als n oneven is, of naar het rechter midden als n even is. // deelt met een geheel resultaat naar beneden: 5 // 2 en 4 // 2 zijn allebei 2.

xs = [10, 2, 1, 3]
rij = sorted(xs)
n = len(rij)
midden = n // 2
links = rij[midden - 1]
rechts = rij[midden]
print((links + rechts) / 2)   # 2.5
print(xs)                   # [10, 2, 1, 3]

Voor je algemene functie moet je even en oneven onderscheiden. % geeft de rest na deling: n % 2 == 0 betekent even; bij oneven n neem je alleen rij[midden]. Controleer eerst of de lijst leeg is, voordat je een positie opvraagt.

02
CHECKPOINTHet middelste hoeft geen evenwichtspunt te zijn

3. Hoe ver liggen de waarden uit elkaar?

De lijsten [1, 3] en [2, 2] hebben allebei gemiddelde 2. In de eerste wijken de waarden −1 en +1 af; in de tweede zijn beide afwijkingen nul. De eerste lijst is dus meer verspreid, hoewel het gemiddelde gelijk is.

Gewone afwijkingen optellen helpt niet: −1 + 1 = 0. Kwadrateren voorkomt dat positieve en negatieve afwijkingen elkaar wegstrepen, en geeft grotere afwijkingen meer gewicht. De variantie (variance) is hier het gemiddelde van die kwadraten: (1 + 1)/2 = 1.

v=Qn=22=1

Q noemt de som van alle gekwadrateerde afwijkingen van m; n blijft het aantal waarden. Voor onze twee wachttijden:

xs = [1, 3]
m = 2
Q = 0
for i in range(len(xs)):
    afwijking = xs[i] - m
    Q = Q + afwijking ** 2
print(Q / len(xs))         # 1.0
print(Q / (len(xs) - 1))   # 2.0

De eerste deling beschrijft precies deze verzameling: populatievariantie. De tweede helpt als je met onafhankelijke waarnemingen uit dezelfde populatieverdeling de variantie van die grotere populatie schat. Het gemiddelde is dan uit dezelfde steekproef geschat en ligt daardoor gemiddeld te dicht bij haar eigen waarden; delen door n onderschat de populatievariantie gemiddeld.

Delen door n−1 corrigeert die onderschatting onder deze aannames. Dat garandeert geen juiste uitkomst voor één kleine steekproef en herstelt geen verkeerde selectie. Bij wachttijden in seconden heeft variantie bovendien de eenheid seconden kwadraat, geen seconden.

De functie variantie(xs, ddof=0) deelt Q door n - ddof. ddof kiest hier alleen 0 of 1; =0 in de functiedefinitie betekent dat we standaard door n delen als de aanroeper niets meegeeft. Geef None als n <= ddof, anders bereken je eerst zelf m.

De vergelijking <= betekent “kleiner dan of gelijk aan”. Zo vang je zowel een lege lijst als een te kleine steekproef af vóór de deling.

03
CHECKPOINTKwadrateer de afwijkingen

Vergelijk nu acht andere metingen in het diagram. Schuif alleen de laatste waarneming omhoog en verklaar waarom gemiddelde en variantie veranderen, terwijl de twee middelste waarden gelijk blijven.

DE INVLOED VAN ÉÉN UITSCHIETERGemiddelde, mediaan en spreiding

De eerste zeven waarden blijven 1, 2, 2, 3, 3, 4, 4. Alleen de laatste schuift.

0510152025groen: gemiddeldestippellijn: mediaan
Gemiddelde 2.875Mediaan 3.000Populatievariantie 1.109

Wat neem je mee?

  • Het gemiddelde verdeelt de som gelijk; een uitschieter verandert die som sterk.
  • De mediaan gebruikt de middelste positie(s) na sorteren; onze code bewaart de invoer met een gesorteerde kopie.
  • Variantie meet gekwadrateerde afwijkingen; delen door n en n−1 beantwoordt verschillende vragen.

Hierna vergelijk je twee kenmerken tegelijk: bewegen hun afwijkingen samen, en wat zegt dat wel en niet?

Verder lezen & bronnen

Inhoud gecontroleerd op 2026-10-27.
DE VOLGENDE STAPSamen bewegen is nog geen oorzaak
JOUW EXPERIMENT

Probeer het zelf

Python
main.py

Python start zodra jij code uitvoert.

UITVOER

Je uitvoer verschijnt hier.
Alles rekent in je eigen browser.

Jouw checkpoints0 / 3
01
Een evenwichtspunt van de data

Schrijf gemiddelde(xs) voor eindige waarden; geef None bij een lege lijst.

Een hint

Controleer len(xs). Tel de waarden op met een lus en deel door het aantal.

02
Het middelste hoeft geen evenwichtspunt te zijn

Schrijf mediaan(xs); wijzig de invoer niet en geef None bij een lege lijst.

Een hint

Gebruik sorted(xs). Bij n % 2 == 0 neem je het gemiddelde op indices n//2-1 en n//2; anders alleen n//2.

03
Kwadrateer de afwijkingen

Schrijf variantie(xs, ddof=0) voor ddof 0 of 1. Geef None als len(xs) <= ddof.

Een hint

Herbruik je gemiddelde(xs), tel (xs[i]-m)**2 op in een lus en deel de som door n-ddof.

Vastgelopen? Bekijk de voorbeeldoplossing
def gemiddelde(xs):
    n = len(xs)
    if n == 0:
        return None
    totaal = 0
    for i in range(n):
        totaal = totaal + xs[i]
    return totaal / n


def mediaan(xs):
    n = len(xs)
    if n == 0:
        return None
    rij = sorted(xs)
    midden = n // 2
    if n % 2 == 0:
        return (rij[midden - 1] + rij[midden]) / 2
    return rij[midden]


def variantie(xs, ddof=0):
    n = len(xs)
    if n <= ddof:
        return None
    m = gemiddelde(xs)
    Q = 0
    for i in range(n):
        afwijking = xs[i] - m
        Q = Q + afwijking ** 2
    return Q / (n - ddof)

Voer de code uit en verklaar voor jezelf waarom elke stap werkt.