# 1. Data Generation
n_dishes <- 32
ploidy <- rep(c("diploid", "tetraploid"), each = 16)
heat_treatment <- rep(c("no", "yes"), each = 8, times = 2)
# Germination probabilities
prob_diploid_noheat <- 0.8
prob_diploid_heat <- 0.5
prob_tetraploid_noheat <- 0.6
prob_tetraploid_heat <- 0.4
germination_prob <- ifelse(ploidy == "diploid" & heat_treatment == "no", prob_diploid_noheat,
ifelse(ploidy == "diploid" & heat_treatment == "yes", prob_diploid_heat,
ifelse(ploidy == "tetraploid" & heat_treatment == "no", prob_tetraploid_noheat,
prob_tetraploid_heat)))
germinated_seeds <- rbinom(n_dishes, 25, germination_prob)
germination_data <- data.frame(Dish = 1:n_dishes,
Ploidy = ploidy,
Heat_Treatment = heat_treatment,
Germinated_Seeds = germinated_seeds)
write.csv(germination_data, "germination_data.csv", row.names = FALSE)
germination_data <- read.csv("germination_data.csv")
# 2. Exploratory Plotting
library(ggplot2)
# Boxplot of Germinated Seeds by Ploidy and Heat Treatment
ggplot(germination_data, aes(x = interaction(Ploidy, Heat_Treatment), y = Germinated_Seeds, fill = Ploidy)) +
geom_boxplot() +
labs(title = "Seed Germination by Ploidy and Heat Treatment",
x = "Ploidy x Heat Treatment",
y = "Number of Germinated Seeds") +
scale_fill_manual(values = c("lightblue", "lightcoral")) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))

# 3. Summary Statistics
summary_stats <- aggregate(Germinated_Seeds ~ Ploidy + Heat_Treatment,
data = germination_data,
FUN = function(x) c(mean = mean(x), sd = sd(x)))
print(summary_stats)
## Ploidy Heat_Treatment Germinated_Seeds.mean Germinated_Seeds.sd
## 1 diploid no 20.625000 1.922610
## 2 tetraploid no 16.125000 3.603074
## 3 diploid yes 12.375000 1.187735
## 4 tetraploid yes 10.000000 1.927248