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")