source("http://192.38.117.59/~linearpredictors/datafiles/readBirthWeight.R") ## separate lines are fitted for groups of ad [0,95), [95-105), [105, inf) ## predictions in the book were calculated using (0,95], (95-105], (105, inf) secher$adgroup <- cut(secher$ad, c(0, 95, 105, Inf), labels = 0:2, right=F) model <- lm(log10(bw) ~ adgroup + log10(bpd):adgroup -1, data = secher) ## predicting on n values of bpd for 3 values of ad. n <- 1000 r2 <- range(secher$bpd, na.rm=TRUE) newbpd <- seq(min(r2), max(r2), length.out = n) linpred90 <- predict(model, data.frame(adgroup = factor(0), bpd = newbpd)) linpred100 <- predict(model, data.frame(adgroup = factor(1), bpd = newbpd)) linpred110 <- predict(model, data.frame(adgroup = factor(2), bpd = newbpd)) ## the 3 curves plot(linpred90 ~ log10(newbpd), type = "l", ylim = c(3,3.6), xlab = expression(paste(log[10],"(biparietal diameter)", sep="")), ylab = "Linear predictor" ) lines(linpred100~log10(newbpd), lty = "32") lines(linpred110~log10(newbpd), lty = "11")