10 Tabelanalyser

Tabeller og diverse tests i en-, to- eller flervejstabeller laves vha proc freq. Som gennemgående eksempel i dette afsnit benytter vi datasættet fra 3. undervisningsuge om køn og farveblindhed:

data farveblind;
      input gender $ farveblind $ antal;
datalines;
pige nej 119
pige ja 1
dreng nej 144
dreng ja 6
;
run;

Idet datasættet indeholder 4 linjer (en for hver kombination af køn og farveblindhed) og hver linje repræsenterer antal personer, skal alle analyser på dette datasæt udføres med ekstra linje weight antal;. Normalt ville vi have et datasæt på 119+1+144+6=270 linjer. I så fald ville al syntaksen nedenfor virke fint uden denne weight-linje.

10.1 Envejstabeller

En tabel af en enkelt variabel laves med syntaks a la

proc freq data=farveblind;
    tables farveblind;
    weight antal;  /* OBS: Fordi datasættet indeholder 4 og ikke n=270 linjer */
run;

Bemærk at der her ikke tages højde for køn, men at vi blot beregner andelen af farveblinde for hele stikprøven. Ønsker vi at beregne andelene for hvert køn for sig, kan vi tilføje en linje where gender='pige'; for at få beregningen kun for piger eller vi kan først sortere datasættet efter køn og tilføje en linje by gender;.

10.1.1 CI for andele / binomialtest

Ønsker vi CI for andelen og evt også et test for om hyppigheden af farveblinde er f.eks. 50% udvides syntaksen til

proc freq data=farveblind;
    tables farveblind / binomial;
    exact binomial;
    weight antal;  /* OBS: Fordi datasættet indeholder 4 og ikke n=270 linjer */
run;
  • binomial i tables-linjen angiver, at vi ønsker at bestemme CI for andelen af farveblinde (laveste niveau af farveblind-variablen, som er ja) / teste hypotesen at p=0.50 (default option) svarende til at sandsynligheden for farveblindhed er 50%. Det er selvfølgelig en fjollet hypotese. Ønsker vi at teste at andelen er fx 5% skriver vi binomial(p=0.05) i stedet. Test og CI er baseret på normalfordelingsapproximationen til binomialfordelingen, som fungerer godt når p ikke er for tæt på 0 eller 1 og n ikke er for lille.
  • exact binomial supplerer med eksakt CI og test (altid validt).

10.2 Tovejstabeller

En tabel hvor man holder to variable op mod hinanden (tovejstabel) kan opnås ved at sætte en * mellem de to variable i tables-linien. Variablen før *’en kommer i rækkerne, variablen efter i søjlerne.

Syntaksen har formen:

proc freq data=farveblind;
    tables gender * farveblind;
run;

Her kan man med en række ekstra options styre, hvilke procenter SAS skal beregne og få lavet et test for om de to variable er uafhængige ved at tilføje options efter en / i tables-linien, f.eks:

proc freq data=farveblind;
    tables gender * farveblind / nopercent nocol chisq;
run;

Ovenfor specificeres at vi ikke ønsker totalprocenter (nopercent) og søjleprocenter (nocol, vi får så kun rækkeprocenter) og at vi ønsker et chi-i-anden test (chisq) for uafhængighed. Hyppigt anvendte options er:

  • nopercent Udelader total-procenter
  • nocol Udelader søjleprocenter
  • norow Udelader rækkeprocenter
  • expected Tilføjer den forventede værdi under hypotesen om uafhængighed mellem række- og søjlevariablene
  • chisq Udfører chi-i-anden test i tovejs-tabeller. Bruger du Studio får du kun en p-værdi ud, bruger du Enterprise kommer der adskillige, hvor den første svarer til det hyppigt anvendte Pearson chi-i-anden test
  • relrisk Beregner relativ risiko og oddsratio for en 2x2-tabel incl konfidensintervaller
  • riskdiff Bestemmer risikodifferensen incl CI for en 2x2 tabel

10.3 McNemar test (parrede data)

For parrede binære data kan andelene f.eks før/efter en intervention sammenlignes med et McNemar test (hypotesen er, at andelen af ‘positive/successer’ ikke er ændret fra før til efter). Testet udføres ved at lave 2x2 tabellen og tilføje en linje exact mcnem;.

For eksemplet med sammenligning af to sensitiviter for tuberkulosepatienter (uge 3):

data tuberkulose;
    input A $ B $ antal;
datalines;
+ + 20
+ - 12
- + 2
- - 16
;
run;

proc freq data=tuberkulose;
    tables A*B / norow nocol; 
    exact mcnem; 
    weight antal; 
run;