## Homework 2 due tomorrow ## Homework 3 on web, due on Friday ## Splines Stuff x <- runif(500,0,10) x <- x[order(x)] y.perf <- sin(x) y <- sin(x) + rnorm(500,0,.5) plot(x,y, pch=16, cex=1.5) mod1 <- lm(y ~ bs(x, knots=c(1.5, 4.7, 7.8), degree=3)) plot(effect("bs(x, knots=c(1.5, 4.7, 7.8), degree=3)", mod1, default.levels=100)) mod2 <- lm(y ~ bs(x, knots=c(3.25, 6.2), degree=3)) plot(effect("bs(x, knots=c(3.25, 6.2), degree=3)", mod2, default.levels=100)) k <- quantile(x, probs=c(.25,.75)) mod3 <- lm(y ~ bs(x, knots=k, degree=3)) plot(effect("bs(x, knots=k, degree=3)", mod3, default.levels=100)) pred.data <- data.frame(x=seq(0.1,9.9,length=100)) pred1 <- predict(mod1, newdata=pred.data) pred2 <- predict(mod2, newdata=pred.data) pred3 <- predict(mod3, newdata=pred.data) plot(range(x), range(c(pred1, pred2, pred3)), type="n") plot(range(x), range(y), type="n") points(x,y, col="gray50") lines(pred.data$x, pred1, lty=1, lwd=2) lines(pred.data$x, pred2, lty=2, lwd=2) lines(pred.data$x, pred3, lty=3, lwd=2) data <- read.dta("../Lecture 6/jacob.dta") knots <- quantile(data$perotvote, probs=c(.25,.5,.75)) mod3 <- lm(chal_vote ~ bs(perotvote, knots=knots, degree=3) + chal_spend, data=data) plot(effect("bs(perotvote, knots=c(15.47158, 19.91128, 23.40235 ), degree=3)", mod3, default.levels=100)) mod3 <- lm(chal_vote ~ bs(perotvote, knots=c(15.47158, 19.91128, 23.40235 ), degree=3) + chal_spend, data=data) mod3 <- lm(chal_vote ~ bs(perotvote, df=4, degree=3) + chal_spend, data=data) plot(effect("bs(perotvote, df=4, degree=3)", mod3, default.levels=100)) mod3 <- lm(chal_vote ~ bs(perotvote, knots=knots, degree=3) + chal_spend, data=data) pred.data <- data.frame( perotvote = seq(min(data$perotvote), max(data$perotvote), length=100), chal_spend = mean(data$chal_spend)) preds <- as.data.frame(predict(mod3, newdata=pred.data, interval="confidence")) xyplot(preds$fit ~ pred.data$perotvote, type="l", ylim=c(min(preds$lwr), max(preds$upr)), xlab="Perot Vote", ylab="Challenger Vote", panel=function(x,y){ panel.lines(x,y, lty=1, col="black") panel.lines(x, preds$lwr, lty=2, col="red") panel.lines(x, preds$upr, lty=2, col="red") panel.rug(data$perotvote, col="black") } )