AI – Aalborg Intelligence

Datarevolutionen er i gang og den digitale tidsalder har gjort data
mere tilgængelig end nogensinde før. Statistiske modeller og
datadrevne metoder er nødvendige for at kunne opnå viden og indsigt i de
stadigt voksende datamængder.
Det stiller krav til os alle. Begrebet “Data Science
Citizen” dækker bl.a. over evnen til at forholde sig kritisk til data
og konklusioner draget på baggrund af statistiske modeller.

I projektet “AI – Aalborg Intelligence”, som er støttet af Novo
Nordisk Fonden med 6 mio. kr., ønsker vi – med afsæt i og aftryk tilbage
til matematikfaget – at styrke gymnasieelevers kompetencer inden for
kunstig intelligens og de muligheder, som teknologien rummer. Torben
Tvedebrink, Mikkel Meyer Andersen og Lisbeth Fajstrup fra Institut for
Matematiske Fag, Aalborg Universitet, skal i projektet samarbejde med
de fem aalborgensiske stx-gymnasier (Hasseris, Katedralskolen,
Aalborghus, City og Nørresundby) om at udvikle et undervisningsforløb
som kombinerer AI og matematik, således at eleverne både får indsigt i
mulighederne med AI og styrker deres matematiske kompetencer.

Eleverne får mulighed for at se, hvor centrale matematiske begreber og
værktøjer er i udviklingen af avancerede AI-metoder og -algoritmer.
Projektet kommer til at styrke forståelsen af matematiske
funktioner og matematisk modellering.
Viden om hvorfor matematiske modeller er
nødvendige for at opnå indsigt i de komplekse, stigende datamængder,
styrkes sammen med evnen til at kunne navigere i strømmen af nyheder
baseret på sådanne modeller anvendt på data.

I “AI – Aalborg Intelligence” vil vi udvikle undervisningsressourcer i
form af noter, videoer og online interaktive apps sådan at
gymnasieeleverne selv kan lege og eksperimentere med AI-metoder. Ved
at “sætte vinduer i de sorte bokse” vil vi i de udviklede apps
tydeliggøre hvordan matematikken aktivt bruges i modelleringen af
data. Det vil være med til at gøre den abstrakte matematik mere
konkret og styrke motivationen for at tilegne sig de fornødne
matematiske kundskaber.

Ved afslutningen af det 4 årige projekt vil vi have udviklet et
undervisningsforløb, der kan inddrages i de eksisterende undervisningsplaner,
og som vil kunne udbredes til alle landets gymnasier.

Vi kan slet ikke vente med at komme i gang!

Torben, Mikkel og Lisbeth.

Kolde DNA hits

Rigspolitiet indstiller til at øge antal STR-markører for DNA-beviser til 16

Fornylig har danske medier bragt historien om at Rigspolitiet indstiller til at antal DNA-markører for DNA-beviser øges fra 10 STR-markører til 16 STR-markører. Forholdet mellem sandsynlighederne for sammenfald mellem to DNA-profiler falder med mere end en faktor 500,000,000.

Rigspolitiet: Opdatering af DNA profiler

Uddrag fra Rigspolitiets skrivelse:

Rigspolitiet har efter drøftelse med Rigsadvokaten den 21.10 2019 besluttet at skærpe retningslinjerne for opdatering af DNA-referenceprofiler, der er typebestemt efter 10 DNA-systemer. Denne typebestemmelse blev anvendt frem til 2012. Fra 2012 er der anvendt typebestemmelse efter 16 DNA-systemer.

DNA profiler

DNA betragtes med rette som et af de stærkeste beviser i opklaring af kriminalsager. I modsætning til fx fingeraftryk, giver forståelsen af den biologiske overlevering fra generation til generation mulighed for at modellere hyppighederne af en given DNA-profil, hvilket bruges for at kunne vurdere den bevismæssige vægt af et DNA-spor (Link til Advokatsamfundets tekst om DNA-beviser)

Når man taler om DNA-profiler til personidentifikation, som vil være tilfældet hvor man ønsker at undersøge om en given mistænkt kan knyttes til et gerningssted, benyttes oftest såkaldte short tandem repeat-markører der forkortes til STR-markører. STR-markører er veldefinerede steder på en persons DNA hvor der i populationen er observeret et tilstrækkelig stor variation individerne imellem. Dette gør at sandsynligheden for overlappende DNA-profiler er lille, hvilket igen gør at sammenfald mellem en mistænkts DNA profil og profilen fra et gerningssted er inkriminerende for den mistænkte.

DNA nedarves fra generation til generation ved at ét af morens kromosomer og ét af farens kromosomer giver anledning til barnets kromosompar (når vi ser bort fra rekombinations hændelser). Vi mennester har i alt 23 kromosompar, hvoraf de ene er kønskromosomerne (XX for kvinder og XY for mænd). På de resterende autosomale kromosomer kan man ved kun at betragte barnets DNA profil (også kaldet genotype) ikke afgøre hvilket kromosom som nedstammer fra moren og hvilket der nedstammer faren. En STR-markør kan antage et variabelt antal tilstande som kaldes alleler, hvor altså der arves én allel fra moren og én fra faren. Den typiske teknologi som benyttes til at analysere en DNA-profil angiver allelerne som heltal, fx (7,9) hvilket betyder at personen har arvet hhv allele 7 og 9 fra sine forældre. Tallele refererer til hvor mange gange en given DNA-sekvens er gentaget. Ofte er den gentagne sekvens af længde fire, fx ACAT hvor bogstaverne henviser til de fire mulige DNA-baser. Et allel 7 er derfor angivet ved ACATACATACATACATACATACATACAT. Vi kalder profiler med to forskellige alleler for heterozygote og homozygote hvis de nedarvede alleler fra forældrene er ens.

Indtil 2012 benyttede man i Danmark 10 STR-markører således at man havde 10 par af alleler. STR-markørerne er udvalgt til være statistisk uafhængige af hinanden. Ligeledes antager man ofte også uafhængig mellem allelerne inden for en given STR-markør. Det betyder at sandsynligheden for at observerer genotypen 2p_7p_9 hvor p_7 er allele frekvensen (hyppigheden) af allel 7 (tilsvarende for allele 9) og hvor faktoren på 2 skyldes at (7,9) kan fremkomme på to måder (idet vi ikke kan se hvilket allel der kommer fra hvilken forældre). Uafhængigheden mellem STR markørerne gør at vi kan gange bidragene fra de forskellige STR-markører sammen hvorved vi slutteligt opnår ganske små sandsynligheder for den specifikke DNA-profil, fx i størrelsesordenen 10^{-20}.

Usandsynlige hændelser?

Allerede i 2001 blev man i USA bekymret over at antageligt urelaterede personer havde nær sammenfald af DNA-profiler. Med nært sammenfald menes der at man enten matcher på begge alleler på en STR-markør eller matcher på ét af de to alleler. Har vi fx DNA-profilerne A = \{(7, 9), (11, 11), (13, 14)\} og B = \{(6, 8), (11, 12), (13, 14)\} vil de matche på én markør (den sidste hvor begge har alleler 13 og 14), delvist matche på den anden markør (overlapper på allel 11) og mismatch på den første markør (ingen alleler tilfælles). Weir (2004, 2007) beskrev hvorfor sådanne sammenfald ikke er overraskende selvom hyppighederne for DNA-profiler er ganske små. Han sammenlignende fænomenet med det såkaldte “fødselsdagsproblem”, som mange har stiftet bekendtskab med i deres introduktion til sandsynlighedsregning: Hvor mange elever skal man have i en klasse før sandsynsynligheden for mindst ét par har samme fødselsdag overstiger 50%?. Som det ses nedenfor (blå kurve) har man for 23 elever mere end 50% chance for to personer med samme fødselsdag. Det kan virke intuitivt forkert når nu året har 365 dage – men svaret er at vi ikke har angivet hvilken dato der er tale om. Fastholder vi datoen får vi den røde linje, hvilket er sandsynligheden at mindst èn anden har samme fødselsdag som fx dig. For den blå kurve laver vi alle parvise sammenligninger for eleverne, hvilket svarer til n(n-1)/2 sammenligninger som for n = 23 svarer til 253 sammenligninger.

Det samme gør sig gældende for DNA profiler i en database. Hvis vi undersøger sammenfaldet mellem hvert par af DNA-profiler bliver det lynhurtigt til rigtigt mange sammenligninger. I 2012 udgav vi en artikel hvor vi sammenlignede 51,517 danske DNA profiler som var genotypet på 10 STR-markører. For et par af DNA-profiler udledte Weir at for en enkelt markør er sandsynlighederne for forskellige grader af overlap givet ved:
P(\text{Mismatch}) = P_{0/0} = 1-4S_2+4S_3+2S_2^2 - 3S_4,
P(\text{Delvist match}) = P_{0/1} = 4(S_2 - S_3-S_2^2+S_4)
P(\text{Mismatch}) = P_{1/0} = 2S_2^2 - S_4,
hvor S_k = \sum_{a = 1}^A p_a^k, er summen af allel frekvenser opløftet i k’te.

Vi fandt efterfølgende en effektiv måde at beregne det forventede antal DNA profiler med m markører med fuldt match og p markører med delvist match (partial match). Dette kan også omregnes til at DNA profilerne har 2m+p alleler tilfælles. For de 51,517 DNA-profiler fandt vi at teorien og praksis stemte glimrende overens (afgivelserne for høje antal sammenfaldende alleler kan forklares af øget usikkerhed på små sandsynligheder samt der kan korrigeres for sub-populations effekter – det er undladt her.)

Foruden rene DNA-profiler optræder DNA-profiler ofte i blandinger af to eller flere DNA-profiler, hvilket kaldes DNA-miksturer eller DNA-blandinger. Det betyder at man ikke entydigt kan fastslå bidragsyderne til en given blanding, hvilket øger antallet af mulige DNA-profiler som skal sammenlignes. Risikoen for sammenfald mellem DNA-profiler vokser altså når man også tager DNA-blandinger i betragtning.

Effekten af at øge antal markører fra 10 til 16 STR-markører

I Rigspolitiets skrivelse indstilles der til at øge antallet af STR-markører fra 10 STR-markører til 16 STR-markører. Nedenfor ses hvordan sandsynlighederne påvirkes af at øge antal STR-markører på ovenstående udtryk. Risikoen for nær sammenfald af DNA-profiler mindskes altså betragteligt når antallet af mulige fælles alleler vokser til 32 fra 20. Faktisk er forholdet mellem P_{10/0} og P_{16/0} givet ved 545,969,753 – altså en faktor på mere end 500 mio.

Referencer

B.S. Weir (2004) Matching and partially-matching DNA profiles, Journal of Forensic Science 49 (5): 1–6

B.S. Weir (2007) The rarity of DNA profiles, Annals of Applied Statistics 1 (2): 358–370.

T Tvedebrink, P.S. Eriksen, J.M. Curran, H.S. Mogensen, N. Morling (2012) Analysis of matches and partial-matches in a Danish STR data set, Forensic Science International: Genetics 6 (3): 378-392

Mystiske hændelser i højere dimensioner

Tidlige computerspil var “flade” – karakterne kunne hoppe over, men ikke “til siden”. Nu er de naturligvis rumlige – på den flade computerskærm. Man kan så gå udenom i stedet for at forsøge at hoppe over. Men man kan stadig være fanget i et låst lokale. Hvis man har en fjerde dimension kan man bruge den til at “gå udenom”. Det er der nogen, der har lavet spil med – her er et forsøg, som muligvis ikke er realiseret:

Matematikere og anvendere af matematik har ikke noget problem med at tale om eksempelvis data i dimensioner højere end 3. For en gymnasieelev kan det lyde meget besynderligt og mange spørger “Er den fjerde dimension så tiden?” Men for daglige brugere af  modeller for fysik, biologi, økonomi og helt generelt højere dimensionalt data, er det slet ikke noget, vi overvejer.

Et punkt (1,-3,7,0,534,14) ligger for os i dimension 6, det 6-dimensionale rum. Der er nemlig 6 koordinater.  Vi kalder dette rum for \mathbb{R}^6 (udtales “r seks” og ikke “r i sjette”) At vi så ikke lige kan tegne det ind i et koordinatsystem er en anden sag. Man kan sagtens regne med 6 koordinater uden at tegne. I det følgende tænker jeg ind imellem på sådan et punkt som en vektor – fra Origo til (1,-3,7,0,534,14) – og ind imellem som et punkt.

Nedenunder er a = (a_1,a_2,\ldots, a_6) og b= (b_1,b_2,\ldots, b_6)

Addition og multiplikation med en skalar (et tal):

\mathbf{a+b}= (a_1+b_1,a_2+b_2,\ldots, a_6+b_6)

k\mathbf{a}=(ka_1,ka_2,\ldots,ka_6) (her er k et reelt tal.)

Afstand, vinkler, indre produkt.

Der er flere afstandsbegreber (metrikker), men den historie får I en anden gang. Her går vi med den Euklidiske version, som er den, de fleste er vant til. Jeg skriver alt i dimension 6, men det er naturligvis samme historie i dimension 238:

Skalarprodukt (indre produkt): \mathbf{a\cdot b}= a_1b_1+a_2b_2+\cdots +a_6b_6 – gang koordinater sammen parvis og læg resultaterne sammen.

Længden |\mathbf{a}|=\sqrt{\mathbf{a\cdot a}}

Afstand: Afstand mellem punkter er længden af vektoren, der forbinder dem: |\mathbf{a-b}|=\sqrt{\mathbf{(a-b)\cdot (a-b)}}

Vinkler: Vinklen v mellem a og b kan findes udfra

\cos(v)=\frac{\mathbf{a\cdot b}}{|\mathbf{a}||\mathbf{b}|}

Kugler og kuber.

Cirkler i planen og kugleflader i rummet med centrum C og radius r, er begge karakteriseret ved, at det er du punkter, der har  afstand r til et punktet C. Det kan umiddelbart generaliseres:

Kuglefladen med centrum i C=(c_1,c_2,\ldots,c_6)  og radius r er de punkter, der opfylder |\mathbf{x-C}| =r Med centrum i Origo og radius 1 får vi

S^5=\{\mathbf{x}\in\mathbb{R}^6 |\mathbf{x}|=1\}, de punkter i \mathbb{R}^6, som har længde 1. Hvorfor S^5 og ikke S^6? Fordi sådan en kugleflade har en dimension mindre – ligesom man kan have planer i \mathbb{R}^3. Den historie må også vente… Kuglefladen i \mathbb{R}^3 er altså S^2 og S^1 er en cirkel.

Rektangler og kasser kan også fint generaliseres. De punkter, der opfylder 0\leq x_1 \leq 5, 2\leq x_2\leq 4, -3\leq x_3\leq 5, 1 \leq x_4\leq 2, 1 \leq x_5\leq 2,1 \leq x_6\leq 2 er en kasse, et hyperrektangel om man vil.

Der er mere om kugleflader (kugler) i blogindlægget om kuglepakninger

Den “tesseract”, der vises i filmen ovenfor, er en kube i R^4, en hyperkube. Altså punkter (x_1,x_2,x_3,x_4), hvor alle koordinater ligger mellem 0 og 1. Ydersiden af sådan en kube er der, hvor mindst en af koordinaterne er enten 0 eller 1. En sædvanlig kube har 6 sideflader: (0,x_2,x_3) (1,x_2,x_3) (x_1,0,x_3) (x_1,1,x_3) (x_1,x_2,0) (x_1,x_2,1).

En hyperkube har 8 kuber på sin “overflade”: (0,x_2,x_3,x_4) (1,x_2,x_3,x_4)(x_1,0,x_3,x_4) (x_1,1,x_3,x_4) (x_1,x_2,0,x_4) (x_1,x_2,1,x_4) (x_1,x_2,x_3,0) (x_1,x_2,x_3,1). De hænger sammen – ligesom sidefladerne på en sædvanlig kube. Man kan selvfølgelig ikke se det i vores sædvanlige dimension, men man kan lave en film, hvor man ser projektionen af en roterende hyperkube:

En sædvanlig kube, der roterer kan vores hjerne straks lave 3d, selvom den er på en 2d skærm:

File:Hexahedron.gif

 

Kurver og kontinuitet.

Det går jo fint med at generalisere det, vi kender fra plan og rum. Nu prøver vi med kurver. vi skal jo snyde i et spil og komme ud af et lukket rum ved at bruge en dimension mere.:

 

En parametriseret kurve i \mathbf{R}^n er en funktion r: \mathbf{R}\to\mathbf{R}^nr(t)=(r_1(t),r_2(t),\ldots,r_n(t), funktionen tager én koordinat ind og giver n koordinater ud. Man kan også sige, at den består af n koordinatfunktioner.

Kontinuitet: Gymnasieintuitionen om “ikke at løfte blyanten” har det svært, når blyanten skal tegne noget i højere dimensioner. I får definitionen at tygge på, men faktisk kan jeg nøjes med sige r: \mathbf{R}\to\mathbf{R}^nr(t)=(r_1(t),r_2(t),\ldots,r_n(t) er kontinuert, hvis alle koordinatfunktionerne er kontinuerte.

Her er definitionen: r: \mathbf{R}\to\mathbf{R}^nr(t)=(r_1(t),r_2(t),\ldots,r_n(t) er kontinuert i $t_0$, hvis der til ethvert \varepsilon >0 findes et \delta>0, så |t-t_0|< \delta  garanterer, at |r(t)-r(t_0)|<\varepsilon

Jeg illustrerer, hvordan man kommer ud af et kugleformet rum – I kan selv oversætte til noget med kasser:

Hvis en 2d-computerspilsfigur er spærret inde i cirklen S^1 og kun kan bevæge sig i planen, så kan den ikke komme ud (uden at krydse gennem cirklen): Lad os antage, jeg har bevæget mig ud langs kurven (r_1(t),r_2(t)) startende med t=0 sluttende med t=1. Det er en kontinuert kurve (ellers kan alt lade sig gøre i det computerspil 🙂 ).

Så er |(r_1(0),r_2(0)|<1, fordi jeg begynder indenfor cirklen. Og |(r_1(1),r_2(1)|>1, fordi jeg ender udenfor. Nu påstår jeg, at der er et tidspunkt t_0, hvor |r(t_0)|=1. Hvorfor? Jo, den sammensatte funktion g(t)= |r(t)| er kontinuert og g(0)<1, g(1)>1. Så siger mellemværdisætningen, at der findes t_0, hvor |r(t_0)|=1.

Hvis den 2d-computerspilsfigur får sig en ekstra dimension, så kan den komme ud – den hopper over kanten:

  • Lad os starte i (0,0), som nu udvides med en dimension – vi starter i (0,0,0).
  • Første del af kurven er r(t)=(0,0,t) for t mellem 0 og 1.
  • Næste del er r(t) = (t-1,0,1) for t mellem 1 og 3 – nu er vi kommet til punktet (2,0,1).
  • Sidste del er r(t)= (2,0,4-t) for t mellem 3 og 4. Nu er vi i punktet (2,0,0) og vi folder den tredie dimension sammen igen.

Jeg passerer naturligvis igen et sted, hvor |r(t)|=1, men det er i punktet (0.0.1), som jo ikke ligger på cirklen. Jeg hopper over.

Hvis jeg er lukket inde i S^2 kan jeg komme ud med samme trick: Jeg starter i (0,0,0). Folder min fjerde dimension ud og er nu i (0,0,0,0). Den kontinuerte kurve ud er

  • (0,0,0,t) for t mellem 0 og 1. Så er vi i (0,0,0,1)
  • (t-1,0,0,1) for t mellem 1 og 3. Så er vi i (2,0,0,1)
  • (2,0,0,4-t) for t mellem 3 og 4. Vi ender i (2,0,0,0) of folder den fjerede dimension ind igen.

Der er naturligvis et tidspunkt, hvor |r(t)|=1, nemlig i punktet (0,0,0,1), men det er ikke på S^2, som er punkter  (x,y,z,0). Jeg er “hoppet over” via den fjerde dimension.

Har man knuder på snørebåndene eller på sit strikkegarn, kan man også have nytte af en fjerde dimension. Der kan alle knuder løses op…

 

Løgnedetektorer og screening for sygdomme

I årets valgkamp ville Ekstrabladet have politikere til at underkaste sig en løgnedetektor. Det ville politikerne ikke – og det er der mange gode grunde til. En af dem er, at løgnedetektorer ikke virker. Det er ellers så smart i de amerikanske film, i talkshows og andre steder, at man kan finde “sandheden” med sådan en test. Men det er der ikke noget belæg for. (Nedenstående er en delvis genudsendelse fra Numb3rs-bloggen, men mon ikke, mange har glemt det indlæg…)

I bogen The Lie behind the Lie detector er en lang udredning om problemerne ved løgnedetektorer. Man kunne ellers forestille sig at man ret let kunne lave kontrollerede forsøg, eller undersøge noget af alt det data, man har fra allerede udførte løgnedetektioner, og det har man  også gjort, men det giver ikke gode resultater. Problemet er bl.a., at de fysiologiske reaktioner, man måler, også kan komme fra andet, end at man lyver. Og det er meget vanskeligt at skille ad. Og så er vi jo et stykke væk fra noget objektivt. Se også The polygraph and lie detection.
Et andet problem er, at forskellige personer fortolker et løgnedetektorudkrift forskelligt – i en Nature artikel fra 1984 tog man 207 udskrifter fra løgnedetektorer i en stribe senere opklarede sager og fik dem analyseret af 14 andre løgnedetektoreksperter. Det gav dom til 43 % af de uskyldige og frikendelse til 36 % af de skyldige…

Det er selvfølgelig værst, at man risikerer at dømme en uskyldig, men i andre lignende situationer kan både falske positive og falske negative være problematisk. Tester man for en sygdom kan det være lige problematisk at sende raske personer igennem en behandling med bivirkninger som at overse nogen, som er syge.

Hvordan ved man, om en test er god?

En test for en sygdom skal jo finde de syge, men helst ikke udpege for mange raske som værende syge. Lad os sige, man har en positiv test, hvis den viser, man er syg.

Der er et antal falsk positive FP (raske, som tester positivt)

Et antal falsk negative FN (syge med en negativ test)

Et antal sandt positive SP( De syge med positiv test)

Og et antal sandt negative SN (raske med negativ test)

Specificitet er \frac{SN}{(SN+FP)}, andelen af de raske, som tester negativt, altså sandsynligheden for at testen viser, man er rask, givet man er rask,  P(testrask|rask).
Sensitiviteten er \frac{SP}{(SP+FN)}, andelen af syge, der tester positivt P(testsyg|syg).

Vi er mere interesserede i “den anden vej”:

Den positivt prædiktive værdi er \frac{SP}{(SP+FP)}, andelen af positivt testede, som rent faktisk er syge, sandsynligheden for at være syg, når testen viser, man er det, P(syg|testsyg).
Eller, man kan se på den negativt prædiktive værdi \frac{SN}{(SN+FN)}, andelen af negativt testede, der rent faktisk er raske P(rask|testrask).
De prædiktive værdier afhænger af, hvor stor en andel af de testede, der er syge, prævalensen. Og ikke kun af sensitivitet og specificitet.

Eksempel: En test har sensitivitet 0,86 og specificitet 0,92

På et hospital henvises folk, som mistænkes for at have  sygdommen, til test. På et andet er det en test, der laves på alle. Prævalensen i det første tilfælde er altså højere end i det andet tilfælde.

Hospital 1 er 37 ud af 49 patienter syge. (Prævalensen er 37/49=0,76)

SP=0,86×37=32,
SN=(49-37)x0,92=11,
FP=12-11=1,
FN=37-32=5.

Specificitet SN/(SN+FP)=11/12=0,92

Sensitivitet SP/(SP+FN)=32/37=0,86

Positiv prædiktiv værdi SP/(SP+FP)=32/33=0,97

Negativ prædiktiv værdi SN/(SN+FN)=11/16=0,69

Hospital 2 er 37 ud af 157 syge. Prævalens 0,24

SP=32, SN=110, FP=10,  FN=5,

Specificitet SN/(SN+FP)=110/120=0,92

Sensitivitet SP/(SP+FN)=32/37=0,86

Positiv prædiktiv værdi SP/(SP+FP)=32/42=0,76

Negativ prædiktiv værdi SN/(SN+FN)=110/115=0,96

Hvis man tester en stor befolkningsgruppe med få syge, vil den negative prædiktive værdi være stor, i.e., hvis man tester negativt, er man med stor sandsynlighed rask. Men dem, der tester positivt vil i mange tilfælde være raske, i.e., sandsynligheden for at være syg givet testen viser syg, er lille. (Tallene er fra How sensitive is sensitivity, how specific is specificity, Phillips, Scott og Blasczcynski, American Journal of Roentgenology. Prøv selv at regne på, hvod der sker, hvis der er 37 syge ud af 12037. Så bliver positiv prædiktiv værdi 0.03 og negativ prædiktiv værdi 0,99. Der er altså rigtig mange blandt dem, der tester positivt, som alligevel er raske – her 97 ud af 100. Det er det, man skal overveje, når man laver store screeninger for sygdomme. Der er flere raske, som skal undersøges yderligere, måske behandles og i hvert fald bliver unødigt bekymrede.

På Understanding Uncertainty er der en fin animation af andre eksempler.

Løgnedetektorer igen.
Lad os nu antage, at de kan finde løgnere med en vis sandsynlighed (det kan de ikke, men alligevel…). Tester man alle, der ansøger om job i FBI, CIA,… og det gør man…vil dem, der ser ud til at lyve, stadig med ret stor sandsynlighed tale sandt. I.e., mange får et stempel som spion, uden at være det. Dem, der udses som ikke værende spioner, er det med ret stor sandsynlighed ikke, men det er mere fordi, der er rigtig mange, der ikke er spioner, end fordi man er god til at finde spioner. Der vil jo stadig være en enkelt spion der slipper ind nu og da.

Vi kan være glade for, at vi ikke bruger metoden til noget seriøst i Danmark og håbe på, det forbliver noget, der hører til pjattede TV-programmer. Så fans af Doctor Phil eller  andre populære brugere af løgnedetektorer bør tage det med et gran salt. Udover det helt oplagte, at sårbare mennesker ikke bør være underholdning. Men det er ikke matematik – bare almindelig ordentlighed.

Abelprisen 2019 går til Karen Uhlenbeck.

Tirsdag blev årets Abelprisvinder annonceret i en live streamet begivenhed i Oslo.

Karen K.Uhlenbeck får prisen for sit nybrudsarbejde (de skriver “nybrottsarbeid” på norsk) indenfor geometriske differentialligninger, gaugeteori og integrable systemer. Og for den fundamentale indflydelse, hendes arbejde har haft i analyse, geometri og matematisk fysik.

Her fortæller Karen Uhlenbeck om Emmy Noethers arbejde. (Foto Andrea Kane, IAS,Princeton) Noether var  i 1928 en af hovedforedragsholderne ved den internationale kongress for matematiker, ICM. Den næste kvinde i rækken af hovedforedragsholdere ved ICM var Karen Uhlenbeck i 1990.

Karen Keskulla Uhlenbeck (f. 1944) har, ligesom de andre Abelprismodtagere, haft en lang karriere i matematik og der er mange fine interviews og portrætter af hende på nettet. På Celebratio.org er hun  portrætteret i et fint interview af Allyn Jackson. Der er i øvrigt andre fine matematikerportrætter.

Jeg kender Uhlenbecks matematik fra da jeg i mit speciale beskæftigede mig med Gaugeteori. Uhlenbecks “bubbling” var helt centralt i det, der dengang var det hotte emne, 4-dimensionale mangfoldigheder og nye ideer, som forbandt forskellige områder af matematik og Gaugeteori fra fysik. Jeg vil (og kan) ikke forklare Uhlenbecks arbejde i detaljer, men nybrud, som Abelpriskommiteen kalder det, er en god overskrift.

Minimalflader, variationsregning og bobler/instantoner.

Minima og maksima for funktioner kendes fra gymnasierne. Man skal differentiere funktionen og finde nulpunkter.

Variationsregning er et skridt videre: Det, der skal minimeres er et funktional, som er en funktion, hvis input er andre funktioner. Det klassiske eksempel er det brachistochrone problem: Lav den hurtigste kuglebane mellem to punkter. Kuglen lægges i det øverste punkt og er kun påvirket af tyngdekraften, mens den ruller til det andet punkt. Man ville måske gætte på en linje – det er sådan en pæn kurve – men den blå kurve nedenfor giver svaret.

Billedresultat for brachistochrone

Man skal altså se på alle de kurver, der findes fra A til B – kurverne er de variable, funktionen er den samlede tid.

Mere generelt ser man på den samlede energi. Der er her vide rammer for, hvad energifunktionalet kan være. Man kan faktisk også her differentiere og finde nulpunkter for den afledede, men det kræver mere maskineri. Og man får bragt partielle afledede ind i billedet.

Uhlenbecks PhD-afhandling, “The calculus of variations and global analysis”, 1968, er i dette område.

Mens det brachistochrone problem drejer  sig om alle kurver mellem to punkter, kan man i stedet se på flader (2-dimensionale objekter) mellem givne randkurver (tænk på sæbehinder)

Billedresultat for soap bubble minimal surface

OBS: Det er ikke det, der er Uhlenbecks “bubbling”.

Man leder her efter fladen med mindst areal. Trækker man ringene langt fra hinanden, får man to sæbehinder – en i hver ring.

I det mere generelle problem, som Uhlenbeck og Jonathan Sacks løste, har man flader i mere komplicerede rum end vores sædvanlige Euklidiske. En flade er da en funktion fra kuglefladen til dette mere komplicerede rum. De konstruerer en følge af sådanne afbildninger, som allesammen er “pæne” og kommer tættere og tættere på en ny flade – en grænse for følgen. Matematikstuderende har set den slags grænsefunktioner i indledende analyse.

Grænsefladen er en funktion, som er pæn, bortset fra i et endeligt antal punkter, singulariteter. Tæt på singulariteterne har man “bubbling”. Arealet af grænsefladen er mindre end forventet – det er ikke grænsen for arealerne af følgen. Noget af arealet er boblet af – som et stykke tyggegummi.

Metoden og ideerne har haft enorm indflydelse – grænser, der kan kontrolleres, bortset fra i endelig mange punkter, er ikke så ringe endda. Og bubbling giver en forståelse af singulariteterne.

Gauge Teori

(udtales som en engelsk port, “gage”) drejer sig i fysik om de fænomener, som ikke ændrer sig, selvom man skifter “koordinatsystem” – laver en gaugetransformation. Fysikerne Yang og Mills fik i 1999 Nobelprisen for det, de i 1954 havde foreslået som en model for den svage vekselvirkning og som udvidede de hidtil brugte “koordinatskift” (til ikke-abelske grupper for de indviede).

Det, der skal være uafhængigt af valg af koordinatsystem er nogle partielle differentialligninger.

Invarians under koordinatskiftet simplere eksempel:

“Vindretningen er NNØ (Nord Nord Øst), hvor jeg står” giver kun mening, hvis jeg har et koordinatsystem med retningerne. Men vinden har den retning, den har.

Billedresultat for vindretning danmark

Står man på Nordpolen, given NNØ ikke mening – der skal bruges flere koordinatsystemer for at beskrive retninger på Jorden, og tilhørende “oversættelser” fra et koordinatsystem til et andet.

Tilbage til Gaugeteori. Den kombination af partielle differentialligninger (Yang Millsligningerne)  og geometri (kugleflader, mere komplicerede flader og lignende højeredimensionale objekter – mangfoldigheder) kræver nye metoder og mod til at gøre noget i det ene matematiske område, som man aldrig har prøvet før. Uhlenbeck gav matematisk fast grund under fødderne i studiet af Yang Mills ligningerne. Bl.a. er bubbling fundamentalt. Uhlenbeck forklarer selv i interviewet med Allyn Jackson, at bubbling fungerer, når man har et problem, der er invariant under skalering – noget, hun allerede havde klarlagt i sin phd-afhandling.

Som den skarpsindige læser vil se, er Uhlenbecks arbejde ikke let at forklare. Hun har arbejdet mellem matematiske områder og kastet sig ud på det dybe vand imellem områderne.

Karen Uhlenbeck

Karen Uhlenbeck i Berkeley i 1969.

En anden side af Karen Uhlenbeck er hendes arbejde for at give matematikken videre. Hun startede, sammen med Dan Freed i 1996 Park City Mathematics Institute, PCMI, hvor bl.a. gymnasielærere og matematikere mødes. Det er flere parallelle sommerskoler og har haft stor betydning for mange, som er mødtes der. Der er en forskningsdel for phd-studerende og der er fokus på at give minoriteter i faget mulighed for at få fodfæste.

Karen Uhlenbeck har haft enorm indflydelse i både matematik som fag og blandt matematikere, og potentielle matematikere, hvor hun siger, hun håber, hun kan være rollemodel for de skæve eksistenser. Hun er rollemodel for mange, hun er en matematisk superstjerne og nu får hun Abelprisen. Det er jeg meget begejstret for.

Læs mere i Quanta Magazine  og på Abelprisens sider. Der er mange andre, men dem finder I nok, når I Googler.

Julekalenderanbefaling

Jeg er lidt sent ude, men det bliver jo jul alligevel.

Der kommer ikke julekalender her på bloggen. Men der er heldigvis andre, der tror, de kan holde dampen oppe og poste 24 indlæg med matematik. Så her skyder vi genvej og henviser til andre.

Først på tysk Mathe im Advent
Man skal vistnok tilmelde sig.
The Aperiodical har selvfølgelig en julekalender. Der er mange fine matematikhistorier og opgaver. Og naturligvis Møbiusbånd.

Matthew Scroggs, endnu en matematikformidler i Storbritannien, har opgaver og hovedbrud.

Plus Magazine har en. Med Podcasts.

Transum, som jeg ikke kendte i forvejen har også en – med opgaver.

Og så noget matlabkode forklædt som juletræ:

Koden finder I her.

I kan vælge forskellige parametre. Hvor mange kugler skal der på? Hvor skinnende skal kuglerne være… Uhyre nyttigt 🙂

Scutoiden- en ny byggeblok i biologi

En artikel i Nature Communications om et “nyt matematisk objekt” har givet genlyd. Scutoiden hedder den lille ny. Den kan ses på figur d, hvor to scutoider passer sammen (den grønne og den gule)

Fig. 1

Illustration fra Nature Communications.

Scutoider er (op)fundet af en gruppe forskere – biologer, dataloger, matematikere, som ville forstå, hvordan visse typer væv, epithelvæv, er opbygget. Den slags væv er lagdelt – eller pakket mellem nogle lag. Ifølge artiklen i Nature, er der epithel-celler, som forbinder celler i to (flade) lag. Det har man bl.a. set i bananfluer – drosophila.

File:Epithelium TCJ.pngBillede fra Wikipedia – cell junctions.

Hvis lagene ikke krummer, er der allerede en fin model, hvor de to lag forbindes med prismer og keglestubbe (a og b på første figur – frustrum er keglestub).

Men hvad nu, hvis lagene krummer? Som eksempelvis når væv er afgrænset omkring en blodåre, tarmene eller noget i den retning?

I hvert afgrænsende lag danner cellegrænserne Voronoiceller:

Billedresultat for cells form voronoi De røde prikker er centre. Et punkt i en “celle” ligger tættere på det røde punkt i cellen end på noget andet rødt punkt.

Sådan er det altid – uanset, om lagene krummer eller ej. Nu skal to sådanne lag forbindes. I modellen skal der laves en forbindelse fra hver Voronoicelle i det ene lag til hver Voronoicelle i det andet, som man ser i a) og b) i første figur. Når lagene er plane, har man hidtil kunnet gøre det med keglestubbe og prismer – fordi man i det tilfælde har lige mange kanter langs matchende Voronoiceller i de to lag.

Forestiller vi os nu, at de to lag er cylindriske med forskellig radius som i c) og desuden for at gøre det simplere, at cellekernerne ligger “samme sted” bortset fra radiuskoordinaten – mere præcist: Punkter i rummet kan beskrives med en radius, vinkel og en højde. Figuren nedenfor viser radius, vinkel og højde (\rho,\varphi, z). Cellekernerne på de to forskellige cylindere har altså samme (\varphi,z), men forskellig \rho

Hvad sker der så med Voronoicellerne? Bliver de ikke bare “ganget ud” med radius? Nej! For afstande mellem punkter på cylinderne bliver ikke bare ganget:

Afstande på en cylinder kan findes ved at “rulle cylinderen ud” til et rektangel og måle i planen.

Er cylinderen h høj og har radius r, er rektanglet h på den ene led og 2\pi r på den anden. Med samme højde og radius R er det h på den ene led og 2 \pi R på den anden. Og så ændrer Voronoicellerne sig kvalitativt. På billederne nedenfor, som Jakob Gulddahl Rasmussen har lavet til mig, er 6-kanten omkring det midterste punkt blevet til en 4-kant, når der strækkes på den ene led. Linjestykkerne er midtnormaler mellem par af punkter (på linjestykket er der lige langt til to af “cellekernerne”) og de slutter, når de møder andre midtnormaler. I kan lege med, hvordan det ændrer sig, når man strækker på den ene led, eller  når man flytter  i en af de mange apps, der findes. Her er en på University of Michigan. – Se mere på Numb3rsbloggen

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Og så kommer problemet: Man skal indsætte en forbindelse mellem celler med forskelligt antal kanter. Det kan ikke være en keglestub eller et prisme, for de har samme antal kanter i øverste og nederste flade. Det er her Scutoiden skal bruges. I figuren øverst ser man scutoider mellem femkanter og sekskanter. Den ene kant i scutoiden deler sig et stykke nede i to kanter. (Hvis man flytter delepunktet helt ned (eller op), får man et prisme, men det er ikke sådan, vævet opfører sig.)

Scutoidens sider er ikke plane – de krummer. Men det har vist sig, at det er sådan, det ser ud, når man kigger nærmere på en bananflue, eller hvad man nu har.

Scutoider bruges nu til at lave modeller for epithelvæv. Man gætter på, at de kan bruges til at lave kunstigt væv.

Man kan købe 3d-printede scutoider, der er artikler om scutoider her, der og allevegne. Jo, den lille ny er berømt.

Pair of Packable Scutoids 3d printed Order &quot;Small&quot; for hollow models or &quot;Large&quot; for (same size) solid models

Selvfølge har den uforlignelige Matt Parker lavet en video om scutoider. Med piberensere… Og interview med matematikeren bag.

Om det er ny matematik, kan man bestemt godt diskutere. Men det er ny indsigt og giver nye anvendelsesmuligheder i et samarbejde mellem mange fagområder. Det er da helt fremragende!

p-værdier, p < 0.05, og multiple testing

Lisbeth Fajstrup spurgte mig tidligere på året, om jeg kunne skrive et blogindlæg, som svarede på de to følgende spørgsmål: (1) hvorfor skal p-værdier være mindre end 5\% og (2) hvordan flere sammenligninger har indflydelse på p-værdien (også kaldt multiple testing problemet). Det er to gode spørgsmål, og i skrivende stund, mens vi er kommet godt ind i det nye år, har jeg endelig tid (taget mig sammen til at finde tiden) til at svare på de to spørgmål. Inden jeg gør dette, for at sikre vi alle er på samme side, introducerer jeg kort p-værdi konceptet, med den sædvanlige tunge definition og et kort eksempel. Hvis læser allerede ved hvad p-værdier er, kan dette afsnit nemt hoppes over. Hvis læser aldrig har hørt om p-værdier før og ønsker en mere fuldstændig introduktion, så se for eksempel the American Statistical Association’s artikel fra 2016.

Kort introduktion til p-værdier

Helt generelt defineres p-værdien som:

Sandsynligheden for at observere en teststørrelse der er ligeså eller mere ekstrem, end hvad der allerede er observeret, givet at nulhypotesen er sand.

For at illustrere, hvordan dette skal forståes, lad os tage et eksempel:
Lad os sige, at vi vil undersøge om befolkningen bakker op om Formel 1 ræs i København. Vores nul hypotese er at befolkningen hverken er for eller imod, altså at opbakningen er fifty-fifty. Alternativet er, at opbakningen er mindre eller større end 50\%, da vi ikke forud for undersøgelsen har indsamlet noget information.

Vi går ud i landet og spørger seks tilfældige personer. Det viser sig at alle seks personer støtter op om forslaget. Under nulhypotesen er sandsynligheden for at se seks observationer ‘imod‘ forslaget:

\mathbb{P}\left(6\text{ personer imod}\right)=\left(\frac{1}{2}\right)^{6} = \frac{1}{64},

 

og da vi ikke er forudindtagede, så er seks individer ‘for‘ forslaget lige så ekstrem en observation. (Og der kan ikke være observationer, som er mere ekstreme.) Dette medfører en p-værdi på:

p = \mathbb{P}\left(6\text{ personer imod}\right) + \mathbb{P}\left(6\text{ personer for}\right) = 2\cdot\frac{1}{64} = \frac{1}{32} = 0{,}03125.

 

Er dette nok til at forkaste nulhypotesen? Hvis vi skal spørge det hav af lærebøger der bruges i statistik undervisning, vil de sige, at nulhypotesen forkastes så snart p-værdien er mindre end 5\%. Perfekt! Alt er som det være, verden er flad placeret på ryggen af en skildpadde der står på ryggen af en større skildpadde.

Den udregnede p-værdi fortæller os ikke meget andet end, hvad vi kan læse af definitionen: Hvis nulhypotesen er sand, så er sandsynligheden for at trække en ny stikprøve, hvor andelen er mere ekstrem end den vi så ovenfor, lige over 3\%. Er tre procent nok til at vi ikke tror det er et tilfælde?

Hvis vi sætter en beslutningsgrænse (signifikansniveau) kan vi begå to typer af fejl:

  • Type I: Nulhypotesen forkastes selvom den er sand.
  • Type II: Nulhypotesen forkastes ikke selvom den er falsk.

Sætter vi beslutningsgrænsen i vores eksempel ovenfor til, at alle seks er ‘for‘ eller alle seks er ‘imod‘, før vi forkaster nulhypotesen, så er sandsynligheden for at begå en Type I fejl 3{,}125\% (p-værdien set ovenfor).

Sandsynligheden for at vi begår en Type II fejl vil afhænge af signifikansniveauet og den sande andel af populationen som er ‘imod‘ (eller ‘for‘) Formel 1 løb i København. Lad os se hvad der sker, når vi antager at sande andel af populationen som er ‘imod‘ er 0{,}25 (altså er andelen, der er ‘for0{,}75). Vi antager som ovenfor, at vi kun forkaster nulhypotesen når alle seks er ‘for‘ eller alle seks er ‘imod‘, givet dette signifikansniveau er sandsynligheden for at se seks observationer ‘imod‘ forslaget:

\mathbb{P}\left(6\text{ personer imod}\right) = \left(\frac{1}{4}\right)^{6},

 

og sandsynligheden for at se seks observationer ‘for‘ er:

\mathbb{P}\left(6\text{ personer for}\right) = \left(\frac{3}{4}\right)^{6}.

 

Dette giver en sandsynlighed for at begå en Type II fejl på:

1 - \mathbb{P}\left(\text{Type II fejl}\right) = \mathbb{P}\left(6\text{ personer imod}\right) + \mathbb{P}\left(6\text{ personer for}\right) = 0{,}17822,

 

hvor 1 - \mathbb{P}\left(\text{Type II fejl}\right) kaldes for den statistiske styrke af testen, og fortolkes som sandsynligheden for forkaste nulhypotesen, givet at den faktisk er falsk.

Det vil sige, at hvis den sande andel af populationen som er ‘imod‘ er 0{,}25, vil nulhypotesen ikke blive forkastet i knap 82\% af tilfældende, selvom den er falsk og  den sande andel ‘imod‘ forslaget endda ligger meget langt fra nulhypotesen, 50\%. Vi kan gøre det samme for enhver andel og resultatet kan ses i figuren nedenfor. Bemærk: figuren kun viser den første halvdel, da figuren er symmetrisk omkring 0.5.

 

Grunden til den høje sandsynlighed for Type II fejl i denne sammenhæng er valget af signifikansniveau og, hovedsageligt, det lave antal af observationer. Dette betyder at når vi designer et studie, (planlægger, hvor mange og hvem, vi skal spørge/teste/…,)  så prøver vi at finde en balance mellem tre størrelser: signifikansniveauet, styrken, og stikprøve størrelsen.

 

Hvorfor skal p-værdier være mindre end 5%, før de kaldes statistisk signifikante?

Ikke et specielt tilfredsstillende svar, men det er sandheden. Vi lærer vore elever og studerende det, fordi vi selv fik det at vide af vore undervisere. Dette svar, kombineret med at flere tidsskrifter i de seneste år har valgt at direkte afvise artikler der indeholder p-værdier, gjorde at ‘the American Statistical Association’ (ASA) i 2016 publiserede en artikel der redegjorde for, hvad p-værdier er og hvordan de bør fortolkes (en udmelding der fik, blandet andet, danske statistikere Claus Thorn Ekstrøm og Per Bruun Brockhoff, til at stikke hånden i vejret og proklamere: “Intet nyt under solen”). Det svarer dog ikke rigtigt på spørgsmålet: Hvorfor lige præcis 5\%?

Det simple svar er: fordi R. A. Fisher skrev det og hans ord lov. Fisher er en af de mest anerkendte statistikere, og bliver generelt betragtet som en af fædrene til moderne statistik. Et eksempel på Fishers brug af signifikansniveauet, kan ses i hans artikel fra 1926:

If one in twenty does not seem high enough odds, we may, if we prefer it, draw the line at one in fifty (the 2 per cent point), or one in a hundred (the 1 per cent point). Personally, the writer prefers to set a low standard of significance at the 5 per cent point, and ignore entirely all results which fail to reach this level. A scientific fact should be regarded as experimentally established only if a properly designed experiment rarely fails to give this level of significance.

Altså giver Fisher en følge af mulige signifikansniveauer efterfulgt af hans foretrukne niveau på 5\%. Lignende argument findes i hans bog ‘Statistical Methods for Research Workers‘ (1925), dog præsenteret ved standardafvigelser (for en normalfordelt teststørrelse svarer et signifikansniveu på 5\% til knap 2 standard afvigelser). Ydermere, indeholdt bogen tabeller til opslag af fraktiler af (bestemte) sandsynlighedsfordelinger, som indeholdte: 1\%, 2\%, 5\%, 10\%, 20\%,….

Det heller ikke vigtigt at signifikansniveauet lige præcist er 5\%, det er størrelsesordenen som er vigtig; det gør ikke den store forskel om signifikansniveauet er 4\%, 5\%, eller 6\%. Men denne størrelsesorden giver, i de fleste tilfælde, en god balance mellem den statistiske styrke og stikprøve størrelsen. Altså kan vi med et signifikansniveau omkring 5\% opnå en høj styrke uden at skulle indsamle en fuldstændig ekstrem stor stikprøve.

Hvorfor lærer vi så stadig vore elever og studerende, at signifikansniveauet bør være 5\%? Som jeg ser det er der tre grunde:

  1. Det leder, i de fleste tilfælde, til en god balance mellem andelen af Type I fejl, Type II fejl og størrelsen af stikprøven.
  2. Det gør det nemmere at sammenligne studier, hvis alle bruger det samme signifikansniveau og samme styrke.
  3. Det er nemmere at lære et stort antal elever en ‘kageopskrift’, end at få dem til at tage stilling til den andel af Type I og II fejl, de vil tillade i deres analyse.

 

Multiple testing problemet

Problemet opstår, når flere hypoteser testes på samme tid. Jo flere hypoteser der testes på samme tid, jo større er sandsynligheden for, at der opstår en fejl. Lad os i det følgende antage at andelen af acceptable Type I fejl er sat til 5\%.

Lad os eksempelvis sige, at vi i stedet for at teste et nyfundent stof x direkte for dens effekt på sygdommen s, derimod tester det for effekten på 100 forskellig symptomer. Ydermere, antag at nulhypotesen er sand i alle 100 tilfælde (altså at der ingen effekt er). Dette vil medføre et forventet antal Type I fejl på 5 (100 \times 5\%). Hvis de 100 hypotesetest, vi foretager, kan antages at være uafhængige, giver dette en sandsynlighed på 99{,}4\% for at se mindst en Type I fejl, (hvor vi altså konkluderer, at stoffet virker på mindst et af symptomerne) da: 1-(1-0,05)^{100}=0.994.

Sandsynligheden for mindst en Type I fejl, kaldes også ‘the familywise error rate‘ (FWER). Et oplagt spørgsmål er: hvordan kan vi sikrer at FWER er mindre end den acceptable andel af Type I fejl? Der har gennem årene været en del bud på løsninger til dette problem. Vi kaster et kort blik på den simpleste og mest anvendte procedure, Bonferroni korrektionen.

Lad p_i være p-værdien for hypotese H_i, så afvises H_i, i følge Bonferroni, hvis

p_i < \frac{\alpha}{I},

 

hvor \alpha er den acceptable andel af Type I fejl og I er det totale antal af hypoteser. I vores eksempel er \alpha = 0.05 og I = 100. Beviset for at Bonferroni korrektionen sikre FWER \leq \alpha er som følger:

\text{FWER} = \mathbb{P}\left(\bigcup\limits_{i=1}^{I}\left[p_i \leq \frac{\alpha}{I}\right]\right) \leq \sum_{i = 1}^{I} \mathbb{P}\left(p_i \leq \frac{\alpha}{I}\right) = I\frac{\alpha}{I} = \alpha,

 

hvor første ulighed holder ved Booles ulighed, der siger at:

\mathbb{P}\left(\bigcup\limits_i A_i\right) \leq \sum_i \mathbb{P}\left(A_i\right).

 

Bonferroni korrektionen er en særdeles konservativ metode, hvis der laves mange hypotese test eller p-værdierne er positivt korrelerede. Dette betyder at korrektionen foregår på bekostning af et større antal Type II fejl.

I de senere år, er dette blevet et problem ifm. ‘genome-wide association studies‘ (GWAS). Her testes forskellen i individers DNA baser (de byggesten vore kromosomer består af) for deres indflydelse på en sygdom eller et fænotypisk træk (så som hårfarve). Applikationer som denne, har ført til en række alternativer til Bonferroni korrektionen. Den mest anvendte her i blandt er ‘false discovery rate‘ (FDR), som blev formelt beskrevet af Yoav Benjamini og Yosef Hochberg i 1995, altså en forholdsvis ny metode i denne sammenhæng. Mere information kan findes på wikipedia siderne: ‘Multiple comparison problem‘, ‘Bonferroni correction‘, ‘False discovery rate‘, og ‘Genome-wide association study‘.

Sommerferie – og masser af matematik

Det er sommer og der er stilhed på bloggen. Mens I venter er her et tilbud:

På The Aperiodical har de The Big Internet Math-Off – inspireret af VM i fodbold, I presume. Det er knock out fra begyndelsen af. To matematikformidlere fortæller om deres yndlingsmatematik og der kan så stemmes. Her er et forslag: Jeg lover, at vi vil fortælle mere her på bloggen om mindst et af emnerne. (Eller måske bare give en dansk version – det er svært at konkurrere med Matt Parker og co.)

Her er de hidtidige indlæg:

James Tanton mod Nira Chamberlain.

Tanton: Om at skære en kage op og samle den igen og få kage tilovers – og lave uendelig meget kage.

Chamberlain: Om Formel 1 og hvordan Reynoldsligningen sikrer, hjulene ikke falder af.

Samuel Hansen mod Paul Taylor

Hansen: Hvorfor dine venner har flere venner, end du har (Link til Soundcloud) og hvordan det kan bruges til at stoppe epidemier.

Taylor: Hvordan kan man være helt sikker på, Pythagoras’ sætning holder (se linket ovenfor – det er ikke en video.)

Peter Rowlett mod Alison Kiddle

Rowlett: Parabolske kurver – herunder at tegne dem med rette linjer. Og tikz-kode, så du kan gøre det i LaTeX. Også en lille video

Kiddle: Hagas sætning – matematisk origami, om at folde et kvadrat og få delt siderne  i diverse brøkdele Se også Plus Magazine

Edmund Harriss mod Colin Wright

Harriss: Penrose fliselægning. Det har vi haft på bloggen før, men ikke med så fine fliser skåret i træ 🙂

Wright: Tag et spil kort og lav 13 bunker (med 4 i hver). Hvis der er alle kort es, 2,3,…, konge, (ikke nødvendigvis i rækkefølge)  er du færdig. Ellers: Kan du omorganisere hver bunke, så du ender med at have es,to,…, konge øverst? Svaret er, ifølge Wright, altid ja.

Tiago Hirth mod Evelyn Lamb

Hirth: Et rebtrick med Borromeanske ringe

 

Lamb: Wallis’ si og sammenhængen med \pi. (I familie med Sierpinskis tæppe, Mengers svamp,…) One level of the construction of the Wallis sieve Hun har mere om det på sin blog Det er et af en længere række af yndlingsobjekter (favourite spaces – svært at oversætte)

Matt Parker mod Matthew Scroggs 

Parker: Machine Learning med perler i æsker. En “maskine” lærer at spille kryds og bolle.

 

Scroggs: Om at spille Asteroids i en kortprojektion (han kalder det Mathsteroids). Blogmosteren her synes, det er supercool, men kortprojektioner er altså virkelig god matematik.

Her er spillet i Mercatorprojekttionen

Der er andre, som er mere udfordrende: Billedet her viser rette linjer i den projektion, der bruges i FNs logo.

FNs logo

James Propp mod Zoe Griffiths

Propp: Om knuder og rebtrick.

Griffiths: Sandsynlihedsteori og placering af passagerer i et fly

 

Jo Morgan mod Tony Mann

Morgan: Hexaflexagons. Med link til Vi Harts videoer om netop det. De har danske undertekster!

 

Mann: Om tilfældige tal og at score 100% til enhver eksamen (Njah, mon dog)

 

 

 

 

 

 

 

 

 

 

 

Om at blande kort

Dette indlæg er motiveret af https://fredhohman.com/card-shuffling/.

Opdateret 24/6-2018 10:20: Links til Numb3rs-bloggen tilføjet.

Spillekort skal blandes. En gængs måde at gøre det på, er at dele kortbunken i to mindre bunker af (ca.) samme størrelse og mikse de to bunker fra bund til top. På engelsk hedder det et riffle shuffle. (Jeg kender ikke det danske navn for denne måde at blande på.) Man kan overveje hvor mange gange dette skal gøres for bunken “er godt nok blandet” (for en passende definition af det). 7 gange er tilsyneladende nok (hvis man gør det rigtigt osv.). En matematisk model for denne måde at blande på er Gilbert-Shannon-Reeds modellen. Ovre på Numb3rs-bloggen er der mere om spillekort og matematik i dette indlæg. Bemærk at videoen (“7 gange er tilsyneladende nok”) er med Persi Diaconis som også omtales i Numb3rs-indlægget.

En mere simpel måde at blande på, er at tage det øverste kort og indsætte det et tilfældigt sted i bunken. Og sådan fortsætter man. Man kan nu stille sig selv det samme spørgsmål: hvor mange gange skal man gøre dette for at kortbunken er blandet “nok” (jf. ovenfor)?

Man kan vise (se fx 7 gange er tilsyneladende nok / https://fredhohman.com/card-shuffling/), at man i gennemsnit skal gentage en sådan simpel blanding 235 gange for at kortbunken er blandet “nok”. En del af svaret er, at bunken er blandet “nok” når bundkortet (det nederste kort i bunken inden man går i gang med at blande) har nået toppen af bunken og også selv er blevet blandet (dvs. flyttet til et tilfældigt sted i bunken).

I dette indlæg skal vi se, hvordan man kan opnå viden om eksempelvis sådanne processer ved at få computeren til at simulere mange, mange af sådanne blandinger og så registrere interessante egenskaber ved hver realiserede blanding. Denne fremgangsmåde kaldes for Monte Carlo-metoder og er et kraftfuldt værktøj indenfor statistikken. Man kan med en beskrivelse af den datagenererende process finde egenskaber for processen ved at få computeren til at realisere processen mange, mange gange.

Teoretiske resultater er ekstremt vigtige af mange årsager. Men det betyder ikke, at det er den eneste måde at opnå viden om processer på. Med Monte Carlo-metoden kan man dels kontrollere de teoretiske resultater, men ofte kan man faktisk opnå resultater som kan virke umulige at opnå teoretisk.

I dette tilfælde vil vi bruge Monte Carlo-metoden til at dels at finde det gennemsnitlige antal gange man skal blande før bunken er godt nok blandet. Det kan man også relativt let finde teoretisk (se ovenfor). Men man kunne også være interesseret i at finde fraktiler i fordelingen af antal blandinger. Så kan angive, at man i 95% af tilfældene skal blande mellem L og U gange før at bunken er blandet “nok”.

Den letteste måde at lave sådanne simulationer er på computeren med en random number generator (RNG), der kan generere tilfældige tal. Ofte må man nøjes med pseudorandom number generator (PRNG), men det er som regel også tilstrækkeligt. Og så skal man bruge et interface til denne PRNG således man kan få nogle tilfældige tal i beskrivelsen af processen. Ovre på Numb3rs-bloggen er der mere om tilfældige tal i dette indlæg.

Jeg vil her bruge R, der er et helt programmeringsmiljø (inkl. programmeringssprog) hovedsageligt anvendt til statistik, big data, maskinlæring, kunstig intelligens, dataanalyse m.fl. Det er et rigtigt godt vækrtøj at have i sin værktøjskasse. Rstudio er et fint IDE (integrated development environment) til R. Nedenfor bruges R’s sample-funktion til at trække tilfældige tal.

(Helt til sidst i dette indlæg kan I finde den komplette R-kode. Nedenfor kommer koden med output.)

Først skal vi have repræsenteret kortbunken:

> # C: Clubs / klør
> # D: Diamonds / ruder
> # H: Hearts / hjerter
> # S: Spades / spar
> faces <- c("C", "D", "H", "S")
> nums <- c("A", 2:10, "J", "Q", "K")
> 
> # Vores kortbunke: CA, C2, C2, ..., CQ, CK, DA, ..., DK, ...., SK
> # Denne genereres automatisk, men man kunne også gøre det manuelt:
> # pile_init <- c("CA", "C2") # Osv.
> pile_init <- unlist(lapply(faces, function(x) paste0(x, nums)))
> 
> # De første 6 kort i bunken
> head(pile_init, n = 6)
[1] "CA" "C2" "C3" "C4" "C5" "C6"
> 
> # De sidste 6 kort i bunken
> tail(pile_init, n = 6)
[1] "S8"  "S9"  "S10" "SJ"  "SQ"  "SK" 
> 
> # Antallet af kort i bunken
> length(pile_init)
[1] 52

Det er ikke så vigtigt hvordan bunken er blandet når vi går i gang. Vi skal egentlig bare holde styr på det sidste kort som her er “SK”.

Og så går vi i gang med at simulere 1,000 kortblandinger. Hver gang registrerer vi antallet af blandinger, der blev foretaget før bunken var blandet “nok”:

> # Funktion der simulerer én blanding
> simulate_process <- function() {
+   # Vi starter med en ny bunke
+   pile <- pile_init
+   
+   # En tæller til antallet af blandinger
+   rifs <- 0
+   
+   while (TRUE) {
+     # Registrer at der nu er bladet én gang mere
+     rifs <- rifs + 1
+     
+     # Tilfældig position som topkortet skal hen til
+     top_pos <- sample(x = seq_along(pile), size = 1)
+     
+     # Med sandsynlighed 1/52 ender det igen i toppen
+     if (top_pos == 1) {
+       #pile <- pile
+     } else if (top_pos == length(pile)) {
+       # Det kan også ende i bunden
+       pile <- c(pile[-1], pile[1])
+     } else {
+       # Eller et sted midt i mellem
+       pile <- c(pile[2:top_pos], pile[1], pile[-(1:top_pos)])
+     }
+     
+     # Hvis topkortet er bundkortet; 
+     # her kunne man også have skrevet
+     #   if (pile[1] == "SK") {
+     # men dette virker også selvom man ændrer pile_init
+     if (pile[1] == pile_init[length(pile_init)]) {
+       break
+     }
+   }
+   
+   # Topkortet (der er nu er det oprindelige bundkort)
+   # skal også blandes, men vi er ligeglade med hvor det ender
+   rifs <- rifs + 1
+   
+   return(rifs)
+ }
> 
> # Indstiller PRNG til samme tilstand for at kunne reproducere resultaterne
> set.seed(1)
> 
> # Simulér processen 1,000 gange
> riffles <- replicate(1000, simulate_process())
> 
> # De første 6 blandinger:
> head(riffles, n = 6)
[1] 249 191 205 280 189 314
> 
> # Gennemsnittet af antal blandinger
> mean(riffles)
[1] 234.757

Som I kan se får vi også at der i gennemsnit skal 235 blandinger til.

Men vores simulationer gør os i stand til at finde og vise fordelingen af antal blandinger:

> # Estimer fordelingen
> rif_dens <- density(riffles)
> 
> # Equal-tailed interval (begge haler har samme sandsynlighed)
> qs <- quantile(riffles, c(0.025, 0.975))
> 
> # Find x-værdierne
> x1 <- min(which(rif_dens$x >= qs[1]))  
> x2 <- max(which(rif_dens$x <  qs[2]))
> 
> # De centrale 95%
> rif_dens$x[c(x1, x2)]
[1] 144.2375 384.8943
> 
> plot(rif_dens)
> polygon(x = c(rif_dens$x[c(x1, x1:x2, x2)]), y = c(0, rif_dens$y[x1:x2], 0), col = "gray")
> abline(v = mean(riffles), lty = 2)

 

Altså vil man skulle forvente at skulle blande mellem 144 og 385 gange (og i gennemsnit 235) før at denne måde at blande på giver en bunke der er blandet nok.

(Hvilket nok er medvirkende til at jeg aldrig har set nogen praktisere denne form for kortblanding.)

Komplet R-kode:

# C: Clubs / klør
# D: Diamonds / ruder
# H: Hearts / hjerter
# S: Spades / spar
faces <- c("C", "D", "H", "S")
nums <- c("A", 2:10, "J", "Q", "K")

# Vores kortbunke: CA, C2, C2, ..., CQ, CK, DA, ..., DK, ...., SK
# Denne genereres automatisk, men man kunne også gøre det manuelt:
# pile_init <- c("CA", "C2") # Osv.
pile_init <- unlist(lapply(faces, function(x) paste0(x, nums)))

# De første 6 kort i bunken
head(pile_init, n = 6)

# De sidste 6 kort i bunken
tail(pile_init, n = 6)

# Antallet af kort i bunken
length(pile_init)

# Funktion der simulerer én blanding
simulate_process <- function() {
  # Vi starter med en ny bunke
  pile <- pile_init
  
  # En tæller til antallet af blandinger
  rifs <- 0
  
  while (TRUE) {
    # Registrer at der nu er bladet én gang mere
    rifs <- rifs + 1
    
    # Tilfældig position som topkortet skal hen til
    top_pos <- sample(x = seq_along(pile), size = 1)
    
    # Med sandsynlighed 1/52 ender det igen i toppen
    if (top_pos == 1) {
      #pile <- pile
    } else if (top_pos == length(pile)) {
      # Det kan også ende i bunden
      pile <- c(pile[-1], pile[1])
    } else {
      # Eller et sted midt i mellem
      pile <- c(pile[2:top_pos], pile[1], pile[-(1:top_pos)])
    }
    
    # Hvis topkortet er bundkortet; 
    # her kunne man også have skrevet
    #   if (pile[1] == "SK") {
    # men dette virker også selvom man ændrer pile_init
    if (pile[1] == pile_init[length(pile_init)]) {
      break
    }
  }
  
  # Topkortet (der er nu er det oprindelige bundkort)
  # skal også blandes, men vi er ligeglade med hvor det ender
  rifs <- rifs + 1
  
  return(rifs)
}

# Indstiller PRNG til samme tilstand for at kunne reproducere resultaterne
set.seed(1)

# Simulér processen 1,000 gange
riffles <- replicate(1000, simulate_process())

# De første 6 blandinger:
head(riffles, n = 6)

# Gennemsnittet af antal blandinger
mean(riffles)

# Estimer fordelingen
rif_dens <- density(riffles)

# Equal-tailed interval (begge haler har samme sandsynlighed)
qs <- quantile(riffles, c(0.025, 0.975))

# Find x-værdierne
x1 <- min(which(rif_dens$x >= qs[1]))  
x2 <- max(which(rif_dens$x <  qs[2]))

# De centrale 95%
rif_dens$x[c(x1, x2)]

plot(rif_dens)
polygon(x = c(rif_dens$x[c(x1, x1:x2, x2)]), y = c(0, rif_dens$y[x1:x2], 0), col = "gray")
abline(v = mean(riffles), lty = 2)