R / RStudio Intro til R / RStudio
R R er et open source statstikprogram og programmerings-sprog introduceret i 1993. Seneste version er 2.15.3 R kan downloades på www.r-project.org R er i udgangspunktet uden peg-og-klik Mere end 2000 pakker (udvidelser a la et plug-in) I det følgende tager vi udgangspunkt i Windows versionen. Der eksisterer versioner til Mac og Linux. For at få en smartere brugerflade skal I også installere Rstudio.
RStudio Sådan ser RStudio typisk ud første gang man starter det. Nederste vestre vindue er hvor man snakker direkte med R vha. tekst-kommandoer.
RStudio – lidt opsætning Det er nyttigt at ændre R’s standard-mappe. Vælg Tools → Options Under ‘Default working directory..’ vælg den mappe hvor I vil gemme filer relateret til R (fx. data)
Se data I min arbejdsmappe har jeg en data-fil der hedder mikrosundhed.dat liggende. Findes også på kursussiden. Hvis jeg åbner data-filen i Notepad ser den sådan ud: Data består af 5 kolonner, der hver svarer til en variabel. Bemærk: Variabelnavnet står øverst i række! Luk Notepad igen – ellers går det bare galt ;-)
Hent data ind i R Vi er nu klar til vores første kommando! På kommandolinjen skriv: mitdata = read.table("mikrosundhed.dat", header=TRUE) Dette læser data-filen ind i en tabel med navnet mitdata. Med tilføjelsen header=TRUE har vi angivet at variabelnavne er angivet i øverste række (aka header’en) i data-filen. Hvis kommandoen er korrekt indtastet er der nu skabt et objekt med navnet mitdata, der indeholder data. Workspace viser alle objekter.
Sådan ser data ud Vi kan se indholdet af data-objektet mitdata ved at klikke på
Et hurtigt overblik Man kan få en opsummering af tabellen vha. summary(mitdata) Resultat: For kategoriske variable: Frekvenser for hver kategori. For kvalitative variable: Mindste værdi, 1. kvartil, median, middelværdi, 3. kvartil, største værdi, og antal manglende værdier. NA = ”Not Available” – manglende observationer.
Den enkelte variabel. Man kan se hvilke variable tabellen indeholder vha: Vi vil se nærmere på vægt. Vi kan se indholdet af søjlen med navnet vaegt frem vha. mitdata$vaegt. Gør man det får man listet vægt for alle 2742 deltagere… lidt uoverskueligt! Vi kan få et overblik over vægt vha.
Spol frem og tilbage mellem plots Et par plot Histogram Boxplot
Numeriske opsummeringer Middelværdi Percentiler (standarden er 0%, 25%, 50%, 75%, 100%) Andre percentiler, fx. 5% og 95% Standardafvigelsen R vil ikke udregne gennemsnittet, når der mangler observationer.
Tabeller Vi kan nemt skabe en (kontingens)tabel for Ryger og Køn: > table(mitdata$koen,mitdata$ryger) Ryger Ryger ikke Kvinde 685 750 Mand 625 585 Vi gemmer lige tabellen til senere > tabel = table(mitdata$koen,mitdata$ryger)
Marginale fordelinger Vi kan tilføje de marginale fordelinger: > addmargins(tabel) Ryger Ryger ikke Sum Kvinde 685 750 1435 Mand 625 585 1210 Sum 1310 1335 2645
Rækkefordeling i procent Andelen af ryger/ryger ikke i hver række: > prop.table(tabel,1) Ryger Ryger ikke Kvinde 0.4773519 0.5226481 Mand 0.5165289 0.4834711 Sammen men i procent, så gang med 100: > prop.table(tabel,1)*100 Ryger Ryger ikke Kvinde 47.73519 52.26481 Mand 51.65289 48.34711 Erstattes 1 med 2 får man fordelingen i hver søjle
c2-test for uafhængighed Vi kan nemt udføre et c2-test for uafhængighed: > chisq.test(tabel) Pearson's Chi-squared test with Yates' continuity correction data: tabel X-squared = 3.8754, df = 1, p-value = 0.049 Bemærk at R automatisk bruger Yates’ kontinuiteteskorrektion da vi her tester i en 2x2 tabel.
Eksamensopgave: Goodness-of-fit
Eksamensopgave i R > data = c(265,115,44,85,55,7,136,313,76) > andele = c(0.248,0.095,0.049,0.092,0.05,0.008,0.123,0.268,0.067) > chisq.test(x=data,p=andele) Chi-squared test for given probabilities data: data X-squared = 7.2688, df = 8, p-value = 0.5079 De forventede værdier er tilgængelige: > chisq.test(x=data,p=andele)$expected [1] 271.808 104.120 53.704 100.832 54.800 8.768 134.808 293.728 73.432
Eksamensopgave i R - igen Beregn forventede værdier ”manuelt” > forventet = sum(data)*andele > forventet [1] 271.808 104.120 53.704 100.832 54.800 8.768 134.808 293.728 73.432 Beregn teststørrelse > sum((data-forventet)^2/forventet) [1] 7.268769 Find p-værdi > pchisq(7.268769,df=8,lower.tail=FALSE) [1] 0.5079317
Eksamensopgave i R - plot Plot a chi-i-anden- fordeling og teststørrelse > curve(dchisq(x,df=8),0,20) > abline(h=0,v=7.268769) ## Tilføj linjer Tilføj lidt farve: > c = curve(dchisq(x,df=8),7.268769,20,add=TRUE) > polygon(c(c$x[1],c$x,tail(c$x,1)),c(0,c$y,0),col="skyblue")
Simulation Man kan nemt simulere fordelinger > sim = rchisq(n=1000,df=8) > hist(sim) Endnu et plot > hist(sim,freq=FALSE) > curve(dchisq(x,df=8),0,30,add=TRUE) Monte Carlo p-værdi > mean(sim>=7.268769) [1] 0.506 > abline(v=7.268769,lwd=2, col="red")
R som regnemaskine Almindelige udregninger > 4.7*(2+3)^4 [1] 2937.5 Skabe et (skalar)objekt og se indhold > a=4 > a [1] 4 Skab et (vektor)objekt og se indhold > b=c(2,5,7) > b [1] 2 5 7
R som regnemaskine (fortsat) R regner elementvis: > a*b [1] 8 20 28 > a+b [1] 6 9 11 > b^2 [1] 4 25 49 Sum og produkt af elementer i vektor > sum(b) [1] 14 > prod(b) [1] 70
R hjælp Man kan få hjælp vha. ?<kommando> > ?sum Man kan få RStudio til at hjælpe med koammando-navne og options vha. Tab-knappen. Man kan også søge efter hjælp vha. > help.search("plot")