Basisvaardigheden in R: Werken met functies
Veelgebruikte functies voor numerieke vectoren
Op deze theoriepagina bekijken we veelgebruikte functies voor een numerieke vector, bijvoorbeeld afkomstig uit metingen van een bepaalde hoeveelheid. Het gaat vooral om beschrijvende statistiek.
Voorbeeld datavector In bijna alle onderstaande voorbeelden gaan we werken met de datavectoren v
en opgeschoonde_v
die op de volgende manier zijn gemaakt:
> set.seed(123) > v <- rnorm(10, mean = 5, sd = 2) > v[sample(1:10, 3)] <- NA # willekeurig 3 vervangingen met NA > v [1] NA 4.539645 8.117417 5.141017 5.258575 8.430130 5.921832 2.469878 NA NA > opgeschoonde_v <- as.numeric(na.omit(v)) > opgeschoonde_v [1] 4.539645 8.117417 5.141017 5.258575 8.430130 5.921832 2.469878
Wat we in de bovenstaande sessie hebben gedaan, is het maken van een vector van 10 willekeurige waarden voor een normale verdeling met gemiddelde waarde 5 en standaarddeviatie 2. In deze vector vervangen we willekeurig drie waarden door NA, waardoor ze 'Not Available' (niet beschikbaar) worden. De resulterende vector v
heeft zeven numerieke waarden en NA
op drie posities, zoals weergegeven in de sessie. Een opgeschoonde versie van deze vector, genaamd opgeschoonde_v
, wordt gemaakt door alle niet beschikbare componenten van v te verwijderen.
Basiseigenschappen van een datavector bepalen De functie length()
wordt gebruikt om het aantal elementen in een vector te vinden.
> length(v) [1] 10 > length(opgeschoonde_v) [1] 7
Als er geen ontbrekende gegevens in een datavector zijn, gebruik je de functies min()
en max()
om respectievelijk de kleinste en grootste waarde in de datavector te vinden. Maar als er gegevens ontbreken, werkt dit niet tenzij je het argument na.rm = TRUE
toevoegt.
> min(opgeschoonde_v) [1] 2.469878 > max(opgeschoonde_v) [1] 8.43013 > min(v) [1] NA
> max(v)
[1] NA > min(v, na.rm = TRUE) [1] 2.469878 > max(v, na.rm = TRUA) [1] 8.43013
De functie range()
retourneert een vector met de kleinste en grootste waarde:
> range(v, na.rm = TRUE) [1] 2.469878 8,430130 > range(opgeschoonde_v) [1] 2.469878 8,430130
Belangrijke opmerking Voor alle functies die hierna worden besproken, is het feitelijk waar dat ze alleen goed werken als je ze ofwel toepast met het toegevoegde argument na.rm = TRUE
, ofwel toepast op een opgeschoonde versie van de datavector.
Centrummaten voor een datavector uitrekenen We bespreken hoe je centrummaten zoals gemiddelde, mediaan en modus voor een datavector uitrekent in R.
Gemiddelde Het (steekproef)gemiddelde of gemiddelde van een datavector is gelijk aan de som van alle waarden gedeeld door het totale aantal waarden. Het is dus in feite het rekenkundig gemiddelde of steekproefgemiddelde van de datavector. Een meer formele definitie is dat het gemiddelde \(\bar{x}\) van een numerieke vector \(x=(x_1, x_2, \ldots, x_n)\) wordt gegeven door \[\bar{x}=\frac{1}{n}\sum_{i=1}^{n}x_i\] De som van alle waarden in een vector kan worden berekend via de functie sum()
.
> sum(opgeschoonde_v) [1] 39.87849 > sum(v, na.rm = TRUE) [1] 39.87849
Daarom kan het rekenkundig gemiddelde als volgt worden berekend:
> sum(opgeschoonde_v) / length(opgeschoonde_v)
[1] 5.696928
Natuurlijk heeft R voor dit doel een ingebouwde functie: deze wordt simpelweg mean
genoemd
> mean(opgeschoonde_v) [1] 5.696928 > mean(v, na.rm = TRUE) [1] 5.696928
Mediaan De mediaan van een datavector is gelijk aan de 'middelste waarde' van de waarden in de datavector, dat wil zeggen de waarde waarbij de helft van de waarden in de datavector kleiner en de helft groter is. Met andere woorden, het is het 50ste percentiel en het 0.,5 kwantiel van de datavector. Het kan als volgt worden berekend:
- Sorteer de waarde van klein naar groot (of omgekeerd).
- Tel mee om de middelste waarde te vinden. De mediaan is de middelste waarde voor een oneven aantal
elementen in de datavector; het wordt gedefinieerd als het gemiddelde van de twee middelste
waarden voor een even aantal elementen.
In R kan de bovenstaande procedure op de achtergrond worden uitgevoerd via de speciale functie median()
:
> sort(opgeschoonde_v) [1] 2.469878 4.539645 5.141017 5.258575 5.921832 8.117417 8.430130 > median(opgeschoonde_v) [1] 5.258575 > median(v, na.rm = TRUE) [1] 5,258575
Modus De modus van een verdeling is de meest voorkomende score of categorie. In een gegevensvector is de modus de waarde/waarden die het vaakst voorkomt/voorkomen. Een manier om dat te onthouden is: het is het getal (of de getallen) dat (zijn) populair (in het Nederlands: "in de mode") in uw datavector.
Je kunt de functie mlv()
uit het R-pakket modeest
gebruiken om de modus te berekenen. Een eenvoudig voorbeeld laat zien hoe:
> install.packages("modeest") > dataset1 <- c(1,2,3,4,3) > modeest::mlv(dataset1, method = "mfv") [1] 3 > dataset2 <- c(1,2,3,4,3,2) # een bimodale data set > modeest::mlv(dataset2, method = "mfv") [1] 2 3
Steekproefvariantie en de standaardafwijking uitrekenen De (steekproef) variantie is een maatstaf voor de spreiding van waarden in een gegevensvector en wordt als volgt gedefinieerd: de variantie \(s^2\) (of \(\mathrm{var}(x)\) van een numerieke gegevensvector \(x=(x_1, x_2, \ldots, x_n)\) wordt gegeven door \[s^2=\frac{1}{n-1}\sum_{i=1}^{n}(x_i-\bar{x})^2\] De (steekproef)standaardafwijking \(s\) is de vierkantswortel van de variantie, dat wil zeggen \[s=\sqrt{\frac{1}{n-1}\sum_{i=1}^{n}(x_i-\bar{x})^2}\] De twee R-functies die deze spreidingsmaten berekenen zijn respectievelijk var()
en sd()
:
> v [1] NA 4.539645 8.117417 5.141017 5.258575 8.430130 5.921832 2.469878 NA NA > opgeschoonde_v [1] 4.539645 8.117417 5.141017 5.258575 8.430130 5.921832 2.469878
> var(v)
[1] NA > var(v, na.rm = TRUE) # variantie met weglating van niet beschikbare waarden [1] 4.272348 > var(opgeschoonde_v) [1] 4.272348
> sd(v)
[1] NA > sd(v, na.rm = TRUE) # standaarddeviatie met weglating van niet beschikbare waarden [1] 2.066966 > sd(opgeschoonde_v) [1] 2.066966