#require(remotes)
#install_version("meta", version = "6.5.0", repos = "http://cran.us.r-project.org")
#install.packages("tidyverse")
#install.packages("metafor")
#install.packages("devtools")
#devtools::install_github("MathiasHarrer/dmetar")
2 R ontdekken
2.1 Theorie
R
is uitgegroeid tot een van de krachtigste en meest gebruikte statistische programmeertalen ter wereld. Of je nu in de academische wereld werkt of in een bedrijf, de dingen die je in R kunt doen lijken vaak een superkracht voor anderen. Maar het is een superkracht die iedereen kan leren, mits je er wat tijd en moeite in stot.
Het boek laat zien hoe je R
en RStudio
installeert (de laatste geeft ons een gebruikersinterface die het makkelijker maakt om met onze gegevens, pakketten en uitvoer om te gaan). R
is geen computerprogramma met een grafische gebruikersinterface en voorgedefinieerde functionaliteit. RStudio
laat jou makkelijker met R
werken. R
is de moter en RStduio
is meer het dashboard. Het boek laat zien hoe het met elkaar werkt.
R
is een volledige programmeertaal waaraan mensen over de hele wereld met vrij beschikbare uitbreidingen, zogenaamde specifieke pakketten, kunnen bijdragen. Belangrijke specifieke pakketten voor het werken met dit boek en het doen van meta-analyse met R
zijn meta
(zie bv hier), metafor
(zie bv hier), dmetar
(zie hier) en (voor data bewerking) tidyverse
(zie hier.
Nadat je R
en RStudio
hebt geïnstalleerd op jouw computer, moet deze pakketten installeren op je computer. De fundamentele bouwstenen van R zijn functies, waarmee in dit hoofdstuk wordt gewerkt en waarmee je een goed idee krijgt hoe een en ander voor het uitvoeren van meta-analyses werkt. Veel van de functies kunnen worden geïmporteerd en uitgevoerd via pakketten die met internet zijn te installeren. Functies kunnen worden gebruikt om gegevens te importeren, te manipuleren, te transformeren en op te slaan met behulp van R
. Er worden voorbeelden gegeven van basisfuncties die belangrijk zijn voor het uitvoeren van meta-analyses in R en in de hoofdstukken hierna worden uitgevoerd.
2.2 Praktijk
Installeer eerst de pakketten die nodig zijn voor dit boek. Ik moest zelf een vorige versie van meta
installeren om het pakket dmetar
te installeren. Als je dit niet eerder hebt gedaan met je de hekjes (#
) weghalen en de code uitvoeren. Dat installeren hoef je maar één keer te doen.
Laad de pakketten die nodig zijn om de voorbeelden in dit boek uit te voeren.
library(meta)
library(metafor)
library(dmetar)
library(tidyverse)
Haal ook de datasetSuicidePrevention.xlx
die je hier vandaan kunt halen en open die set.
library(openxlsx)
<-read.xlsx("SuicidePrevention.xlsx") data
Laten we naar die dataset kijken en zien welke variabelen er zijn. Er zijn tien kolommen (variabelen) en negen rijgen (individuele studies)
glimpse(SuicidePrevention)
Rows: 9
Columns: 10
$ author <chr> "Berry et al.", "DeVries et al.", "Fleming et al.", "Hunt & …
$ n.e <dbl> 90, 77, 30, 64, 50, 109, 60, 40, 51
$ mean.e <dbl> 14.98, 16.21, 3.01, 19.32, 4.54, 15.11, 3.44, 7.10, 23.74
$ sd.e <dbl> 3.29, 5.35, 0.87, 6.41, 2.75, 4.63, 1.26, 0.76, 7.24
$ n.c <dbl> 95, 69, 30, 65, 50, 111, 60, 40, 56
$ mean.c <dbl> 15.54, 20.13, 3.13, 20.22, 5.61, 16.46, 3.42, 7.38, 24.91
$ sd.c <dbl> 4.41, 7.43, 1.23, 7.62, 2.66, 5.39, 1.88, 1.41, 10.65
$ pubyear <dbl> 2006, 2019, 2006, 2011, 1997, 2000, 2013, 2015, 2014
$ age_group <fct> gen, older, gen, gen, gen, gen, gen, older, older
$ control <fct> WLC, no intervention, no intervention, WLC, WLC, no interven…
Je kunt de inhoud van een bepaalde kolommen alleen bekijken, bv deze:
$n.e SuicidePrevention
[1] 90 77 30 64 50 109 60 40 51
En je kunt ook zien wat voor een soort variabele het is.
class(SuicidePrevention$n.e)
[1] "numeric"
Laten we het gemiddelde van deze variabele vaststellen.
mean(SuicidePrevention$n.e)
[1] 63.44444
Zorg ervoor dat de variabelen de goede klasse hebben, bijvoorbeeld numeriek. Laten we dit veranderen voor enkele variabelen.
$mean.e <- as.numeric(SuicidePrevention$mean.e)
SuicidePrevention$sd.e <- as.numeric(SuicidePrevention$sd.e)
SuicidePrevention$n.c <- as.numeric(SuicidePrevention$n.c)
SuicidePrevention$mean.c <- as.numeric(SuicidePrevention$mean.c)
SuicidePrevention$sd.c <- as.numeric(SuicidePrevention$sd.c)
SuicidePrevention$n.c <- as.numeric(SuicidePrevention$n.c) SuicidePrevention
Twee variabelen moeten we veranderen in factoren om de analyse later correct te kunnen uitvoeren.
$age_group <- as.factor(SuicidePrevention$age_group)
SuicidePrevention$control <- as.factor(SuicidePrevention$control) SuicidePrevention
In dit geval is de variabele age_group
opgesplitst in de niveaus gen
en older
, zie hier:
$age_group SuicidePrevention
[1] gen older gen gen gen gen gen older older
Levels: gen older
Een logische variabele kan ook handig zijn, bijvoorbeeld voor de volgende variabele:
$pubyear SuicidePrevention
[1] 2006 2019 2006 2011 1997 2000 2013 2015 2014
Deze zetten we om in een logische variabele.
as.logical(SuicidePrevention$pubyear >= 2010)
[1] FALSE TRUE FALSE TRUE FALSE FALSE TRUE TRUE TRUE
Soms is het goed om naar specifieke gegevens uit het dataframe te kijken. Onthoud: data.frame[rijen, kolommen]
. Dus kijken naar rij 2 wordt:
2,] SuicidePrevention[
author n.e mean.e sd.e n.c mean.c sd.c pubyear age_group
2 DeVries et al. 77 16.21 5.35 69 20.13 7.43 2019 older
control
2 no intervention
Als je informatie van de eerste kolom én de tweede rij wilt zien, schrijf je:
2,1] SuicidePrevention[
[1] "DeVries et al."
Gebruik de functie c()
om delen van het dataframe te selecteren. Om rijen 2 en 3 en kolommen 4 en 6 te extraheren wordt
c(2,3),c(4,6)] SuicidePrevention[
sd.e mean.c
2 5.35 20.13
3 0.87 3.13
Rijen selecteer je op nummer, kolommen kun je ook op naam selecteren, zoals in dit voorbeeld.
c("author", "control")] SuicidePrevention[,
author control
1 Berry et al. WLC
2 DeVries et al. no intervention
3 Fleming et al. no intervention
4 Hunt & Burke WLC
5 McCarthy et al. WLC
6 Meijer et al. no intervention
7 Rivera et al. no intervention
8 Watkins et al. no intervention
9 Zaytsev et al. no intervention
Je kunt voor een gegevensverzameling ook de functie filter
gebruiken, die werkt op basis van rijwaarden, bijvoorbeeld de rijwaarden van n.e.
zijn kleiner of gelijk aan 50. Dan schrijf je:
filter(SuicidePrevention, n.e <= 50)
author n.e mean.e sd.e n.c mean.c sd.c pubyear age_group
1 Fleming et al. 30 3.01 0.87 30 3.13 1.23 2006 gen
2 McCarthy et al. 50 4.54 2.75 50 5.61 2.66 1997 gen
3 Watkins et al. 40 7.10 0.76 40 7.38 1.41 2015 older
control
1 no intervention
2 WLC
3 no intervention
Je kunt gegevens zelf gemakkelijk transformeren. Dus als je de studie van De Vries et al. wilt transformeren van 2019 naar 2018, kun je het schrijven als:
2, "pubyear"] <- 2018
SuicidePrevention[2, "pubyear"] SuicidePrevention[
[1] 2018
Als je een nieuwe kolom wilt toevoegen aan je dataframe (bijvoorbeeld het gemiddelde verschil), kun je dat als volgt doen:
$md <- SuicidePrevention$mean.e - SuicidePrevention$mean.c SuicidePrevention
Zodra alles is getransformeerd, kunnen we het bewerkte bestand opslaan. Je kunt het opslaan als een .rda-bestand, zo dan:
save(SuicidePrevention, file = "SuicidePrevention.rda")
of opslaan als een .csv-bestand, zo dan:
write.csv(SuicidePrevention, file = "SuicidePrevention.csv")
Bewaar je transformatie syntax, zodat je weet wat je hebt gedaan van de originele gegevens naar de uiteindelijke gegevens.