load car package and the data
library(car)
data(Duncan, package="car")
head(Duncan) # first few observations
## type income education prestige
## accountant prof 62 86 82
## pilot prof 72 76 83
## architect prof 75 92 90
## author prof 55 90 76
## chemist prof 64 86 90
## minister prof 21 84 87
standard pairs plot
plot(~ prestige + income + education, data=Duncan)
pairs(~prestige + income + education, data=Duncan)

enhanced version
scatterplotMatrix(~prestige + income + education, data=Duncan, id.n=2)

model plots
duncan.mod <- lm(prestige ~ income + education, data=Duncan)
op <- par(mfrow=c(2,2), mar=c(4,4,2,1)+.1)
plot(duncan.mod, cex=1.2, cex.lab=1.2, pch=16, lwd=3)

par(op)
better version of an influence plot
influencePlot(duncan.mod, id.n=3)

## StudRes Hat CookD
## minister 3.1345186 0.17305816 0.56637974
## reporter -2.3970224 0.05439356 0.09898456
## conductor -1.7040324 0.19454165 0.22364122
## contractor 2.0438046 0.04325517 0.05852346
## RR.engineer 0.8089221 0.26908963 0.08096807
added variable plots show the partial relations of each preditor
avPlots(duncan.mod, id.n=2, pch=16,
ellipse=TRUE,
ellipse.args=list(levels=0.68, fill=TRUE, fill.alpha=0.1))

effect plots
library(effects)
duncan.eff <- allEffects(duncan.mod)
plot(duncan.eff)

add term for type of job
duncan.mod1 <- update(duncan.mod, . ~ . + type)
summary(duncan.mod1)
##
## Call:
## lm(formula = prestige ~ income + education + type, data = Duncan)
##
## Residuals:
## Min 1Q Median 3Q Max
## -14.890 -5.740 -1.754 5.442 28.972
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.18503 3.71377 -0.050 0.96051
## income 0.59755 0.08936 6.687 5.12e-08 ***
## education 0.34532 0.11361 3.040 0.00416 **
## typeprof 16.65751 6.99301 2.382 0.02206 *
## typewc -14.66113 6.10877 -2.400 0.02114 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9.744 on 40 degrees of freedom
## Multiple R-squared: 0.9131, Adjusted R-squared: 0.9044
## F-statistic: 105 on 4 and 40 DF, p-value: < 2.2e-16
duncan.eff1 <- allEffects(duncan.mod1)
plot(duncan.eff1)

plot(duncan.eff1, ci.style="bands", rows=1, cols=3)

coefficient plots
library(coefplot)
duncan.mod2 <- lm(prestige ~ income * education, data=Duncan)
coefplot(duncan.mod2, intercept=FALSE, lwdInner=2,
lwdOuter=1, point.size=5,
title="Coefficient plot for duncan.mod2") + theme_bw()
