Afsnit 1.2: Introduktion til R

R-logo fra https://www.r-project.org/logo/
I Introducerende statistik og dataanlyse med R skal du bruge programpakken R til at lave de numeriske beregninger. Du skal derfor hente og installere R på din egen computer. Den basale R-installation er glimrende til dette kursus. Nogle foretrækker også at installere Rstudio og køre R gennem denne. Rstudio kan virke lidt uoverskuelig til at starte med, hvorfor jeg anbefaler at holde sig til den basale installation. Udover at lave beregninger i jeres R-installationen kan I også afprøve nogle R-kommandoer gennem denne web-bog.
I kan tænke på R som en avanceret lommeregner med en simpel (intuitiv) syntax. R er særlig velegnet til analyse af data på grund af en vektor- eller array-baseret struktur.

R som simpel lommeregner

Kør nedenstående kommando, og prøv egne små regnestykker ved at ændre på koden. Kvadratroden af et tal udregnes som sqrt(tal) og den naturlige logaritme udregnes som log(tal). Tallet fås ved blot at skrive pi.
Tal kan placeres i variable som efterfølgende kan indgå i beregninger.
Prøv at tilføje x=x+3 efter første linje i ovenstående kodevindue. Hvad tror du, der sker?

Vektorer i R

I kodevinduet nedenfor dannes en vektor (liste af tal) ved brug af kommandoen . Bogstavet "c" står her for "combine", det vil sige "binde sammen". Operationer på vektorer foregår typisk elementvis, såsom sum af to vektorer eller produkt af to vektorer. Funktionen sum anvendt på en vektor giver summen af alle elementerne i vektoren. Prøv, at gætte på resultatet af nedenstående beregning inden du trykker på compute. Prøv selv andre beregninger med vektorer som for eksempel 3*x og x/y.
Et element, for eksempel det andet element, i en vektor kan findes ved at skrive x[2]. Vektoren, der består af tallene kan dannes med kommandoen c(3:9). Vektoren, der består af tre 1-taller efterfulgt af fire 2-taller, kan dannes med kommandoen rep(c(1,2),c(3,4)). Prøv igen, at gætte på resultatet af nedenstående beregning inden du trykker på compute.

Logiske udtryk i R

Gæt på, hvad du tror resultatet af nedenstående beregning bliver.
Prøv i stedet 3>2. Lad x=c(1:4), og udregn x>2, x==2 og x!=2. Prøv også at udregne henholdsvis sum(x>2) og sum(x[x>2]).

Forklaring

I R resulterer et logisk udtryk i enten "TRUE" eller "FALSE". I nogle situationer vil R opfatte "TRUE" som 1 og "FALSE" som 0, hvorfor vi kan addere disse. Når en TRUE/FALSE variabel indgår som indeks i en vektor, vil R lave en reduceret vektor, der kun indeholder indgangene med værdien "TRUE".

Illustration af sandsynlighed i R

Som det fremgår af definitionen af -værdi i afsnit 1.1, er dette begreb baseret på sandsynligheder. Her vil jeg lige minde jer om en måde at forstå sandsynligheder på. Når jeg kaster en (ærlig) mønt mange gange, forventer jeg, at frekvensen af krone vil være tæt på Når man siger, at sandsynligheden for krone er betyder dette, at hvis vi kaster mønten flere og flere gange, så vil frekvensen af krone komme tættere og tættere på Dette kan vi illustrere i R.
Prøv at køre koden. Hvad ser du? Prøv at ændre på prob i kaldet af sample.
Funktionen sample kan bruges til på simpel vis at simulere et kast med en terning. Kaldet sample(4,100,replace=TRUE) simulerer 100 kast med en firesidet terning. Resultatet er 100 tilfældige tal blandt 1,2,3,4. Generelt bruger jeg ordet simulation, når jeg beder R om at generere tilfældige udfald fra en fordeling.

Figurer i R

En af styrkerne ved R er, at vi nemt kan lave figurer af en god kvalitet. Nedenfor kan I prøve en plotkommando for at se nogle af mulighederne (brugen af plot er beskrevet i afsnit R.2).
Når I har kørt ovenstående kommando, prøv da, ved at kigge på figuren, at svare på følgende spørgsmål.
  1. Kommandoen c(1:7) laver en vektor med tal: hvilken?
  2. Kommandoen rep(1,7) laver en vektor med tal: hvilken?
  3. Angiv farverne der fremkommer ved tilføjelsen col=c(1:7).
  4. Angiv punktsymbolerne der fremkommer ved tilføjelsen pch=c(1:7).

Svar: Figurindstillinger

  1. Kommandoen c(1:7) laver vektoren 1,2,3,4,5,6,7.
  2. Kommandoen rep(1,7) laver vektoren 1,1,1,1,1,1,1.
  3. Rækkefølge af farver og punktsymboler: se afsnit R.2.

Indlæse data i R

På kursushjemmesiden ligger en zip-fil med en række datasæt. I skal hente denne fil og placere filerne med datasæt i en mappe på jeres egen computer. Når et datasæt ønskes indlæst, skal man enten angive stien til den mappe på computeren, hvor datasættet ligger, eller også skal working directory i R pege på den mappe, hvor datasættet ligger. Man kan ændre på working directory i R ved at gå ind under Fil og vælge Ændr mappe og derefter klikke sig frem til den ønskede mappe. Det samme kan opnås ved at bruge kommandoen setwd(sti) og angive sti til mappe inde i parentesen. Man kan se hvilken mappe, der er working directory, med kommandoen getwd().
For at indlæse et datasæt skal I i dette kursus bruge to forskellige kommandoer. For en fil med en række tal uden struktur bruges kommandoen scan("filnavn"). I disse tilfælde vil "filnavn" have endelsen ".txt", og tallene er adskildt af mellemrum. For strukturerede data skal I indlæse med kommandoen read.csv("filnavn",header=TRUE,stringsAsFactors=TRUE). Det forudsættes her, at filen indeholder data organiseret i søjler. Første række i filen indeholder søjleoverskrifter. Hver række svarer til et observationsnummer, og indgangene i rækken giver værdierne svarende til de forskellige søjler for dette observationsnummer. Dataværdierne er adskilt af komma. Disse datafiler vil altid have endelsen ".csv".
I kodevinduerne i denne web-bog er der generelt ikke adgang til filer på en vilkårlig computer. Dog kan man hente filer fra github, hviket gøres i kodevinduet nedenfor. Data, der indlæses, vedrører vandføringen (cubic feet per second) i tre åer i Washington delstaten i USA. Datafilen indeholder en søjle med navnet på åen (site), en søjle med dato for målingen (date) og en søjle med vandføringen (flow).
I udskriften indsættes automatisk en søjle med rækkenumre. Første søjle i dette datasæt er rownames, som blot indeholder nummer for observationen (og altså er identisk med den søjle med rækkenummer, der indsættes automatisk i udskriften).
  1. Prøv at ændre det sidste dat til cbind(dat[,4],datflow). Kan du forklare, hvad der sker?
  2. Prøv at ændre det sidste dat til dat[dat[,2]=="Silver Creek",4]. Kan du forklare, hvad der sker?

Svar: Udtrække data

  1. Data er indlæst i dat, som er organiseret i søjler. Den fjerde søjle kan enten hentes som dat[,4] eller som datflow, idet flow er søjleoverskriften. De to (identiske) søjler dat[,4] og datflow organiseres i en matriks med kommandoen cbind, der binder vektorer sammen som søjler i en matriks.
  2. Kommandoen dat[,4] giver hele fjerde søjle i dat. Når der indsættes en sandhedsvektor på den tomme første indeksplads, får vi udvalgt de elementer, hvor sandhedsvektoren er sand.

Egne funktioner i R

Nogle få gange i dette kursus vil jeg bede jer om at lave nogle beregninger, der ikke laves nemt med standardfunktioner i R. Til dette har jeg lavet nogle nye funktioner, der alle er defineret i filen Rfunktioner.txt, som findes på kursushjemmesiden (i zip-filen sammen med datasæt). Denne fil skal placeres i jeres working directory, og funktionerne er til rådighed, når I har givet kommandoen source("Rfunktioner.txt"). Filen Rfunktioner.txt indeholder følgende funktioner:
  1. errorbar
  2. inversReg
  3. additivitetsPlot
  4. forward
  5. cvForward
I nedenstående kodevindue viser jeg koden for errorbar og et eksempel på brug af koden. Funktionen errorbar tager som input fire vektorer af samme længde, de første to angiver første- og andenkoordinaten for en række punkter, og de to sidste angiver nedre og øvre endepunkter for lodrette linjestykker gennem punkterne.

ForegåendeNæste