ST1301 Bioberegninger Jarle Tufto 30. november 2003
2
Forord Jarle Tufto Trondheim, 30. november 2003 3
4
Innhold 1 Introduksjon 7 1.1 Om kurset............................. 7 1.2 Hvorfor R?............................ 8 1.3 Eksempel på en enkel R-sesjon.................. 8 1.4 Mer om brukergrensesnittet til R under unix.......... 13 1.5 Brukergrensesnittet til R under windows............ 13 2 Mere om R 15 2.1 Operasjoner på matriser og vektorer............... 15 2.2 Andre datatyper......................... 15 2.3 Funksjoner............................. 15 2.4 Løkker............................... 15 2.5 Kontrollflyt............................ 15 2.6 Grafiske muligheter........................ 15 3 Generering av stokastiske variable 17 3.1 Introduksjon............................ 17 3.2 Transformasjoner......................... 17 3.3 Inversjonsmetoden........................ 17 3.4 Forkastningsmetoden....................... 17 3.5 Innebygde funksjoner i R for generering av stokastiske variable 17 4 Noen standard statistiske metoder 19 4.1 t-test................................ 19 4.2 Regresjon............................. 19 4.3 Variansanalyse.......................... 19 4.4 χ 2 -test............................... 19 5 Bruk av sannsynlighetsmaksimering 21 5.1 Generellt om statistiske modeller................ 21 5.2 Numeriske metoder for sannsynlighetsmaksimering...... 21 5
6 INNHOLD 6 Bootstrapping 23 7 Leslie matriser og stabil alderstruktur 25 8 Simulering av biologiske stokastiske prosesser 27 8.1 Genetisk drift........................... 27 8.2 Miljø og demografisk stokastisitet................ 27 8.3 Stabilitet og kaos......................... 27
Kapittel 1 Introduksjon 1.1 Om kurset Innenfor en del retninger av statistikkfaget er behovet for programmeringsferdigheter relativt store. I forbindelse med analyse av data, vil man som biomatematiker og statistiker særlig ha behov for å utføre ulike typer numeriske beregninger og å implementere ulike typer algoritmer for å simulere fra til dels kompliserte sannsynlighetsfordelinger. Da bachelorprogrammet i biomatematikk ble satt sammen sto valget mellom å legge inn et av Institutt for informatikks standard grunnkurs i programmering i første studieår eller å lage vårt eget kurs. Vi har valgt det siste fordi dette i langt større grad gir oss muligheten til å fokusere på programmeringsteknikker som vi som statiskere rent faktisk vil ha behov for. Det gir oss også muligheten til å velge et høynivå programmeringsspråk som er mer tilpasset den type beregninger vi som statiskere møter. Samtidig er tanken at vi samtidig vil kunne styrke forståelsen av viktige deler av brukerkursene i sannsynlighetsregning, statistiske metoder og matematikk ved å gjøre deler av stoffet i disse kursenen mer konkret og håndgripelig. Et standard grunnkurs i programmering vil være nyttig særlig i et senere masterstudiet når en skal jobbe med mer avanserte statistiske teknikker, men slik vi ser det kan et slikt kurs tas først når behovet melder seg i forbindelse med mastergrad. Dette kurset vil også kunne være interessant for masterstudenter i biologi og andre interesserte som ønsker å lære seg programmeringsferdigheter tilpasset den type problem en som masterstudent vil kunne møte i forbindelse med analyse av innsamlede data. Øvingene vil i praksis være den viktigste delen av kurset. ******************* 7
8 KAPITTEL 1. INTRODUKSJON 1.2 Hvorfor R? Når vi som statistikere skal trekke slutninger fra data, f.eks. fra en klinisk undersøkelse eller tidseriedata fra en populasjon ute i naturen, bygger vi slutningene på en statistisk modell. En slik modell representerer generellt et sett antakelser om de prosessene som har generert dataene. Hvilke antakelser vi finner rimelige varierer selvsagt fra situasjon til situasjon. I mange tilfeller vi modellantakelsene svare til standard statistiske modeller som variansanalyse, lineær regresjon, logistisk regresjon eller levetidsanalyse. I slike tilfeller kan vi benytte standard metoder for estimering og hypotesetesting under slike modeller. Slike standardmetoder finnes innebyggd i en rekke forskjellige statistiske programpakker som SPSS, SAS, Minitab, S-plus og i R som vi skal benytte i dette kurset. I andre tilfeller vil ikke de antakelsene vi finner rimelige svare til noen standard statistisk modell og metode. I slike tilfeller vil vi måtte analysere dataene ved hjelp av egenutviklede statistiske modeller som vi forsøker å skreddersy for den aktuelle situasjonen vi studerer. Programpakken R er velegnet til å utføre den type beregninger vi trenger å utføre i slike situasjoner. I biologi og medisin blir mye av teorien stadig mer matematisert og stokastiske, ikke-deterministiske modeller spiller en stadig viktigere rolle. For å oppnå innsikt i de dynamiske egenskapene til en modell vil vi ofte trenge å undersøke modellen ved hjelp av stokastisk simulering og numeriske beregninger på datamaskin fordi matematisk analyse av alle sider ved modellen blir for vanskelig. Også på dette området er R relativt egnet og vi har valgt å bruke R for begrense antall programpakker som studentene vil måtte sette seg inn i. R er også en fritt tilgjengelig programpakke med fritt modifiserbar kildekode som kan kjøres under alle vanlige operativsystemer som Unix, Linux, og ulike versjon av Microsoft Windows. Dette har gjort R til et attraktivt alternativ til tilsvarende kommersielle programpakker. Mye av nyere avanserte statistiske metoder utvikles og implementeres av ledende statistikere som tilleggspakker ( packages ) som kan kjøres under R. I bruk er R svært likt den kommersielle programpakken S-plus. R, ulike tilleggspakker, og mer informasjon om systemet er tilgjengelig fra http://www.r-project.org. Som student må du gjerne installere R på din hjemmemaskin. 1.3 Eksempel på en enkel R-sesjon Skriver vi R i unix-shellet blir vi møtt av av følgende: R : Copyright 2003, The R Development Core Team
1.3. EKSEMPEL PÅ EN ENKEL R-SESJON 9 Version 1.8.0 (2003-10-08) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type license() or licence() for distribution details. R is a collaborative project with many contributors. Type contributors() for more information. Type demo() for some demos, help() for on-line help, or help.start() for a HTML browser interface to help. Type q() to quit R. [Previously saved workspace restored] > Tegnet > (Rs kommandoprompt) vises når R venter på at vi skal gi en ny kommando. Det enkleste vi kan gjøre i R er å bruke programmet som en avansert kalkulator. Skriver vi > 10+10 returner R følgende: [1] 20 R kjenner alle grunnleggende regnearter som addisjon, subtraksjon, multiplikasjon, divisjon, potenser, o.s.v. Merk også at R bruker punktum og ikke komma som desimalskilletegn. > 10-5 [1] 5 > 6*5.1 [1] 30.6 > 100/3 [1] 33.33333 > 5^2 [1] 25 > sqrt(2) [1] 1.414214
10 KAPITTEL 1. INTRODUKSJON Objekter For å ta vare på resultatet av en beregning er det hensiktsmessig å lagre resultatet av beregningen på et eget navngitt sted i datamaskinens minne. Dette gjør vi ved å tilordne resultatet av uttrykket til et såkalt objekt. Hvis vi skriver > a <- 5+3 opprettes et objekt (en plass i datamaskinens minne) hvor verdien av uttrykket 5+3 lagres. Objektet får navn a. Operatoren <- kalles en tilordningsoperator. Vi kan så senere bruke resultatet av beregningen ved å inkludere a i nye uttrykk. F.eks. > a [1] 8 > a^2 [1] 64 Objekter av type vektor Uttrykk og objekter trenger ikke å være av typen enkle tall (skalarer) men kan også være av type vektor, matrise, o.l. For å opprette søylevektoren (5, 2, 1, 5, 6, 1) skriver vi: > x<-c(5,2,1,5,6,-1) Her tilordnes verdien av uttrykket c(5,2,1,5,6,-1) (en vektor) til objektet x. Ønsker vi å beregne summen av alle elementene i vektoren skriver vi: > sum(x) [1] 18 De fleste regneoperasjoner utføres elementvis for vektorer. Om vi oppretter en ny vektor y og legger denne til x får vi > y<-c(1,2,3,4,5,6) > z<-x+y > z [1] 6 4 4 9 11 5
1.3. EKSEMPEL PÅ EN ENKEL R-SESJON 11 Vi ser at resultat er en ny like lang vektor hvor elementene i vektoren z er gitt ved z i = x i + y i. Hvis vektorene er av forskjellig lengde vil den korteste resirkuleres. F.eks. vil vektoren c(2,3) i uttrykket nedenfor resirkuleres slik at annenhvert element opphøyes i henholdsvis 2 og 3: > x [1] 5 2 1 5 6-1 > x^c(2,3) [1] 25 8 1 125 36-1 Å beregne er 6 i=1 x 2 i er dermed enkelt: > sum(x^2) [1] 92 Her vil uttrykket xˆ 2 altså være en ny vektor med elementer lik kvadratet av elementene i vektoren x. Denne vektoren blir så argument til funksjonen sum. Beregning av enkle deskriptive observatorer som utvalgsgjennomsnitt og utvalgsvarians kan gjøres ved hjelp funskjonene sum og length: >sum(x)/length(x) [1] 3 > sum((x-sum(x)/length(x))^2)/(length(x)-1) [1] 7.6 Men R har selvsagt også innebyggde funksjoner for å utføre nettopp disse beregningene: > mean(x) [1] 3 > var(x) [1] 7.6 Mer informasjon om innebyggde funksjoner finnes ved først å starte hjelpesystemet med kommandoen > help.start() Hjelpesystemet vil da vises i nettleseren netscape eller mozilla. Hjelp om en bestemt funskjon finner en via oversikten i nettleser eller ved å skrive f.eks. > help(mean) i R-vinduet. Hjelpesiden for kommandoen mean vil da vises i nettleser (see fig. 1.1). Dersom R kjøres i ESS-mode under emacs, kan den være nødvendig å gi det ekstra argumentet html.help=t (h=t er tilstrekkelig).
12 KAPITTEL 1. INTRODUKSJON Figur 1.1: Hjelpesiden for kommandoen mean
1.4. MER OM BRUKERGRENSESNITTET TIL R UNDER UNIX 13 1.4 Mer om brukergrensesnittet til R under unix 1.5 Brukergrensesnittet til R under windows
14 KAPITTEL 1. INTRODUKSJON
Kapittel 2 Mere om R 2.1 Operasjoner på matriser og vektorer 2.2 Andre datatyper 2.3 Funksjoner 2.4 Løkker 2.5 Kontrollflyt 2.6 Grafiske muligheter 15
16 KAPITTEL 2. MERE OM R
Kapittel 3 Generering av stokastiske variable 3.1 Introduksjon Har vi en modell innebærer det at vi har gjort visse antakelser om hvordan dataene er fordelt. I en lineær regresjonsmodeller er f.eks. responsvariabelen Y i for den i te observasjonen normalfordelt med forventning a + bx i og varians σ 2. I denne modellen har estimatorene for de ulike parameterne kjente fordelinger. F.eks. er estimatoren for stigningstallet b, ˆb, student t-fordelt. I mer kompliserte modeller vil ulike estimatorer og observatorer ikke nødvendigvis ha fordelinger vi kjenner analytisk. 3.2 Transformasjoner 3.3 Inversjonsmetoden 3.4 Forkastningsmetoden 3.5 Innebygde funksjoner i R for generering av stokastiske variable 17
18 KAPITTEL 3. GENERERING AV STOKASTISKE VARIABLE
Kapittel 4 Noen standard statistiske metoder 4.1 t-test 4.2 Regresjon 4.3 Variansanalyse 4.4 χ 2 -test 19
20 KAPITTEL 4. NOEN STANDARD STATISTISKE METODER
Kapittel 5 Bruk av sannsynlighetsmaksimering 5.1 Generellt om statistiske modeller 5.2 Numeriske metoder for sannsynlighetsmaksimering 21
22 KAPITTEL 5. BRUK AV SANNSYNLIGHETSMAKSIMERING
Kapittel 6 Bootstrapping 23
24 KAPITTEL 6. BOOTSTRAPPING
Kapittel 7 Leslie matriser og stabil alderstruktur 25
26 KAPITTEL 7. LESLIE MATRISER OG STABIL ALDERSTRUKTUR
Kapittel 8 Simulering av biologiske stokastiske prosesser 8.1 Genetisk drift 8.2 Miljø og demografisk stokastisitet 8.3 Stabilitet og kaos 27