2.4 Relevante R-kommandoer

Under følger en liste over hvilke oppgaver du skal klare i R fra denne modulen. Vår policy fra og med vårsemesteret 2022 er at R-kommandoene under er tilstrekkelige for å løse oppgavene i datalabber og hjemmeeksamen i MET4. Det er med andre ord ikke nødvendig å lære seg teknikker utover det som er listet opp eksplisitt i listen under. Eventuelle nye teknikker som trengs for å løse en bestemt oppgave vil bli oppgitt og forklart dersom det er nødvendig. Det antas i tillegg at du kan den grunnleggende R-syntaksen som er dekket under Introduksjon til R.

Antakelser om datasett

Det antas at du har kontroll på hvilken mappesti R bruker, og at du kan forandre den dersom nødvendig.

I denne modulen kan du anta at alle datasett består av \(p\) kolonner (variabler) med variabelnavn og \(n\) rader (observasjoner). Datasettene blir gitt enten som Excel-filer (.xls elle .xlsx) eller som .csv-filer. Dersom du ønsker å prøve på kommandoene selv, kan du laste ned følgende eksempelfiler: data.xls, data.xlsx, data.csv.

Excel-filer kan leses inn i R ved hjelp av read_excel() som ligger i readxl-pakken:

library(readxl)

data <- read_excel("data.xls")
# ...eller dersom det er en .xlsx-fil:
data <- read_excel("data.xlsx")

.csv-filer kan lastes inn i R ved hjelp av read_csv() som ligger i readr-pakken:

library(readr)
data <- read_csv("data.csv")

“csv” er en forkortelse for “comma separated values”, og grunnen til det kan du se ved å åpne opp data.csv i en ren tekst-editor. Da ser du at verdiene på rekken er separert med et komma. Av og til har disse filene litt andre formater, så vi må kunne håndtere følgende varianter:

  • Dersom det ikke er komma som er brukt til å separere verdiene (det kan du alltid sjekke ved å se på filen i en tekst-editor), så kan du bruke funksjonen read_delim i stedet for read_csv, og bruke et argument for å spesifisere hvilket tegn som er brukt. Dersom det for eksempel er brukt semikolon “;”, kan du lese datasettet ved å bruke read_delim("data.xlsx", delim = ";").
  • Dersom komma er brukt for å skille desimaler fra heltall, som er vanlig i europeiske datasett, kan du bruke følgende kommando (der vi fortsatt antar at semikolon blir brukt til å skille mellom kolonner): read_delim("data.xlsx", delim = ";", locale = locale(decimal_mark = ",").
  • Dersom en bestemt tekst-streng blir brukt til å indikere manglende verdier i datasettet kan du bruke argumentet na i read_csv() og read_delim() til å spesifisere denne tekst-strengen, slik at den blir tolket riktig ved innlesingen som manglende verdi. Dette argumentet fungerer også i read_excel().

Numerisk deskriptiv statistikk

Vi bruker eksempeldatasettene data_survey.csv og data_fishermen_mercury.csv som eksempler. Du skal kunne bruke følgende funksjoner for å regne ut numerisk deskriptiv statistikk:

survey    <- read_csv("data_survey.csv")
fishermen <- read_csv("data_fishermen_mercury.csv")

mean(survey$age)                          # Gjennomsnitt
median(survey$age)                        # Median

table(survey$party)                       # Kan lese av typetallet manuelt.
which.max(table(survey$party))            # Eller bruke funksjonen which.max()

sd(fishermen$total_mercury)               # Standardavvik
quantile(fishermen$total_mercury, 0.20)   # Kvantiler
quantile(fishermen$total_mercury)         # Kvartilene

cor(fishermen$height, fishermen$weight)   # Korrelasjonskoeffisient
table(survey$religious)                   # Frekvenstabell 
survey %>%                                # Krysstabell av to variabler (krever
  select(party, religious) %>%            # pipe-operatoren og select()-funks.  
  table                                   # fra dplyr-pakken)

Grafisk deskriptiv statistikk med ggplot2

Du skal kunne lage følgende plott ved hjelp av ggplot2-pakken;

library(ggplot2)

# Boksplott
fishermen %>% 
  ggplot +
  geom_boxplot(aes(y = total_mercury)) 

# Deler opp i grupper basert på en annen variabel
fishermen %>% 
  ggplot +
  geom_boxplot(aes(y = total_mercury, x = as.factor(fisherman))) 

# Søylediagram
survey %>% 
  ggplot +
  geom_bar(aes(x = as.factor(religious)))

# Histogram
survey %>% 
  ggplot + 
  geom_histogram(aes(x = age))

# Spredningsplott
fishermen %>% 
  ggplot + 
  geom_point(aes(x = height, y = weight))

Du skal kunne grunnleggende bearbeiding av ggplot-figurer:

# En bearbeidet variant
fishermen %>% 
  ggplot + 
  geom_point(aes(x = height, y = weight)) +          # Dette er selve figuren
  xlab("Høyde") +                                    # Tittel x-akse
  ylab("Vekt") +                                     # Tittel y-akse
  ggtitle("Sammenheng mellom høyde og vekt") +       # Tittel plott
  theme_classic()                                    # Ryddig layout