6.1

Running Code

library(tidyverse)
Warning: package 'tidyverse' was built under R version 4.4.3
Warning: package 'tidyr' was built under R version 4.4.3
Warning: package 'readr' was built under R version 4.4.3
Warning: package 'purrr' was built under R version 4.4.3
Warning: package 'dplyr' was built under R version 4.4.3
Warning: package 'stringr' was built under R version 4.4.3
Warning: package 'forcats' was built under R version 4.4.3
Warning: package 'lubridate' was built under R version 4.4.3
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.1     ✔ tibble    3.2.1
✔ lubridate 1.9.4     ✔ tidyr     1.3.1
✔ purrr     1.0.4     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(purrrfect)

Attaching package: 'purrrfect'

The following objects are masked from 'package:base':

    replicate, tabulate
lambdas <- c(0.5, 1, 1.5, 2)
n_sims <- 10000

sim_df <- data.frame(lambda = numeric(0), U = numeric(0))

for(lam in lambdas){
  X <- rexp(n_sims, rate = lam)
  Y <- rexp(n_sims, rate = lam)
  U <- X + Y
  sim_df <- rbind(sim_df, data.frame(lambda = rep(lam, n_sims), U = U))
}
  
  u_grid <- seq(0, max(sim_df$U), length.out = 1000)
  analytic_df <- map_dfr(lambdas, function(lam){
    data.frame(lambda = lam,
               U = u_grid,
               density = dgamma(u_grid, shape = 2, rate = lam))
  })
ggplot(sim_df, aes(x = U))+
  geom_histogram(aes(y = after_stat(density)),
            binwidth = 0.1, fill = 'cornflowerblue', color = 'black')+
  geom_line(data = analytic_df, aes(x = U, y = density), color = "red",size = 1 )+
  facet_wrap(~lambda, scales = 'free')+
  labs(title = "Simulated vs Analytic Density of U = X + Y",
       x = "U", y = "Density")+
  theme_classic()
Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
ℹ Please use `linewidth` instead.