ST Bioberegninger, introduksjon Om kurset

Like dokumenter
ST1301 Bioberegninger. Jarle Tufto

Programmering i R. 6. mars 2004

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Notat 6 - ST februar 2005

Bioberegninger - notat 4: Mer om sannsynlighetsmaksimering

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre,

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.

ST1301 Bioberegninger - Introduksjon

Notat 2, ST januar 2005

Bioberegninger, ST november 2006 Kl. 913 Hjelpemidler: Alle trykte og skrevne hjelpemidler, lommeregner.

Notat 2, ST Sammensatte uttrykk. 27. januar 2006

Læringsmål og pensum. v=nkiu9yen5nc

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

Matematikk Øvingsoppgaver i numerikk leksjon 1 Løsningsforslag

Matematikk Øvingsoppgaver i numerikk leksjon 1. Løsningsforslag

Matematikk Øvingeoppgaver i numerikk leksjon 1 Å komme i gang

BYFE/EMFE 1000, 2012/2013. Numerikkoppgaver uke 33

Oversikt. Beskrivelse Bash. 1 UNIX shell. 2 Kommandolinje som brukergrensesnitt. 3 Input og output. 4 Bash builtins. 5 Linux utilities.

Notat 3 - ST februar 2005

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

TDT4105 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8)

Løsningsforslag øving 8, ST1301

TDT4110 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8)

Matematikk Øvingeoppgaver i numerikk leksjon 1 Å komme i gang

Bioberegninger, ST1301 Onsdag 1. juni 2005 Løsningsforslag

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Forelesningsinfo. Tider Mandag Tirsdag Onsdag Torsdag Fredag

Matematikk Øvingsoppgaver i numerikk leksjon 1. Løsningsforslag

UNIVERSITETET I OSLO

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

Introduksjon til Generaliserte Lineære Modeller (GLM)

oppgavesett 4 INF1060 H15 Øystein Dale Hans Petter Taugbøl Kragset September 22, 2015 Institutt for informatikk, UiO

Betinget eksekvering og logiske tester i shell

Kapittel 1 En oversikt over C-språket

Øving 12, ST1301 A: B:

Eksamensoppgave i TMA4267 Lineære statistiske modeller

Noen innebygde funksjoner - Vektorisering

Installere JBuilder Foundation i Mandrake Linux 10.0

Noen innebygde funksjoner - Vektorisering

Øvingsforelesning i Matlab TDT4105

Finne ut om en løsning er helt riktig og korrigere ved behov

Debugging. Tore Berg Hansen, TISIP

EGENDEFINERTE FUNKSJONER I SAS OG LITT OM OPEN SOURCE INTEGRASJON SAS FANS I STAVANGER , MARIT FISKAAEN (SAS INSTITUTE)

EKSAMEN I FAG TMA4315 GENERALISERTE LINEÆRE MODELLER Torsdag 14. desember 2006 Tid: 09:0013:00

Object interaction. Innhold. Abstraksjon Grunnleggende programmering i Java Monica Strand 3. september 2007.

Matematikk Øvingsoppgaver i numerikk leksjon 2 Funksjoner og plotting

Fra boka: 10.32, 10.33, 10.34, 10.35, 10.3 og (alle er basert på samme datasett).

Kapittel Oktober Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 14.

Matematikk Øvingsoppgaver i numerikk leksjon 4 m-ler

AlgDat 10. Forelesning 2. Gunnar Misund

Kom i gang med Python

Løsningsforslag øving 9, ST1301

Installere JBuilder Foundation i Windows XP

En innføring i MATLAB for STK1100

Begynnerkurs i Stata. UiO vår 2019, Knut Waagan 1 / 95

Matematikk Øvingsoppgaver i numerikk leksjon 2 Løsningsforslag

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Finne ut om en løsning er helt riktig og korrigere ved behov

Øvingsforelesning TDT4105 Matlab

Matematikk Øvingsoppgaver i numerikk leksjon 5 Løsningsforslag

Logistisk regresjon 1

Eksamensoppgave i TMA4267 Lineære statistiske modeller

Matematikk Øvingsoppgaver i numerikk leksjon 2 Løsningsforslag

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

Lynkurs i shellprogrammering under Linux

Notat 4 - ST februar 2005

Læringsmål og pensum. if (be): else (not_to_be):

år i alder x i tid y i i=1 (x i x) 2 = 60, 9

TDT4110 Informasjonsteknologi grunnkurs: Python: Repetisjon. Professor Alf Inge Wang

Forelesning inf Java 1

TDT4105 Informasjonsteknologi, grunnkurs

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3

som jobbet nærmest døgnet rundt i 18 måneder i Menlo Park i California for å forberede den neste bølgen innen computing.

Litt Java-historikk. Litt Java-historikk. Ulike varianter for ulike behov. Litt Java-historikk. The Green Team

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

TMA4100 Matematikk 1, høst 2013

TDT4110 Informasjonsteknologi grunnkurs: Eksempler. Mangekanter

UNIVERSITETET I OSLO

Innføring i R for humanister

Forelesning inf Java 1

Programmering i R - del 2

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk. - 3rd edition: Kapittel 3. Professor Alf Inge Wang

BYFE/EMFE 1000, 2012/2013. Numerikkoppgaver uke 34

Matlab-tips til Oppgave 2

UNIVERSITETET I OSLO

TDT4110 Informasjonsteknologi grunnkurs: Tema: Lister og tupler. - 3rd edition: Kapittel 7. Professor Alf Inge Wang

Kort overblikk over kurset sålangt

TMA4100 Matematikk 1, høst 2013

Oppgave 1: Forslag til løsning Bjørn Høyland 1/23/2019

SPSS Statistics-kurs 2014

Del 4 Noen spesielle C-elementer

Alternativ dag for teoriforelesning. Intro. Torsdag 12:15-14:00 R1

UNIVERSITETET I OSLO

10.1 Enkel lineær regresjon Multippel regresjon

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Unntak (exceptions) (Kap 6) Dictionaries (Kap. 9) Terje Rydland - IDI/NTNU

Øvingsforelesning 1 Python (TDT4110)

Transkript:

ST1301 - Bioberegninger, introduksjon Om kurset Stokastisk modellering: Biologiske prosesser er stokastiske (genetisk drift, mutasjoner, overlevelse, død, populasjonsdynamikk). Vi trenger stokastiske modeller (sett av antakelser) av disse prosessene Noen ganger kan vi komme fram til forståelse av hvordan modellene oppfører seg gjennom analytiske metoder Andre ganger ikke. Da kan modellens oppførsel studeres ved hjelp av simuleringer (f.eks. i R). Statistisk inferens: Hvordan trekke slutninger fra data? (Tema i brukerkurset i statistikk) Hva er en statistisk modell? Det finnes en rekke standard statistiske modeller og metoder som f.eks.: Lineær regresjon Variansanalyse Generaliserte lineære modeller (f.eks. logistisk regresjon) Levetidsmodeller (cox-regresjon) Beregninger for slike standard metoder kan gjøres med forskjellige standard programpakker som SPSS, Minitab, SAS, S-plus, og R. Hva gjør vi om våre modellantakelser ikke svarer til noen standard modell? Lager estimater ved å maksimalisere likelihoodfunksjonen numerisk... Finner fordelingen til estimatorene ved å simulerere data fra modell... Dette krever en del programmeringsferdigheter. 1

Hvorfor R? Høynivå språk som inneholder over 3000 statistisk relaterte funksjoner i base -pakken. I tillegg finnes en mengde tilleggspakker for håndtering av ulike statistiske metoder (mange i forskningsfronten). Relativt kompakt lesbar syntax. Interpretert språk (språket tolkes ved kjøring) (kompileres ikke før kjøring slik som f.eks. pascal, C). Vi kan jobbe mer interaktivt og se resultater mer umiddelbart. Programmet distribueres og modifiseres fritt under GPL lisens. Kan kjøres under de aller fleste operativsystem som Linux og andre Unix varianter, varianter av Microsoft Windows, Mac etc.. Last gjerne ned til egen hjemmemaskin! Svært likt det kommersielle produktet S-plus. I ferd med å etablerere seg som standardverktøyet til statistiskere innenfor akademia. 2

Grunnleggende bruk av R Starter vi R i ved å klikke på R-ikonet i windows blir vi møtt av følgende: R : Copyright 2003, The R Development Core Team 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. R kan brukes som en enkel kalkulator. Skriver vi > 10+10 returner R følgende: [1] 20 3

Elementære regneoperasjoner: > 1+2 [1] 3 > 3-4 [1] -1 > 3*2 [1] 6 > 5/6 [1] 0.8333333 > 2*(3+4) [1] 14 > ln(10) Error: couldn t find function "ln" > log(10) [1] 2.302585 > log10(10) [1] 1 > exp(-1) [1] 0.3678794 > sqrt(5) [1] 2.236068 > 5^3 [1] 125 Merk at R bruker punktum og ikke komma som desimalskilletegn (i likhet med engelsk). 4

Symbolske variabler 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 en symbolsk variabel. Skriver vi > a <- 5+3 opprettes et variabel (en plass i datamaskinens minne) hvor verdien av uttrykket 5+3 (tallet 8) lagres. Variabelen får symbolet (navnet) 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 R sitt workspace Variabler vi oppretter lagres i en del av minne kalt Rs workspace. Avlutter vi R (ved å skrive q() ) blir vi spurt om vi ønsker å ta vare på denne delen av minne ved å overføre dette til en fil på harddisken normal kalt.rdata i gjeldende katalog: > q() Save workspace image? [y/n/c]: Starter vi R på et senere tidspunkt vil innholdet av filen.rdata leses inn i workspace igjen slik at variabelen a igjen blir tilgjengelig. 5

Vektorer, elementvise regneoperasjoner, resirkulering Definering av vektorer med c(...): > weight <- c(60,72,57,90,95,72) > weight [1] 60 72 57 90 95 72 De fleste operatorerer virker elementvis på vektorer: > height <- c(1.75,1.80,1.65,1.90,1.74,1.91) > bmi<-weight/height^2 > bmi [1] 19.59184 22.22222 20.93664 24.93075 31.37799 19.73630 Merk at tallet 2 (en vektor av lengde 2) resirkuleres. Hva skjer her? > weight/height^c(2,3) [1] 19.59184 12.34568 20.93664 13.12145 31.37799 10.33314 6

Statistiske regneoperasjoner > sum(weight) [1] 446 > length(weight) [1] 6 > sum(weight)/length(weight) [1] 74.33333 Hvordan beregne empirisk standardavvik s gitt ved s 2 = 1 n (x i x) 2? (1) n 1 Vi bygger uttrykket gradvis: i=1 > xbar <- sum(weight)/length(weight) > weight-xbar [1] -14.333333-2.333333-17.333333 15.666667 20.666667-2.33 > (weight-xbar)^2 [1] 205.444444 5.444444 300.444444 245.444444 427.111111 5.44 > sum((weight-xbar)^2) [1] 1189.333 > sum((weight-xbar)^2)/(length(weight)-1) [1] 237.8667 > sqrt(sum((weight-xbar)^2)/(length(weight)-1)) [1] 15.42293 Disse funksjonene er selvsagt innebyggd i R: > sd(weight) [1] 15.42293 > mean(weight) [1] 74.33333 7

Grafikk > plot(height,weight,pch=2) > hh <- c(1.65,1.7,1.75,1.80,1.85,1,90) > lines(hh,22.5 * hh^2) weight 60 70 80 90 1.65 1.70 1.75 1.80 1.85 1.90 height Funksjonen lines trekker en linje mellom koordinatene gitt ved vektorene > hh [1] 1.65 1.70 1.75 1.80 1.85 1.90 > 22.5 * hh^2 [1] 61.25625 65.02500 68.90625 72.90000 77.00625 81.22500 8

Mer om språket R Interaksjon med R består i evaluering av uttrykk ( expressions ), eventuellt med tilordning til en ny eller eksisterende variabel. Et uttrykk består av funksjonskall, operatorer og referanser til variabler. Eksempler: > plot(height,weight,pch=2) > sum((weight-xbar)^2) > log(weight) Kall til noen funksjoner har sideeffekter (f.eks. kallet til funksjonen plot). Aktuelle og formelle argumenter ved funksjonskall height og weight er aktuelle (faktiske) argumenter i kallet til funksjonen plot. Funksjonen plot har x og y som sine første formelle argumenter. (Skriv help(plot) for å se.) Ved et kall til plot matches aktuelle med formelle argumenter enten på grunnlag av rekkefølgen til aktuelle argumenter (positional matching), f.eks., > plot(height,weight) eller på grunnlag av navn (named matching), f.eks. > plot(y=weight,x=height) Mange funksjoner har formelle argumenter med gode default verdier som blir valgt dersom argumentet ikke oppgis ved et funksjonskall. Hvis ingen argumenter: > ls() > q() 9

Tekststrengvektorer En vektor kan ha elementer som er tekststrenger > c("per","kari","idun") [1] "Per" "Kari" "Idun" Logiske vektorer Og en vektor kan ha elementer som tar verdiene FALSE eller TRUE. > c(t,t,f,f,t) [1] TRUE TRUE FALSE FALSE TRUE En logisk vektor er typisk hva vi får når vi evaluerer et logisk uttrykk: > bmi [1] 19.59184 12.34568 20.93664 13.12145 31.37799 10.33314 > bmi > 25 [1] FALSE FALSE FALSE FALSE TRUE FALSE Merk at operatoren > virker elementvis og at vektoren 25 (av lengde 1) resirkuleres. Manglende observasjoner Elementer i vektorer kan også ta verdien NA som brukes for å indikere en manglende observasjon (missing value). > sum(c(1,2,3,na)) [1] NA Forsøker vi å beregne noe som er umulig får vi element av typen NaN ( not a number ): > log(-1:3) [1] NaN -Inf 0.0000000 0.6931472 1.0986123 Mere hvordan R også håndterer pluss og minus uendelig som en verdi variabler kan ta (Inf). 10

Funksjoner som returnerer vektorer Funksjonen c (concatenate) kobler endende til sine argumenter sammen til én vektor: > a <- c(1,2,3) > b <- c(4,5,6) > c(a,b) [1] 1 2 3 4 5 6 Funksjonen seq (sequence) lager en vektor bestående av en sekvens tall, eventuell kan steglengden oppgis som tredje aktuelle argument: > seq(4,10) [1] 4 5 6 7 8 9 10 > seq(4,10,2) [1] 4 6 8 10 Hvis vi ønsker steglengde lik 1 kan kortformen > 4:10 [1] 4 5 6 7 8 9 10 brukes. Merk at operatoren : har høyere prioritet enn + : > 1:5+1 [1] 2 3 4 5 6 > 1:(5+1) [1] 1 2 3 4 5 6 Funksjonen rep (repeat) repeterer hele første argument et antall ganger bestemt av andre argument: > rep(c("a","b","c"),4) [1] "a" "b" "c" "a" "b" "c" "a" "b" "c" "a" "b" "c" Hvis begge argument er av samme lengde skjer følgende > rep(c("a","b","c"),c(3,2,1)) [1] "a" "a" "a" "b" "b" "c" 11

Matriser En matrise kan lages ved å ordne en vektor av passende lengde enten radvis eller kolonnevis ved hjelp av funksjonen matrix > matrix(1:12,byrow=true,ncol=4) [,1] [,2] [,3] [,4] [1,] 1 2 3 4 [2,] 5 6 7 8 [3,] 9 10 11 12 > matrix(1:12,byrow=f,nrow=3) [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 Antall rader eller kolonner spesifiseres med argumentet nrow eller ncol. Matriser kan også lages ved lime sammen vektorer kolonnevis med funksjonen cbind eller radvis med rbind: > cbind(1:4,11:14) [,1] [,2] [1,] 1 11 [2,] 2 12 [3,] 3 13 [4,] 4 14 > rbind(1:4,11:14) [,1] [,2] [,3] [,4] [1,] 1 2 3 4 [2,] 11 12 13 14 12

Lister Av og til trenger vi å lage ett objekt ut av en samling mindre komponenter. For funksjoner som beregner flere ting (f.eks. egenverdier og egenvektorer) er det ofte hensiktsmessig å returnere disse i form av en liste. Vi kan lage en liste ved hjelp av funksjonen list > kreft <- c(0,0,0,1,1,0) > roeker <- c(10,15,20,17,40,5) > datasett <- list(respons=kreft,behandling=roeker) > datasett $respons [1] 0 0 0 1 1 0 $behandling [1] 10 15 20 17 40 5 > datasett$respons [1] 0 0 0 1 1 0 > mean(datasett$respons) [1] 0.3333333 Her refererer datasett$responstil komponenten respons i listen datasett, på samme måte som vi referer til andre variabler. 13

Data frames Data frames ligner lister men elementene i hver bestanddel hører parvis sammen slik at datastrukturen også får en matrisestruktur: > datasett <- data.frame(respons=kreft,behandling=roeker) > datasett respons behandling 1 0 10 2 0 15 3 0 20 4 1 17 5 1 40 6 0 5 > datasett$respons [1] 0 0 0 1 1 0 Data frames brukes typisk som datastruktur for innsamlede forsøksdata og kan være argument til funksjoner som utfører f.eks. regresjonsanalyse (f.eks. funksjonen lm): > lm(respons~behandling,data=datasett) Call: lm(formula = respons ~ behandling, data = datasett) Coefficients: (Intercept) behandling -0.18723 0.02919 Regresjon behandles senere i kurset. 14

Indeksering Betrakt vektoren > roeker [1] 10 15 20 17 40 5 Både i vanlige uttrykk og i tilordningsuttrykk kan vi referere til bestemte element i vektoren ved å skrive > roeker[3] [1] 20 Mer fleksibel subsetting kan gjøres ved å la en vektor stå i klammeparantesen. Vektoren kan ha positive element: > roeker[c(1,2,4)] [1] 10 15 17 > roeker[2:6] [1] 15 20 17 40 5 > roeker[6:1] [1] 5 40 17 20 15 10 Negative element: > roeker[-2] [1] 10 20 17 40 5 Eller logiske element (mulig med resirkulering): > roeker[c(t,t,f,f,f,f)] [1] 10 15 > roeker[c(t,f)] [1] 10 20 40 > roeker[roeker>=20] [1] 20 40 > roeker>=20 [1] FALSE FALSE TRUE FALSE TRUE FALSE 15