antivax-attitudes

Reanalyses of data from Horne, Powell, Hummel & Holyoak (2015)
git clone https://git.eamoncaddigan.net/antivax-attitudes.git
Log | Files | Refs | README | LICENSE

commit 9d6f834859cd7c3fa6ebf4057372609c5d71f2ee
parent f2ec3e6d5188be0057b4a8928f6f8dfaa6e2727e
Author: eamoncaddigan <eamon.caddigan@gmail.com>
Date:   Sat, 29 Aug 2015 22:58:37 -0400

Seperated post. calculation from plotting

Diffstat:
MggPostPlot.R | 35+++++++++++++++++++++++------------
1 file changed, 23 insertions(+), 12 deletions(-)

diff --git a/ggPostPlot.R b/ggPostPlot.R @@ -3,8 +3,9 @@ library(ggplot2) library(dplyr) -ggPosteriorPredictive <- function(modelData, codaObject, - x1Level, x2Level = NA, x3Level = NA) { +# Find the responses and the posterior predictions for the given factor levels +calcPosteriorPredictive <- function(modelData, codaObject, + x1Level, x2Level = NA, x3Level = NA) { mcmcMat <- as.matrix(codaObject) # Separate the observed counts for the given levels @@ -32,7 +33,7 @@ ggPosteriorPredictive <- function(modelData, codaObject, } } sigma <- mcmcMat[, paste0("sigma[", x1Level, "]")] - + # Find the HDI and mean of the posterior probabilities of each of the y levels # (Stolen from Kruschke) chainLength <- nrow(mcmcMat) @@ -46,25 +47,35 @@ ggPosteriorPredictive <- function(modelData, codaObject, outHdi <- apply(outProb, 2, HDIofMCMC) outMean <- apply(outProb, 2, mean, na.rm=TRUE) - # Create the plot + # Create a data.frame with the posterior data plotData <- cellData %>% count(response) %>% - left_join(data_frame(response = 1:max(y)), ., by = "response") - plotData <- plotData %>% + left_join(data_frame(response = 1:max(y)), ., by = "response") %>% mutate(n = ifelse(is.na(n), 0, n), response_proportion = n / sum(n), posterior_mean = outMean, posterior_hdi_low = outHdi[1,], posterior_hdi_high = outHdi[2,]) + return(plotData) +} + + +# Plot the responses and posterior predictions for the given factor levels +ggPosteriorPredictive <- function(modelData, codaObject, + x1Level, x2Level = NA, x3Level = NA) { + plotData <- calcPosteriorPredictive(modelData, codaObject, + x1Level, x2Level, x3Level) + numLevels = length(unique(plotData[["response"]])) + p <- ggplot(plotData, aes(x = response, y = response_proportion)) + - geom_bar(stat = "identity", binwidth=1, color="white") + + geom_bar(stat = "identity", binwidth=1, color="white", fill="skyblue") + geom_point(aes(y = posterior_mean), - size=3, color="red") + + size=5, color="red") + geom_errorbar(aes(ymin = posterior_hdi_low, ymax = posterior_hdi_high), - size=2, color="red", width=0) + - scale_x_continuous(breaks = 1:6) + # XXX hardcoded 6 + size=3, color="red", width=0) + + scale_x_continuous(breaks = 1:numLevels) + scale_y_continuous(limits = c(0, 1)) + - xlab("Response") + - ylab("Proportion of Responses") + xlab("Response Level") + + ylab("Proportion") return(p) }