Et ofte anvendt værktøj i statistik er de såkaldte kontingenstabeller (eller krydstabeller). En kontingenstabel er blot et fint ord for en optælling. Start med at indlæse datasættet:
nhsmoke <- dget("https://statepi.statnoter.dk/data/nh_smoke.robj")
head(nhsmoke)
seqn riagendr smq040
1 93705 2 3
2 93709 2 1
3 93713 1 1
4 93714 2 3
5 93715 1 1
6 93716 1 3
Datasættet stammer fra et stort amerikansk studie. seqn
er et personId, riagendr angiver køn (1 for mænd, 2 for
kvinder), og smq040 angiver rygerstatus (1 for “ryger
ikke”, 2 for “ryger nogle dage” og 3 for “ryger hver dag”).
Her ønsker vi en tabel som viser sammenhængen mellem rygerstatus og køn, hvilket laves nemt som vist her:
xtabs(formula = ~ riagendr + smq040, data = nhsmoke)
smq040
riagendr 1 2 3
1 468 124 849
2 335 89 488
Notationen ser umiddelbart lidt mærkelig ud, men man skal blot
kopiere den, og så udskifte navnene på de to variable
(riagendr og smq040) samt navnet på datasættet
(nhsmoke) med ens egne variable og datasæt.
I resultatet ser vi at der f.eks. er 849 mænd der ryger dagligt og 335 kvinder der ikke ryger.
Antallene er ikke nødvendigvis så interessante, da der ikke er lige mange mænd og kvinder i datasættet. Hvis man i stedet er interesseret i andelen af mænd i hver af de 3 rygerkategorier hhv. andelen af kvinder, så kan det nemt beregnes således:
t <-
xtabs(formula = ~ riagendr + smq040, data = nhsmoke) #vi beregner samme tabel som før, men gemmer den nu i en variabel
proportions(t, margin = 1)
smq040
riagendr 1 2 3
1 0.32477446 0.08605135 0.58917418
2 0.36732456 0.09758772 0.53508772
Nu kan vi uden videre se at 59% af mændene ryger dagligt mod 54% af kvinderne.
I ovenstående kommando gør margin=1 at hver række sættes
til 100%. Dvs. vi får andelen af rygere ud af alle mænd osv. Sætter vi i
stedet margin=2 så vil hver søjle svare til 100%, dvs. vi
vil få andelen af mænd ud af alle rygere osv.
Det kunne også være at vi gerne vil have resultatet afrundet pænt til 2 decimaler. Det gøres nemt således:
round(proportions(t, margin = 1), 2)
smq040
riagendr 1 2 3
1 0.32 0.09 0.59
2 0.37 0.10 0.54