Function to plot predictions and confidence intervals of predictions from estimates from multivariate regression analysis of survey data with the item count technique.
# S3 method for predict.ictreg plot(x, labels = NA, axes.ict = TRUE, xlim = NULL, ylim = NULL, xlab = NULL, ylab = "Estimated Proportion", axes = F, pch = 19, xvec = NULL, ...)
x | object or set of objects of class inheriting from "predict.ictreg".
Either a single object from an |
---|---|
labels | a vector of labels for each prediction, plotted at the x axis. |
axes.ict | a switch indicating if custom plot axes are to be used with
the user-provided estimate |
xlim | a title for the y axis. |
ylim | a title for the y axis. |
xlab | a title for the x axis. |
ylab | a title for the y axis. |
axes | an indicator for whether default plot axes are included. |
pch | either an integer specifying a symbol or a single character to be used as the default in plotting points. |
xvec | a vector of x values at which the proportions will be printed. |
... | Other graphical parameters to be passed to the |
plot.predict.ictreg
produces plots with estimated population
proportions of respondents answering the sensitive item in a list experiment
in the affirmative, with confidence intervals.
The function accepts a set of predict.ictreg
objects calculated in
the following manner:
predict(ictreg.object, avg = TRUE, interval = "confidence")
For each average prediction, a point estimate and its confidence interval is
plotted at equally spaced intervals. The x location of the points can be
manipulated with the xvec
option.
Either a single predict object can be plotted, or a group of them combined
with c(predict.object1, predict.object2)
. Predict objects with the
newdata.diff
option, which calculates the mean difference in
probability between two datasets, and the direct.glm
option, which
calculates the mean difference between the mean predicted support for the
sensitive item in the list experiment and in a direct survey item, can also
be plotted in the same way as other predict
objects.
Blair, Graeme and Kosuke Imai. (2012) ``Statistical Analysis of List Experiments." Political Analysis, Vol. 20, No 1 (Winter). available at http://imai.princeton.edu/research/listP.html
Imai, Kosuke. (2011) ``Multivariate Regression Analysis for the Item Count Technique.'' Journal of the American Statistical Association, Vol. 106, No. 494 (June), pp. 407-416. available at http://imai.princeton.edu/research/list.html
ictreg
for model fitting and
predict.ictreg
for predictions based on the model fits.
data(race) race.south <- race.nonsouth <- race race.south[, "south"] <- 1 race.nonsouth[, "south"] <- 0# NOT RUN { # Fit EM algorithm ML model with constraint ml.constrained.results <- ictreg(y ~ south + age + male + college, data = race, treat = "treat", J=3, method = "ml", overdispersed = FALSE, constrained = TRUE) # Calculate average predictions for respondents in the South # and the the North of the US for the MLE model, replicating the # estimates presented in Figure 1, Imai (2011) avg.pred.south.mle <- predict(ml.constrained.results, newdata = race.south, avg = TRUE, interval = "confidence") avg.pred.nonsouth.mle <- predict(ml.constrained.results, newdata = race.nonsouth, avg = TRUE, interval = "confidence") # A plot of a single estimate and its confidence interval plot(avg.pred.south.mle, labels = "South") # A plot of the two estimates and their confidence intervals # use c() to combine more than one predict object for plotting plot(c(avg.pred.south.mle, avg.pred.nonsouth.mle), labels = c("South", "Non-South")) # The difference option can also be used to simultaneously # calculate separate estimates of the two sub-groups # and the estimated difference. This can also be plotted. avg.pred.diff.mle <- predict(ml.constrained.results, newdata = race.south, newdata.diff = race.nonsouth, se.fit = TRUE, avg = TRUE, interval="confidence") plot(avg.pred.diff.mle, labels = c("South", "Non-South", "Difference")) # Social desirability bias plots # Estimate logit for direct sensitive question data(mis) mis.list <- subset(mis, list.data == 1) mis.sens <- subset(mis, sens.data == 1) # Fit EM algorithm ML model fit.list <- ictreg(y ~ age + college + male + south, J = 4, data = mis.list, method = "ml") # Fit logistic regression with directly-asked sensitive question fit.sens <- glm(sensitive ~ age + college + male + south, data = mis.sens, family = binomial("logit")) # Predict difference between response to sensitive item # under the direct and indirect questions (the list experiment). # This is an estimate of the revealed social desirability bias # of respondents. See Blair and Imai (2010). avg.pred.social.desirability <- predict(fit.list, direct.glm = fit.sens, se.fit = TRUE) plot(avg.pred.social.desirability) # }