| ptdiff_MC | R Documentation |
Calculates the cumulative distribution function (CDF) of the difference
between two independent non-standardised t-distributed random variables
using Monte Carlo simulation. Specifically, computes
P(T_t - T_c \le q) or P(T_t - T_c > q), where
T_k \sim t(\mu_k, \sigma_k^2, \nu_k) for k \in \{t, c\}.
ptdiff_MC(nMC, q, mu_t, mu_c, sd_t, sd_c, nu_t, nu_c, lower.tail = TRUE)
nMC |
A positive integer giving the number of Monte Carlo draws. Typical values range from 10,000 (quick estimates) to 100,000 or more (high precision). Larger values reduce Monte Carlo error at the cost of computation time. |
q |
A numeric scalar representing the quantile threshold. |
mu_t |
A numeric scalar or vector giving the location parameter of the t-distribution for the treatment group. |
mu_c |
A numeric scalar or vector giving the location parameter of the t-distribution for the control group. |
sd_t |
A positive numeric scalar or vector giving the scale parameter of the t-distribution for the treatment group. |
sd_c |
A positive numeric scalar or vector giving the scale parameter of the t-distribution for the control group. |
nu_t |
A numeric scalar giving the degrees of freedom of the t-distribution for the treatment group. Must be greater than 2 for finite variance. |
nu_c |
A numeric scalar giving the degrees of freedom of the t-distribution for the control group. Must be greater than 2 for finite variance. |
lower.tail |
A logical scalar; if |
The algorithm proceeds as follows:
Generate an nMC x n matrix of standard t draws for
T_t (\nu_t degrees of freedom), then scale and shift
each column by sd_t[i] and mu_t[i].
Repeat for T_c with \nu_c degrees of freedom.
Compute the nMC x n difference matrix
D = T_t - T_c.
Return colMeans(D > q) as the estimated
P(T_t - T_c > q) for each parameter set.
All operations are matrix-based (no R-level loop over parameter sets), so
performance scales well with n. However, note that the matrix size
is nMC x n, so memory usage grows linearly with both nMC
and n. When n is large (e.g., nsim x n_scenarios in
pbayesdecisionprob1cont), memory requirements can become
prohibitive; in such cases prefer CalcMethod = 'MM'.
Monte Carlo error is approximately
\sqrt{p(1 - p) / \mathrm{nMC}}; near p = 0.5 this is
roughly 0.5 / \sqrt{\mathrm{nMC}}.
A numeric scalar or vector in [0, 1]. When mu_t,
mu_c, sd_t, or sd_c are vectors of length
n, a vector of length n is returned.
# P(T_t - T_c > 3) with equal parameters
ptdiff_MC(nMC = 1e5, q = 3, mu_t = 2, mu_c = 0, sd_t = 1, sd_c = 1,
nu_t = 17, nu_c = 17, lower.tail = FALSE)
# P(T_t - T_c > 1) with unequal scales
ptdiff_MC(nMC = 1e5, q = 1, mu_t = 5, mu_c = 3, sd_t = 2, sd_c = 1.5,
nu_t = 10, nu_c = 15, lower.tail = FALSE)
# P(T_t - T_c > 0) with different degrees of freedom
ptdiff_MC(nMC = 1e5, q = 0, mu_t = 1, mu_c = 1, sd_t = 1, sd_c = 1,
nu_t = 5, nu_c = 20, lower.tail = FALSE)
# Lower tail: P(T_t - T_c <= 2)
ptdiff_MC(nMC = 1e5, q = 2, mu_t = 3, mu_c = 0, sd_t = 1.5, sd_c = 1.2,
nu_t = 12, nu_c = 15, lower.tail = TRUE)
# Vectorised usage
ptdiff_MC(nMC = 1e5, q = 1, mu_t = c(2, 3, 4), mu_c = c(0, 1, 2),
sd_t = c(1, 1.2, 1.5), sd_c = c(1, 1.1, 1.3),
nu_t = 10, nu_c = 10, lower.tail = FALSE)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.