Lineaire regressie: Difference between revisions
(46 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
== Wanneer gebruik ik een lineair | {{auteurs| | ||
Als je een [[correlatie|correlatietechniek]] toepast, ben je geïnteresseerd in de mate van samenhang tussen twee variabelen <math>X</math> en <math>Y</math>, bijvoorbeeld 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 <math>Y</math> via een lineair verband te voorspellen uit die van <math>X</math>. De uitkomstvariabele <math>Y</math> wordt de afhankelijke variabele genoemd, en de voorspeller <math>X</math> de onafhankelijke variabele. | |mainauthor= prof dr R.J. de Haan | ||
|coauthor= | |||
}} | |||
== Wanneer gebruik ik een lineair regressiemodel? == | |||
Als je een [[correlatie|correlatietechniek]] toepast, ben je geïnteresseerd in de mate van samenhang tussen twee variabelen <math>X</math> en <math>Y</math>, 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 <math>Y</math> via een lineair verband te voorspellen uit die van <math>X</math>. De uitkomstvariabele <math>Y</math> wordt de afhankelijke variabele genoemd, en de voorspeller <math>X</math> 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 [[multivariabele regressie|meervoudige (ook wel ''multiple'' of ''multivariable'')]] lineaire regressie. | 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 [[multivariabele regressie|meervoudige (ook wel ''multiple'' of ''multivariable'')]] lineaire regressie. | ||
Line 7: | Line 11: | ||
#Wat betreft het type data mogen de <math>X</math> variabelen zowel [[KEUZE TOETS#Van welk type is mijn data?|discreet als continu]] zijn. De afhankelijke variabele <math>Y</math> mag alleen continu zijn; | #Wat betreft het type data mogen de <math>X</math> variabelen zowel [[KEUZE TOETS#Van welk type is mijn data?|discreet als continu]] zijn. De afhankelijke variabele <math>Y</math> mag alleen continu zijn; | ||
#Voor elke waarde van <math>X</math> moeten de observaties van <math>Y</math> onafhankelijk van elkaar zijn; dat wil zeggen dat de <math>Y</math> 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). | #Voor elke waarde van <math>X</math> moeten de observaties van <math>Y</math> onafhankelijk van elkaar zijn; dat wil zeggen dat de <math>Y</math> 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). | ||
#De variabele <math>Y</math> heeft een | #De variabele <math>Y</math> heeft een normaalverdeling voor elke waarde van <math>X</math>. | ||
#De verdelingen van de <math>Y</math> variabele hebben een gelijke variantie (of | #De verdelingen van de <math>Y</math> variabele hebben een gelijke variantie (of standaarddeviatie) voor elke waarde van <math>X</math>. | ||
De assumpties 1, 4 en 5 kunnen met behulp van de residuen van het lineaire model worden gecontroleerd. | De assumpties 1, 4 en 5 kunnen met behulp van de residuen van het lineaire model worden gecontroleerd. | ||
Line 14: | Line 18: | ||
==Hoe werkt (enkelvoudige) lineaire regressie?== | ==Hoe werkt (enkelvoudige) lineaire regressie?== | ||
In lineaire regressie | In lineaire regressie bepalen we de lineaire regressielijn die het beste de relatie tussen de <math>X</math> en <math>Y</math> variabelen beschrijft. De lineaire regressielijn wordt geschat met behulp van de vergelijking: | ||
<math>Y = a+b \times X + \epsilon</math> | |||
Y | |||
</math> | |||
<math>Y</math> is de afhankelijke, uitkomstvariabele; <math>X</math> de onafhankelijke voorspeller; en 'a' en 'b' zijn de regressiecoëfficiënten; <math>\epsilon</math> 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 <math>Y</math> aan als <math>X=0</math> (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 <math>Y</math> aan als de <math>X</math> variabele met 1 eenheid toeneemt. | <math>Y</math> is de afhankelijke, uitkomstvariabele; <math>X</math> de onafhankelijke voorspeller; en 'a' en 'b' zijn de regressiecoëfficiënten; <math>\epsilon</math> 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 <math>Y</math> aan als <math>X=0</math> (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 <math>Y</math> aan als de <math>X</math> variabele met 1 eenheid toeneemt. | ||
Line 30: | Line 28: | ||
==Hoe interpreteer ik mijn SPSS output bij gebruik van een enkelvoudig lineair model?== | ==Hoe interpreteer ik mijn SPSS output bij gebruik van een enkelvoudig lineair model?== | ||
Stel dat | Stel dat in een steekproef van n=25 de [[correlatie|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 [[statistische software#SPSS|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. | ||
{| border ="1" style="text-align:center" cellpadding="3" cellspacing="0" | {| border ="1" style="text-align:center" cellpadding="3" cellspacing="0" | ||
Line 128: | Line 126: | ||
==Hoe werkt meervoudige lineaire regressie?== | ==Hoe werkt meervoudige lineaire regressie?== | ||
Bij [[multivariabele regressie|meervoudige ('multiple' of 'multivariable')]] lineaire regressie zijn we geïnteresseerd in het | Bij [[multivariabele regressie|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: | ||
#de waarde van een afhankelijke variabele te voorpellen met | #de waarde van een afhankelijke variabele te voorpellen met een set van onafhankelijke variabelen, en/of | ||
#na te gaan in welke mate een onafhankelijke <math>X</math> variabele lineair gerelateerd is aan de afhankelijke <math>Y</math> variabele, rekening houdend met (geadjusteerd voor) de invloed van andere X variabelen. | #na te gaan in welke mate een onafhankelijke <math>X</math> variabele lineair gerelateerd is aan de afhankelijke <math>Y</math> variabele, rekening houdend met (geadjusteerd voor) de invloed van andere <math>X</math> variabelen. | ||
In de meervoudige lineaire regressievergelijking | In de meervoudige lineaire regressievergelijking | ||
Line 136: | Line 134: | ||
<math>Y = a + b_1\times X_1+b_2\times X_2+\ldots+b_k\times X_k + \epsilon </math> | <math>Y = a + b_1\times X_1+b_2\times X_2+\ldots+b_k\times X_k + \epsilon </math> | ||
zijn <math>X_i, (i = 1,2,\ldots,k),</math> de | zijn <math>X_i, (i = 1,2,\ldots,k),</math> de voorspellende variabelen of covariaten, is <math>Y</math> de afhankelijk variabele, en vormen <math>b_1, b_2, \ldots, b_k</math> de (partiële) regressiecoëfficiënten; <math>\epsilon</math> representeert weer de residuele fout (de afstand van de datapunten tot de regressielijn). De coëfficiënt <math>b_1</math> geeft aan hoeveel <math>Y</math> toeneemt als <math>X_1</math> met één eenheid toeneemt, rekening houdend met (geadjusteerd voor) de invloed van de andere <math>X</math> variabelen door die constant te houden. Op deze wijze kunnen we dus de impact van <math>X_1</math> op <math>Y</math> analyseren onafhankelijk van de invloed van de andere <math>X</math> variabelen. | ||
==Hoe interpreteer ik mijn SPSS output bij gebruik van een meervoudig lineair model?== | ==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). | |||
{| border ="1" style="text-align:center" cellpadding="3" cellspacing="0" | {| border ="1" style="text-align:center" cellpadding="3" cellspacing="0" | ||
Line 200: | Line 198: | ||
De F-test in de ANOVA tabel | De F-test in de ANOVA tabel toetst de nulhypothese: regressiecoëfficiënten <math>b_i</math> 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 <math>X</math> variabelen. | ||
{| border ="1" style=align | {| border ="1" style="text-align:center" cellpadding="3" cellspacing="0" | ||
!colspan="6" align="center"|Coefficients | !colspan="6" align="center"|Coefficients | ||
|- | |- | ||
|colspan="2" width="100"| | |colspan="2" width="100"| | ||
|colspan="2" style="background:#faecc8 | |colspan="2" style="background:#faecc8" | Unstandardized | ||
coefficients | coefficients | ||
|width="100" | t | |width="100" | t | ||
|width="100" | Sig. | |width="100" | Sig. | ||
|- | |- | ||
|model | |width="100"|model | ||
|style="background:#faecc8" | | |style="background:#faecc8" width="100" | | ||
|style="background:#faecc8" |B | |style="background:#faecc8" width="100" |B | ||
|SE | |width="100"| SE | ||
| | | | ||
| | | | ||
|- | |- | ||
|rowspan="4" align="top" | 1 | |rowspan="4" align="top" align="left"| 1 | ||
|style="background:#faecc8" |(Constant) | |style="background:#faecc8" align="left"|(Constant) | ||
|style="background:#faecc8" |75,211 | |align="right" style="background:#faecc8" |75,211 | ||
|17,118 | |align="right"|17,118 | ||
|4,641 | |align="right"|4,641 | ||
|,0001 | |align="right"|,0001 | ||
|- | |- | ||
|style="background:#faecc8" | Gewicht | |style="background:#faecc8" align="left"| Gewicht | ||
|style="background:#faecc8" | 1,180 | |align="right" style="background:#faecc8" | 1,180 | ||
|,261 | |align="right"|,261 | ||
|4,512 | |align="right"|4,512 | ||
|,0001 | |align="right"|,0001 | ||
|- | |- | ||
|style="background:#faecc8" | Lengte | |style="background:#faecc8" align="left"| Lengte | ||
|style="background:#faecc8" | -,031 | |align="right" style="background:#faecc8" | -,031 | ||
|,172 | |align="right"|,172 | ||
| -,181 | |align="right"|-,181 | ||
|,857 | |align="right"|,857 | ||
|- | |- | ||
|style="background:#faecc8" | Geslacht | |style="background:#faecc8" align="left" | Geslacht | ||
|style="background:#faecc8" | 4,230 | |align="right" style="background:#faecc8" | 4,230 | ||
|1,611 | |align="right"|1,611 | ||
|2,626 | |align="right"|2,626 | ||
|,010 | |align="right"|,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, | 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 <math>\times</math> 37) – (0,03 <math>\times</math> 115) + (4,23 <math>\times</math> 1) = 119,65 mmHg. | 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 <math>\times</math> 37) – (0,03 <math>\times</math> 115) + (4,23 <math>\times</math> 1) = 119,65 mmHg. | ||
== Hoe interpreteer ik de resultaten van mijn lineaire model bij een | == 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 | ''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- | ''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: | 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, | 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), waarbij exp staat voor 'e tot de macht'. | |||
Dit is gelijk aan: | Dit is gelijk aan: | ||
cortisol = exp ( intercept + B* | : cortisol = exp(intercept + B*X) | ||
Bekijken we nu het verschil in cortisolwaarden bij toename van 1 unit X: | |||
: cortisol = exp(intercept + B*(X+1)) = exp(intercept + B*X + B) | |||
Dan is dit, gebruikmakend van de rekenregels, gelijk aan: | |||
: cortisol = <span style="background-color:lightgrey> exp(intercept + B*X) </span style> * exp(B) | |||
exp ( | 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 [https://stats.idre.ucla.edu/other/mult-pkg/faq/general/faqhow-do-i-interpret-a-regression-model-when-some-variables-are-log-transformed UCLA: Academic Technology Services, Statistical Consulting Group]. | |||
== Waar vind ik lineaire regressie in SPSS? == | == Waar vind ik lineaire regressie in SPSS? == | ||
Je vindt 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 [[KEUZE TOETS#Van welk type is mijn data? |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 [[Lineaire regressie#Hoe werkt (enkelvoudige) lineaire regressie?|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. [[KEUZE TOETS#Hoe_kan_ik_in_SPSS_mijn_data_transformeren.3F|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 [[Correlatie|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 [[Correlatie|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 [[KEUZE_TOETS#Hoe_kan_ik_in_SPSS_mijn_data_transformeren.3F|logtransformatie]]. | |||
== Hoeveel predictoren mag ik aan mijn model meegeven? == | |||
Zie de pagina over steekproefgrootte op deze wiki: | |||
*[[Poweranalyse#Hoeveel_pati.C3.ABnten_heb_ik_nodig_om_een_predictie_model_te_bouwen.3F|poweranalyse bij een predictiemodel]]. | |||
==Hoe rapporteer ik mijn ANCOVA analyse?== | |||
''Wij doen een studie waarbij we kijken naar de verandering van een biomarker na 26 weken tov baseline. In een ANCOVA model bekijken we het verschil in verandering tussen twee groepen, gecorrigeerd voor baseline waarde van de biomarker. Nu komt het model in SPSS met een output waarin een "estimated marginal mean" wordt gegeven bij de "pairwise comparison". Met daarbij een bijbehorend 95% confidence interval. Ik dacht dat dit een soort gecorrigeerd gemiddeld verschil is voor de covariaten in het model. Mijn vraag is nu: wat moeten wij rapporteren? De estimated marginal mean met 95% CI en p-waarde uit het ANCOVA model, of is het beter het verschil in verandering over de originele data (dus gewoon een t-test) te rapporteren met 95% CI, met dan aangegeven of het significant is volgens ANCOVA? | |||
Kijk eens in [http://www.bmj.com/cgi/content/full/323/7321/1123?view=long&pmid=11701584 dit artikel van Vickers en Altman (Statistical Notes BMJ 2001)]. Klik op de tabel, je ziet dat daar meerdere scores worden gerapporteerd, wellicht ook iets voor jullie? Ook [http://www.ncbi.nlm.nih.gov/pubmed/16895814 dit paper van Gerard van Breukelen (J Clin Epidemiol 2006)] is misschien interessant voor je. | |||
== Aanvullende bronnen == | |||
[https://isqr.uni-freiburg.de/reginmed2011/interaction.pdf 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. | |||
{{onderschrift}} | |||
Latest revision as of 16:23, 27 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:
- 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);
- Wat betreft het type data mogen de variabelen zowel discreet als continu zijn. De afhankelijke variabele mag alleen continu zijn;
- 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).
- De variabele heeft een normaalverdeling voor elke waarde van .
- 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.
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:
- de waarde van een afhankelijke variabele te voorpellen met een set van onafhankelijke variabelen, en/of
- 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), waarbij exp staat voor 'e tot de macht'.
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+1)) = 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.
Hoeveel predictoren mag ik aan mijn model meegeven?
Zie de pagina over steekproefgrootte op deze wiki:
Hoe rapporteer ik mijn ANCOVA analyse?
Wij doen een studie waarbij we kijken naar de verandering van een biomarker na 26 weken tov baseline. In een ANCOVA model bekijken we het verschil in verandering tussen twee groepen, gecorrigeerd voor baseline waarde van de biomarker. Nu komt het model in SPSS met een output waarin een "estimated marginal mean" wordt gegeven bij de "pairwise comparison". Met daarbij een bijbehorend 95% confidence interval. Ik dacht dat dit een soort gecorrigeerd gemiddeld verschil is voor de covariaten in het model. Mijn vraag is nu: wat moeten wij rapporteren? De estimated marginal mean met 95% CI en p-waarde uit het ANCOVA model, of is het beter het verschil in verandering over de originele data (dus gewoon een t-test) te rapporteren met 95% CI, met dan aangegeven of het significant is volgens ANCOVA?
Kijk eens in dit artikel van Vickers en Altman (Statistical Notes BMJ 2001). Klik op de tabel, je ziet dat daar meerdere scores worden gerapporteerd, wellicht ook iets voor jullie? Ook dit paper van Gerard van Breukelen (J Clin Epidemiol 2006) is misschien interessant voor je.
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.