i will include the data to read if if you so choose.
dat <- read.dta("http://quantoid.net/hw1_2011.dta")
model in question:
mod99 <- glm(democracy ~ popc100kpc + ngrevpc, data=dat, family=binomial)
------------------
looking for average effects code, with error on mod99. ?popckpc is coded in
1k per capita.
dat3$popc100kpc <- dat$popc100kpc - 100
dat3$popc100kpc[which(dat3$popc100kpc < min(dat$popc100kpc))] <-
min(dat$popc100kpc)
dat2 <- dat3 <- dat
dat2$popc100kpc <- dat2$popc100kpc + 100
dat2$popc100kpc[which(dat2$popc100kpc > max(dat$popc100kpc))] <-
max(dat$popc100kpc)
dat3$popc100kpc <- dat$popc100kpc - 100
dat3$popc100kpc[which(dat3$popc100kpc < min(dat$popc100kpc))] <-
min(dat$popc100kpc)
pred1 <- predict(mod99, type="response")
pred2 <- predict(mod99, newdata=dat2, type="response")
pred3 <- predict(mod99, newdata=dat3, type="response")
----
breaking the variable into groups:
pop1.group <- cut(dat$popc100kpc, breaks=quantile(dat$popc100kpc,
seq(0,1,by=.25)), include.lowest=T)
? ? ? apply, 2, mean)
means <- by(cbind(pred1, pred2, pred3), list(pop1.group),
means <- do.call(rbind, means)
----
and finally attempting to plot:
par(mar=c(7,4,4,2))
plot(c(1,10), range(c(means)), type="n", xlab="",
+ ? ? ? ylab="Predicted Probability", axes=F)
arrows(1:10, means[,1], 1:10, means[,2], code=2, length=.1)
arrows(1:10, means[,1], 1:10, means[,3], code=2, length=.1, col="red")
points(1:10, means[,1], pch=16)
Error in xy.coords(x, y) : 'x' and 'y' lengths differ
axis(1, at=1:10, labels=rownames(means), las=2)