kd <- read.csv("http://www.stat.ufl.edu/~winner/data/kentuckyderby.csv", header=TRUE) attach(kd); names(kd) Year125 <- Year[Length==1.25] Time125 <- Time[Length==1.25] Length125 <- Length[Length==1.25] Year125.0 <- Year125-min(Year125) Speed125 <- 1609.34*Length125/Time125 summary(Speed125) Speed125.2008 <- Speed125[Year125<=2008] Year125.2008 <- Year125[Year125<=2008] kd.mod1 <- nls(Speed125 ~ b0 + (b1-b0)*exp(b2*(Year125-b3))/ (1+exp(b2*(Year125-b3))), start=c(b0=1,b1=20,b2=1,b3=1940)) summary(kd.mod1) AIC(kd.mod1) confint(kd.mod1) plot(Year125,Speed125) lines(Year125,predict(kd.mod1,Year125)) plot(Year125,resid(kd.mod1)) qqnorm(resid(kd.mod1)); qqline(resid(kd.mod1)) kd.mod2 <- nls(Time125 ~ b0 + (b1*Year125.0)/(b2+Year125.0), start=c(b0=130,b1=-15,b2=45)) summary(kd.mod2) AIC(kd.mod2) plot(Year125.0,Time125) lines(Year125.0,predict(kd.mod2,Year125.0))