scratchpad <- function() {
# Libraries
library(ggplot2)
library(ggdist)
library(distributional)
# Population params for desired data
population <- data.frame(
condition = c("Group1", "Group2"),
mu = c(100, 115),
sigma = c(15, 15),
n = c(50, 45)
)
# Simulate raw data and calculate summary data
raw_data <- NULL
summary_data <- NULL
for (i in 1:nrow(population)) {
this_condition <- data.frame(
condition = rep(population[i, "condition"], times = population[i, "n"]),
outcome = rnorm(
n = population[i, "n"],
mean = population[i, "mu"],
sd = population[i, "sigma"]
)
)
summary_data <- rbind(
summary_data,
data.frame(
condition = c(population[i, "condition"]),
mean = mean(this_condition$outcome),
sd = sd(this_condition$outcome),
se = sd(this_condition$outcome) / sqrt(nrow(this_condition)),
n = nrow(this_condition),
df = nrow(this_condition) - 1
)
)
raw_data <- rbind(
raw_data,
this_condition
)
}
# Difference between groups
diff_m <- summary_data[1, "mean"] - summary_data[2, "mean"]
diff_df <- sum(summary_data$df)
diff_se <- sqrt(sum(summary_data$sd^2 / summary_data$n))
summary_data[3, c("mean", "se", "df")] <- c(
diff_m,
diff_se,
diff_df
)
summary_data[3, "condition"] <- "Difference"
summary_data$nudge <- c(0.3, 0.3, 0)
# Fix condition factor to ensure difference is plotted last
summary_data$condition <- factor(
summary_data$condition,
levels = summary_data$condition
)
raw_data$condition <- factor(
raw_data$condition,
levels = summary_data$condition
)
# Now the plot
myplot <- ggplot2::ggplot(data = summary_data)
myplot <- myplot + ggdist::stat_dist_halfeye(
data = summary_data,
ggplot2::aes(
x = condition,
y = mean,
dist = distributional::dist_student_t(
df = df,
mu = mean,
sigma = se
)
),
scale = 0.33,
position = "dodge"
)
myplot <- myplot + ggdist::stat_dots(
data = raw_data,
layout = "weave",
scale = 0.3,
justification = 1,
side = "both",
orientation = "vertical",
position = position_nudge(x = -0.1),
ggplot2::aes(
x = condition,
y = outcome
)
)
myplot
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.