<- factor(c("East", "West", "East", "North", "North", "East", "West", "West", "West", "East", "North"))
directions <- factor(c("low", "high", "medium", "high", "low", "medium", "high"), levels = c("low", "medium", "high"), ordered = TRUE)
temperature <- c(2, 7, 3, 4, 2, 0) exam_points
7 Centrum- en spreidingsmaten
In dit hoofdstuk bespreken we hoe je in R centrum- en spreidingsmaten voor variabelen met diverse meetniveaus kunt berekenen.
7.1 Centrummaten
De meest gebruikte centrummaten zijn het gemiddelde, de mediaan en de modus. Om te tonen hoe we ze berekenen met R, zullen we de volgende drie variabelen gebruiken:
Als we deze variabelen vervolgens printen, zien we dat de inhoud correct is opgeslagen:
# nominaal directions
[1] East West East North North East West West West East North
Levels: East North West
# ordinaal temperature
[1] low high medium high low medium high
Levels: low < medium < high
# interval/ratio exam_points
[1] 2 7 3 4 2 0
7.1.1 Modus
De modus is de waarde die het vaakst voorkomt in een verzameling gegevens. We kunnen eerst de verdeling van de waarden bekijken met de table()
functie:
table(directions)
Op basis hiervan kunnen we zien dat er twee modi zijn (Oost en West).
directions
East North West 4 3 4
Als we de modus willen berekenen, kunnen we gebruik maken van een pakket met de naam DescTools. Dit is een verzameling van diverse statistische basisfuncties voor het efficiënt beschrijven van gegevens. Het pakket bevat de functie Mode()
(let op de hoofdletter M).
We installeren en laden het benodigde package as volgt:
install.packages("DescTools") # DescTools package installeren (hoeft slechts één keer)
library(DescTools) # DescTools package laden
Om de modus te berekenen, schrijven we:
Mode(directions, na.rm = TRUE)
[1] East West
attr(,"freq")
[1] 4
Levels: East North West
na.rm = TRUE
-
Dit zorgt ervoor dat eventuele missende waarden worden genegeerd bij de berekening van de modus.
Uit de resultaten blijkt dat er twee modi zijn: East
en West
.
7.1.2 Mediaan
De mediaan is de waarde die, in de veronderstelling dat de dataset van klein naar groot is geordend, in het midden valt. Om deze te berekenen, gebruiken we het Mediaan()
commando uit het DescTools package (zie hierboven voor het installeren en laden van dit package). De functie Median
uit package DescTools
kan omgaan met factors:
Median(temperature, na.rm=TRUE)
[1] medium
Levels: low < medium < high
na.rm = TRUE
-
Dit zorgt ervoor dat eventuele missende waarden worden genegeerd bij de berekening van de mediaan.
7.1.3 Gemiddelde
Het gemiddelde van een verzameling waarnemingen wordt berekend door alle waarden bij elkaar op te tellen en dan te delen door het totaal aantal waarden1:
mean(exam_points, na.rm=TRUE)
[1] 3
na.rm = TRUE
-
Dit zorgt ervoor dat eventuele missende waarden worden genegeerd bij de berekening van het gemiddelde.
7.2 Spreidingsmaten
Om de minimum- en maximumwaarde van een vector of een kolom in een data frame te vinden, kunnen we de functies max()
en min()
gebruiken. Toegepast op de ordinale en interval/ratio variabele die we hebben gemaakt:
min(temperature, na.rm = TRUE)
[1] low
Levels: low < medium < high
max(exam_points, na.rm = TRUE)
[1] 7
na.rm = TRUE
-
Dit zorgt ervoor dat eventuele missende waarden worden genegeerd bij de berekening van het minimum of maximum.
7.2.1 Spreidingsbreedte
range()
geeft een vector terug die het minimum en maximum bevat:
range(exam_points, na.rm = TRUE)
[1] 0 7
exam_points
-
Dit is de naam van de variabele/vector waarvan we de range willen berekenen. Vervang door je eigen variabelen indien je werkt met je eigen data.
na.rm = TRUE
-
Dit zorgt ervoor dat eventuele missende waarden worden genegeerd.
7.2.2 Interkwartielafstand
Om een overzicht te krijgen van de interkwartielafstand, kunnen we de summary()
functie gebruiken:
summary(exam_points)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.00 2.00 2.50 3.00 3.75 7.00
In de resultaten zien we 1st Qu.
(= 1st quartile, 1e kwartiel) en 3rd Qu.
(= 3rd quartile, 3e kwartiel),
7.2.3 Standaardafwijking en variantie
Je kunt de standaardafwijking in R berekenen met de sd()
functie. Standaard genereert deze de steekproef-standaardafwijking. Als je de standaardafwijking van de populatie wilt berekenen, kun je een aanpassing maken (vermenigvuldigen met sqrt((n-1)/n)).
sd(exam_points, na.rm = TRUE)
[1] 2.366432
na.rm = TRUE
-
Dit zorgt ervoor dat eventuele missende waarden worden genegeerd.
Om de variantie te berekenen, kunnen we de var()
functie gebruiken:
var(exam_points, na.rm = TRUE)
[1] 5.6
na.rm = TRUE
-
Dit zorgt ervoor dat eventuele missende waarden worden genegeerd.
7.3 Bewerkingen doen in dataframes
Zoals uitgelegd in Paragraaf 1.7.1.3, gebruik je het symbool “$” om variabelen in dataframes aan te roepen. Daarom, als we een van de functies willen gebruiken die tot nu toe zijn behandeld (mean()
, table()
, sd()
, var()
, enz.) gebruik je gewoon die operator om specifieke variabelen in data frames te gebruiken.
Voorbeeld: als we het gemiddelde en de standaardafwijking van filmscores (‘Score’) in ‘deniro_data’ willen berekenen, zouden we schrijven:
library(rio) # Laad package rio voor het importeren van de data met functie 'import'
<- import(file = "deniro.csv") deniro_data
mean(deniro_data$Score, na.rm = TRUE)
[1] 58.1954
sd(deniro_data$Score, na.rm = TRUE)
[1] 28.06754
na.rm = TRUE
-
Dit zorgt ervoor dat eventuele missende waarden worden genegeerd.
7.4 Beschrijvende statistieken voor een volledig dataframe
Er zijn veel samenvattende statistieken beschikbaar in R. Een eenvoudige manier om een basisoverzicht van een dataframe te krijgen is de describe()
functie uit het ‘psych’ pakket. Als je dit package moet installeren type je install.packages("psych")
in de R console (niet nodig op universiteits-pc’s).
Om de describe()
functie uit het `psych’ pakket te gebruiken, schrijven we:
library(psych)
Attaching package: 'psych'
The following objects are masked from 'package:DescTools':
AUC, ICC, SD
describe(deniro_data, na.rm = TRUE, skew = FALSE, ranges = TRUE)
vars n mean sd median min max range se
Year 1 87 1995.98 12.94 1997 1968 2016 48 1.39
Score 2 87 58.20 28.07 65 4 100 96 3.01
Title* 3 87 44.00 25.26 44 1 87 86 2.71
na.rm = TRUE
-
We voegen
na.rm = TRUE
toe om R te vertellen ontbrekende waarden weg te laten. skew = FALSE
-
Via dit deel van de code, vertellen we R of het de scheefheid van de variabele moet berekenen. Ik zou aanraden om het weg te laten, maar als je het toch wilt toevoegen, verander het dan in
skew = TRUE
. ranges = TRUE
-
We voegen
ranges = TRUE
toe om R te vertellen de spreidingsbreedte (range) te berekenen. Als je dit niet wilt, kun je het instellen opranges = FALSE
Zoals je kunt zien, levert dit een relatief eenvoudige overzichtstabel op. Let wel op: de variabele Title
is een character
variabele (dat is te zien aan de asterisk *). Psych maakt hier eerst een numerieke variabele van.
We kunnen het gemiddelde ook berekenen door de som te berekenen en dan te delen door het aantal observaties:
sum(exam_points) / length(exam_points)
[1] 3