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, ...)



object or set of objects of class inheriting from "predict.ictreg". Either a single object from an ictreg() model fit or multiple predict objects combined with the c() function.


a vector of labels for each prediction, plotted at the x axis.


a switch indicating if custom plot axes are to be used with the user-provided estimate labels.


a title for the y axis.


a title for the y axis.


a title for the x axis.


a title for the y axis.


an indicator for whether default plot axes are included.


either an integer specifying a symbol or a single character to be used as the default in plotting points.


a vector of x values at which the proportions will be printed.


Other graphical parameters to be passed to the plot() command are accepted.


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

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

See also

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, = 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, == 1) mis.sens <- subset(mis, == 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). <- predict(fit.list, direct.glm = fit.sens, = TRUE) plot( # }