### Week 7: Binary Dependent Variables ### Code from class ## MLE example y <- c(0,1,1,0,1,1,0,1,1,1) coin.mle <- function(y, pi) { lik <- pi^y * (1-pi)^(1-y) loglik <- log(lik) cat("prod L = ", prod(lik), ", sum ln(L) = ", sum(loglik), "\n") (mle <- list(L=prod(lik), lnL=sum(loglik))) } ll <- numeric(9) pi <- seq(.1,.9,.1) for (i in 1:9) (ll[i] <- coin.mle(y, pi[i])$lnL) par(mar=c(4,4,1,1)) plot(pi, ll, type="b", ylab="log-likelihood") ## show the functional forms par(mar=c(3,4,2,1)) x <- seq(-6,6,.1) plot(x,pnorm(x), type="l", col="red", ylab="Probability") lines(x,(1/(1+exp(-x))), col="blue") text(c(-2,-.25), c(.2,.2), c("Logit","Probit"), col=c("blue","red")) ## estimate logit and probit models in R dail <- read.dta("dailcorrected.dta") won.logit <- glm(wonseat ~ incumb*spend_total + electorate, family=binomial(link="logit"), data=dail) summary(won.logit) won.probit <- glm(wonseat ~ incumb*spend_total + electorate, family=binomial(link="probit"), data=dail) summary(won.logit)$coeff summary(won.probit)$coeff ## interpretation 1: fitted values x <- seq(0,40000,5000) bhat <- won.logit$coefficients xfitted <- cbind(rep(1,length(x)), rep(0,length(x)), x, mean(dail$electorate), rep(0,length(x))) xbfitted <- xfitted %*% matrix(bhat,nrow=length(bhat)) pfitted <- 1/(1+exp(-xbfitted)) data.frame(Spend_Total=x,PrWin=pfitted) ## interpretation 2: graphical methods x <- seq(0,40000,100) bhat <- won.logit$coefficients xfitted <- cbind(rep(1,length(x)), rep(0,length(x)), x, mean(dail$electorate), rep(0,length(x))) xbfitted <- xfitted %*% matrix(bhat,nrow=length(bhat)) pfitted <- 1/(1+exp(-xbfitted)) plot(x, pfitted, type="l", xlab="Total Spending", ylab="Probability of Winning a Seat") abline(h=.5, col="red") ## interpretation 3: first differences # students can do this for homework??