Transcript R / RStudio

R / RStudio
Intro til R / RStudio
R







R er et open source statstikprogram og programmeringssprog 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
40
60
80
100
120
140

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)
Erstattes 1 med 2 får man
fordelingen i hver søjle
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
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
0
5
10
x


15
20
0.00 0.06
dchisq(x, df = 8)
dchisq(x, df = 8)

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
0.00 0.06

0
5
10
x
15
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")
20
Simulation



0
30
0.06

Endnu et plot
0 5 10 15 20 25
> hist(sim,freq=FALSE)
sim
Histogram
of sim
> curve(dchisq(x,df=8),0,30,add=TRUE)
Density

Histogram of sim
100 200
Frequency

Man kan nemt simulere fordelinger
> sim = rchisq(n=1000,df=8)
> hist(sim)
Monte Carlo p-værdi
> mean(sim>=7.268769)
[1] 0.506
0 5 10
> abline(v=7.268769,lwd=2, col="red")
0.00

15 20 25 30
sim
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")