## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ## ----setup-------------------------------------------------------------------- library(wstdiff) ## ----univariate--------------------------------------------------------------- # X1 ~ t(mu=0, sigma=1, nu=10) # X2 ~ t(mu=0, sigma=1.5, nu=15) result <- ws_tdiff_univariate( mu1 = 0, sigma1 = 1, nu1 = 10, mu2 = 0, sigma2 = 1.5, nu2 = 15 ) print(result) # The difference Z = X1 - X2 is approximately: # Z ~ t(mu_diff, sigma_star^2, nu_star) ## ----distributions------------------------------------------------------------ # Probability that difference is negative p_negative <- ptdiff(0, result) print(paste("P(X1 - X2 < 0) =", round(p_negative, 4))) # 95% confidence interval for the difference ci_95 <- qtdiff(c(0.025, 0.975), result) print(paste("95% CI:", round(ci_95[1], 3), "to", round(ci_95[2], 3))) # Generate random samples samples <- rtdiff(1000, result) hist(samples, breaks = 30, main = "Simulated Difference Distribution", xlab = "X1 - X2", probability = TRUE) # Overlay theoretical density x_seq <- seq(min(samples), max(samples), length.out = 100) lines(x_seq, dtdiff(x_seq, result), col = "red", lwd = 2) ## ----multivariate------------------------------------------------------------- result_multi <- ws_tdiff_multivariate_independent( mu1 = c(0, 1, 2), sigma1 = c(1, 1.5, 2), nu1 = c(10, 12, 15), mu2 = c(0, 0, 0), sigma2 = c(1.2, 1, 1.8), nu2 = c(15, 20, 25) ) print(result_multi) ## ----special------------------------------------------------------------------ # When both distributions have identical parameters result_equal <- ws_tdiff_equal_params(mu = 0, sigma = 1, nu = 10) print(result_equal) # Verify: nu_star should be 2*(nu - 4) = 12 stopifnot(result_equal$nu_star == 12) ## ----quality------------------------------------------------------------------ # Low degrees of freedom - use with caution result_low_df <- ws_tdiff_univariate(0, 1, 5, 0, 1, 6) print(paste("Warning: nu_star =", round(result_low_df$nu_star, 2))) # High degrees of freedom - excellent approximation result_high_df <- ws_tdiff_univariate(0, 1, 100, 0, 1.5, 150) print(paste("Good: nu_star =", round(result_high_df$nu_star, 2)))