Päivitetty: 2016-05-11 23:06:49

Creative Commons -lisenssi
Tämä teos on lisensoitu Creative Commons Nimeä-JaaSamoin 4.0 Kansainvälinen -lisenssillä.

Vedonlyöntikerrointen suhde (“odds ratio” eli “OR”) on hyvä approksimaatio riskisuhteelle (“rate ratio”," “incidence rate ratio”, tai “risk ratio”, “RR”) kun tarkastellaan harvinaista tapahtumaa. Harvinaiseksi voidaan määritellä tapahtuma, jonka prevalenssi on alle 10%. Jos kuitenkin kyseessä on tätä yleisempi tapahtuma tai riskisuhde on suuri, approksimaatio ei toimi enää hyvin. Lähemmin asiaa tarkastellaan esim. Schmidt ja Kohlmannin (2008) artikkelissa.

Kaksiluokkaista muuttujaa mallitetaan yleensä logistiselle regressiolla, josta OR laskeminen on helppoa. Mikäli mallitettavan prevalenssi on kuitenkin korkea, logistisen regression käyttö ei ole enää perusteltua vaan on pyrittävä laskemaan suoraan RR muilla menetelmin. Zou (2004) esitti suoraviivaisen ja tehokkaan tavan RR laskemiseen Poisson regression avulla.

Alla on laskettu Zoun (2004) taulukossa 2 esittämän aineiston perusteella estimaatteja. Piste-estimaatit ovat samat kuin Zoun raportoimat (s. 705), mutta keskivirheet (ja luottamusvälit) eroavat Zoun raportoimista.

library(sandwich)
library(lmtest)
library(Epi)

# Function that calculates OR
mk.OR.poilog<-function(x,alpha=0.05)
  {
  lv.1<-qnorm(1-alpha/2)
  lv.2<-exp(cbind(x[,"Estimate"],x[,"Estimate"]-x[,"Std. Error"]*lv.1,
                  x[,"Estimate"]+x[,"Std. Error"]*lv.1 ))
  colnames(lv.2)<-c("OR",paste(c("lo","hi"),1-alpha,sep="."))
  lv.2
  }


# Taulukon 3 aineisto
zou.Tab3<-data.frame(Treat=factor(c(1,1,1,2,2,2),levels=c(2,1),label=c("Control","Diaspirin")),
                     Baseline.risk=factor(c(1,2,3,1,2,3),levels=rev(1:3),label=c("Low","Med","High")),
                     ndeath=c(12,5,5,6,1,1),
                     total=c(13,13,23,10,12,22))

# Binomial with logistic link
zou.m1<-glm(I(ndeath/total)~Treat+Baseline.risk,data=zou.Tab3,family=binomial,weights=total)

ci.exp(zou.m1)
##                     exp(Est.)       2.5%       97.5%
## (Intercept)        0.04191438 0.01009634   0.1740051
## TreatDiaspirin     6.82325149 1.77575943  26.2179438
## Baseline.riskMed   2.18157894 0.57839982   8.2283682
## Baseline.riskHigh 37.46808839 7.88889787 177.9535837
# Poisson with log link
zou.m2<-glm(ndeath~offset(log(total))+Treat+Baseline.risk,data=zou.Tab3,family=poisson)

mk.OR.poilog(coeftest(zou.m2,vcov=vcovHC(zou.m2, type = "HC0")))
##                           OR    lo.0.95   hi.0.95
## (Intercept)       0.08018411 0.04747661 0.1354244
## TreatDiaspirin    2.29686069 1.42689608 3.6972342
## Baseline.riskMed  1.78760740 1.10063375 2.9033638
## Baseline.riskHigh 5.63191057 3.69157706 8.5921047
# Binomial with log link
zou.m3<-glm(I(ndeath/total)~Treat+Baseline.risk,data=zou.Tab3,family=binomial(link="log"),weights=total)
mk.OR.poilog(coeftest(zou.m3,vcov=vcovHC(zou.m2, type = "HC0")))
##                           OR    lo.0.95   hi.0.95
## (Intercept)       0.09134821 0.05408682 0.1542797
## TreatDiaspirin    1.94489809 1.20824370 3.1306835
## Baseline.riskMed  1.81640200 1.11836265 2.9501309
## Baseline.riskHigh 5.26073807 3.44828274 8.0258399

Muodostetaan aggregoidusta datasta yksilötason data.

apu<-NULL
apu1<-NULL
apu2<-NULL
for(tmp.i in seq(nrow(zou.Tab3))){
  apu<-c(apu,rep(c(1,0),c(zou.Tab3$ndeath[tmp.i],zou.Tab3$total[tmp.i]-zou.Tab3$ndeath[tmp.i])))
  apu1<-c(apu1,rep(zou.Tab3$Treat[tmp.i],zou.Tab3$total[tmp.i]))
  apu2<-c(apu2,rep(zou.Tab3$Baseline.risk[tmp.i],zou.Tab3$total[tmp.i])) 
  }
zou.Tab3.ind<-data.frame(Treat=apu1,Baseline.risk=apu2,death=apu)
attributes(zou.Tab3.ind$Treat)<-attributes(zou.Tab3$Treat)
attributes(zou.Tab3.ind$Baseline.risk)<-attributes(zou.Tab3$Baseline.risk)

# Mallitetaan yksilötason dataa
zou.m2.ind<-glm(death~Treat+Baseline.risk,data=zou.Tab3.ind,family=poisson)
mk.OR.poilog(coeftest(zou.m2.ind,vcov=vcovHC(zou.m2.ind, type = "HC0")))
##                           OR    lo.0.95    hi.0.95
## (Intercept)       0.08018411 0.03632537  0.1769973
## TreatDiaspirin    2.29686068 1.27242459  4.1460759
## Baseline.riskMed  1.78760736 0.67091499  4.7629583
## Baseline.riskHigh 5.63191044 2.63089536 12.0561295

Huomataan että aggregoidulla aineistolla OR on 2.30 (95 percent CI: 1.43, 3.70) ja yksilötason aineistolla 2.30 (95 percent CI: 1.27, 4.15). Jälkimmäinen tulos on täsmälleen sama kuin Zoun artikkelissaan raportoima.

Zoun menetelmää on siis syytä soveltaa vain yksilötason aineistoihin.

Viitteet

  1. Schmidt C, Kohlmann T. When to use the odds ratio or the relative risk? International Journal of Public Health. 2008 Jun 1;53(3):165–7.
  2. Zou G. A Modified Poisson Regression Approach to Prospective Studies with Binary Data. American Journal of Epidemiology. 2004 Apr 1;159(7):702–6.