INTRODUKTION TIL dele af SAS



Relaterede dokumenter
MPH specialmodul i epidemiologi og biostatistik. SAS. Introduktion til SAS. Eksempel: Blodtryk og fedme

Multipel Lineær Regression

Introduktion til SPSS

Lineær og logistisk regression

Regressionsanalyse i SAS

Basal Statistik - SPSS

Faculty of Health Sciences. Basal Statistik. Begreber. Parrede sammenligninger. Lene Theil Skovgaard. 6. september 2016

SPSS introduktion Om at komme igang 1

ØVELSE 2B. Formål Det primære formål med denne øvelse er at prøve nogle vigtige procedurer til statistisk og grafisk analyse.

Introduktion til SAS. Faculty of Health Sciences

Basal Statistik - SPSS

Basal Statistik - SPSS

Faculty of Health Sciences. SPSS appendix. Basal Statistik: Sammenligning af grupper, Variansanalyse. Lene Theil Skovgaard. 22.

Analysestrategi. Lektion 7 slides kompileret 27. oktober :24 p.1/17

Basal Statistik - SPSS

MPH specialmodul i epidemiologi og biostatistik. SAS. Introduktion til SAS. Eksempel: Blodtryk og fedme

Faculty of Health Sciences. Basal statistik. Lille SAS Manual. Lene Theil Skovgaard. 31. januar 2017

Basal statistik. Selve sproget. Grafik. Basale procedurer. Faculty of Health Sciences. Lille SAS Manual

Løsning til opgave i logistisk regression

Statistik FSV 4. semester 2014 Øvelser Uge 2: 11. februar

Vejledende besvarelse af hjemmeopgave i Basal statistik for lægevidenskabelige forskere, forår 2013

Løsning til øvelsesopgaver dag 4 spg 5-9

SAS systemet SAS. SAS vinduer Janne Petersen

Modelkontrol i Faktor Modeller

Basal Statistik - SPSS

Statistiske Modeller 1: Kontingenstabeller i SAS

Kort intro til SAS. Efterår Janne Petersen Judith L Jacobsen Lene Theil Skovgaard

Lineær regression i SAS. Lineær regression i SAS p.1/20

Besvarelse af opgave om Vital Capacity

1 Ensidet variansanalyse(kvantitativt outcome) - sammenligning af flere grupper(kvalitativ

Hvorfor SAS Kort intro til SAS

Basal Statistik - SPSS

Faculty of Health Sciences. Logistisk regression: Kvantitative forklarende variable

grupper(kvalitativ exposure) Variation indenfor og mellem grupper F-test for ingen effekt AnovaTabel Beregning af p-værdi i F-fordelingen

MPH specialmodul Epidemiologi og Biostatistik

Kvantitative Metoder 1 - Forår Dagens program

Opsamling Modeltyper: Tabelanalyse Logistisk regression Generaliserede lineære modeller Log-lineære modeller

SAS formater i Danmarks Statistik

Lineær regression. Simpel regression. Model. ofte bruges følgende notation:

Besvarelse af vitcap -opgaven

1 Hb SS Hb Sβ Hb SC = , (s = )

Multipel regression. M variable En afhængig (Y) M-1 m uafhængige / forklarende / prædikterende (X 1 til X m ) Model

Statistik i GeoGebra

Hjemmeopgave. I bedes benytte sidste side fra denne opgavetekst i udfyldt stand som forside på jeres opgavebesvarelse. Siden findes også på nettet.

Appelsiner, bananer og citroner

Statistik Lektion 17 Multipel Lineær Regression

Kursus Introduktion til Statistik. Forelæsning 13: Summary. Per Bruun Brockhoff

Adgangsgivende eksamen (udeladt kategori: Matematisk student med matematik på niveau A)

Løsning til eksamensopgaven i Basal Biostatistik (J.nr.: 1050/06)

Modul 11: Simpel lineær regression

Faculty of Health Sciences. Basal Statistik. Logistisk regression mm. Lene Theil Skovgaard. 5. marts 2018

Statistik Lektion 1. Introduktion Grundlæggende statistiske begreber Deskriptiv statistik

Opgave 1 Betragt to diskrete stokastiske variable X og Y. Antag at sandsynlighedsfunktionen p X for X er givet ved

Statistik Lektion 16 Multipel Lineær Regression

Basal Statistik - SPSS

Lineære sammenhænge, residualplot og regression

Det kunne godt se ud til at ikke-rygere er ældre. Spredningen ser ud til at være nogenlunde ens i de to grupper.

Epidemiologi og Biostatistik Opgaver i Biostatistik Uge 10: 13. april

Mindste kvadraters tilpasning Prædiktion og residualer Estimation af betinget standardafvigelse Test for uafhængighed Konfidensinterval for hældning

Anvendt Statistik Lektion 8. Multipel Lineær Regression

Naturvidenskabelig Bacheloruddannelse Forår 2006 Matematisk Modellering 1 Side 1

HOFTEALLOPLASTIK - DATAUDTRÆK OG IMPORT TIL EXCEL

Statistik Lektion 4. Variansanalyse Modelkontrol

Program: 1. Repetition: p-værdi 2. Simpel lineær regression. 1/19

APPENDIX A INTRODUKTION TIL DERIVE

Man indlæser en såkaldt frequency-table i SAS ved følgende kommandoer:

Anvendt Statistik Lektion 6. Kontingenstabeller χ 2- test [ki-i-anden-test]

Oversigt. 1 Gennemgående eksempel: Højde og vægt. 2 Korrelation. 3 Regressionsanalyse (kap 11) 4 Mindste kvadraters metode

En Introduktion til SAS. Kapitel 5.

Kom godt i gang med I-bogen

Easy Guide i GallupPC

Økonometri: Lektion 5. Multipel Lineær Regression: Interaktion, log-transformerede data, kategoriske forklarende variable, modelkontrol

Forelæsning 11: Kapitel 11: Regressionsanalyse

Program. Konfidensinterval og hypotesetest, del 2 en enkelt normalfordelt stikprøve I SAS. Øvelse: effekt af diæter

Postoperative komplikationer

Stastistik og Databehandling på en TI-83

To samhørende variable

Transkript:

INTRODUKTION TIL dele af SAS Der er flere forskellige angrebsvinkler ved statistiske analyser i SAS. Vi skal her kun beskæftige os med to af disse, nemlig Direkte programmering. Brug af SAS ANALYST Hvilken af metoderne, man vælger at benytte, afhænger af flere forskellige forhold, såsom: tidligere programmeringserfaring karakter og omfang af det statistiske behov personlighed. For en nybegynder vil det formentlig være lettest at starte med at anvende ANA- LYST. Det er en menu-overbygning på SAS (version 8.1 eller 8.2), der indeholder store dele (men ikke alle) af de basale SAS-procedurer. Den indeholder desuden visse ting, som ikke findes i den direkte programmering, f.eks. noget grafik. Brug af ANALYST kræver ingen udenadslære, da menuerne er rimeligt selvforklarende, og der opstår ikke syntaksfejl. ANALYST har desuden den facilitet, at den skriver programmer for en, medens man peger og klikker. Når ANALYST ikke længere slår til, har man således råskitsen til et program, der derefter kan udbygges. Dette er ofte en større fordel end man umiddelbart skulle tro, idet datahåndteringen i SAS ofte er det, der falder brugeren sværest. Benytter man SAS meget, og især hvis man ofte udfører den samme slags analyser, vil det i længden virke meget tungt at anvende ANALYST. Der skal peges og klikkes mange gange for at indlæse, beskære, sortere, tabellere og analysere data, og det er vanskeligt bagefter at dokumentere (og huske) hvad der er foretaget. SAS i relation til andre programpakker Ved planlægningen af dette og lignende kurser er vi i en svær situation m.h.t valg af programmel. Der findes på markedet mange forskellige programpakker, der kan meget nær det samme, og ved valget af SAS vil vi ikke signalere, at andre muligheder er inferiøre. På basalkurset har vi i mange år benyttet programmet R. Dette er på mange måder væsentligt bedre end SAS, men har sine begrænsninger (endnu). F.eks. er der endnu ingen menuoverbygning og virker derfor lidt utilgængelig for en del. På enkelte andre kurser har vi benyttet SPSS, men på de fleste har vi benyttet SAS i en eller anden form. 1

Om fordele og ulemper ved SAS kan vi sammenfatte: Fordele: 1. kan klare store datamængder 2. har meget alsidige muligheder for datahåndtering 3. kan udføre langt de fleste statistiske analyser 4. fungerer på mange platforme 5. er rimelig billig 6. udleveres gratis, når man er ph.d. studerende ved fakultetet 7. er i mange sammenhænge blevet standard, således at man kan tillade sig at referere til den i metodesammenhænge Ulemper: 1. er noget gammeldags i sin opbygning 2. kan virke lidt tung 3. indeholder ingen lommeregnerfunktion 4. har ikke nogen flot grafik Brug af ANALYST Efter at have startet SAS 8.1 eller 8.2, klikker man på Solutions Analysis Analyst. Herefter får man et vindue bestående af et tomt dataark samt begyndelsen til en liste over, hvad man har foretaget sig (et såkaldt project tree, projekttræ). Man kan få data ind på flere måder ved at indtaste direkte i dataarket ved at importere allerede eksisterende SAS-filer ved at importere ASCII-filer (flade tekstfiler, f.eks. intastet i notepad) ved at importere datafiler fra andre systemer Vi skal se på import af ASCII-filer, f.eks. T:/bp.txt (mere om denne senere). Man klikker på File Open og klikker derefter på den relevante fil og svarer på spørgsmålene i den Dialog Box, der kommer frem (hvorvidt en eller flere af de øverste linier indeholder variabelnavne - det gør den første her - og hvilket symbol, der er benyttet som separator - her er det et blanktegn). Når man har fået data ind i dataarket, kan man gå i gang med at tegne, definere nye variable, analysere mv. Den letteste måde at lære ANALYST at kende på, er helt klart at forsøge sig frem, helst med et datasæt, der er overskueligt eller et, man kender godt. Der findes på maskinerne en del faste datasæt, man kan lege med, og der vil desuden, efterhånden som kurset skrider frem, (på N-drevet) blive indlagt nogle mere relevante datasæt, som vi skal beskæftige os med i øvelserne. 2

Direkte programmering Når man bliver en smule fortrolig med SAS eller når man får brug for at gøre tingene lidt hurtigere, f.eks. flere lignende analyser i træk, vil det være en fordel at gå over til direkte indtastning af programmer. Dette gøres i Editor-vinduet, og når man er færdig, køres programmet ved at bruge Submit under Run. Det er en god ide at gemme programmet under et letgennemskueligt navn, f.eks. projekt.sas, så det senere kan hentes ind igen og evt. modificeres. Bemærk dog, at så længe man er i gang med at rette et program til, bliver det stående i Editor-vinduet. Skulle det alligevel blive væk, tastes F4. Og hvordan skriver man så et SAS-program? Først skal man have data ind i systemet. Som regel vil man foretrække at lave en fil indeholdende alle data. Det kan gøres i Program Editor eller i et hvilketsomhelst andet system, der kan lave en ASCII-fil (en såkaldt flad fil, eller tekstfil). Typisk skal en sådan data-fil indeholde en linie for hvert individ (person, unit), og i denne linie står så alle oplysninger om dette individ, adskilt af blanktegn. Linierne kunne f.eks. se således ud: sexnr obese bp 1 1.31 130 1 1.31 148 2 1.19 146 2 1.11 122 Der ville da være oplysning om 4 individer, og oplysningerne er (i rækkefølge fra venstre) køn (1:mænd, 2:kvinder), fedme (vægt divideret med idealvægt) samt blodtryk. Det er vigtigt at oplysningerne står i den samme rækkefølge for alle individer. Vi forestiller os nu, at disse 4 linier (samt header ) er gemt i datafilen bp.txt (dat for data). Man skriver nu sit SAS-program til indlæsning: data bp; infile T:\bp.txt firstobs=2; input sexnr obese bp; Bemærk, at første linie navngiver et temporært (midlertidigt) datasæt, der kun eksisterer indenfor det program, der er tale om. Hvis man vil have et permanent datasæt lagret, skal der i stedet stå data sasuser.bp; Anden linie fortæller, hvorfra data skal læses. Her angives, at man skal begynde læsningen ved observation nr. 2 (idet første linie jo indeholder variabelnavnene). Tredie linie fortæller, hvilke oplysninger, der ligger i hver linie. Her dannes altså 3 variable, sexnr, obese og bp, som har følgende betydning: sexnr Numerisk variabel, der angiver personenes køn, 1: mænd, 2: kvinder, 3

obese Personens fedmegrad, defineret som vægt divideret med idealvægt for given køn, alder og højde. bp Systolisk blodtryk Øvelse: Filen T:\bp.sas indeholder et SAS-program til indlæsning af disse tal på et permanent SAS-datasæt, sasuser.bp. Dog skal anden linie muligvis modificeres, så der står infile T:\bp.txt ; 1. Klik på programvinduet og hent SAS-programmet ind i dette vindue. 2. Kør programmet (evt. efter passende modifikationer) ved hjælp af Submit under Run. 3. Gå nu ind i ANALYST og find det permanente datasæt frem (klik File Open By SAS Name). Bemærk, at dette indeholder en variabel sex, som er en karaktervariabel, der angiver personenes køn (F: kvinder, M: mænd). Hvordan er denne fremkommet? 4. Benyt ANALYST til grafisk at illustrere fordelingen af blodtrykket for mænd resp. kvinder. Prøv jer frem! 5. Se den af SAS genererede kode ved at dobbeltklikke på Code -node n i projekttræet. Vælg Edit ProgramEditor for at få koden over i Editor-vinduet til videre redigering. Studer denne kode. Struktur Et SAS-program består groft sagt af to dele 1. Datahåndtering (data-steppet). Her indlæser man sine tal, definerer nye variable, f.eks. ved logaritmetransformation eller sammenlægning. Data-steppet afsluttes med 2. Procedurekald, herunder grafik. Når data foreligger på den rigtige facon, kan analyserne udføres ved hjælp af PROC et-eller-andet Hvert procedurekald afsluttes af 4

Datahåndtering SAS er meget alsidigt med hensyn til datahåndtering, og det vil føre alt for vidt på dette kursus at lære mere end det mest nødvendige. Nedenfor er vist nogle eksempler på definition af nye variable, som forhåbentligvis er selvforklarende. Bemærk, at den naturlige logaritme betegnes med log i SAS, medens 10-tals logaritmen benævnes log10. data a1; set sasuser.bp; if sexnr=1 then sex= male ; if sexnr=2 then sex= fem ; logbp=log(bp); Ved brug af ANALYST, skal man i stedet for ovenstående orderer benytte Data Transform Recode Ranges eller Data Transform Compute Log(Y) Procedurekald Når vi taler om de indbyggede SAS procedurer, er det bekvemt at skelne mellem 3 forskellige slags, nemlig 1. De helt basale, såsom udskrivning, sortering og udregning af basale størrelser som gennemsnit og spredning mv. 2. De egentlige statistiske analyser 3. Grafikken Der vil nedenfor blive givet en ganske kort introduktion til visse af disse procedurer. De basale procedurer 1. Udskrivning, PRINT (Reports List Data). proc print data=sasuser.bp; var sex bp; I linierne ovenfor behøver man kun at skrive det med fedt angivne, altså simpelthen proc print;. Det nyligst dannede datasæt vil da blive udskrevet i sin helhed. I stedet kan man som ovenfor angive hvilket datasæt, man vil have udskrevet og hvilke af de variable, man vil have med (og i hvilken rækkefølge). Tilføjelsen i sidste linie er strengt taget heller ikke nødvendig, hvis der følger andre procedurekald efter dette, men kan stærkt anbefales efter hvert 5

procedurekald, da den såkaldte log-fil (indeholdende oplysninger om hvordan kørslen er forløbet, fejlmeddelelser mv.) herved bliver væsentlig lettere at læse. 2. Sortering, SORT. data a1; set sasuser.bp; proc sort data=a1; by obese; 3. Tabellering, FREQ. Benyttes til at tabellere diskrete variable (i SAS kaldet CLASS-variable), som f.eks. sex. proc freq data=a1; tables sex; I ANALYST klikkes Statistics Descriptive Frequency Counts... 4. Udregning af basale stikprøvestørrelser, MEANS. For at se hvad denne procedure foretager sig, er det lettest at forsøge sig frem. Prøv f.eks. at skrive: proc sort; by sex; proc means; by sex; eller proc means; class sex; Bemærk, at man ved at skrive som ovenfor by sex; får udført den angivne procedure for hvert køn for sig (konstruktionen virker for stort set alle SASprocedurer), men man er nødt til at sortere observationerne først, hvis de ikke allerede står i den rigtige rækkefølge). I ANALYST klikkes Statistics Descriptive Summary Statistics... 5. Udregning af korrelationer, CORR: proc corr; var obese bp; Hvis man ikke medtager var-sætningen, får man korrelationer mellem alle variable i datasættet (hvilket ofte er ret irrelevant). I ANALYST klikkes Statistics Descriptive Correlations... 6

6. Uddybende oplysninger om en variabels fordeling, UNIVARIATE: proc univariate plot normal; by sex; var obese; Dette vil give os uddybende viden om fordelingen af FEDME i vores stikprøve, opdelt efter køn. De to options plot og normal bevirker hhv. et Box-plot samt et test for normalitet. I ANALYST klikkes Statistics Descriptive Distributions... De egentlige statistiske procedurer Vi skal naturligvis i dette kursus kun se på en ganske lille del af de eksisterende procedurer, f.eks. (nogle af) de, der omhandler varians- og regressionsanalyse. Her skal vi kun lige kort berøre to af dem, nemlig REG og GLM. 1. REG er designet til at udføre (multipel) regressionsanalyse i tilfældet, hvor alle kovariater er kontinuerte (dvs. ikke CLASS-variable). Notationen er: data a1; set sasuser.bp; logobese=log(obese); proc reg; model bp=obese logobese; I ANALYST klikkes Statistics Regression Linear... Hertil kommer en masse options, der kan benyttes til yderligere udskrivninger, modelkontrol og modifikationer af analysen. Nyttige udvidelser kunne være: proc reg; model bp=obese logobese / selection=backward corrb r influence; plot residual.*predicted.; Vi har her tilføjet nogle options efter model... / - og betydningen af disse er: selection=backward: Der foretages automatisk udsmidning af en kovariat ad gangen efter nærmere fastsatte kriterier (som man også selv kan styre). corrb: Herved får man udskrevet korrelationen mellem parameterestimaterne. r: Herved bliver predikterede (fittede) værdier, residualer, normerede residualer mv. udskrevet. 7

influence: Herved udskrives oplysninger vedrørende de enkelte observationers indflydelse på estimationen. At studere disse kendes under navnet Diagnostics. Herudover er der tilføjet en plot-sætning, der angiver, at vi gerne vil tegne residualplot for check af konstant varians. Ved hjælp af sådanne plot-sætninger kan man også konstruere f.eks. prediktionsgrænser i en simpel lineær regressionsmodel (med kun 1 kovariat). Disse grænser er givet ved variabelnavnene l95. hhv u95. (bemærk, at punktummet hører med til variabelnavnet). Vi kunne altså skrive proc reg; model bp=obese; plot (predicted. l95. u95.)*obese / overlay; Grafikken ved disse plot-sætninger er dog ikke overvældende god, og jeg foretrækker at skrive de relevante størrelser ud i et datasæt og derefter regne videre på dem, inclusive at lave grafik. Dette kan gøres ved proc reg; model bp=obese; output out=ud predicted=yhat residual=resid l95=lower u95=upper; Herved har vi dannet et nyt (temporært) datasæt, kaldet ud (egentlig work.ud), der indeholder alle de variable, der var i det oprindelige datasæt samt 4 nye, nemlig yhat, resid, lower og upper. Bemærk, at man i output-sætningen angiver, hvilke variable, der skal medtages, ved at specificere et keyword, efterfulgt af = og et navn, man selv bestemmer (men som gerne må være det samme som keyword et). 2. GLM er ligesom REG designet til at udføre multipel regression, men kan desuden håndtere diskrete variable, altså variable af typen CLASS. Dette er selvfølgelig ekstremt nyttigt i situationer, hvor der foreligger en eller flere grupperinger af individerne i materialet, f.eks. køn, social klasse, rygestatus mv. Så længe der kun er tale om variable på 2 niveauer, kan man stadig benytte REG (hvis man f.eks. inkluderer køn som kontinuert variabel i REG, vil den tilhørende regressionskoefficient blot være estimatet for forskellen mellem de to køn (overvej hvorfor!). Variable med mere end 2 niveauer kan også godt håndteres i REG, men så er man nødsaget til selv at definere såkaldte dummy variable, hvilket kan være en ganske vanskelig (og vovelig) affære, og man står sig ved i stedet at gå over til at benytte GLM. Her kan man f.eks skrive: proc glm; class sex; model bp=sex obese sex*obese / solution; 8

hvorved man vil få estimeret to linier for bp som funktion af obese, nemlig en for hvert køn (man har dog her antaget at variationen omkring linien er den samme for de to køn, så der er ikke tale om to helt separate analyser). I ANALYST klikkes Statistics ANOVA Linear Models... I modelformlen ovenfor indgår 3 led, hvis fortolkning er som følger: sex: Der er forskel på niveauet af blodtrykket for de to køn. obese: Blodtrykket afhænger lineært af fedmegraden. Hvis der ikke var medtaget flere end de første to led i modelformlen, ville modellen svare til to parallelle regressionslinier. sex*obese: Dette led udtrykker en såkaldt vekselvirkning (interaktion) mellem køn og fedmegrad. Den indebærer, at blodtrykkets afhængighed af fedmegraden (hældningen af linien) er forskellig for de to køn, eller sagt med andre ord: Forskellen på kønnene afhænger af, hvilken fedmegrad, man betragter. Option solution, som er anført i modelsætningen angiver, at vi gerne vil have skrevet estimaterne ud. Hvis denne ikke medtages, får man kun et variansanalyseskema med diverse tests. Grafik. Der kan skrives (er faktisk blevet skrevet) tykke bøger om at lave grafik ved hjælp af SAS. Den umiddelbart letteste tilgang hertil er at anvende ANALYST, men netop indenfor grafikken er ANALYST ikke særlig fleksibel, og man nødsages altså hurtigt til selv at foretage noget programmering. Selv for erfarne SAS-programmører kan det imidlertid være vanskeligt at huske alle finesser og options, og min personlige løsning på dette er at have en tegne-skabelon (en lille programstump), som jeg kopierer ind i nye programmer og retter til efter aktuelle data. En sådan programstump følger her proc gplot data=ud; plot bp*obese yhat*obese / overlay haxis=axis1 vaxis=axis2 frame; axis1 order=(0.9 to 1.5 by 0.1) length=12 cm value=(h=2) minor=none label=(h=3 obesity ); axis2 length=12 cm value=(h=2) minor=none label=(a=90 R=0 H=3 blood pressure ); 9

symbol1 v=circle i=none c=black l=1 w=2; symbol2 v=none i=join c=black l=1 w=2; title1 h=3 obesity and blood pressure ; I ANALYST klikkes Graphs Scatter Plot Two-Dimensional... Vi bemærker her følgende options: overlay: Dette bevirker, at de to specificerede plots bliver tegnet på samme tegning. I første plot benyttes symbolerne som angivet i symbol1 -sætningen, osv. haxis=axis1: specificerer den horisontale akse som axis1 order=(0.9 to 1.5 by 0.1)+: specificerer inddelingen af den horisontale akse length=12cm: specificerer længden af den pågældende akse value=(h=2): specificerer højden af de tal, der kommer til at stå på aksen minor=none: specificerer ingen små tickmarcks label=(h=3 obesity ): specificerer aksetekst, samt hvor stor denne skal være. For den vertikale akse angives desuden, at teksten skal roteres (A=90 R=0). 10