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 <-10000sim_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.