Rev 2115 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
### Examples from: "An Introduction to Statistical Modelling"### By Annette Dobson###### == with some additions ==## Plant Weight Data (Page 9)ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)group <- gl(2,10, labels=c("Ctl","Trt"))weight <- c(ctl,trt)anova(lm(weight~group))summary(lm(weight~group-1))## Birth Weight Data (Page 14)age <- c(40, 38, 40, 35, 36, 37, 41, 40, 37, 38, 40, 38,40, 36, 40, 38, 42, 39, 40, 37, 36, 38, 39, 40)birthw <- c(2968, 2795, 3163, 2925, 2625, 2847, 3292, 3473, 2628, 3176,3421, 2975, 3317, 2729, 2935, 2754, 3210, 2817, 3126, 2539,2412, 2991, 2875, 3231)sex <- gl(2,12, labels=c("M","F"))if(!is.null(dev.list())) {plot(age, birthw, col=codes(sex), main="Dobson's Birth Weight Data")lines(lowess(age[sex=='F'], birthw[sex=='F']), col=1)lines(lowess(age[sex=='M'], birthw[sex=='M']), col=2)legend(40, 2700, c("Female", "Male"), col=1:2, pch=1, lty=1)}summary(l1 <- lm(birthw ~ sex + age), cor=TRUE)summary(l0 <- lm(birthw ~ sex + age -1), cor=TRUE)anova(l1,l0)summary(li <- lm(birthw ~ sex + sex:age -1), cor=TRUE)anova(li,l0)summary(zi <- glm(birthw ~ sex + age, family=gaussian()))summary(z0 <- glm(birthw ~ sex + age - 1, family=gaussian()))anova(zi, z0)summary(z.o4 <- update(z0, subset = -4))summary(zz <- update(z0, birthw ~ sex+age-1 + sex:age))anova(z0,zz)## Poisson Regression Data (Page 42)x <- c(-1,-1,0,0,0,0,1,1,1)y <- c(2,3,6,7,8,9,10,12,15)summary(glm(y~x,family=poisson(link="identity")))## Calorie Data (Page 45)calorie <- data.frame(carb = c(33,40,37,27,30,43,34,48,30,38,50,51,30,36,41,42,46,24,35,37),age = c(33,47,49,35,46,52,62,23,32,42,31,61,63,40,50,64,56,61,48,28),wgt = c(100, 92,135,144,140,101, 95,101, 98,105,108, 85,130,127,109,107,117,100,118,102),prot = c(14,15,18,12,15,15,14,17,15,14,17,19,19,20,15,16,18,13,18,14))summary(lmcal <- lm(carb~age+wgt+prot, data= calorie))## Extended Plant Data (Page 59)ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)trtA <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)trtB <- c(6.31,5.12,5.54,5.50,5.37,5.29,4.92,6.15,5.80,5.26)group <- gl(3, length(ctl), labels=c("Ctl","A","B"))weight <- c(ctl,trtA,trtB)anova(lmwg <- lm(weight~group))summary(lmwg)coef(lmwg)coef(summary(lmwg))#- incl. std.err, t- and P- values.## Fictitious Anova Data (Page 64)y <- c(6.8,6.6,5.3,6.1,7.5,7.4,7.2,6.5,7.8,9.1,8.8,9.1)a <- gl(3,4)b <- gl(2,2, length(a))anova(z <- lm(y~a*b))## Achievement Scores (Page 70)y <- c(6,4,5,3,4,3,6, 8,9,7,9,8,5,7, 6,7,7,7,8,5,7)x <- c(3,1,3,1,2,1,4, 4,5,5,4,3,1,2, 3,2,2,3,4,1,4)m <- gl(3,7)anova(z <- lm(y~x+m))## Beetle Data (Page 78)dose <- c(1.6907, 1.7242, 1.7552, 1.7842, 1.8113, 1.8369, 1.861, 1.8839)x <- c( 6, 13, 18, 28, 52, 53, 61, 60)n <- c(59, 60, 62, 56, 63, 59, 62, 60)dead <- cbind(x, n-x)summary( glm(dead ~ dose, family=binomial(link=logit)))summary( glm(dead ~ dose, family=binomial(link=probit)))summary(z <- glm(dead ~ dose, family=binomial(link=cloglog)))anova(z, update(z, dead ~ dose -1))## Anther Data (Page 84)## Note that the proportions below are not exactly## in accord with the sample sizes quoted below.## In particular, the value 0.555 does not seem sensible.n <- c(102, 99, 108, 76, 81, 90)p <- c(0.539,0.525,0.528,0.724,0.617,0.555)# x <- round(n*p)x <- n*py <- cbind(x,n-x)f <- rep(c(40,150,350),2)g <- gl(2,3)summary(glm(y~g*f,family=binomial(link="logit")))summary(glm(y~g+f,family=binomial(link="logit")))summary(glm(y~f, family=binomial(link="logit")))## Tumour Data (Page 92)counts <- c(22,2,10,16,54,115,19,33,73,11,17,28)type <- gl(4,3,12,labels=c("freckle","superficial","nodular","indeterminate"))site <- gl(3,1,12,labels=c("head/neck","trunk","extremities"))data.frame(counts,type,site)summary(z <- glm(counts ~ type + site,family=poisson()))## Randomized Controlled Trial (Page 93)counts <- c(18,17,15,20,10,20,25,13,12)outcome <- gl(3,1, length(counts))treatment <- gl(3,3)summary(z <- glm(counts ~ outcome + treatment,family=poisson()))## Peptic Ulcers and Blood Groupscounts <- c(579,4219,911,4578,246,3775,361,4532,291,5261,396,6598)group <- gl(2,1,12,labels=c("cases","controls"))blood <- gl(2,2,12,labels=c("A","O"))city <- gl(3,4,12,labels=c("London","Manchester","Newcastle"))cbind(codes(group),codes(blood),codes(city),counts)summary(z1 <- glm(counts ~ group*city + group*blood, family=poisson()),corr=FALSE)summary(z2 <- glm(counts ~ group*city + blood, family=poisson()), corr=FALSE)anova(z2,z1)