(Denne side kan man roligt springe over, hvis man ikke har en ambition om at blive verdensmester til at bruge R). R har ikke umiddelbart en indbygget funktion til beregning af risiko- og oddsratio. Men hvis man savner dette, er det nemt at definere sine egne funktioner, men ellers er det selvfølgelig også nemt at beregne RR og OR manuelt vha. R.
Lad os først lige definere en dataframe med tallene fra forrige side:
radonData<-data.frame("case"=c(162,104),"control"=c(401,333))
Man kan nu definere en ny funktion som vist her.
#Definer "minFunktion" der som parametre tager en dataframe, samt hvor mange cifre resultatet skal afrundes til
#Sidstnævnte sættes som default til 2
minFunktion <- function(d,round=2) {
#læs først de 4 tal fra dataframen, så de bliver lidt nemmere at skrive i formlerne
a11<-d[1,1]
a21<-d[2,1]
a12<-d[1,2]
a22<-d[2,2]
#print en passende tekst
text<-"Bemærk: eksponeret er række 1, ikke-eksponeret er række2.\n Case er søjle 1, control er søjle 2\n"
cat(text)
#lav beregninger til RR
n1<-a11+a12
n2<-a21+a22
p1<-a11/n1
p2<-a21/n2
SE<-sqrt(1/a11-1/n1+1/a21-1/n2)
RR<-p1/p2
#beregn konfidensinterval
RRlci<-round(exp(log(RR)-1.96*SE),round)
RRuci<-round(exp(log(RR)+1.96*SE),round)
RD<-p1-p2
#print RR samt konfidensinterval
cat("RR = ",round(RR,round)," Konfidensinterval =",RRlci,"-",RRuci,"\n")
#Beregninger til OR
SE<-sqrt(1/a11+1/a21+1/a12+1/a22)
OR<-a11*a22/(a12*a21)
ORlci<-round(exp(log(OR)-1.96*SE),round)
ORuci<-round(exp(log(OR)+1.96*SE),round)
#Print OR samt konfidensinterval
cat("OR = ",round(OR,round)," Konfidensinterval =",ORlci,"-",ORuci,"\n")
}
Når denne funktion en gang er defineret, kan man nu kalde den, på samme måde som man kalder alle andre funktioner i R:
minFunktion(radonData,3)
Bemærk: eksponeret er række 1, ikke-eksponeret er række2.
Case er søjle 1, control er søjle 2
RR = 1.209 Konfidensinterval = 0.978 - 1.495
OR = 1.294 Konfidensinterval = 0.972 - 1.722