De cumulatieve verdelingsfunctie schetsen

In [35]:
import numpy as np
import matplotlib.pyplot as plt

Het verband zien tussen een continue dichtheidsfunctie $\varphi_X(x)$ en de overeenkomstige cumulatieve verdelingsfunctie $\Phi_X(x)$ is niet alleen nuttig qua inzicht. Op het examen zal je soms ook een schets van de ene grafiek moeten maken, gegeven de andere. Dit kan dus in twee richtingen werken, maar in deze blogpost focussen we ons op het schetsen van $\Phi_X(x)$ als $\varphi_X(x)$ gegeven is.

Ter herinnering: de cumulatieve verdelingsfunctie geeft de kans weer dat een toevalsvariabele $X$ een waarde aanneemt die kleiner is dan of gelijk is aan een bepaalde waarde $x$. Met andere woorden: $\Phi_X(x) = P(X \leq x)$.

Voorbeeld 1: rechthoekige dichtheidsfunctie

Laten we beginnen met een rechthoekige dichtheidsfunctie die de volgende vorm heeft:

$$ \varphi_X(x) = \begin{cases} 0.25 & \mid 1 \leq x \leq 5 \\ 0 & \mid \text{elders} \end{cases} $$

Anders gezegd: $X \sim \mathcal U(1, 5)$.

Deze dichtheidsfunctie is constant over het interval $[1, 5]$ met een hoogte van $0.25$. Dit betekent dat de totale oppervlakte onder de rechthoek (niet onverwacht) gelijk is aan $0.25 \cdot (5 - 1) = 1$.

De cumulatieve verdelingsfunctie $\Phi_X(x)$ is zoals steeds de oppervlakte onder de dichtheidsfunctie $\varphi_X(x)$ vanaf $-\infty$ tot $x$. In symbolen: $\int_{-\infty}^{x} \varphi_X(t)dt$. (We gebruiken hier de integratievariabele $t$ aangezien $x$ al gebruikt wordt om de bovengrens aan te geven.) Zo komen we tot volgende vorm voor $\Phi_X(x)$:

  • Voor $x < 1$ is er geen kans, dus $\Phi_X(x) = 0$.
  • Voor $1 \leq x \leq 5$ is de cumulatieve verdelingsfunctie gelijk aan de oppervlakte onder de constante $0.25$ van 1 tot $x$. De oppervlakte is dus gelijk aan $0.25 \cdot (x - 1)$.
  • Voor $x > 5$ is de oppervlakte onder de curve gelijk aan 1, omdat de volledige oppervlakte onder de dichtheidsfunctie dan is bereikt.

De cumulatieve verdelingsfunctie $\Phi_X(x)$ is dus:

$$ \Phi_X(x) = \begin{cases} 0, & x < 1 \\ 0.25(x - 1), & 1 \leq x \leq 5 \\ 1, & x > 5 \end{cases} $$

In [ ]:
def pdf_rect(x):
    return 0.25 if 1 <= x <= 5 else 0

def cdf_rect(x):
    if x < 1:
        return 0
    elif 1 <= x <= 5:
        return 0.25 * (x - 1)
    else:
        return 1

x_vals = np.linspace(0, 6, 500)
pdf_vals = [pdf_rect(x) for x in x_vals]
cdf_vals = [cdf_rect(x) for x in x_vals]

plt.figure(figsize=(12, 10))

plt.subplot(2, 2, 1)
plt.title(r'Dichtheidsfunctie $\varphi_X(x)$')
plt.plot(x_vals, pdf_vals)
plt.fill_between(x_vals, pdf_vals, where=[1 <= x <= 5 for x in x_vals], alpha=0.1)
plt.xlabel('$x$')
plt.xlim(0, 6)
plt.ylim(0, 1.15)
plt.yticks(np.arange(0, 1.05, 0.25))
plt.grid(linestyle='--', alpha=0.7)

plt.subplot(2, 2, 2)
plt.title(r'Cumulatieve verdelingsfunctie $\Phi_X(x)$')
plt.plot(x_vals, cdf_vals)
plt.xlabel('$x$')
plt.xlim(0, 6)
plt.ylim(0, 1.15)
plt.yticks(np.arange(0, 1.05, 0.25))
plt.grid(linestyle='--', alpha=0.7)

bar_width = 0.5
bar_gap = 0.02
x_riemann = [1 + i * bar_width for i in range(8)]
pdf_riemann = [pdf_rect(x) for x in x_riemann]
cdf_riemann = np.cumsum([p * bar_width for p in pdf_riemann])
colors = [plt.cm.Blues(1 - i / len(x_riemann)) for i in range(len(x_riemann))]

plt.subplot(2, 2, 3)
plt.title(r'Gediscretiseerde dichtheidsfunctie $\pi_X(x)$')
# plt.plot(x_vals, pdf_vals)
# plt.fill_between(x_vals, pdf_vals, where=[1 <= x <= 5 for x in x_vals], alpha=0.1)
for i, x in enumerate(x_riemann):
    plt.bar(x, pdf_riemann[i], width=bar_width-bar_gap, align='edge', color=colors[i])
plt.xlabel('$x$')
plt.xlim(0, 6)
plt.ylim(0, 1.15)
plt.yticks(np.arange(0, 1.05, 0.25))
plt.grid(linestyle='--', alpha=0.7)

plt.subplot(2, 2, 4)
plt.title(r'Gediscretiseerde cumulatieve verdelingsfunctie $\Phi_X(x)$')
# plt.plot(x_vals, cdf_vals)
for i in range(len(x_riemann)):
    for j in range(i + 1):
        plt.bar(
            x_riemann[i],
            pdf_riemann[j] * bar_width,
            width=bar_width - bar_gap,
            align='edge',
            color=colors[j],
            bottom=np.sum([p * bar_width for p in pdf_riemann[:j]]) if j > 0 else 0,
        )
for x_repeat in [5, 5.5]:
    for i in range(len(x_riemann)):
        plt.bar(
            x_repeat,
            pdf_riemann[i] * bar_width,
            width=bar_width - bar_gap,
            align='edge',
            color=colors[i],
            bottom=np.sum([p * bar_width for p in pdf_riemann[:i]]) if i > 0 else 0,
        )
plt.xlabel('$x$')
plt.xlim(0, 6)
plt.ylim(0, 1.15)
plt.yticks(np.arange(0, 1.05, 0.25))
plt.grid(linestyle='--', alpha=0.7)
No description has been provided for this image

Conclusie: een horizontaal lijnstuk in $\varphi_X(x)$ wordt een stijgende rechte in $\Phi_X(x)$. De rekenregel die hierachter zit is $\int h dx = hx + C$. Hoe hoger de horizontale lijn $y = h$ ligt, hoe sneller de rechte $hx$ dus zal stijgen. Merk ook op dat de rechte nooit kan dalen. Daarvoor zouden we een $h < 0$ nodig hebben, maar $\varphi_X(x) \geq 0$ dus dat kan in deze context niet.

Wie liever niet opnieuw nadenkt over de rekenregels rond integralen kan op de twee onderste grafieken ook intuitief zien waarom een horizontaal lijnstuk plots een stijgende rechte wordt. Als we de dichtheidsfunctie benaderen met een discrete kansmassafunctie $\pi_X(x) = 0.25$ voor $x \in \{1, 1.5, \ldots, 4.5\}$ en we berekenen daar de cumulatieve variant van, zien we hetzelfde patroon ontstaan.

Nu we dit weten, moeten we in de toekomst voor rechthoeken gewoon de totale oppervlakte bij het begin en bij het einde berekenen. In ons geval is de oppervlakte $P(X \leq 1) = 0.0$ en $P(X \leq 5) = 1.0$. We kunnen dus om $\Phi_X(x)$ te schetsen de twee coordinaten $(1, 0.0)$ en $(5, 1.0)$ verbinden met een rechte en we zijn klaar.

Helaas gaat het niet altijd zo eenvoudig zijn. Driehoekige functies bijvoorbeeld zullen geen rechte meer opleveren.

Voorbeeld 2: stijgende driehoekige dichtheidsfunctie

In dit voorbeeld hebben we een dichtheidsfunctie die de vorm heeft van een driehoek. Stel dat de dichtheidsfunctie wordt gegeven door:

$$ \varphi_X(x) = \begin{cases} 2x & \mid 0 \leq x \leq 1 \\ 0 & \mid \text{elders} \end{cases} $$

De cumulatieve verdelingsfunctie $\Phi_X(x)$ is opnieuw de oppervlakte onder de curve van de dichtheidsfunctie vanaf $-\infty$ tot $x$. In dit geval stijgt de oppervlakte niet lineair maar kwadratisch aangezien $\int (ax+b) dx = a \frac{x^2}{2} + bx + C$. Specifiek ik ons geval is $a=2$ en $b=0$, dus krijgen we $x^2 + C$. De cumulatieve verdelingsfunctie wordt dus (voor $C=0$):

$$ \Phi_X(x) = \begin{cases} 0 & \mid x < 0 \\ x^2 & \mid 0 \leq x \leq 1 \\ 1 & \mid x > 1 \end{cases} $$

De grafieken van $\varphi_X(x)$ en $\Phi_X(x)$ vind je hieronder. Het gediscretiseerde voorbeeld eronder toont opnieuw visueel aan hoe we van een stijgende rechte naar een parabool gaan zonder rekenregels voor integralen.

In [ ]:
def pdf_triangle(x):
    return 2 * x if 0 <= x <= 1 else 0

def cdf_triangle(x):
    if x < 0:
        return 0
    elif 0 <= x <= 1:
        return x**2
    else:
        return 1

x_vals = np.linspace(-0.1, 1.1, 500)
pdf_vals = [pdf_triangle(x) for x in x_vals]
cdf_vals = [cdf_triangle(x) for x in x_vals]

plt.figure(figsize=(12, 10))

plt.subplot(2, 2, 1)
plt.title(r'Dichtheidsfunctie $\varphi_X(x)$')
plt.plot(x_vals, pdf_vals)
plt.fill_between(x_vals, pdf_vals, where=[0 <= x <= 1 for x in x_vals], alpha=0.1)
plt.xlabel('$x$')
plt.xlim(-0.1, 1.1)
plt.ylim(0, 2.15)
plt.yticks(np.arange(0, 2.15, 0.2))
plt.grid(linestyle='--', alpha=0.7)

plt.subplot(2, 2, 2)
plt.title(r'Cumulatieve verdelingsfunctie $\Phi_X(x)$')
plt.plot(x_vals, cdf_vals)
plt.xlabel('$x$')
plt.xlim(-0.1, 1.1)
plt.ylim(0, 2.15)
plt.yticks(np.arange(0, 2.15, 0.2))
plt.grid(linestyle='--', alpha=0.7)

bar_width_triangle = 0.1
bar_gap = 0.005
x_riemann_triangle = [i * bar_width_triangle for i in range(10)]
pdf_riemann_triangle = [pdf_triangle(x+0.05) for x in x_riemann_triangle]
cdf_riemann_triangle = np.cumsum([p * bar_width_triangle for p in pdf_riemann_triangle])
colors_triangle = [plt.cm.Blues(1 - i / len(x_riemann_triangle)) for i in range(len(x_riemann_triangle))]

plt.subplot(2, 2, 3)
plt.title(r'Gediscretiseerde dichtheidsfunctie $\pi_X(x)$')
# plt.plot(x_vals, pdf_vals)
# plt.fill_between(x_vals, pdf_vals, where=[0 <= x <= 1 for x in x_vals], alpha=0.1)
for i, x in enumerate(x_riemann_triangle):
    plt.bar(x, pdf_riemann_triangle[i], width=bar_width_triangle-bar_gap, align='edge', color=colors_triangle[i])
plt.xlabel('$x$')
plt.xlim(-0.1, 1.1)
plt.ylim(0, 2.15)
plt.yticks(np.arange(0, 2.15, 0.2))
plt.grid(linestyle='--', alpha=0.7)

plt.subplot(2, 2, 4)
plt.title(r'Gediscretiseerde cumulatieve verdelingsfunctie $\Phi_X(x)$')
# plt.plot(x_vals, cdf_vals)
for i in range(len(x_riemann_triangle)):
    for j in range(i + 1):
        plt.bar(
            x_riemann_triangle[i],
            pdf_riemann_triangle[j] * bar_width_triangle,
            width=bar_width_triangle - bar_gap,
            align='edge',
            color=colors_triangle[j],
            bottom=np.sum([p * bar_width_triangle for p in pdf_riemann_triangle[:j]]) if j > 0 else 0,
        )
for x_repeat in [1]:
    for i in range(len(x_riemann_triangle)):
        plt.bar(
            x_repeat,
            pdf_riemann_triangle[i] * bar_width_triangle,
            width=bar_width_triangle - bar_gap,
            align='edge',
            color=colors_triangle[i],
            bottom=np.sum([p * bar_width_triangle for p in pdf_riemann_triangle[:i]]) if i > 0 else 0,
        )
plt.xlabel('$x$')
plt.xlim(-0.1, 1.1)
plt.ylim(0, 2.15)
plt.yticks(np.arange(0, 2.15, 0.2))
plt.grid(linestyle='--', alpha=0.7)
No description has been provided for this image

Net zoals voorheen kunnen we dus starten met het aanduiden van de twee coordinaten: in dit geval $(0, 0.0)$ en $(1, 1.0)$. Maar in plaats van de twee punten te verbinden met een rechte, moeten we ze nu verbinden met een dalparabool ($ax^2+bx+c$ met $a>0$).

Als de driehoek omgekeerd had gestaan (dus gevormd door een dalende rechte), dan moesten we de twee punten verbinden door een bergparabool ($ax^2+bx+c$ met $a<0$).

Voorbeeld 3: dalende driehoekige dichtheidsfunctie

In dit voorbeeld hebben we een dichtheidsfunctie die de vorm heeft van een driehoek die afneemt van $2$ bij $x = 0$ naar $0$ bij $x = 1$. De dichtheidsfunctie wordt als volgt gegeven:

$$ \varphi_X(x) = \begin{cases} 2(1 - x) & \mid 0 \leq x \leq 1 \\ 0 & \mid \text{elders} \end{cases} $$

Dit geeft ons de cumulatieve verdelingsfunctie:

$$ \Phi_X(x) = \begin{cases} 0 & \mid x < 0 \\ 2x - x^2 & \mid 0 \leq x \leq 1 \\ 1 & \mid x > 1 \end{cases} $$

Deze cumulatieve verdelingsfunctie heeft inderdaad de vorm van een bergparabool aangezien $a = -1 < 0$. Verder is de werkwijze helemaal identiek aan die van voorbeeld 2.

In [15]:
def pdf_reverse_triangle(x):
    return 2 * (1 - x) if 0 <= x <= 1 else 0

def cdf_reverse_triangle(x):
    if x < 0:
        return 0
    elif 0 <= x <= 1:
        return 2 * x - x**2
    else:
        return 1

x_vals = np.linspace(-0.1, 1.1, 500)
pdf_vals = [pdf_reverse_triangle(x) for x in x_vals]
cdf_vals = [cdf_reverse_triangle(x) for x in x_vals]

plt.figure(figsize=(12, 10))

plt.subplot(2, 2, 1)
plt.title(r'Dichtheidsfunctie $\varphi_X(x)$')
plt.plot(x_vals, pdf_vals)
plt.fill_between(x_vals, pdf_vals, where=[0 <= x <= 1 for x in x_vals], alpha=0.1)
plt.xlabel('$x$')
plt.xlim(-0.1, 1.1)
plt.ylim(0, 2.15)
plt.yticks(np.arange(0, 2.15, 0.2))
plt.grid(linestyle='--', alpha=0.7)

plt.subplot(2, 2, 2)
plt.title(r'Cumulatieve verdelingsfunctie $\Phi_X(x)$')
plt.plot(x_vals, cdf_vals)
plt.xlabel('$x$')
plt.xlim(-0.1, 1.1)
plt.ylim(0, 2.15)
plt.yticks(np.arange(0, 2.15, 0.2))
plt.grid(linestyle='--', alpha=0.7)

bar_width_triangle = 0.1
bar_gap = 0.005
x_riemann_triangle = [i * bar_width_triangle for i in range(10)]
pdf_riemann_triangle = [pdf_reverse_triangle(x + 0.05) for x in x_riemann_triangle]
cdf_riemann_triangle = np.cumsum([p * bar_width_triangle for p in pdf_riemann_triangle])
colors_triangle = [plt.cm.Blues(1 - i / len(x_riemann_triangle)) for i in range(len(x_riemann_triangle))]

plt.subplot(2, 2, 3)
plt.title(r'Gediscretiseerde dichtheidsfunctie $\pi_X(x)$')
for i, x in enumerate(x_riemann_triangle):
    plt.bar(x, pdf_riemann_triangle[i], width=bar_width_triangle-bar_gap, align='edge', color=colors_triangle[i])
plt.xlabel('$x$')
plt.xlim(-0.1, 1.1)
plt.ylim(0, 2.15)
plt.yticks(np.arange(0, 2.15, 0.2))
plt.grid(linestyle='--', alpha=0.7)

plt.subplot(2, 2, 4)
plt.title(r'Gediscretiseerde cumulatieve verdelingsfunctie $\Phi_X(x)$')
for i in range(len(x_riemann_triangle)):
    for j in range(i + 1):
        plt.bar(
            x_riemann_triangle[i],
            pdf_riemann_triangle[j] * bar_width_triangle,
            width=bar_width_triangle - bar_gap,
            align='edge',
            color=colors_triangle[j],
            bottom=np.sum([p * bar_width_triangle for p in pdf_riemann_triangle[:j]]) if j > 0 else 0,
        )
for x_repeat in [1]:
    for i in range(len(x_riemann_triangle)):
        plt.bar(
            x_repeat,
            pdf_riemann_triangle[i] * bar_width_triangle,
            width=bar_width_triangle - bar_gap,
            align='edge',
            color=colors_triangle[i],
            bottom=np.sum([p * bar_width_triangle for p in pdf_riemann_triangle[:i]]) if i > 0 else 0,
        )
plt.xlabel('$x$')
plt.xlim(-0.1, 1.1)
plt.ylim(0, 2.15)
plt.yticks(np.arange(0, 2.15, 0.2))
plt.grid(linestyle='--', alpha=0.7)
No description has been provided for this image

Voorbeeld 4: complexe dichtheidsfunctie

We hebben een samengestelde dichtheidsfunctie die bestaat uit een trapezium en een rechthoek:

  • Voor $1 \leq x \leq 2$: Een stijgende lijn van $0$ naar $0.20$
    • Dit segment moeten we vertalen in een dalparabool van $(1, 0)$ naar $(2, 0.10)$
  • Voor $2 \leq x \leq 5$: Een horizontale lijn t.h.v. $0.20$
    • Dit segment moeten we vertalen in een stijgende rechte van $(2, 0.10)$ naar $(5, 0.70)$
  • Voor $5 \leq x \leq 6$: Een dalende lijn van $0.20$ naar $0$
    • Dit segment moeten we vertalen in een bergparabool van $(5, 0.70)$ naar $(6, 0.80)$
  • Voor $7 \leq x \leq 8$: Een horizontale lijn t.h.v. $0.20$
    • Dit segment moeten we vertalen in een stijgende rechte van $(7, 0.80)$ naar $(8, 1.00)$
  • De tussenliggende waarden zijn nul
    • Deze segmenten moeten we vertalen in horizontale lijnen

We kunnen dit als volgt beschrijven:

$$ \varphi_X(x) = \begin{cases} 0.20(x - 1) & \mid 1 \leq x \leq 2 \\ 0.20 & \mid 2 < x \leq 5 \\ -0.20(x - 6) & \mid 5 < x \leq 6 \\ 0.20 & \mid 7 \leq x \leq 8 \\ 0 & \text{elders} \end{cases} $$

Voor de liefhebbers (dit moet je niet kunnen uitschrijven op het examen):

$$ \Phi_X(x) = \begin{cases} 0 & \mid x < 1 \\ 0.10(x - 1)^2 & \mid 1 \leq x \leq 2 \\ 0.10 + 0.20(x - 2) & \mid 2 < x \leq 5 \\ 0.70 + 0.10(1 - (6 - x)^2) & \mid 5 < x \leq 6 \\ 0.80 & \mid 6 < x \leq 7 \\ 0.80 + 0.20(x - 7) & \mid 7 < x \leq 8 \\ 1 & \mid x > 8 \end{cases} $$

De constante $C$ die steeds uit de berekening van een integraal rolt, kiezen we hier zodanig dat elk segment van de grafiek mooi aansluit op het vorige.

In [109]:
def pdf_composite(x):
    if 1 <= x <= 2:
        return (x - 1) / 5
    elif 2 < x <= 5:
        return 0.20
    elif 5 < x <= 6:
        return -(x - 6) / 5
    elif 7 <= x <= 8:
        return 0.20
    else:
        return 0

def cdf_composite(x):
    if x < 1:
        return 0
    elif 1 <= x <= 2:
        return (x - 1)**2 / 10
    elif 2 < x <= 5:
        return 0.1 + 0.20 * (x - 2)
    elif 5 < x <= 6:
        return 0.7 + (1 - (6 - x)**2) / 10
    elif 6 < x <= 7:
        return 0.8
    elif 7 < x <= 8:
        return 0.8 + 0.2 * (x - 7)
    else:
        return 1

pdf_segments = {
    "0 <= x < 1": {"x": np.linspace(0, 1, 100), "color": "gray"},
    "1 <= x < 2": {"x": np.linspace(1, 2, 100), "color": "blue"},
    "2 <= x < 5": {"x": np.linspace(2, 5, 100), "color": "green"},
    "5 <= x < 6": {"x": np.linspace(5, 6, 100), "color": "red"},
    "6 <= x < 7": {"x": np.linspace(6, 6.99, 100), "color": "orange"},
    "7 <= x < 8": {"x": np.linspace(7, 8, 100), "color": "purple"},
    "8 <= x < 9": {"x": np.linspace(8.01, 9, 100), "color": "gray"},
}

cdf_segments = {
    "0 <= x < 1": {"x": np.linspace(0, 1, 100), "color": "gray"},
    "1 <= x < 2": {"x": np.linspace(1, 2, 100), "color": "blue"},
    "2 <= x < 5": {"x": np.linspace(2, 5, 100), "color": "green"},
    "5 <= x < 6": {"x": np.linspace(5, 6, 100), "color": "red"},
    "6 <= x < 7": {"x": np.linspace(6, 7, 100), "color": "orange"},
    "7 <= x < 8": {"x": np.linspace(7, 8, 100), "color": "purple"},
    "8 <= x < 9": {"x": np.linspace(8, 9, 100), "color": "gray"},
}

colors = [plt.cm.Blues(i / len(pdf_segments)) for i in range(len(pdf_segments))]

plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.title(r'Dichtheidsfunctie $\varphi_X(x)$')

for label, segment in pdf_segments.items():
    x_segment = segment["x"]
    pdf_segment_vals = [pdf_composite(x) for x in x_segment]
    plt.plot(x_segment, pdf_segment_vals, color=segment["color"])
    plt.fill_between(x_segment, pdf_segment_vals, alpha=0.1, color=segment["color"])

plt.xlabel('$x$')
plt.xlim(0, 9)
plt.ylim(0, 1.05)
plt.yticks(np.arange(0, 1.05, 0.1))
plt.grid(linestyle='--', alpha=0.7)

plt.subplot(1, 2, 2)
plt.title(r'Cumulatieve verdelingsfunctie $\Phi_X(x)$')

for label, segment in cdf_segments.items():
    x_segment = segment["x"]
    cdf_segment_vals = [cdf_composite(x) for x in x_segment]
    plt.plot(x_segment, cdf_segment_vals, color=segment["color"])

plt.xlabel('$x$')
plt.xlim(0, 9)
plt.ylim(0, 1.05)
plt.yticks(np.arange(0, 1.05, 0.1))
plt.grid(linestyle='--', alpha=0.7)
No description has been provided for this image

Conclusie

Om een schets te maken van $\Phi_X(x)$ kan je $\varphi_X(x)$ segment per segment vertalen. Eerst bepaal je de begin en eindcoordinaat o.b.v. de oppervlakte onder $\varphi_X(x)$ tot respectievelijk het begin en het einde van het segment. Vervolgens bepaal je de vorm van de lijn tussen de twee coordinaten die je nodig hebt:

$\varphi_X(x)$ segment $\Phi_X(x)$ segment
$0$ horizontale lijn
horizontale lijn stijgende rechte
stijgende rechte dalparabool
dalende rechte bergparabool

Dubbelcheck op het einde steeds dat je op oppervlakte $1.0$ uitkomt.

Statistische maten voor lineaire transformaties

Lineaire transformaties: wie zijn ze? Wat doen ze? Wat drijft hen?

Stel je hebt een variabele . Dan kan je een nieuwe variabele berekenen aan de hand van een lineaire transformatiefunctie door die functie op elke waarde van toe te passen. Notatie: .

Voorbeeld:

  • gegeven
    • : zie tabel
  • gevraagd
  • oplossing

De normale manier ()

Op basis van deze gegevens kunnen we de tabel uitbreiden met . Eens je alle waarden van berekend hebt, kan je er verdere analyses op doen. Zo kan je verschillende statistische maten van (gemiddelde, variantie, ...) berekenen. Je hebt daarvoor geen speciale formules van lineaire transformaties nodig. Je kan gewoon dezelfde formules gebruiken als diegene die je zou gebruiken om te analyseren.

  • oplossing (vervolg)

De shortcut ()

Wat hierboven opvalt is dat net die -waarde is die bij de -waarde hoort, en dat . Met andere woorden: . Dat is geen toeval:

Meer algemeen geldt dus: . Dit inzicht kunnen we gebruiken als shortcut. In plaats van eerst de tabel uit te breiden met alle waardes van - wat voor grotere steekproeven toch wat werk vraagt - kunnen we direct uit berekenen. De formules voor lineaire transformaties openen dus geen nieuwe deuren, ze stellen ons enkel in staat om bepaalde berekeningen efficienter te doen.

We nemen opnieuw hetzelfde voorbeeld:

  • gegeven
    • : zie tabel
  • gevraagd
  • oplossing

We komen dus inderdaad dezelfde uitkomst uit, maar op een veel kortere manier.

Overzicht formules

We hebben de shortcut voor lineaire transformaties nu aangetoond voor gemiddeldes, maar er zijn ook shortcuts voor een hele hoop andere statistische maten. Probeer elk van onderstaande maten eens te berekenen op het voorbeeld hierboven met en zonder shortcut. Je zal snel merken dat je op de tweede manier veel tijd bespaart. Door dit op beide manieren uit te testen ga je ook beter begrijpen waarom onderstaande formules wel of niet werken.

  • centrale tendensmaten
    • gemiddelde
    • mediaan
    • modus
  • spreidingsmaten
    • komt enkel voor als absolute waarde of kwadraat zodat ook bij de spreiding positief blijft
    • geeft geen effect want verschuivingen beinvloeden de spreiding niet
    • variantie
    • standaarddeviatie
    • bereik
    • interkwartielbereik
  • associatiematen
    • heeft opnieuw geen effect
    • de transformatie mag ook in de tweede variabele zitten aangezien en
    • covariantie
      • mag negatief zijn, dus heeft geen absolute waarde of kwadraat nodig
      • merk op dat
    • correlatie
      • moet in interval blijven liggen, dus we kunnen niet zomaar met vermenigvuldigen
        • enkel het teken van heeft nog een effect
      • als
      • als
      • als
      • als

Voor de tegenhangers uit inductieve statistiek () gelden dezelfde regels.

Conclusie

Voor lineaire transformaties is het meestal een goed idee om de shortcuts te gebruiken om statistische maten te berekenen. Onthoud wel dat deze shortcuts enkel gelden voor lineaire transformaties. Niet-lineaire transformaties zoals hebben geen kortere formules. Daarbij moet je dus de normale manier blijven gebruiken.

Bivariate kansmassafunctie berekenen uit bivariate cumulatieve kansmassafunctie

De bivariate kansmassafunctie geeft de kans en weer. De bivariate cumulatieve kansmassafunctie daarentegen geeft de kans en weer. Het is redelijk eenvoudig om uit te berekenen, maar hoe ga je te werk als je de omgekeerde vraag krijgt?

Voorbeeld 1

Voorbeeld 2

Laten we een concreet voorbeeld bekijken met een 3x4 tabel voor de cumulatieve kansmassafunctie . Stel dat we de volgende tabel hebben:

0.1 0.2 0.3 0.4
0.2 0.4 0.5 0.7
0.3 0.6 0.8 1.0

Dit betekent dat bijvoorbeeld .

We willen nu de bijbehorende kansmassafunctie berekenen. Begin met de eerste (laagste) rij en de eerste (laagste) kolom aangezien die vrij eenvoudig zijn:

0.1 0.1 0.1 0.1
0.1 ? ? ?
0.1 ? ? ?

Voor alle duidelijkheid: als in de eerste rij stond, zouden we nog steeds met de rij beginnen aangezien cumulatieve berekeningen altijd van kleine naar grote waarden gebeuren.

0.1 ? ? ?
0.1 ? ? ?
0.1 0.1 0.1 0.1

Met deze nieuwe gegevens kunnen we gemakkelijk berekenen. , dus moet om samen uit te komen.

0.1 0.1 0.1 0.1
0.1 0.1 ? ?
0.1 ? ? ?

In plaats van enkel naar te kijken kunnen we ook info uit en combineren om onszelf wat rekenwerk te besparen:

0.1 0.1 0.1 0.1
0.1 0.1 0 ?
0.1 ? ? ?

De rest van de tabel kunnen we op een gelijkaardige manier aanvullen:

0.1 0.1 0.1 0.1
0.1 0.1 0 0.1
0.1 0.1 0.1 0

Dubbelcheck op het einde dat .

Als je niet heel de tabel moet berekenen, maar enkel één specifieke waarde nodig hebt, kan volgende formule nuttig zijn:

Gotcha's

Hieronder beschrijven we enkele instinkers die elk jaar opnieuw studenten doen struikelen op het (proef)examen.

"Geval 2" bij kwantielen

  • bij de meeste oefeningen rond kwantielen zit je in "geval 1": de gezocht waarde komt niet voor in de kolom
  • uitzonderlijk komt de waarde wel voor in de kolom ("geval 2")
    • neem dan het gemiddelde van huidige en eerstvolgende x-waarde
1 0.2
2 1.0

X-waarden met frequentie nul

  • gegeven
1 2
2 2
3 5
4 9
5 9
6 9
7 10
  • bereken frequenties en cumulatieve proporties
1 2 2 0.2
2 2 0 0.2
3 5 3 0.5
4 9 4 0.9
5 9 0 0.9
6 9 0 0.9
7 10 1 1.0
  • waarden komen dus eigenlijk niet voor
  • kan verwarrend zijn voor kwantielberekeningen
    • voorbeeld:
  • oplossing: schrap waarden uit tabel
1 2 2 0.2
3 5 3 0.5
4 9 4 0.9
7 10 1 1.0

Tchebychev: niet vergeten afronden

  • Tchebychev levert een proportie op
  • vermenigvuldig met om naar frequentie te gaan
  • rond correct af tot op geheel getal
    • niet: onder .5 naar onder, anders naar boven afronden
    • wel: vraag goed lezen en dan juiste keuze maken

Transformaties die sortering beinvloeden

  • gevaar 1: transformatie draait gesorteerde gegevens om
    • voorbeeld
    • probleem voor berekening , , kwantielen
  • gevaar 2: transformatie is geen bijectie en voegt waardes samen
    • voorbeeld: (of )
  • oplossing: maak extra tabel gesorteerd op de nieuwe waarde
-2 3 3 2 2
0 1 4 0 0
2 2 6 -2 2
-2 2 2
0 1 3
2 3 6
0 1 1
2 5 6

Bivariate freqentiefuncties via ZRM

Somvariabelen van standaarddeviaties

  • geen rechtstreekse formule
  • bereken via

Somvariabelen van correlaties

  • geen rechtstreekse formule
  • bereken via

Verschil tussen disjunct en statistisch onafhankelijk

  • disjunct
  • onafhankelijk

Ongelijkheden

  • strikt
    • groter dan vs. strikt groter dan
    • kleiner dan vs. strikt kleiner dan
    • voorbeeld: is geen geldige waarde voor maar wel voor
  • complementen
    • voorbeeld:

Tip voor oefeningen combinatoriek: vereenvoudigen

In tegenstelling tot veel oefeningen rond statistiek, is het bij combinatoriek moeilijk om een uitkomst te dubbelchecken. Daardoor is het moeilijk om zeker te weten of je op de goede weg bent. Een alternatief is om een vereenvoudigde versie van de gegeven oefening uit te werken. Daarbij kan je dan alle mogelijk combinaties uitschrijven om te kijken of dat aantal overeenkomt met jouw formule.

Voorbeeld

Neem opgave 8 van practicum 5. Dit is een klassieke oefening op combinatoriek. Er zijn drie brieven en zes brievenbussen. Je vermoedt dat de uitkomst gaat zijn. Dat is een vrij groot getal, dus alle combinaties uitschrijven om te dubbelchecken gaat lastig zijn. In de plaats daarvan kan je dezelfde oefening oplossen voor twee brieven (1, 2) en drie brievenbussen (A, B, C). Onze voorspelling is dan dat - met dezelfde aanpak als hierboven - de uitkomst zal zijn. Schrijf vervolgens alle combinaties uit, en kijk of het klopt.

(Zoals gewoonlijk helpt het om hierbij een tekening te maken om een beter zicht te krijgen op alle mogelijkheden.)

  • 1A, 2B
  • 1A, 2C
  • 1B, 2A
  • 1B, 2C
  • 1C, 2A
  • 1C, 2B

Perfect! Zes is inderdaad het juiste antwoord. Dat is een sterk signaal dat onze aanpak klopt, en ook geldig zal zijn voor de originele oefening.

Je moet bij deze strategie de balans te vinden tussen enerzijds voldoende kleine getallen kiezen zodat het aantal combinaties beperkt blijft, maar anderzijds ook niet te laag gaan. Werken met het cijfer twee is bijvoorbeeld altijd een risico omdat . Zo krijg je met een foute formule soms toch een vals gevoel van veiligheid als je puur toevallig het juiste aantal uitkomt. Dat probleem ga je veel minder hebben bij getallen groter dan twee. In ons voorbeeld is , dus we zouden al veel pech moeten hebben als we dan met een foute formule toevallig toch op de juiste uitkomst zouden uitkomen.

Dit was nog een redelijk eenvoudige oefening, maar dezelfde strategie kan je ook bij moeilijkere oefeningen gebruiken. Vereenvoudig de opgave zodat het volledig uitschrijven van alle combinaties haalbaar wordt, en dubbelcheck vervolgens of jouw methode het juiste antwoord geeft.

Nieuw examenformularium voor statistiek 1

Bij prof. Van Mechelen mochten studenten geen formularium gebruiken voor statistiek 1. Voor statistiek 2 mocht wel een handgeschreven formularium van 2 blz. worden meegenomen. In het nieuwe curriculum is er nog een ander systeem: de prof voorziet een formularium en statistische tabellen als appendix bij de examenbundel. Helaas krijg je enkel de highlights over het deel rond statistische modellen. Formules uit de rest van de cursus moet je dus nog wel van buiten leren. Hieronder vind je een overzicht van wat je mag verwachten.

Statistische modellen

Bernoulli

Binomiaal

Geometrisch

Poisson

Exponentieel

Uniform

Normaal

Statistische tabellen

Standaard normaalverdeling

  • met
0.0005 -3.2905
0.001 -3.0902
...
0.999 3.0902
0.9995 3.2905

Hervorming statistiek (update)

Nu de lessen van het eerste semester voorbij zijn, kunnen we meer in detail terugblikken op concrete veranderingen sinds de statistiek hervormingen begin dit academiejaar.

Wat in de eerste plaats opvalt, is dat de studielast in theorie verminderd is van 8 naar 7 studiepunten, maar dat er toch meer onderwerpen besproken worden in de cursus. Specifiek is het deel over statistische modellering uit het oude statistiek 2 vak overgeheveld naar statistiek 1. Daarin leren we o.a. over de Bernoulli-, Binomiaal- en Normaalverdelingen. Ik gaf voorheen al het advies aan studenten statistiek 1 om de binomiaalverdeling kort te bekijken, aangezien die stiekem in veel vragen voorkwam. Dat probleem is bij deze opgelost, maar de vraag blijft hoe we hier dan kunnen spreken over een daling in studiebelasting? Hoewel prof. De Roover niet meer verwijst naar de cursus van prof. Van Mechelen, is het duidelijk dat haar slides daar nog steeds heel sterk op gebaseerd zijn. Alle oude hoofdstukken zijn behouden gebleven, dus er moeten per hoofdstuk hier en daar elementen gesneuveld zijn om plaats te maken voor de nieuwe leerstof.

We merken vooraan in de cursus dat het hoofdstuk rond verzamelingenleer sterk vereenvoudigd is. De leerstof rond cartesische producten, machtsverzamelingen, partities en oneindige verzamelingen is weggevallen. Dat deel van de leerstof zorgde voor veel problemen bij studenten, maar was eigenlijk niet erg relevant voor de rest van de cursus. Ook logaritmes zijn subtiel weggewerkt uit de cursus.

Doorheen de cursus merken we ook dat de focus op bewijzen fel verminderd is. Hier en daar wordt nog wel aangetoond hoe men aan een formule komt, maar de vaardigheid heeft duidelijk aan belang ingeboet. Als er op het examen ook geen vragen over bewijzen meer komen, winnen studenten hier inderdaad opnieuw wat tijd. Dat verklaart ook ineens waarom er minder geoefend wordt op rekenen met sommatietekens (en dan vooral dubbele sommatietekens). Die had je namelijk vooral nodig om bewijzen uit te werken.

De cursus van Prof. Van Mechelen bevatte ook opdrachten (los van de practica) die bij de theorie hoorden. Die hielpen zeker om de leerstof te verwerken, maar zijn niet overgenomen in het lesmateriaal van prof. De Roover. Ook daar moeten studenten dus geen tijd meer insteken. (Wie toch benieuwd is, kan de vragen terugvinden onder de tab "Oplossingen" op deze site.)

We kunnen dus concluderen dat prof. De Roover vooral tijd heeft proberen te besparen op de wiskundige achtergrond, om zo toch voldoende tijd aan de statistische leerstof te kunnen besteden. Die is namelijk wel grotendeels gelijk gebleven, al merk je hier en daar ook wel enkele besparingen. Zo moeten formules voor somvariabelen nu niet meer gekend zijn voor variabelen, maar zijn de formules uitgewerkt voor het concrete geval van twee of drie variabelen. Ook Tchybychev moet het nu stellen met één formule in plaats van twee.

Veel is er verder niet veranderd. Er zijn nieuwe practicumopgaven die qua vorm nu een voorproefje zijn van de meerkeuzevragen die we op het examen mogen verwachten. Nochtans was het proefexamen (op het meerkeuze aspect na) heel gelijkaardig aan proefexamens van prof. Van Mechelen. Het is duidelijk dat de nieuwe docent dus vooral voor continuiteit gaat.

Nu is het vooral afwachten hoe haar eerste examen er zal uitzien. Gaat er nog iets gevraagd worden van verzamelingenleer? Gaat er nog een bewijs inzitten? Waarschijnlijk zal het antwoord tweemaal nee zijn. We weten ondertussen wel dat er een formularium aan het examen zal toegevoegd worden, maar dat gaat enkel over het deel rond statistische modellen, niet over de rest van de cursus.

We weten natuurlijk allemaal uit het tijdperk van prof. Van Mechelen dat de grote moeilijkheid van het vak niet echt in de inhoud zat, maar wel in de manier van verbeteren. Afwachten dus wat de moeilijkheidsgraad van het echte examen zal zijn, hoeveel meerkeuzevragen er zullen zijn t.o.v. de open vragen en hoe die open vragen verbeterd zullen worden.

Variantie en i.i.d.

Wie het laatste hoofdstuk van deel 1 bestudeerd heeft, weet ondertussen waar i.i.d. voor staat: independent and identically distributed. Als en onafhankelijk zijn, geldt dat:

Als ze identiek verdeeld zijn, weten we dat hun verdelingsfuncties (kansmassafunctie of dichtheidsfunctie) exact hetzelfde zijn, en dat het dus weinig zin heeft om nog een subscript te gebruiken:

Hoe kunnen we dat nu toepassen op varianties? Stel dat we willen berekenen waarbij en i.i.d. zijn. Dan beginnen we zoals altijd met de rekenregels van somvariabelen toe te passen:

Normaal moeten we hier stoppen, maar met het extra gegeven van i.i.d. kunnen we nog verder gaan. Uit onafhankelijkheid volgt dat , en dus ook dat :

We zijn er nu bijna, maar nog niet helemaal. We hebben al iets met de eerste i gedaan, maar nog niet met de tweede. Als en identiek verdeeld zijn, zijn ook al hun statistische maten gelijk. Dus en . Zo komen we finaal tot:

We kunnen dit ook uitbreiden naar i.i.d. Dan krijgen we:

Als krijgen we tot slot:

Hervorming statistiek

Sinds vandaag staat het nieuwe programmaboek voor academiejaar 2023-2024 online. Daarmee worden de details van de bachelorhervorming officieel naar buiten gebracht. Die hervorming draait vooral rond de vernieuwing van de opleidingsonderdelen statistiek naar aanleiding van het emeritaat (pensioen) van prof. Van Mechelen. Hoewel de professor afgelopen academiejaar ook al afwezig was wegens een sabbatjaar, was er tot nu toe eigenlijk nog niet veel veranderd.

Hoe het was

Tot voor kort werden in de Bachelor Psychologie drie verplichte opleidingsonderdelen statistiek aangeboden:

  • fase 1, semester 1
    • Statistiek voor psychologen, deel 1, met practicum (8 stp.)
  • fase 2, semester 2
    • Statistiek voor psychologen, deel 2, met practicum (8 stp.)
  • fase 3, semester 2
    • Statistiek voor psychologen, deel 3, met practicum (3 stp.)

Alle drie vakken - 19 studiepunten in totaal - werden gedoceerd door prof. Van Mechelen. Afgelopen academiejaar werden zijn taken door volgend didactisch team overgenomen:

  • Marre Vervloet - docent
  • Clara Mertens - vragencolleges
  • Katrijn Cnudde - practicumcoordinator

What's new

De drie bovengenoemde vakken zijn vervangen door 20 studiepunten verdeeld over vier nieuwe vakken. De voornaamste structurele wijziging is dat het oude deel 2 van 8 studiepunten uit elkaar is gevallen in twee vakken van 4 studiepunten. Verder krijgen computationele vaardigheden (i.e., werken met statistische software) duidelijk meer aandacht.

  • fase 1, semester 1
    • Statistiek voor psychologen, deel 1: Beschrijvende en inductieve statistiek (7 stp.)
      • prof. Kim De Roover
        • nieuwe prof
  • fase 2, semester 2
    • Statistiek voor psychologen, deel 2: Inductieve statistiek (4 stp.)
      • prof. Eva Ceulemans
        • doceert reeds statistiek voor pedagogen 1, 2 en 3
      • Clara Mertens (plaatsvervanger)
        • verzorgde eerder al de vragencolleges van deel 1
    • Statistics for Psychologists, part 3: Computational Statistics (4 stp.)
      • prof. Wolf Vanpaemel
        • doceert reeds statistiek 5 en 6 in de Master Psychologie
  • fase 3, semester 2
    • Statistics for Psychologists, part 4: Data Analysis (5 stp.)
      • prof. Francis Tuerlinckx
        • doceert reeds statistiek 4 en 5 in de Master Psychologie

Verder valt op dat:

  • Methoden 1 van 4 naar 5 studiepunten gaat
  • Psychometrie van 7 naar 6 studiepunten gaat
  • Psychologen aan het werk (5 stp.) omgevormd werd tot De psycholoog in de organisatie (4 stp.)

Logischerwijze volgt binnen drie jaar een hervorming van het masterprogramma. De huidige vakken statistiek 4-6 moeten minstens hernoemd worden naar statistiek 5-7.

Vergelijking oude met nieuwe deel 1

Het eerste dat opvalt is de reductie van 8 naar 7 studiepunten. Op basis van de beschrijving in de ECTS fiches lijkt het er op dat het deel rond optimale voorspelling zal sneuvelen en verkassen naar het nieuwe deel 4. Verder zijn de twee vakken op papier heel gelijkaardig.

Tot slot zal ook de evaluatie lichtjes veranderen:

(oud) Schriftelijk gesloten boekexamen; halfopen vragen waarbij men een getal, een kort stuk tekst of een tekening moet invullen (vaak met een korte, precieze verantwoording) naast een beperkt aantal meerkeuzevragen.

(nieuw) Schriftelijk gesloten boekexamen; meerkeuzevragen met giscorrectie naast een beperkt aantal halfopen vragen waarbij men een getal, een kort stuk tekst of een tekening moet invullen (vaak met een korte, precieze verantwoording)

De tekst is bijna hetzelfde, maar de meerkeuzevragen nemen een prominentere plek in. Merk op dat prof. Van Mechelen al lang geen meerkeuzevragen meer gebruikte op zijn examens.

Vergelijking oude met nieuwe deel 2

Het eerder theoretische oude deel 2 van 8 studiepunten moet plaats maken voor een kleiner vak van 4 studiepunten. Wellicht wil men de leerstof eerder hands-on uitleggen met software in het nieuwe deel 3 en 4.

Ook hier dezelfde opmerking als bij deel 1 over de evaluatie:

(oud) Schriftelijk gesloten boekexamen (met mogelijkheid tot gebruik van formularium); grotendeels open vragen naast een klein aantal vragen met een beperkte antwoordmogelijkheid.

(nieuw) Schriftelijk gesloten boekexamen; meerkeuzevragen met giscorrectie naast een beperkt aantal halfopen vragen waarbij men een getal, een kort stuk tekst of een tekening moet invullen (vaak met een korte, precieze verantwoording)

Opnieuw ligt het accent meer dan vroeger op de meerkeuzevragen. De vermelding van het formularium werd in de nieuwe tekst geschrapt, maar in de ECTS fiche staat ook dat een formularium en een rekenmachine als leermateriaal mag gebruikt worden bij de evaluatie. Op dat vlak geen verandering dus.

Vergelijking oude met nieuwe deel 3

Deel 3 (3 stp.) ging tot voor kort over het leren werken met SPSS (Statistics Package for the Social Sciences). Qua theorie werd amper iets nieuw aangeleerd. Je moest gewoon de theoretische concepten uit deel 1 en 2 met een computer kunnen toepassen.

SPSS valt nu blijkbaar weg en wordt vervangen door nieuwe software (JASP en R) in het nieuwe deel 3 (4 stp.). Terwijl je bij SPSS vooral met de grafische interface moet overweg kunnen, heeft statistiek met R veel weg van programmeren. (Geen paniek, de studenten logopedie & audiologie leren dat al jaren zo.)

Organisatorisch valt op dat dit deel schuift van fase 3 naar fase 2. Dat is op zich een goede zaak, aangezien de concepten van deel 2 (en in mindere mate deel 1) dan nog fris in je hoofd zitten.

Het nieuwe deel 4

Inhoudelijk gaat deel 4 (5 stp.) over ANOVA, lineaire regressie (i.e., optimale voorspelling) en logistieke regressie. Mogelijk komt lineaire regressie over uit het oude deel 1. Verder heeft dit inhoudelijk veel weg van het huidige statistiek 4 in de master. Afwachten wat voor effect dat in de toekomst op het masterprogramma gaat hebben...

Qua inplanning neemt dit vak ongeveer de plaats in van het oude deel 3 (fase 3, semester 2), maar inhoudelijk is het iets helemaal anders.

Conclusie

Nieuwe proffen, meer meerkeuzevragen op het examen, een meer hands-on aanpak, ... Dat zijn op het eerste zicht de highlights van deze hervorming.