Lineaire regressie: Difference between revisions

From Wikistatistiek
Jump to navigation Jump to search
Line 252: Line 252:
Als je een linear model fit om het effect van X op de log-getransformeerde cortisolwaarde te beoordelen, ziet dat er als volgt uit:
Als je een linear model fit om het effect van X op de log-getransformeerde cortisolwaarde te beoordelen, ziet dat er als volgt uit:


log(cortisol) = intercept + B*X
: log(cortisol) = intercept + B*X  


Inderdaad, één unit toename in X geeft B toename van de log(cortisol). Als we dit terug willen vertalen naar "gewone" cortisolwaarden, gebruiken we de inverse van de log:
Inderdaad, één unit toename in X geeft B toename van de log(cortisol). Als we dit terug willen vertalen naar "gewone" cortisolwaarden, gebruiken we de inverse van de (natuurlijke) log:


exp(log(cortisol)) = exp(intercept + B*SRIP)
: exp(log(cortisol)) = exp(intercept + B*X)


Dit is gelijk aan:
Dit is gelijk aan:


cortisol = exp(intercept + B*SRIP)
: cortisol = exp(intercept + B*X)


Bekijken we nu het verschil in cortisolwaarden bij toename van 1 unit SRIP:
Bekijken we nu het verschil in cortisolwaarden bij toename van 1 unit X:


cortisol = exp(intercept + B*X + B)
: cortisol = exp(intercept + B*X + B)


Dan is dit, gebruikmakend van de rekenregels, gelijk aan:
Dan is dit, gebruikmakend van de rekenregels, gelijk aan:


exp(intercept + B*X) * exp(B)  
: cortisol = <span style="background-color:lightgrey> exp(intercept + B*X) </span style> * exp(B)  


Nu is het eerste gedeelte van bovenstaande vergelijking precies gelijk aan de cortisolwaarde op het "beginpunt", dus inderdaad: een unit extra SRIP geeft vermenigvuldiging van de cortisolwaarde met de factor exp(B). En ook inderdaad: indien de exp(B) = 0.97, dan geeft vermenigvuldiging hiermee een afname van 3%.
Nu is het gearceerde gedeelte van bovenstaande vergelijking precies gelijk aan de cortisolwaarde op het "beginpunt", dus inderdaad: een unit extra X geeft vermenigvuldiging van de cortisolwaarde met de factor exp(B). En ook inderdaad: indien de exp(B) = 0.97, dan geeft vermenigvuldiging hiermee een afname van 3%.


Je interpretatie was dus juist. (In het bovenstaande ben ik er wel vanuit gegaan dat de cortisolwaardes met de natuurlijke logaritme getransformeerd zijn en niet bijvoorbeeld met een 10log).
Je interpretatie was dus juist. (In het bovenstaande ben ik er wel vanuit gegaan dat de cortisolwaardes met de natuurlijke logaritme getransformeerd zijn en niet bijvoorbeeld met een 10log).

Revision as of 14:00, 11 June 2024

Auteur prof dr R.J. de Haan
Co-Auteur
auteurschap op deze site

Wanneer gebruik ik een lineair regressiemodel?

Als je een correlatietechniek toepast, ben je geïnteresseerd in de mate van samenhang tussen twee variabelen en , bijvoorbeeld bij een onderzoek naar de samenhang tussen leeftijd en scores op een cognitieve test. Met lineaire regressie ga je een stap verder. Met deze techniek probeer je de waarden van de uitkomst via een lineair verband te voorspellen uit die van . De uitkomstvariabele wordt de afhankelijke variabele genoemd, en de voorspeller de onafhankelijke variabele. We spreken van enkelvoudige (ook wel simple of univariable) regressie als we de uitkomst willen voorspellen met één predictor. In de praktijk zal dat in vele gevallen niet voldoende zijn en is het wenselijk om de effecten van twee of meer voorspellers te analyseren. We spreken dan van meervoudige (ook wel multiple of multivariable) lineaire regressie.

Om een lineaire regressie te kunnen gebruiken, moeten de onderzoeksgegevens aan een aantal statistische voorwaarden voldoen:

  1. Over de gehele range van geobserveerde waarden moet sprake zijn van een lineaire samenhang tussen de onafhankelijke variabele en de afhankelijke variabele (tip: maak eerst een scatterplot om de aard van de samenhang tussen en te exploreren);
  2. Wat betreft het type data mogen de variabelen zowel discreet als continu zijn. De afhankelijke variabele mag alleen continu zijn;
  3. Voor elke waarde van moeten de observaties van onafhankelijk van elkaar zijn; dat wil zeggen dat de variabelen slechts 1 keer bij een persoon zijn gemeten. Lineaire regressie is dus niet geschikt om voor onderzoeksgegevens te analyseren waarbij de patiënten herhaaldelijk in de tijd zijn gemeten (voor herhaalde metingen bestaan andere technieken).
  4. De variabele heeft een normaalverdeling voor elke waarde van .
  5. De verdelingen van de variabele hebben een gelijke variantie (of standaarddeviatie) voor elke waarde van .

De assumpties 1, 4 en 5 kunnen met behulp van de residuen van het lineaire model worden gecontroleerd.

Hoe werkt (enkelvoudige) lineaire regressie?

In lineaire regressie bepalen we de lineaire regressielijn die het beste de relatie tussen de en variabelen beschrijft. De lineaire regressielijn wordt geschat met behulp van de vergelijking:

is de afhankelijke, uitkomstvariabele; de onafhankelijke voorspeller; en 'a' en 'b' zijn de regressiecoëfficiënten; representeert de afstand tussen de regressielijn en de datapunten (de residuen). Regressiecoëfficiënt ‘a’ wordt ook wel de intercept genoemd, en geeft de waarde van aan als (de intercept bepaalt dus de hoogte van de regressielijn). De regressiecoëfficiënt ‘b’ weerspiegelt de helling (slope) van de regressielijn, en geeft de gemiddelde toename van aan als de variabele met 1 eenheid toeneemt.

LineaireRegressie.png

Hoe interpreteer ik mijn SPSS output bij gebruik van een enkelvoudig lineair model?

Stel dat in een steekproef van n=25 de Pearson’s correlatie tussen de leeftijd van proefpersonen en hun lichaamsvetpercentage 0.81 is. We willen deze samenhang echter niet alleen beschrijven, maar op basis van de leeftijd van de persoon nu ook een voorspelling doen over zijn of haar lichaamsvetpercentage. Als we in SPSS in de schermen van de module Linear Regression de variabelen ‘vetpercentage’ als afhankelijke (dependent) variabele opgeven, en de variabele leeftijd als onafhankelijke (independent), dan zullen de volgende tabellen worden gegenereerd: Model Summary, ANOVA en Coeficients. NB: in de hierna volgende voorbeelden worden sommige SPSS tabellen in verkorte vorm weergegeven.

Model Summary
Model R R square Adjusted R square SE of the estimate
1 .821 .659 .645 6.3898

De tabel Model Summary geeft de Pearson’s correlatie weer tussen de betreffende en variabelen. De kolom 'R square' is een zogenaamde goodness-of-fit maat. Deze maat geeft uitdrukking aan hoe goed de geobserveerde data clusteren rond de geschatte regressielijn. In een enkelvoudige lineaire regressie is dat het kwadraat van de correlatie. De proportie wordt meestal in een percentage ‘verklaarde variantie’ uitgedrukt. In dit voorbeeld betekent R square dus dat de totale variatie in vetpercentages voor 66% verklaard kan worden door de lineaire regressie c.q. de verschillen in leeftijd.

ANOVA
Model Sum of squares df Mean Square F Sig.
1          
Regression 1818,362 1 1818,362 44,535 ,000
Residuals 939,078 23 40,829    
Total 2757,440 24      

De F-test in de ANOVA tabel toets de nulhypothese: regressiecoëfficiënt b = 0 (‘er is geen samenhang tussen en , dus de regressielijn loopt horizontaal - zonder helling - door de puntenwolk’). Uit de tabel kunnen we opmaken dat leeftijd een significante voorspeller is van het gemeten vetpercentage (regressiecoëfficiënt b ≠ 0). Of, anders geformuleerd, we kunnen concluderen dat het vetpercentages van de proefpersonen significant verklaard kunnen worden door hun verschillen in leeftijd.

Coefficients
  Unstandardized

coefficients

t Sig.
model   B SE    
1 (Constant) 2,507 3,932 ,638 ,530
Leeftijd ,549 ,082 6,673 ,000

a. dependent variable: vetpercentage

De t-test in de derde tabel – Coefficients- geeft niet meer informatie dan hetgeen we al wisten uit de F-test in de ANOVA tabel, namelijk dat leeftijd een significante voorspeller is van het gemeten vetpercentage. In deze tabel wordt de lineaire vergelijking weergegeven. De regressiecoëfficiënt a zien we (enigszins verwarrend in SPSS) staan onder de kolom B, rechts van de cel ‘Constant’, en heeft de waarde 2,51. Regressiecoëfficiënt b wordt ook onder de kolom B vermeld, rechts van de variabele ‘leeftijd’, en heeft de waarde 0,55. We kunnen nu de lineaire vergelijking als volgt invullen: vetpercentage = 2,51 + (0,55 leeftijd). Het verwachte vetpercentage van een proefpersoon van 60 jaar oud is dus: 2,507+ (0,549 60) = 35,45%.

Hoe werkt meervoudige lineaire regressie?

Bij meervoudige ('multiple' of 'multivariable') lineaire regressie zijn we geïnteresseerd in het tegelijkertijd modelleren van twee of meer onafhankelijke variabelen. Je kunt je voorstellen dat niet alleen de leeftijd, maar ook het geslacht van de proefpersoon een bijdrage levert aan de voorspelling van zijn of haar vetpercentage. Ander voorbeeld: omdat er een associatie is tussen de lengte en het gewicht van een kind, willen we in een onderzoek naar de relatie tussen gewicht en systolische bloeddruk ook de lengte van het kind in de statische analyse betrekken. Kortom, we passen meervoudige lineaire regressie toe om:

  1. de waarde van een afhankelijke variabele te voorpellen met een set van onafhankelijke variabelen, en/of
  2. na te gaan in welke mate een onafhankelijke variabele lineair gerelateerd is aan de afhankelijke variabele, rekening houdend met (geadjusteerd voor) de invloed van andere variabelen.

In de meervoudige lineaire regressievergelijking

zijn de voorspellende variabelen of covariaten, is de afhankelijk variabele, en vormen de (partiële) regressiecoëfficiënten; representeert weer de residuele fout (de afstand van de datapunten tot de regressielijn). De coëfficiënt geeft aan hoeveel toeneemt als met één eenheid toeneemt, rekening houdend met (geadjusteerd voor) de invloed van de andere variabelen door die constant te houden. Op deze wijze kunnen we dus de impact van op analyseren onafhankelijk van de invloed van de andere variabelen.

Hoe interpreteer ik mijn SPSS output bij gebruik van een meervoudig lineair model?

Stel dat we bij 100 kinderen een onderzoek doen naar de relatie tussen gewicht en systolische bloeddruk. We weten dat er een relatie is tussen het gewicht en de lengte van een kind, en mogelijk speelt het geslacht ook een rol. In een meervoudig lineaire regressie analyseren we nu het effect van gewicht (kg), lengte (cm) en geslacht (0 = jongen; 1 = meisje).

Model Summary
Model R R square Adjusted R square
1 .564 .318 .297

a. Adjusted R square betekent dat bij berekening van de verklaarde variantie rekening is gehouden met het aantal verklarende variabelen in het model.

Uit de Model Summary komt naar voren dat de adjusted R square = 0,297. Met andere woorden; ongeveer 30% van de variatie in systolische bloeddruk kan verklaard worden door verschillen in gewicht, lengte en geslacht van de kinderen.

ANOVA
Model Sum of squares df Mean Square F Sig.
1          
Regression 2804,045 3 934,682 14,952 ,0001
Residuals 6001,261 96 62,513    
Total 8805,306 99      


De F-test in de ANOVA tabel toetst de nulhypothese: regressiecoëfficiënten zijn 0. Uit de analyse komt naar voren dat er een significante lineaire relatie is tussen de systolische bloeddruk en minstens één van de onafhankelijke variabelen.

Coefficients
  Unstandardized

coefficients

t Sig.
model   B SE    
1 (Constant) 75,211 17,118 4,641 ,0001
Gewicht 1,180 ,261 4,512 ,0001
Lengte -,031 ,172 -,181 ,857
Geslacht 4,230 1,611 2,626 ,010

De t-test laat zien dat de relatie tussen gewicht en systolische bloeddruk significant is (p < 0,001). Geadjusteerd voor de effecten van lengte en geslacht, voorspelt 1 kilogram gewichtstoename een gemiddelde systolische bloeddrukstijging van 1,18 mmHg. Geadjusteerd voor de invloeden van gewicht en geslacht is de relatie tussen lengte en systolische bloeddruk echter niet significant (p = 0,86). Er is ook een significante relatie (p = 0,01) tussen geslacht en bloeddruk: meisjes hebben - gemiddeld genomen – een 4,23 mmHg hogere systolische bloeddrukwaarde dan jongens, rekening houdend met verschillen in gewicht en lengte tussen kinderen. Kortom, gewicht en geslacht blijken onafhankelijke voorspellers te zijn van de systolische bloeddruk. Met behulp van de gegeven regressiecoëfficiënten uit de tabel kunnen we de lineaire vergelijking verder invullen. Zo is de verwachte systolische bloeddruk van een meisje van 37 kg met een lengte van 115 cm: 75,21 + (1,18 37) – (0,03 115) + (4,23 1) = 119,65 mmHg.

Hoe interpreteer ik de resultaten van mijn lineaire model bij een logtransformatie van de uitkomstmaat?

Ik heb een vraag over de interpretatie van de B-waarden in mijn lineaire regressie analyse. De afhankelijke variabele is namelijk een log-getransformeerde cortisolwaarde waardoor de B-waarde (en wellicht ook de gestandaardiseerde Beta) moeilijker te interpreteren zijn. Ik heb daarom de B-waarden terug getransformeerd (Transformed B (EXP(B-waarde)) en krijg dan waarden rond de 1. Mijn vraag is nu: hoe leg ik de B-waarden uit tijdens de presentatie op een congres komende week? Normaal gesproken spreek je van bij 1 unit toename in de onafhankelijke variabele van ...(B-waarde) afname in cortisolwaarde. Zelf dacht ik dat bijvoorbeeld Transformed [EXP(beta)] = 0.97, CI (0.95-0.99), p = .027 nu uitgelegd kan worden als: iedere unit toename van de onafhankelijke variabele geeft een afname van 3% in cortisol. Klopt dit?

Als je een linear model fit om het effect van X op de log-getransformeerde cortisolwaarde te beoordelen, ziet dat er als volgt uit:

log(cortisol) = intercept + B*X

Inderdaad, één unit toename in X geeft B toename van de log(cortisol). Als we dit terug willen vertalen naar "gewone" cortisolwaarden, gebruiken we de inverse van de (natuurlijke) log:

exp(log(cortisol)) = exp(intercept + B*X)

Dit is gelijk aan:

cortisol = exp(intercept + B*X)

Bekijken we nu het verschil in cortisolwaarden bij toename van 1 unit X:

cortisol = exp(intercept + B*X + B)

Dan is dit, gebruikmakend van de rekenregels, gelijk aan:

cortisol = exp(intercept + B*X) * exp(B)

Nu is het gearceerde gedeelte van bovenstaande vergelijking precies gelijk aan de cortisolwaarde op het "beginpunt", dus inderdaad: een unit extra X geeft vermenigvuldiging van de cortisolwaarde met de factor exp(B). En ook inderdaad: indien de exp(B) = 0.97, dan geeft vermenigvuldiging hiermee een afname van 3%.

Je interpretatie was dus juist. (In het bovenstaande ben ik er wel vanuit gegaan dat de cortisolwaardes met de natuurlijke logaritme getransformeerd zijn en niet bijvoorbeeld met een 10log).

Zie voor uitgebreidere uitleg over het interpreteren van regressiecoëfficiënten bij gebruik van een logtransformatie deze pagina van UCLA: Academic Technology Services, Statistical Consulting Group.

Waar vind ik lineaire regressie in SPSS?

Je vindt lineaire regressie in SPSS 28 onder Analyze -> Regression -> Linear.

Hoe geef ik categorische variabelen mee bij lineaire regressie in SPSS?

Voor het gebruiken van categorische variabelen als voorspeller in een lineair model moeten er in SPSS eerst dummyvariabelen aangemaakt worden. Om bijvoorbeeld het effect van roken (met categorieën 'no', 'previous' of 'current') op systolische bloeddruk te onderzoeken, moeten er twee dummyvariabelen aangemaakt worden. Als we de groep die nooit gerookt heeft als referentie beschouwen, dan maken we een 0/1 variabele voor 'previous smoker' en een 0/1 variabele voor 'current smoker'. In het algemeen geldt: bij n categorieën moeten n-1 dummyvariabelen aangemaakt worden. In de output vinden we nu het voor het verschil previous vs no smoking en current vs no smoking de regressiecoefficient met bijhorende significantietest. Eventueel kan de "overall test" die weergeeft of de variabele roken überhaupt bijdraagt aan het model verkregen worden door de voorspellers in twee blokken mee te geven aan het regressiemodel: Een blok met alle variabelen behalve roken en een tweede blok met de twee dummyvariabelen voor roken toegevoegd. Als er bij 'Statistics' 'R squared change' staat aangevinkt, dan geeft SPSS ook een p-waarde behorend bij het toevoegen van alle drie de rook-categorieën.

Alternatief kun je in plaats van de standaard Analyze -> Regression -> Linear procedure gebruik maken van de Analyze -> General Linear Model -> Univariate module. Hierin kun je aangeven wat de categorische variabelen zijn door deze als 'Fixed factor(s)' aan te duiden, de numerieke voorspellers meld je onder 'Covariate(s)'. Onder 'Model...' geef je vervolgens aan welke termen je in het model wilt, plus eventuele interacties. Vraag onder 'Options' om de gebruikelijke regressiecoëfficiënten in de output te zien. Deze module doet hetzelfde als een gewone lineaire regressie, maar heeft meer opties/mogelijkheden die vaak niet van toepassing zijn.

Mijn voorspeller is niet normaal verdeeld, kan ik nu nog lineaire regressie gebruiken?

Ik heb een onderzoek gedaan bij patiënten met neurologische afwijking, deze patiënten kunnen afwijkingen in de hersenen hebben. Daarom heb ik een MRI van de hersenen gemaakt en een aantal neuropsychologische testen gedaan. Ik wil onderzoeken of kinderen met véél afwijkingen ook slechter scoren op de neuropsychologische testen. De variabele die de MRI afwijkingen aangeeft is niet normaal verdeeld: de helft van de patiënten heeft geen afwijkingen (afwijkscore is 0), de andere helft van de patiënten heeft afwijkingsscore 5 tot >10.000. Het liefst zou ik een aantal lineaire regressies doen met als voorspeller de afwijkscore en als uitkomst telkens één van de neuropsychologische testen. Een deel van de neuropsychologische testen zijn afhankelijk van de leeftijd, die moet dan dus ook mee in het model als voorspeller. Ik twijfel of ik wel een (multipele) lineaire regressie mag doen gezien de scheve verdeling van de afwijkvariabele. Logtransformeren helpt wel iets maar dan nog is het niet normaal verdeeld. Is er nog een oplossing te vinden zodat ik wel de (multipele) lineaire regressie kan uitvoeren? Een alternatief is een simpel correlatiemodel maken, dat kan ik non-parameterisch m.b.v. een Spearman's correlatie doen. Volgens mij mag ik dan gewoon de ongetransformeerde afwijkscore nemen als variabele en kijken wat de Spearman's correlatie is met de neuropsychologische testen. Klopt dat? Maar dan heb ik een probleem in die gevallen waarbij ik de leeftijd ook moet meenemen als variabele, dan moet ik partial correlations doen en dan leeftijd als 'controlling for' variabele meenemen. Maar dat is weer niet non-parametrisch, is er een manier om dat te omzeilen?

Heel sec bekeken hoeft de voorspeller in een lineaire regressie niet normaal verdeeld te zijn. Die voorwaarde geldt voor de uitkomstmaat (of eigenlijk voor de residuen van uitkomstmaat minus modelvoorspelling). Echter, als je de afwijkscore als numerieke covariaat in het model zou gebruiken, dan maak je wel een andere ferme aanname, namelijk dat iedere 1 punt toename in afwijkscore met een vaste toe- of afname op de uitkomsten van de neuropsychologische testen correspondeert. En dit is gezien de grote spreiding in afwijkingswaarden waarschijnlijk niet realistisch. De schattingen in zo'n regressie zouden onevenredig zwaar beïnvloed worden door de patiënten met >10000 score.

Een niet-parametrische Spearman correlatie berekenen kan inderdaad. Hierbij heb je zoals je zelf al aangeeft echter geen mogelijkheid tot corrigeren voor andere factoren (de partial correlaties zijn eigenlijk gewoon multipele lineaire regressies).

Wat je alternatief zou kunnen doen is het opdelen van de afwijkvariabele in categorieën. Een grove indeling in wel of geen afwijking zou kunnen, of een meer fijnmazige in bijvoorbeeld 0, >0 tot 50, >500. Het liefst gebruik je 'logische afkappunten'. Let er wel op dat er nog een redelijk aantal patiënten in ieder van de categorieën valt om het schatbaar te houden. Een regressie met deze categorische variabele als voorspeller kan dan kijken of het behoren tot een andere categorie voorspellend is voor de testuitkomsten. Hierbij is het weer mogelijk te corrigeren voor andere factoren. Ook zou je kunnen proberen om door middel van een transformatie de variabele minder scheef verdeeld te krijgen, bijvoorbeeld een logtransformatie.

Aanvullende bronnen

Course material on interaction and effect modification from the web based distance learning course - Regression Models as a Tool in Medical Research - International School of Quantitative Research, University of Freiburg.

Klaar met lezen? Je kunt naar het OVERZICHT van alle statistische onderwerpen op deze wiki gaan of naar de pagina KEUZE TOETS voor hulp bij het uitzoeken van een geschikte toets of analyse. Wil je meer leren over biostatistiek? Volg dan de AMC e-learning Practical Biostatistics. Vind je op deze pagina's iets dat niet klopt? Werkt een link niet? Of wil je bijdragen aan de wiki? Neem dan contact met ons op.

De wiki biostatistiek is een initiatief van de voormalige helpdesk statistiek van Amsterdam UMC, locatie AMC. Medewerkers van Amsterdam UMC kunnen via intranet ondersteuning aanvragen.