tbl <- cbind(expand.grid(Ulcer=0:1,Blood=0:1,Town=c("London","Manchester","Newcastle")), Freq = c(911 ,4578 ,579 ,4219 ,361 ,4532 ,246 ,3775 ,396 ,6598 ,219 ,5261)) attach(tbl) fit1 <- glm(Freq ~ 1, family="poisson",data=tbl) fitU.B.T <- glm(Freq ~ Ulcer + Blood + Town, family="poisson",data=tbl) fitUB.T <- glm(Freq ~Ulcer*Blood + Town , family="poisson",data=tbl) fitUB.UT <- glm(Freq ~Ulcer*Blood + Ulcer*Town , family="poisson",data=tbl) fitUB.UT.BT <- glm(Freq ~Ulcer*Blood + Ulcer*Town+ Blood*Town , family="poisson",data=tbl) fitUBT <- glm(Freq ~Ulcer*Blood*Town , family="poisson",data=tbl) anova(fit1, fitU.B.T , fitUB.T , fitUB.UT, fitUB.UT.BT,fitUBT) cbind(tbl,fitUB.UT.BT$fit,fitUBT$fit) summary(fitUBT) summary(fitUB.UT.BT) exp(model.matrix(fitUB.UT.BT) %*% fitUB.UT.BT$coef) # Use log-linear model to compute Blood OR on Ulcer in London # OR = log(P(U = 1 | B = 1, London)) - log(P(U = 0 | B = 1, London)) - log(P(U = 1 | B = 0, London)) + log(P(U = 0 | B = 0, London)) # = log(P(U = 1, B = 1, London)) - log(P(U = 0, B = 1, London)) - log(P(U = 1, B = 0, London)) + log(P(U = 0, B = 0, London)) # = lambda^{UB}_{Ulcers=1, B=1} # Fit logistic regression to data fit.logistic.1 <- glm(Ulcer ~ Blood + Town , family="binomial",weight = Freq) fit.logistic.2 <- glm(Ulcer ~ Blood * Town , family="binomial",weight = Freq) anova(fit.logistic.2) summary(fit.logistic.1) summary(fit.logistic.2) model.matrix(fit.logistic.2) cbind(tbl,fit.logistic.2$fit) 4578 / (4578 + 911) 5261 / (5261 + 219) (lp.2 <- model.matrix(fit.logistic.2) %*% fit.logistic.2$coef) exp(lp.2) / (1 + exp(lp.2)) lp.2[3] - lp.2[1] log((911*4219)/(579*4578)) model.matrix(fit.logistic.2) sqrt(summary(fit.logistic.2)$cov.unscaled[2,2])