Betinget sannsynlighet for å undersøke følsomme spørsmål

Hvor mange i klassen har jukset på en prøve? Hvordan kan en gjennomføre en slik spørreundersøkelse når kandidatene kan nøle med å svare riktig av frykt for konsekvensene? Ved å ikke være sikker på hvilket spørsmål de har svart på og i stedet bruke Bayes’ regel og betinget sannsynlighet for å estimere den rette andelen. Den første metoden for slike undersøkelser med randomisert respons ble beskrevet av Stanley Warner i 1965 og det har siden blitt laget ulike varianter.

Eksempler

La kandidaten for seg selv f.eks. trille en sekssidet terning. Dersom terningen viser 1, skal en svare på spørsmålet «Har du noen gang jukset på en prøve?». Dersom terningen viser en annen verdi, skal en svare på «Har du aldri jukset på en prøve?». Da kan en svare (mer) sannferdig, fordi spørsmålstilleren ikke vet hva den enkelte oppgir å ha gjort.

Med Bayes’ setning finner en sannsynligheten for å svare «Ja» i tilfellet over:

\begin{align*} P(\text{Ja}) &= P(\text{Har}) \cdot P(\text{juks|Har}) + P(\text{Har ikke}) \cdot P(\text{juks|Har ikke}))\\ P(\text{Ja}) &= \frac{1}{6} \cdot P(\text{juks}) + \frac{5}{6} \cdot (1-P(\text{juks}))\end{align*}

Dersom tre firedeler svarer «Ja» i denne undersøkelsen i en stor gruppe, hvor stor andel har da jukset?

\begin{align*}
P(\text{Ja}) &=\frac{1}{6} \cdot P(\text{juks}) + \frac{5}{6} \cdot (1-P(\text{juks}))\\
\frac{3}{4} &= -\frac{4}{6} P(\text{juks}) + \frac{5}{6}\\
P(\text{juks}) &= \frac{\frac{5}{6} – \frac{3}{4}}{\frac{4}{6}}\\
P(\text{juks}) & = \frac{1}{8}
\end{align*}

Simulering i python

Det beste er såklart å faktisk gjennomføre en slik undersøkelse, men det kan være vanskelig å få tak i mange kandidater. Ved å simulere undersøkelsen kan en få mange resultat og variere parameterne lett. Med en kjent sannsynlighet kan en undersøke hvor presis metoden blir.

import random

n = 100  # Antallet kandidater
p = 0.2  # Andelen som faktisk har jukset på en prøve
ja = 0
nei = 0
for i in range(n):
    r = random.random()
    if r < 1/6:
        # Har du noen gang jukset?
        if random.random() < p:
            ja += 1
        else:
            nei += 1
    else:
        # Har du ikke jukset?
        if random.random() < 1-p:
            ja += 1
        else:
            nei += 1

andel_ja = ja/(ja+nei)
andel_juks = ((5/6) - andel_ja)/(4/6)

print(f"{ja} ja og {nei} nei, ca {andel_juks:0.2f} sannsynlighet for juks.")
  • Hvordan påvirker antallet en spør presisjonen?
  • Hvordan endrer presisjonen seg med den teoretiske sannsynligheten? Blir metoden mer eller mindre presis om sannsynligheten er nær 0.5?
  • Hva om en bruker en terning med et annet antall sider, hvordan endrer det presisjonen?
  • I S2 kan en undersøke variansen til denne estimatoren og lettere avgjøre om presisjonen endres.

Andre metoder

  • Hvilken av alle disse metodene er mest presis? Simuler i python.
  • Dersom \(\frac{3}{5}\) av svarene er «Ja», hvor mange har brukt ulovlige rusmidler?

Mynt og krone

Kandidaten kan starte med å kaste en mynt. Dersom den viser «mynt», skal svaret uansett være ja. Dersom mynten viser «kron», skal en svare ærlig.

Trekke kort

Det er tre kort med mulige spørsmål:

  • «Er det en svart trekant på dette kortet?» (med svart trekant)
  • «Er det en svart trekant på dette kortet» (uten svart trekant)
  • «Har du brukt ulovlige rusmidler de siste 12 månedene?»

Underviser i matematikk, fysikk og naturfag på Tryggheim vgs.