Introduktion til R #2

I 2016 underviste jeg et kandidatfag på Syddansk Universitet, hvor jeg anbefalede de studerende at lære R. R var ikke en del af faget, men de studerende fik mig overtalt til at afholde en workshop, hvor jeg introducerede dem til R. I den forbindelse lavede jeg noget undervisningsmateriale på dansk, der kunne gøre det så let som muligt at komme i gang med R. Dette materiale fik jeg sidenhen skrevet op som en onlineguide.

Der var tale om en relativt simpel guide, der primært fokuserede på at komme i gang med R. Der var dog ingenlunde tale om en egentlig bog. Jeg blev sidenhen kontaktet af Hans Reitzels Forlag, der spurgte, om jeg kunne have interesse i at udgive mit materiale som en bog. Jeg informerede dem om, at det ville kræve en masse tid (især da det primært var noget, jeg kunne skrive på i weekenden), og det var begrænset hvor meget jeg ville kunne bruge materialet fra 2016/2017, da det var relativt simpelt – og meget er sket siden da.

Vi kunne heldigvis få struktureret det på en god måde, der gav mig den fornødne tid til at skrive det op som en bog og tænke nøje over, hvordan det giver bedst mening for studerende at blive introduceret til R og dets mange muligheder i 2022. Introduktion til R er mit bud på, hvordan man kan begynde med R – på dansk. Bogen er således ude nu. Du kan kaste dine hårdt tjente lommepenge efter den her.

Der er en masse indhold i bogen, og i stedet for kort at beskrive, hvad du finder i bogen, er det ganske enkelt nemmere at tage et hurtigt kig på indholdsfortegnelsen, der giver et deskriptivt overblik over, hvad du finder i bogen (og i hvilken rækkefølge):

1. Introduktion
1.1 Hvorfor skal du bruge R?
1.2 Hvordan du bør bruge bogen
1.3 Bogens struktur

2. Kom i gang med R
2.1 Installation
2.1.1 Installation af R
2.1.2 Installation af RStudio
2.2 De forskellige vinduer i RStudio
2.2.1 Console
2.2.2 Script
2.2.3 Environment og Viewer
2.3 Funktioner
2.4 Objekter
2.4.1 Information fra objekt
2.5 Datatyper
2.5.1 Tal
2.5.2 Tekst
2.5.3 Logisk vektor (TRUE og FALSE)
2.5.4 Manglende data (NA)
2.5.5 Datasæt (data frames)
2.6 Pipe-operatør
2.7 Pakker
2.7.1 Installer pakker
2.7.2 Åbn pakke
2.7.3 Opdater pakker
2.8 Workspace
2.8.1 Objekter i hukommelsen
2.9 Konklusion

3. Datasæt i R
3.1 Data ind i R
3.1.1 CSV-filer
3.1.2 Excel-filer
3.1.3 Programspecifikke formater
3.2 Data ud af R
3.2.1 CSV-filer
3.2.2 Excel-filer
3.2.3 Programspecifikke formater
3.3 Gode råd til pæne data

4. Datamanipulation I: Ændre variable og observationer
4.1 Vælg observationer med filter()
4.1.1 Brug if_any() og if_all() til at vælge rækker, der opfylder bestemte betingelser
4.2 Vælg variable med select()
4.2.1 Brug starts_with(), ends_with() og contains() til at vælge flere variable
4.3 Lav nye variable med mutate()
4.3.1 Brug .before og .after til at placere en variabel
4.3.2 Brug ifelse() til at undersøge, om en betingelse er opfyldt
4.3.3 Brug case_when() til at give mere end to forskellige værdier
4.3.4 Undlad at overskrive variable
4.3.5 Brug na_if() til at give manglende værdier
4.3.6 Lav unik ID-variabel med row_number()
4.4 Andre nyttige funktioner
4.4.1 Vælg observationer på baggrund af placering med slice()
4.4.2 Skift navn på variable med rename()
4.4.3 Sorter observationer med arrange()
4.4.4 Lav og vælg variable med transmute()
4.4.5 Skift placering på variabel med relocate()
4.4.6 Lav datovariable med lubridate-pakken

5. Datamanipulation II: Ændre hele datasæt
5.1 Aggreger variable med group_by()
5.1.1 Grupper med flere variable i group_by()
5.1.2 Aggreger flere variable med across()
5.2 Skift data fra bredt til langt format
5.3 Skift data fra langt til bredt format
5.4 Kombiner to datasæt
5.5 Kombiner datasæt med de samme kolonner

6. Præsentation af data: Visualisering
6.1 Figurers grammatik
6.1.1 Data og æstetik
6.1.2 Geometriske objekter
6.1.3 Visuelle justeringer
6.2 Figurer med en variabel
6.3 Figurer med to variable
6.4 Figurer med flere variable
6.5 Gør din figur pænere
6.5.1 Tema
6.5.2 Farver
6.5.3 Labels
6.5.4 Akser
6.6 Gem figurer

7. Univariate og bivariate analyser
7.1 Univariate analyser
7.1.1 Forskel i andel: Binomialtest
7.1.2 Forskel i gruppestørrelser: Chi i anden-test
7.1.3 Forskel i gennemsnit: T-test
7.2 Bivariate analyser
7.2.1 Forskel i gruppestørrelser: Chi i anden-test
7.2.2 Forskel i gennemsnit: T-test
7.2.3 Korrelationsanalyse

8. Regressionsanalyse I: Lineær regressionsanalyse
8.1 Simpel lineær regressionsanalyse
8.1.1 Binær uafhængig variabel
8.1.2 Kontinuerlig uafhængig variabel
8.2 Multipel lineær regressionsanalyse
8.3 Sammenlign regressionsmodeller
8.4 Transformation af variable i modelspecifikation
8.5 Referencekategorier med kategorisk variabel
8.6 Eksport af regressionstabel

9. Regressionsanalyse II: Forudsætningstests ved lineær regressionsanalyse
9.1 Test af antagelser med pakken performance
9.2 Antagelse: Linearitet
9.3 Antagelse: Heteroskedasticitet
9.4 Antagelse: Multikollinearitet
9.5 Antagelse: Indflydelsesrige observationer
9.6 Antagelse: Normalfordelte fejlled
9.7 Afsluttende bemærkninger

10. Regressionsanalyse III: Interaktionsled i regressioner
10.1 Interaktion mellem to binære variable
10.2 Interaktion mellem én binær variabel og én kontinuerlig variabel
10.3 Interaktion mellem to kontinuerlige variable

11. Regressionsanalyse IV: Logistisk regressionsanalyse
11.1 Binær uafhængig variabel
11.2 Kontinuerlig uafhængig variabel
11.3 Forudsætningstests

12. Konklusion
12.1 Centrale pointer
12.2 Næste step

Der er en lang række af opgaver i bogen (157 opgaver for at være præcis). Tanken er, at man lærer R langt bedre, når man selv skal forsøge at gøre noget, og ikke blot skal vurdere på egen hånd, om det man lige har læst giver mening eller ej.

Til at gennemføre opgaverne i bogen skal du bruge nogle datasæt, der kan hentes her. Jeg har prioriteret ikke blot at bruge ét filformat, men formater som .csv, .xlsx og .sav, da man ofte vil komme ud for at skulle bruge forskellige typer af data, når man arbejder med data i praksis. Det vil sige at jeg har forsøgt at introducere læseren til situationer, der i højere grad vil ligne dem, man kommer ud for “i virkeligheden”.

Mange lærebøger til R har en R pakke tilknyttet, der rummer alle de datasæt, man skal arbejde med. Dette valgte jeg ikke at gøre her, da de fleste af de data man kommer til at skulle arbejde med i praksis, skal indlæses i R fra en eller flere filer. Min bekymring er således, at de bøger der giver adgang til data i en pakke, gør læseren en bjørnetjeneste.

Der er sket meget i R siden jeg første gang rigtigt kom igang med R i forbindelse med en workshop afholdt af Peter Dalgaard for mere end 10 år siden. Dengang foregik tingene med base R i R (uden RStudio, tidyverse m.v.). Det tog mig lang tid at føle mig hjemme i R, og jeg reproducerede i flere år mine analyser i Stata og R for at sikre, at jeg ikke havde lavet en fejl.

Hvis du allerede har installeret et andet statistikprogram, eksempelvis Stata eller SPSS, men er fuldt bevidst omkring, at du vil bruge R fremover, bør du kunne kaste dig over bogen. Det anbefales her at du – modsat hvad jeg gjorde – følger en succeed or die-strategi. Som en general, der brænder sin båd, når han kommer i land på fjendens terræn, kan du slette SPSS og Stata, så du kun har adgang til R. På den måde vil du hurtigere og bedre få foretaget skiftet.

Det er ikke altid en fornøjelse at skulle lære R, og begejstringen blandt erfarne R-brugere kan hurtigt blive for meget, som bedst illustreret i dette meme:

Min hensigt med bogen har været, at udtrykke hvor fantastisk R er, men uden at give udtryk for, at det er nemt at mestre R og dets mange muligheder. R tager tid og energi at lære, men det er det hele værd. Og det er min klare vurdering, at det er betydeligt nemmere at lære i dag end for 10 år siden. Programmer som SPSS og Stata er muligvis nemmere at bruge fra dag 1, men det kommer med store begrænsninger i forhold til, hvad man kan.

En af grundene til at R er nemmere at lære og bruge i dag er tidyverse, som forhåndenværende bog også anvender. Jeg ser det ikke nødvendigvis som et spørgsmål om base R vs. tidyverse, men snarere et spørgsmål om at bruge de funktioner og pakker, der gør det nemmest at arbejde med data på en robust og systematisk måde. Til trods for at jeg anvender tidyverse i bogen, bruger jeg eksempelvis den indbyggede pipe operatør (det samme ser man i 2. udgave af R for Data Science). Jeg er dog bekendt med, at der er folk, der har en præference for base R (se eksempelvis her), men man kommer ikke udenom tidyverse, hvis man læser Introduktion til R.

Når det kommer til pakker i R, har jeg forsøgt at bruge så få pakker som muligt. Man kommer dog ikke udenom, at en af de store styrker ved R, er, at der er talrige pakker, der giver adgang til en masse funktioner (bogstaveligt talt). Foruden tidyverse kan du installere alle pakker, der vil blive anvendt i bogen, ved at køre følgende kode (for kendere af R giver nedenstående også et fint overblik over, hvilke pakker der bliver anvendt i løbet af bogen):

install.packages(c("janitor", "labelled", 
                   "writexl", "ggthemes", 
                   "GGally", "gtsummary", 
                   "report", "stargazer",
                   "gvlma", "marginaleffects", 
                   "see", "patchwork",
                   "gvlma", "marginaleffects", 
                   "tidylog"))

Det har også været en lærerig oplevelse at skrive en hel bog om R på dansk. En væsentlig del af denne proces har bestået af feedback og kommentarer fra venner og bekendte. Her skal jeg nævne – som jeg også gør i bogen – Zoltán Fazekas, Simon Grundt Straubinger, Jeppe Vierø, Knud Hvilsted og Andreas Gahner Larsen. Ligeledes gav de anonyme fagfællebedømmere en række gode forslag og konstruktive kommentarer, hvilket gjorde bogen bedre. Og så var jeg glad for denne kommentar fra en af de anonyme fagfællebedømmere: “På det personlige plan har det været en fornøjelse at læse bogen, og jeg har fået nogle pædagogiske fif, som jeg vil tage med i min egen undervisning, så tak for det.”

Jeg håber det kommer til udtryk på siderne, at jeg nød at skrive bogen. Jeg har i løbet af de seneste par år ikke haft den store interesse i – ved siden af mit arbejde – at skrive (videnskabelige) artikler. Jeg må nok sande, at jeg nyder at skrive blogindlæg og bøger. Det er de to ekstremer, jeg beskæftiger mig bedst med, og alt mellem disse to formater bliver mindre interessante for mig som årene går.

Hvis det viser sig, at der er et marked for bogen, er jeg klar på at arbejde på en 2. udgave. I så fald hører jeg gerne fra dig, hvis du har læst bogen og har forslag til eventuelle rettelser og tilføjelser. Som altid kan jeg kontaktes på erikgahner@gmail.com.

Du kan finde en læseprøve her. Du kan købe bogen her. Bon appétit.