R

R er et gratis statistikkprogram og er tilgjengelig både for Linux og Windows. Denne veildningen tar for seg bruk i Linux.

Hvordan starte R

Du starter R ved å gi kommandoen R i et shell-vindu (som xterm). Du vil så komme inn i R-modus der du kan gi ulike R-kommandoer.

Når du starter R ser det slik ut i xterm:

ingebol@zeebrugge ~ $ R

R : Copyright 2005, The R Foundation for Statistical Computing Version 2.1.1 (2005-06-20), ISBN 3-900051-07-0

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.

  Natural language support but running in an English locale

R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications.

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]

>

Hvordan avslutte R

Gi kommandoen quit() eller q() i vinduet (R Console i Windows):

 > q()
 Save workspace image? [y/n/c]: 

Hvis du ønsker å lagre det du har jobbet med (varibler og innhold) til neste gang du bruker R trykk: y, hvis ikke trykk: n.

Hvis du lagrer vil denne linjen komme opp neste gang du starter R:

 [Previously saved workspace restored]

Hvordan komme igang

R er en pakke som baserer seg på at du skriver ut ulike kommandoer/funksjonskall, mye likt Matlab. For de som kjenner statistikkprogrammet Splus, så er R svært likt Splus. De fleste kommandoer kan utføres på samme måte i R og Splus. Når du har startet opp R, vil du komme inn i en kommando-modus der symbolet ">" kommer opp. Etter dette symbolet kan du skrive ulike kommandoer.

Hvis du f.eks ønsker at variablen x skal inneholde tallet 10 skriver du:

 > x=10 

eller

 > x<-10 

NB: I R kan du bruke enten "=" eller "<-" for å tilordne variable, de fungerer helt likt.

R printer ikke automatisk ut resultatet når du tilordner variable. (x=10 i R fungerer som x=10; i Matlab) For å se på hva varibelen x inneholder må du skrive:

 > x

og du får da utskriften:

 [1] 10

Eksempler på bruk og nyttige funksjoner

R kan beregne det meste du trenger innenfor statistikk. Her er noen eksempler på vanlig bruk og funksjoner som er greie å vite om:

Lage en vektor

  • > z=c(1,2,3,4,5,6)

lager en 1x6-vektor med verdiene 10, 4, og 5

  • > dim(z)=c(2,3)
  > z
      [,1] [,2] [,3]
 [1,]    1    3    5
 [2,]    2    4    6

gjør om z til en 2x3-matrise

Gjennomsnitt og standardavvik

  • mean(z)

beregner gjennomsnittet til vektoren z

  • sd(z)

beregner standardavviket til vektoren z

Bruk av sannsynlighetsfordelinger

De vanligste sannsynlighetsfordelingene finnes i R. Blant annet:

  • norm(): normalfordelingen
  • beta(): betafordeling
  • gamma(): gammafordeling
  • binom(): binomialfordeling

Ved å prefikse fordelingsnavnene med en av bokstavene d,p eller r, kan du bruke funksjonene under:

  • tettheten/pdf: (d)
  • kummulativ tetthet/cdf (p)
  • trekke fra fordelingen (r)

Eks:

  • > x = rnorm(n)

lager en vektor x med n tilfeldige variable fra normalfordelingen med mean=0, sd=1 (dette er default hvis du ikke skriver inn mean og sd)

  • > rnorm(n,10,9)

trekker n tilfeldige variable fra normalfordelingen med mean=10, sd=9

  • > pnorm(5,1,0.5)

gir sannsynligheten for at en variabel er <=5 i normalfordelingen med mean=1 og sd=0.5

Lage plott

  • > hist(x)

lager et histogram av x

  • > plot(x)

lager forskjellige typer plott av x (histogram, grafer, osv), avhengig av hva x inneholder.

Andre nyttige funksjoner

  • > summary(x)

Printer ut en kort statistisk beskrivelse av variabelen x. Hvis x er en vektor vil den bl.a gi standardavvik, median og gjennomsnitt til elementene i vektoren.

Vanlige problemer og løsninger

Error: syntax error

Dette er den vanligste feilen i R, og betyr at du har feil syntaks, dvs. du har skrevet inn en kommando som ikke er gyldig.

Eks:

  • Multiplikasjon
 > n=10
 > k=10n
 Error: syntax error

Her har vi glemt å bruke * mellom 10 og n for multiplikasjon. Rett syntaks er:

 > n=10
 > k=10*n
 > k
 [1] 100

  • Vektorer/arrayer

Tilordningen under ville vært rett i Matlab, men fungerer ikke i R

 > z=(1,2,3,4,5,6) 
 Error: syntax error

Rett syntaks er:

 > z=c(1,2,3,4,5,6)
 > z

[1] 1 2 3 4 5 6

Lage en .R-fil

Når du skal skrive store programmer i R blir det litt tungvint å skrive alt i kommandovinduet, og du har dessuten dårlige lagringmuligheter. Da kan det heller lønne seg å lagre kommandoene i en .R-fil (på samme måte som vi lager .m-filer i matlab). Du bruker din vanlige tekstbehandler (f.eks Emacs eller TextPad), og lagrer filen som filnavn.R. I filen skriver du kommandoene på vanlig måte på hver sin linje. Alt som kommer etter tegnet # på en linje leses som kommentarer.

Eks:

Her er filen "eks.R" som jeg har laget i emacs:

 ##Dette er en eksempelfil

 y=c(10,9,50,100,6)	#lager en vektor med 5 verdier

 mean(y)		#finner gjennomsnittet
 sd(y)			#finner standardavviket

 y			#printer ut y
 print(y)		#du kan også skrive dette for å printe ut y	

 summary(y)		#skriver ut viktig statistisk info om y	
 plot(y)		#plotter y, plottene blir lagret i fila Rplots.ps i den mappa jeg er i.

 y2=y*5			#multipliserer alle elementer i y med 5.
 y2			#printer ut den nye vektoren

 ##Slutt på eksempelfil

Kjøre en .R-fil

Du må stå i den katalogen filen er lagret i når du kjører den. Min fil, eks.R, er lagret i katalogen termvakt. For å kjøre eks.R gjør jeg følgende i xterm:

 ingebol@brussel ~ $ cd termvakt
 ./termvakt
 ingebol@brussel ~/termvakt $ R --no-save <eks.R> utfil

Generelt kjører man R-filer slik:

 R [options] [<filnavn][>resultatfil]

Forklaring:

  • --no-save: ønsker ikke å lagre workspace.
  • --save: lagrer workspace til neste gang du bruker R.
  • utfil: filen resultatene mine blir skrevet i. utfil blir lagret i mappen termvakt, og ser slik ut:

 > ##Dette er en eksempelfil
 > 
 > y=c(10,9,50,100,6)	#lager en vektor med 5 verdier
 > 
 > mean(y)		#finner gjennomsnittet
 [1] 35
 > sd(y)		#finner standardavviket
 [1] 40.59557
 >  	
 > y		        #printer ut y
 [1]  10   9  50 100   6
 >
 > print(y)	        #du kan også skrive dette for å printe ut y	
 [1]  10   9  50 100   6
 >
 > summary(y)	        #skriver ut viktig statistisk info om y	
    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      6       9      10      35      50     100 
 > 
 > plot(y)		#plotter y, denne blir lagret som Rplots.ps i den mappa jeg er i. 	
 > 
 > y2=y*5		#multipliserer alle elementer i y med 5.
 > 
 > y2		        #printer ut den nye vektoren
 [1]  50  45 250 500  30
 >  

Lese data fra fil

I statistiske beregninger har man ofte bruk for å tolke store mengde data fra f.eks en tekstfil. I R kan du lese inn data fra tekstfiler blant annet med funksjonen read.table(). Under ser du filen "matpakke.txt"

 "klasse"  "antMatpakke" "antElever"
 1    	 	10	20
 2		8	21
 3		5	20
 4		10	25
 5		8	19
 6		1	24
 7		5	15

For å lese inn denne filen og legge all informasjonen i variabelen "mat" skriver jeg

>mat<-read.table("matpakke.txt", header=T)

"mat" inneholder nå:

 > mat
   klasse antMatpakke antElever
 1      1          10        20
 2      2           8        21
 3      3           5        20
 4      4          10        25
 5      5           8        19
 6      6           1        24
 7      7           5        15

Forklaring

 matpakke.txt: filnavnet
 header=T: første linje i filen skal tolkes som overskrift til kolonnene

Relevante linker og hjelp

Linker:

Annen hjelp:

I kommandovinduet:

skriv: help("funksjon du trenger hjelp til"), f.eks:

 > help(plot)
 plot                package:graphics                R Documentation

 Generic X-Y Plotting

 Description:

     Generic function for plotting of R objects.  For more details
     about the graphical parameter arguments, see 'par'.

 Usage:

     plot(x, y, ...)

 ......OSV.....