library(Stat2Data)
library(ggplot2)
data(Diamonds)
# Step 1: Population Parameters
mu <- mean(Diamonds$TotalPrice)
sigma <- sd(Diamonds$TotalPrice)
# Step 2: Simulation (n = 30, 1000 reps)
n <- 30
reps <- 1000
set.seed(123) # Ensures reproducible random sampling
sample_means <- replicate(reps, {
sample_data <- sample(Diamonds$TotalPrice, size = n, replace = TRUE)
mean(sample_data)
})
sim_data <- data.frame(sample_means = sample_means)
# Step 3: Theoretical Standard Error & Visualization
SE <- sigma / sqrt(n)
ggplot(sim_data, aes(x = sample_means)) +
geom_histogram(aes(y = after_stat(density)), color = "white", fill = "salmon", bins = 30) +
stat_function(fun = dnorm, args = list(mean = mu, sd = SE), color = "blue", size = 1) +
labs(title = "Sampling Distribution of Mean Diamond Prices (n = 30)",
x = "Sample Mean Total Price ($)",
y = "Density") +
theme_minimal()

# Step 4: Probability Calculation (P(X_bar > 10000))
prob_theoretical <- 1 - pnorm(10000, mean = mu, sd = SE)
prob_empirical <- mean(sample_means > 10000)
cat("Theoretical P(Mean > 10000):", prob_theoretical, "\n")
## Theoretical P(Mean > 10000): 0.03632525
cat("Empirical P(Mean > 10000): ", prob_empirical, "\n\n")
## Empirical P(Mean > 10000): 0.05
# Step 5: Cutoff Calculation (90% above / 10th percentile)
cutoff_theoretical <- qnorm(0.10, mean = mu, sd = SE)
cutoff_empirical <- quantile(sample_means, 0.10)
cat("Theoretical 10th percentile cutoff:", cutoff_theoretical, "\n")
## Theoretical 10th percentile cutoff: 5629.452
cat("Empirical 10th percentile cutoff: ", cutoff_empirical, "\n")
## Empirical 10th percentile cutoff: 5816.595