Downloading webR package: palmerpenguins
Online (R
) oefeningen
Bivariate regressie
Tijd om de stap te zetten naar regressie-analyse. We starten onze reis in “regressieland” bij bivariate regressie-analyse. Hoe we dit doen in R
kan je hier oefenen, opnieuw adhv onze dataset over de pinguïns.
Meer achtergrond over deze dataset vind je via volgende link: palmerpenguins
Oefening 1
De eerste onderzoeksvraag gaat over het verband tussen de lengte van de flipper (flipper_length_mm
) en het lichaamsgewicht (body_mass_g
) van pinguïns.
Maak in onderstaande codeblok een basisvisualisatie om dit verband te illustreren.
Een basisvisualisatie om het verband tussen twee kwantitatieve variabelen na te gaan is een puntenwolk. Die kan je maken met de generieke functie plot( )
. In deze oefening gaan we ook uit van een voorspellend effect van de lengte van de flipper op het lichaamsgewicht. Hou daarmee rekening in je visualisatie.
plot(penguins$______, penguins$______)
Oplossing:
Een basisvisualisatie om het verband tussen twee kwantitatieve variabelen na te gaan is een puntenwolk. Die kan je maken met de generieke functie plot( )
.
Tussen haakjes moet je verwijzen naar beide variabelen. Indien er sprake is van causaliteit, plaats je de onafhankelijke variabele op de x-as. In dit geval is dat de flipperlengte. Belangrijk is dat beide variabelen als numeric
of als integer
in de dataframe zijn gedefinieerd. Dat is in dit geval in orde.
De volledige oplossing ziet er zo uit!
plot(penguins$flipper_length_mm, penguins$body_mass_g)
plot(penguins$flipper_length_mm, penguins$body_mass_g)
Oefening 2
Om de onderzoeksvraag echt te kunnen beantwoorden maken we gebruik van een bivariate regressie-analyse.
Voer deze regressie-analyse uit waarin je het effect van flipperlengte nagaat op lichaamsgewicht en print de output.
We kunnen gebruik maken van de functie lm( )
. Het handigste is om het resultaat van deze analyse weg te schrijven in een afzonderlijk object (bv. M1
in de hint hier).
M1 <- (______ ~ ______, data = penguins)
summary(M1)
Oplossing:
De code ziet er zo uit. Merk op dat we hier opnieuw het pakket palmerpenguins
laden en de data penguins
activeren, zodanig dat de code op zich kan lopen, zonder dat je de andere oefeningen uitvoert.
M1 <- lm(body_mass_g ~ flipper_length_mm, data = penguins)
summary(M1)
M1 <- lm(body_mass_g ~ flipper_length_mm, data = penguins)
summary(M1)
Oefening 3
We hernemen de oplossing uit de vorige oefening hieronder.
Call:
lm(formula = body_mass_g ~ flipper_length_mm, data = penguins)
Residuals:
Min 1Q Median 3Q Max
-1058.80 -259.27 -26.88 247.33 1288.69
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -5780.831 305.815 -18.90 <2e-16 ***
flipper_length_mm 49.686 1.518 32.72 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 394.3 on 340 degrees of freedom
(2 observations deleted due to missingness)
Multiple R-squared: 0.759, Adjusted R-squared: 0.7583
F-statistic: 1071 on 1 and 340 DF, p-value: < 2.2e-16
Op het examen vragen we soms meerkeuzevragen over de interpretatie van de output. Hieronder vind je een typische meerkeuzevraag (met de antwoordsleutel op een afzonderlijk tabbladje). Probeer eerst zelf tot een antwoord te komen en toets vervolgens jouw antwoord af met de antwoordsleutel.
Welke van volgende uitspraken is fout? (slechts 1 antwoord mogelijk)
- Volgens dit regressiemodel is de verwachtte body mass -5781 gram indien een pinguïn een flipper langte van 0 mm heeft
- Bijna 76% van de variantie in lichaamsgewicht tussen pinguïns kunnen we verklaren door de variabele flipper lengte
- Doordat het intercept significant negatief is kunnen we concluderen dat er een negatief verband is tussen flipper lengte en lichaamsgewicht van pinguïns
- De kans dat we de hellingsgraad van 49.87 vaststellen in onze data indien er in de gehele populatie van pinguïns geen verband zou zijn tussen flipper lengte en lichaamsgewicht is duidelijk lager dan 5%
Je diende uitspraak 3 te kiezen als foute uitspraak.
- Volgens dit regressiemodel is de verwachtte body mass -5781 gram indien een pinguïn een flipper langte van 0 mm heeft
= JUIST! Inderdaad. Het intercept bedraagt -5781. Het intercept is de verwachtte waarde voor de afhankelijke variabele (lichaamsgewicht) indien de waarde voor de onafhankelijke variabele (flipper lengte) gelijk is aan nul.
- Bijna 76% van de variantie in lichaamsgewicht tussen pinguïns kunnen we verklaren door de variabele flipper lengte
= JUIST! Dit lezen we af in de output bij de R-kwadraat die gelijk is aan 0.7583.
- Doordat het intercept significant negatief is kunnen we concluderen dat er een negatief verband is tussen flipper lengte en lichaamsgewicht van pinguïns
= FOUT! Dit is een fout die we helaas geregeld zien op het examen waarbij het intercept wordt interpreteert alsof die waarde ons iets kan leren over de samenhang tussen de onafhankelijke en afhankelijke variabele. Dit is niet juist. Enkel de hellingsgraad zegt iets over de samenhang of het veband tussen beide variabelen.
- De kans dat we de hellingsgraad van 49.87 vaststellen in onze data indien er in de gehele populatie van pinguïns geen verband zou zijn tussen flipper lengte en lichaamsgewicht is duidelijk lager dan 5%
= JUIST! Dit is de correcte interpretatie van de p-waarde (oftewel de significantie toets). Elke significantietoets gaat de kans uitdrukken dat we een bepaalde observatie doen in onze steekproef (hier de waarde van het effect van flipper lengte op lichaamsgewicht) indien de nulhypothese zou gelden in de populatie. De nulhypothese hier is dat er geen verband is tussen beide variabelen in de populatie.
Oefening 4
Nu richten we onze aandacht op de tweede onderzoeksvraag waarbij willen nagaan in welke mate snavellengte voorspellend is voor lichaamsgewicht.
Voer deze regressie-analyse uit en tracht alle relevante onderdelen van de output te interpreteren.
Om deze figuur te maken moet je twee stappen doorlopen:
- een dataframe maken met daarin enkel de betrokken variabelen;
- deze nieuwe dataframe ‘plotten’ met het commando
plot( )
.
Oplossing:
De code om de analyse uit te voeren ziet er als volgt uit:
library(palmerpenguins)
data("penguins")
M2 <- lm(body_mass_g ~ bill_length_mm, data = penguins)
summary(M2)
library(palmerpenguins)
data("penguins")
M2 <- lm(body_mass_g ~ bill_length_mm, data = penguins)
summary(M2)
Interpretatie:
R-kwadraat bedraagt 0.35 met een bijhorende p-waarde die lager is dan 0.05. 35% van de variantie in lichaamsgewicht wordt voorspeld door snavellengte. De kans dat we dit vaststellen in onze steekproefdata indien er in de populatie geen variantie zou verklaard worden (= H0) is lager dan 5%.
Het intercept bedraagt 362.3. Dit is het verwachtte lichaamsgewicht van een pinguïn die een snavellengte van 0 mm heeft (wat totaal geen steek houdt natuurlijk). Deze parameterschatting is niet statistisch significant. Dit wil zeggen dat de kans dat we deze waarde in onze steekproef vaststellen indien in de populatie het intercept 0 zou bedragen (= H0) groter is dan 5% Daarom weerlegeen we H0 NIET.
De hellingsgraad (slope) bedraagt 87.4. Per mm dat een snavel langer is van een pinguïn verwachten we dat het lichaamsgewicht met 87.4 gram stijgt. Deze parameterschatting is statistisch significant (p <0.05). Dus, de kans dat we deze waarde zouden vaststellen in onze steekproef indien de nulhypothese opgaat (= er is geen verband in de populatie) is klein. We concluderen dat er wel een verband is in de populatie van pinguïns.
Oefening 5
We hebben nu twee modellen geanalyseerd. Hieronder een voorbeeldvraag die je op het examen zou kunnen krijgen. Tracht eerst voor jezelf tot een antwoord te komen vooraleer je naar de oplossing gaat kijken.
Bij de start van de oefening schetstten we het scenario dat onderzoekers graag pinguïns hun lichaamsgewicht willen kunnen inschatten door middel van het observeren van externe lichaamskenmerken (flipperlengte en snavellengte).
Stel dat deze onderzoekers jouw advies vragen. Ze willen weten waarop ze best inzetten: observatoren goed trainen om flipperlengte te meten of snavellengte te meten. Wat zou je hen aanraden en hoe onderbouw je je advies vanuit de analyse?
Gegeven de resultaten van beide modellen is Het beste advies observatoren trainen op het goed observeren en meten van de flipperlengte. Immers, kijken we naar de verklaarde varianties in beide modellen dan stellen we vast dat deze een stuk hoger is voor het model met flipperlengte als voorspeller voor lichaamsgewicht (R-kwadraat = 0.76) dan voor het model met snavellengte als voorspelle (R-kwadraat = 0.35). Flipperlengte is dus een veel betere voorspeller voor lichaamsgewicht dan snavellengte.
Oefening 6
Hieronder een andere voorbeeldvraag die je op het examen zou kunnen krijgen. Tracht eerst voor jezelf tot een antwoord te komen vooraleer je naar de oplossing gaat kijken.
We hernemen hieronder het resultaat van de analyse van M1 en schrijven dit weg in een regressievergelijking.
Oriel observeert 2 pinguïns tijdens haar observatiemoment. Ze slaagt er ook in om van beide pinguïns de flipperlengte op te meten met haar speciale tool in haar verrekijker:
pinguïn 1: flipperlengte = 200 mm
pinguïn 2: flipperlengte = 235 mm
Bereken voor beide pinguïns het verwachtte lichaamsgewicht.
We dienen de regressievergelijking te hanteren en simpelweg de flipperlengte in te vullen. Hieronder doen we dit voor beide pinguïns. Merk op dat we een hoedje plaatsen boven lichaamsgewicht in de vergelijking hier. Dat doen we om aan te duiden dat het om een verwachtte waarde gaat.
pinguïn 1:
= 4157.17grampinguïn 2:
= 5896.32gram