R-hjelp
til exercise 14 i BSS
#
Les dataene inn i en dataramme, gi navn
til variablene i datarammen og se p? dataene:
kreft<-read.table("http://www.math.uio.no/avdc/kurs/STK4900/data/cancer.dat")
names(kreft)<-c("alder","sig","pyr","cancer")
kreft
#
Dataene i denne oppgaven er de samme som
de som er gitt p? side 80 i BS.
# Men her er det gitt alder i stedet for alder-20. (Det
er en trykkfeil i oppgaven n?r
det
#
der snakkes om "years of cigarette
smoking" i stedet for
alder.).
#
Gj?r variablene i datarammen tilgjengelige:
attach(kreft)
#
PUNKTENE 1 & 2)
# Vi ser f?rst p? modellen E(Y) = n*exp{b0+b1*s+b2*a}, der
#????? Y=antall krefttilfeller (=cancer),
#?????? n=antall person?r (= pyr),
# ??????s=antall sigaretter per dag (=sig)
#????? ?a = alder i ?r (=alder)
# Vi kan skrive modellen p? formen E(Y])= exp{1*log(n)+b0+b1*s+b2*a}.
# Alts? inng?r log(n) som en slags "kovariat" der vi vet at regresjonskoeffisienten har verdien 1.
# Dette kalles en OFFSET.
# Vi tilpasser denne modellen og ser p? resultatet:
kreftfit.1<-glm(cancer~offset(log(pyr))+alder+sig, family=poisson)
summary(kreftfit.1)
# Pass p? at du forst?r outputen.
# Er det signifikant effekt av alder og antall sigaretter?
# Det er vanlig ? rapportere resultatene av en Poisson regresjon ved ?hjelp av
# relativ risiko RR = exp(beta) samt konfidensintervall for relativ risiko. ?
# R gj?r ikke dette direkte og vi definerer derfor en funksjon som lager denne tabellen.
# (Funksjonen kan ogs? brukes til ? lage tabeller over odds ratio OR for logistisk regresjon.)
# Kopier funksjonen og lim den inn i R:
RRCI<-function(glmobj)
{
? regtab<-summary(glmobj)$coef
? RR<-exp(regtab[,1])
? RRL<-RR*exp(-1.96*regtab[,2])
? RRU<-RR*exp(1.96*regtab[,2])
? cbind(RR,RRL,RRU)
}
# Bruk funksjonen til ? beregne relative risker for alder og antall sigaretter
# (og rund av svarene til tre desimaler)
round(RRCI(kreftfit.1),3)
#
Gi en fortokning av hva tabellen
sier deg om
effekten av alder og antall sigaretter
#
PUNKT 3)
#
Vi ser s? p? en modell med andreordens ledd og interaksjon:
kreftfit.3<-glm(cancer~offset(log(pyr))+ alder+I(alder^2)+sig+I(sig^2)+alder:sig, family=poisson)
#
Reduser modellen ved ? fjerne
(trinnvis) eventuelle ikke-signifikante kovarter.
#
(Bruk Wald tester fra summary-kommandoen
og/eller devianser fra anova-kommandoen.)
#
Diskuter fortolkningen av den modellen du kommer fram
til.
#
TILLEGGSSP?RSM?L:
# Sigaretter og alder er oppgitt til ? ligge i intervaller. Vi kan derfor alternativt
# oppfatte dem som kategoriske variable. En slik modell kan tilpasses med kommanoden
kreftfit.t<-glm(cancer~offset(log(pyr))+factor(alder)+factor(sig), family=poisson)
#
Gi en fortolkning av denne modellen.
(Bruk gjerne
funksjonen RRCI.)
#
Diskuter hvordan modellen
#
i punkt
3 gir en rimelig god tilpassning til dataene.