Opgavebesvarelse, logistisk regression Data ligger i rop.xls på kursushjemmesiden: http://staff.pubhealth.ku.dk/ jufo/courses/logistic/ Når du har gemt data på din computer, kan det indlæses i SAS med kommandoen: PROC IMPORT OUT=work.rop DATAFILE= C:\stinavne\rop.xls DBMS=XLS REPLACE; /* NB: Nye variable tilføjes med: */ DATA rop; SET rop; gaweeks = floor(ga/7); ga29weeks = ga/7-29; Vi tilføjer i samme ombærding to nye variable til data gaweeks der er gestationsalderen afrundet til hele antal uger og ga29weeks der er gestationsalderen i uger (decimaltal) og "flyttet"så nulpunktet ligger ved 29 uger. Variablene skal bruges til at løse opgave 1.1 og 1.4. Foruden resultatet af screeningen (rop ja/nej) indeholder data oplysninger om børnenes køn (dreng=1, pige=2), gestationsalder (i dage), fødselsvægt (i gram) og fødselsvægt relativ til gestationsalderen (z-score målt i standard deviationer). For at få et hurtigt overblik tegner vi data op (fødselsvægt vs gestationsalder) med drenge og piger hver for sig og med ROP-tilfælde markeret med rødt. Bemærk for at få delt op efter køn og ROP-status er det nødvendigt først at sortere data efter disse variable, hvilket vi gør med proc sort i SAS: PROC SORT DATA=rop; BY sex rop ga birthweight; SYMBOL1 i=none v=dot color= blue ; SYMBOL2 i=none v=dot color= red ; PROC GPLOT DATA=rop; BY sex; PLOT birthweight*ga=rop / FRAME; 1
2
Del 1 Spørgsmål 1 Find den totale frekvens af rop-tilfælde i data og udregn også de relative frekvenser for gestationsalder 22 til 31 uger. Er der noget der overrasker? Her skal vi bruge variablen gaweeks der angiver gestaionsalderen afrundet til hele uger. Tabellering af data med proc freq i SAS giver: PROC FREQ DATA=rop; TABLES gaweeks*rop / NOCOL NOPERCENT; The FREQ Procedure Table of gaweeks by ROP gaweeks ROP(ROP) Frequency Row Pct 0 1 Total 22 12 0 12 100.00 0.00 23 22 4 26 84.62 15.38 24 47 18 65 72.31 27.69 25 114 33 147 77.55 22.45 26 162 23 185 87.57 12.43 27 253 10 263 96.20 3.80 28 342 14 356 96.07 3.93 29 424 10 434 97.70 2.30 30 585 2 587 99.66 0.34 31 756 1 757 99.87 0.13 Total 2717 115 2832 Vi ser at 115 ud af 2832 børn har ROP, hvilket svarer til ca 4%. Risikoen for ROP ser umiddelbart ud til at stige med faldende gestationsalder, men blandt de allertidligst fødte børn (22 og 23 uger) er der ingen ROP-tilfælde. Det kan selvfølgelig være en tilfældighed da der er meget få børn i disse grupper, men det kunne også være tale om en survival of the fittest-effekt idet kun få børn der fødes så tidligt faktisk overlever så længe at de kan nå at udvikle ROP. Vi vil imidlertid ikke forfølge problemet, men modellere risikoen for ROP som monoton funktion af gestationsalderen. 3
Spørgsmål 2 Fit en simpel logistisk regression med ga som forklarende variabel. Angiv estimaterne for α og β og giv en fortolkning af dem. Tegn den estimerede risiko som funktion af gestationsalderen. Fra proc logistic i SAS får vi følgende estimater: ODS GRAPHICS ON; PROC LOGISTIC DATA=rop DESCENDING PLOTS=EFFECT; MODEL rop = ga; ODS GRAPHICS OFF; The LOGISTIC Procedure Analysis of Maximum Likelihood Estimates Standard Wald Parameter DF Estimate Error Chi-Square Pr > ChiSq Intercept 1 12.9097 1.2168 112.5601 <.0001 GA 1-0.0821 0.00648 160.5189 <.0001 Odds Ratio Estimates Point 95% Wald Effect Estimate Confidence Limits GA 0.921 0.910 0.933 Parameterestimatet for interceptet er ˆα = 12.91. Havde det en fortolkning skulle det svare til log(odds) for ROP for et levendefødt barn med gestationsalder 0 uger!! Regressionskoefficienten estimeres med ˆβ = 0.0821. Tager man exponential funktionen til ˆβ får man OR= exp( ˆβ) = 0.921 svarende til at odds for ROP falder med en estimeret faktor 0.92 (eller 8%) for hver dag gestationsalderen stiger. Vi aflæser 95%-konfidensintervallet for odds ratio til at være (0.910, 0.933). Effekten af gestationsalder er højsignifikant (P < 0.0001). Ved at angive argumentet PLOTS=EFFECT får vi SAS til at tegne grafen med den estimerede risiko som funktion af gestationsalder. Grafen viser som forventet moderat høj risiko for de yngste gestationsaldre og lav risiko for de ældste gestationsaldre (se næste side). 4
Spørgsmål 3 Find OR for et fald i gestationsalder på én uge. Angiv 95%-konfidensinterval for estimatet. Odds ratio associeret med et fald i gestationsalderen på en uge (= syv dage) er OR 7 = exp( 7 ˆβ) = 1.777. Vi ved at 95%-konfidensintervallet for β er ˆβ ± 2 s.e = 0.0821 ± 2 0.00648 = ( 0.0951, 0.0691), så vi ganger endepunkterne med -7 og tager eksponentialfunktionen på resultatet, hvilket giver 95%-konfidensnintervallet (1.623,1.945) for OR 7. 5
Spørgsmål 4 Find et estimat for risikoen for ROP når gestationsalderen er 29 uger. Find også konfidensinterval for estimatet. Her benytter vi variablen ga29weeks med nulpunkt ved ga=29 uger som forklarende variabel og kan aflæse log(odds for risikoen som intercept: PROC LOGISTIC DATA=rop DESCENDING; MODEL rop = ga29weeks; The LOGISTIC Procedure Analysis of Maximum Likelihood Estimates Standard Wald Parameter DF Estimate Error Chi-Square Pr > ChiSq Intercept 1-3.7522 0.1438 680.6529 <.0001 ga29weeks 1-0.5745 0.0453 160.5189 <.0001 Odds Ratio Estimates Point 95% Wald Effect Estimate Confidence Limits ga29weeks 0.563 0.515 0.615 Vi aflæser ˆα = 3.7522, hvilket giver Odds= exp( 3.7522) = 0.0235 og vi kan transformere videre til et egentligt risiko estimat P= 1+0.0235 0.0235 = 0.0229. For at få et konfidensinterval for risiko-estimatet, tranformeres endepunkterne på konfidensintervallet for interceptet, ˆα ± 2 SE = 3.7522 ± 2 0.1438 = ( 4.0398, 3.4646) på sammen måde. Det giver et øvre grænse på exp( 4.0398) 1+exp( 4.0398) = 0.0173 og en nedre grænse på exp( 3.4646) 1+exp( 3.4646) = 0.0303. Altså skønnes risikoen for et barn til gestationsalder 29.0 uger at ligge melem 1.73% og 3.03%. 6
Spørgsmål 5 Hvad er frekensen af ROP hos præmature drenge hhv. piger. Beregn odds ratio for forskellen mellem kønnene. Vi tabellerer antallet af ROP-tilfælde blandt drenge og piger med: PROC FREQ DATA=rop; TABLES sex*rop / NOCOL NOPERCENT CHISQ; The FREQ Procedure Table of SEX by ROP SEX(sex) ROP(ROP) Frequency Row Pct 0 1 Total 1 1418 67 1485 95.49 4.51 2 1299 48 1347 96.44 3.56 Total 2717 115 2832 Statistics for Table of SEX by ROP Statistic DF Value Prob Chi-Square 1 1.6304 0.2016 Likelihood Ratio Chi-Square 1 1.6400 0.2003 Continuity Adj. Chi-Square 1 1.3961 0.2374 Mantel-Haenszel Chi-Square 1 1.6298 0.2017 Phi Coefficient -0.0240 Contingency Coefficient 0.0240 Cramer s V -0.0240 67 Umiddelbart er der relativt flere ROP-tilfælde blandt drengene, 1485 = 4.51%, 48 end blandt pigerne hvor der er = 3.56%. Odds ratio for drenge vs piger er på 67/1418 48/1299 1347 = 1.28. Vi har benyttet chi-square testet på 2x2-tabellen. Det viser at der ikke er signifikant forskel på kønnene (P = 0.20). 7
Vi kan dog ikke være sikre på at der ikke er en kønsforskel. Tager man højde for varierende gestationsaldre kønnene imellem, bliver køns-effekten borderline signifikant (P = 0.05) med OR= 1.49 (1.00 2.23), som det fremgår af output fra proc logistic: PROC LOGISTIC DATA=rop DESCENDING; CLASS sex; MODEL rop = ga sex; Analysis of Maximum Likelihood Estimates Standard Wald Parameter DF Estimate Error Chi-Square Pr > ChiSq Intercept 1 13.0507 1.2237 113.7314 <.0001 GA 1-0.0829 0.00652 161.6727 <.0001 SEX 1 1 0.2002 0.1026 3.8070 0.0510 Odds Ratio Estimates Point 95% Wald Effect Estimate Confidence Limits GA 0.920 0.909 0.932 SEX 1 vs 2 1.493 0.998 2.232 8
Spørgsmål 6 Undersøg for piger og drenge hver for sig hvordan risikoen for ROP afhænger af gestationsalderen. Hvordan kan man teste om effekten af ga er kønsafhængig? Vi har allerede tidligere sorteret datasættet efter køn, så vi kan køre proc logistic med en BY sex-option for at få fittet modellen separat for drenge og piger. Vi slår også ODS GRAPHICS til for at få vist de estimerede sammenhænge grafisk med PLOTS=EFFECT. ODS GRAPHICS ON; PROC LOGISTIC DATA=rop DESCENDING PLOTS=EFFECT; BY sex; MODEL rop = ga; ODS GRAPHICS OFF; --------------------------------------------- sex=1 --------------------------------------------- The LOGISTIC Procedure Analysis of Maximum Likelihood Estimates Standard Wald Parameter DF Estimate Error Chi-Square Pr > ChiSq Intercept 1 14.9482 1.7018 77.1511 <.0001 GA 1-0.0920 0.00907 102.7521 <.0001 Odds Ratio Estimates Point 95% Wald Effect Estimate Confidence Limits GA 0.912 0.896 0.929 --------------------------------------------- sex=2 --------------------------------------------- The LOGISTIC Procedure Analysis of Maximum Likelihood Estimates Standard Wald Parameter DF Estimate Error Chi-Square Pr > ChiSq Intercept 1 10.8111 1.7788 36.9386 <.0001 GA 1-0.0720 0.00944 58.1240 <.0001 Odds Ratio Estimates Point 95% Wald Effect Estimate Confidence Limits GA 0.931 0.913 0.948 9
For drengene får vi en odds ratio på 0.912 (95% CI: 0.896 0.929), mens vi for pigerne får en odds ratio på 0.931 (95% CI: 0.913 0.948). Umiddelbart ser der altså ikke ud til at være stor forskel på kønnene. Heller ikke graferne giver indtryk af større forskel på effekten af gestationsalder kønnene imellem, omend der ser ud til at være lidt højere risiko for drengene alt i alt: For at få et formelt test tilføjer vi interaktionsleddet ga*sex til den multiple logistiske regressionmodel for det samlede data: PROC LOGISTIC DATA=rop DESCENDING; CLASS sex; MODEL rop = ga sex ga*sex; Type 3 Analysis of Effects Wald Effect DF Chi-Square Pr > ChiSq GA 1 156.7623 <.0001 SEX 1 2.8237 0.0929 GA*SEX 1 2.3256 0.1273 Interaktionsleddet er ikke signifikant så vi finder ingen indikation af at risikoen som funktion af gestationsalderen skulle være kønsafhængig. 10
Spørgsmål 7 Inddrag nu også z-score for fødselsvægt i den multiple regression. Har det betydning for risikoen om børnene er store eller små ift deres gestationsalder? Ændrer korrektionen for z-score ved effekterne af ga og køn? Vi tilføjer variablen zscore til den multiple regression: PROC LOGISTIC DATA=rop DESCENDING; CLASS sex; MODEL rop = ga sex zscore; Analysis of Maximum Likelihood Estimates Standard Wald Parameter DF Estimate Error Chi-Square Pr > ChiSq Intercept 1 14.3670 1.3288 116.8912 <.0001 GA 1-0.0925 0.00728 161.3499 <.0001 SEX 1 1 0.2516 0.1037 5.8911 0.0152 ZSCORE 1-0.4061 0.0821 24.4536 <.0001 Odds Ratio Estimates Point 95% Wald Effect Estimate Confidence Limits GA 0.912 0.899 0.925 SEX 1 vs 2 1.654 1.102 2.484 ZSCORE 0.666 0.567 0.783 Vi ser signifikant effekt af zscore (P < 0.0001) og at risikoen falder med voksende værdier af denne (OR=0.67, 95% CI: 0.57-0.78). Der er altså en yderligere risiko ved også at have en forholdsvis lav fødselsvægt for sin gestationsalder. Desuden ser vi nu en signifikant effekt af køn (P = 0.015), svarende til at drenge har en højere risiko for ROP end piger født med samme gestationsalder og samme fødseslvægt relativ til det forventede for gestationsalderen. 11
Spørgsmål 8 Hvad bør man checke ved modelkontrol af den logistiske model? Vi ved ikke om data indeholder tvillinger eller trillinger, men i det store hele må vi gå ud fra at børnene udvikler ROP uafhængigt af hinanden og at observationerne derfor kan antages at være uafhængige. Mulige kilder til misspecifikation er derfor ikke-linearitet og oversete interaktioner. Vi har allerede testet interaktionen mellem køn og gestationsalder, men mangler at checke om log(odds) faktisk er en lineær funktion af gestationsalderen. I mangel af bedre tester vi relationen mod et tredjegradspolynomium ved at tilføje variable gaw2 og gaw3 svarende til anden- og tredjepotenser til data (bemærk vi benytter variablen ga29weeks med nulpunkt ved 29 uger fremfor ga for at få numerisk stabile resultater): DATA rop; SET rop; gaw2 = ga29weeks**2; gaw3 = ga29weeks**3; PROC LOGISTIC DATA=rop DESCENDING; CLASS sex; MODEL rop = ga29weeks gaw2 gaw3 sex zscore; Under Model Fit Statistics finder vi deviance som -2 Log L = 723.490 for polynomial-modellen mod en deviance på 745.274 i modellen med lineær effekt af ga. Forskellen deviance= 745.274 723.490 = 21.75 skal sammenholdes med en χ 2 -fordeling med 2 frihedsgrader. Ved tabelopslag finder vi P < 0.0001 altså en højsignifikant ikke-linearitet. Måske er det survival of the fittesteffekten fra spm. 1 vi ser -? For ikke at gøre opgaven unødigt kompliceret vælger vi i det følgende at ignorere (!) den ikke-lineære effekt, men det skal bemærkes at Slidsborg et al faktisk ender med en 5 te grads polynomial model for ga. Modelkontrollen bør gentages for zscore, men er udeladt af pladshensyn. 12
Del 2 Spørgsmål 1 Fit en simpel logistisk regression for ROP-risiko med fødselsvægt som forklarende variabel. Tegn den prædikterede risiko som funktion af fødselsvægten. Tegn også ROC-kurven og diskutter om modellen er anvendelig som prædiktionsmodel. Bemærk: I Canada bruges fødselsvægt 1200g som screeningskriterium. Vi kører igen simpel logistisk regression med proc logistic, men denne gang med birthweight som forklarende variabel. For at få tegnet estimeret risiko og ROC-kurve tilføjer vi PLOTS=EFFECT og PLOTS=ROC som options til programmet. Endelig gemmer vi de prædikterede sandsynligheder i et OUT-datasæt (vi skal nemlig bruge dem i spm. 2.3). ODS GRAPHICS ON; PROC LOGISTIC DATA=rop DESCENDING PLOTS=EFFECT PLOTS=ROC; MODEL rop = birthweight; OUTPUT OUT=estimated1 predicted=estprob1; ODS GRAPHICS OFF; The LOGISTIC Procedure Analysis of Maximum Likelihood Estimates Standard Wald Parameter DF Estimate Error Chi-Square Pr > ChiSq Intercept 1 1.5037 0.3542 18.0212 <.0001 BIRTHWEIGHT 1-0.00449 0.000396 128.4676 <.0001 Odds Ratio Estimates Point 95% Wald Effect Estimate Confidence Limits BIRTHWEIGHT 0.996 0.995 0.996 Der er klart signifikant effekt af fødselsvægt. Det at odds ratio estimatet ligger tæt på en er ikke udtryk for en svag effekt, men derimod for at fødselsvægten er målt i gram. Omprogrammeres birthweight-variablen til 100g fås et mere interessant estimat. 13
ROC-kurven viser en rimelig omend langt fra perfekt diskrimination af ROPtilfælde. Sammenholdt med grafen for estimeret risiko ser vi at det ville være en dårlig ide at anvende det Canadiske screeingskriterium på danske børn, da adskillige tilfælde ville blive overset. Men øges screeningsgrænsen til 1500g opnås faktisk 100% sensitivitet i datamaterialet. 14
Spørgsmål 2 Tegn ROC-kurven for modellen i opgave 1.7 (med ga, zscore og sex som covariater). Test om z-score og køn reelt forbedrer prædiktionen. Vi kører igen multipel logistisk regression men denne gang med ROC-kurven som output. Herudover tilføjes en linie til programmet for hver af de modeller vi ønsker at sammenligne ROC-kurver for. Det vil sige modellen med alle tre forklarende variable, med køn udeladt, med z-scoren udeladt og med gestationsalderen som enlig forklarende variabel. Endelig angiver ROCCONTRAST-linien at alle disse modeller skal holdes op mod modellen med de tre variable. ODS GRAPHICS ON; PROC LOGISTIC DATA=rop DESCENDING PLOTS=ROC; CLASS sex; MODEL rop = ga sex zscore; OUTPUT OUT=estimated2 predicted=estprob2; ROC All predictors ga sex zscore; ROC without sex ga zscore; ROC without Z-score ga sex; ROC only GA ga; ROCCONTRAST REFERENCE( All predictors ) / ESTIMATE; ODS GRAPHICS OFF; Standard 95% Wald Pr > Contrast Estimate Error Confidence Limits Chi-Square ChiSq Model - All predictors 0..... without sex - All predictors -0.00036 0.00305-0.00633 0.00561 0.0139 0.9063 without Z-score - All predictors -0.0167 0.00687-0.0302-0.00325 5.9189 0.0150 only GA - All predictors -0.0165 0.00756-0.0313-0.00170 4.7731 0.0289 Modellen prædiktive evne forværres ikke væsentligt hvis køn droppes fra modellen. Tilgengæld er det en dårlig ide at se bort fra z-scoren. 15
16
Spørgsmål 3 Sammenlign de individueele risiko-estimater baseret på de to konkurrerende prædiktionsmodeler. Er der forskel? Hvor stor er forskellene typisk? Vi fletter output-datasættene fra de to forgående spm sammen og beregner forskellene mellem de individuelle prædikterede sandsynligheder med. Det er en dårlig ide at printe hele det store datasæt, så for at få et overblik over forskellene bruger vi proc univariate, der bl.a. giver udvalgte fraktiler for fordelingen: DATA estimated; MERGE estimated1 estimated2; estdif = estprob1-estprob2; PROC UNIVARIATE DATA=estimated; VAR estdif; Quantiles (Definition 5) Quantile Estimate 100% Max 0.184080529 99% 0.100695152 95% 0.040877265 90% 0.022095298 75% Q3 0.005333015 50% Median -0.000885969 25% Q1-0.004177242 10% -0.017427686 5% -0.042258226 1% -0.112793498 0% Min -0.278648906 Risiko-estimaterne fra de to konkurrerende modeller kan være ret forskellige - helt op til 28% i absolut forskel! For de fleste børns vedkommende stemmer risikoestimaterne dog godt overens; 50% holder sig indenfor ±0.5%, 90% indenfor ±4%, men også 2% med absolutte forskelle på over 10%. 17
Spørgsmål 4 Hvordan undersøger man hvilken af de to modeller der prædikterer bedst? Modellerne kan ikke direkte sammenlignes da de ikke er nestede, men vi kan teste begge modeller op mod en udviddet model med ga, sex, zscore og birthweight som forklarende variable: ODS GRAPHICS ON; PROC LOGISTIC DATA=rop DESCENDING; CLASS sex; MODEL rop = ga sex zscore birthweight; ROC All predictors ga sex zscore birthweight; ROC Three predictors ga sex zscore; ROC Birthweight birthweight; ROCCONTRAST REFERENCE( All predictors ) / ESTIMATE; ODS GRAPHICS OFF; ROC Contrast Rows Estimation and Testing Results Standard 95% Wald Pr > Contrast Estimate Error Confidence Limits Chi-Square ChiSq Model - All predictors 0..... Three predictors - All predictors -0.00020 0.00237-0.00486 0.00445 0.0074 0.9313 Birthweight - All predictors -0.0164 0.00540-0.0270-0.00577 9.1725 0.0025 Modellen med de tre forklarende variable prædikterer ikke væsentligt ringere en den udviddede model, mens fødselsvægten alene giver signifikant dårligere diskrimination. Modellen fra spm. 1.7 er altså den bedste prædiktionsmodel (og evt kunne køn droppes, da den trods sin signifikans ikke forbedrer prædiktionerne væsentligt). 18