PS_6.1

Question 9

Simulated dataframe

library(dplyr)

Attaching package: 'dplyr'
The following objects are masked from 'package:stats':

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union
library(ggplot2)

N <- 10000
lambda_values <- c(0.5, 1, 1.5, 2)

sim_df <- data.frame(
  lambda = rep(lambda_values, each = N)
) %>%
  mutate(
    x = rexp(n(), rate = lambda),
    y = rexp(n(), rate = lambda),
    u = x + y
  )
head(sim_df)
  lambda         x         y         u
1    0.5 3.2299796 2.6148082 5.8447879
2    0.5 0.4034454 3.0214571 3.4249024
3    0.5 2.8587627 2.8331224 5.6918851
4    0.5 0.2386914 0.1673992 0.4060906
5    0.5 0.9455978 1.1026359 2.0482337
6    0.5 7.5487013 0.3033234 7.8520247

Simulated vs Analytic Overlay

ggplot(data = sim_df) +
  geom_histogram(
    aes(x = u, y = after_stat(density)),
    fill = 'turquoise',
    color = 'black',
    bins = 50
  ) +
  geom_function(
    fun = \(u) dgamma(u, shape = 2, rate = 0.5),
    linewidth = 1
  ) +
  facet_wrap(~ lambda, labeller = label_both, scales = "free") +
  labs(
    x = 'u',
    y = expression(f[U](u)),
    title = "Simulated vs Analytic Density of U = X + Y"
  ) +
  theme_classic()