Type: | Package |
Title: | Empirical Testing of Surrogate Paradox Assumptions |
Version: | 2.0 |
Date: | 2025-01-20 |
Description: | Provides functions to nonparametrically assess assumptions necessary to prevent the surrogate paradox through hypothesis tests of stochastic dominance, monotonicity of regression functions, and non-negative residual treatment effects. More details are available in Hsiao et al 2025 (under review). A tutorial for this package can be found at https://laylaparast.com/home/SurrogateParadoxTest.html. |
License: | GPL-2 | GPL-3 [expanded from: GPL] |
Imports: | stats, MonotonicityTest |
NeedsCompilation: | no |
Packaged: | 2025-01-20 20:17:31 UTC; parastlm |
Author: | Emily Hsiao [aut, cre] |
Maintainer: | Emily Hsiao <ehsiao@utexas.edu> |
Repository: | CRAN |
Date/Publication: | 2025-01-20 23:30:02 UTC |
Helper function for monotonicity test
Description
Helper function for monotonicity test; should not be called directly by user.
Usage
Q(r, s, X)
Arguments
r |
Index to start summation. |
s |
Index to end summation. |
X |
Vector of X values over which to sum. |
Value
Q
Author(s)
Emily Hsiao
References
Hall, Peter, and Nancy E. Heckman. "Testing for monotonicity of a regression mean by calibrating for linear functions." Annals of Statistics (2000): 20-39.
Helper function
Description
Helper function for monotonicity test.
Usage
S(a, b, r, s, X, Y)
Arguments
a |
Value of a (regression coefficient) |
b |
Value of b (regression coefficient) |
r |
Index to start summation |
s |
Index to end summation |
X |
Vector of X values |
Y |
Vector of Y values |
Value
Mean-squared error
Author(s)
Emily Hsiao
Helper function for monotonicity test
Description
Calculates the test statistic
Usage
T_m(m, X, Y)
Arguments
m |
m window size |
X |
Vector of X values |
Y |
Vector of Y values |
Value
stat |
Value of the test statistic |
stat_vals |
Vector of statistics before taking maximum |
b_vals |
Values of b |
Q_vals |
Values of Q |
Author(s)
Emily Hsiao
Helper function
Description
Helper function for monotonicity test
Usage
a_b_hat(r, s, X, Y)
Arguments
r |
Index to start summation. |
s |
Index to end summation. |
X |
Vector of X values. |
Y |
Vector of Y values. |
Value
a_hat |
Numeric value of a_hat |
b_hat |
Numeric value of b_hat |
Author(s)
Emily Hsiao
Helper function for stochastic dominance test
Description
Rejection cutoff value for stochastic dominance value based on alpha level.
Usage
barrett_donald_cutoff(alpha)
Arguments
alpha |
Desired alpha level for stochastic dominance test. |
Value
Cutoff value for stochastic dominance test
Author(s)
Emily Hsiao
Helper function for stochastic dominance test
Description
Calculates p-value of the stochastic dominance test
Usage
barrett_donald_p(statistic)
Arguments
statistic |
Test statistic calculated in stochastic dominance test |
Value
p-value of the test statistic
Author(s)
Emily Hsiao
Helper function for kernel smoother
Description
Calculates the appropriate bandwidth for Nadaraya-Watson kernel smoother.
Usage
calculate_bandwidth(s)
Arguments
s |
Vector of surrogate values. |
Value
Desired bandwidth for kernel smoother.
Author(s)
Emily Hsiao
Helper function for kernel smoother
Description
Gaussian kernel used for kernel smoother.
Usage
gaussian_kernel(x)
Arguments
x |
x |
Value
Gaussian kernel applied to x
Author(s)
Emily Hsiao
Helper function for non-negative residual treatment effect test.
Description
Calculates the value of the test statistic in the NNR test.
Usage
modified_S_stat(mu0_hat, mu1_hat, s0, y0, s1, y1, grid_x, boot = FALSE)
Arguments
mu0_hat |
Kernel-smoothed estimate of |
mu1_hat |
Kernel-smoothed estimate of |
s0 |
Vector of surrogate values in control group. |
y0 |
Vector of endpoint values in control group. |
s1 |
Vector of surrogate values in treatment group. |
y1 |
Vector of endpoing values in the treatment group. |
grid_x |
Values of s over which supremum is calculated. |
boot |
Whether this is a bootstrapped statistic or the test statistic. |
Value
s_hat |
Value of the test statistic |
sup |
Value of the supremum over grid_x |
Author(s)
Emily Hsiao
Monotonicity test
Description
Runs the test of monotonicity for a regression function.
Usage
monotonicity_test(X, Y, h = NA, m = 5, bootstrap_n = 100,
alpha = 0.05)
Arguments
X |
Vector of X values. |
Y |
Vector of Y values. |
h |
Bandwidth for the kernel smoother. |
m |
Window size to calculate linear regression. |
bootstrap_n |
Desired number of bootstrap samples. |
alpha |
Desired alpha level of the test. |
Value
T_m_value |
Value of the test statistic. |
p_val |
p-value of test |
reject |
whether the test rejects the null |
T_m_samples |
Vector of bootstrapped values of test statistic |
Author(s)
Emily Hsiao
References
Hall, Peter, and Nancy E. Heckman. "Testing for monotonicity of a regression mean by calibrating for linear functions." Annals of Statistics (2000): 20-39.
Non-negative residual treatment effect function
Description
Runs the test of non-negative residual treatment effect given two sets of surrogate and primary endpoint values.
Usage
nnr_test(s0, y0, s1, y1, n_bootstrap = 200, alpha = 0.05)
Arguments
s0 |
Vector of surrogate values in control group. |
y0 |
Vector of endpoint values in control group. |
s1 |
Vector of surrogate values in treatment group. |
y1 |
Vector of endpoint values in treatment group. |
n_bootstrap |
Desired number of bootstrap samples. |
alpha |
Desired alpha level of test. |
Value
p_value |
p-value of test. |
reject |
Whether the test rejects the null hypothesis. |
s_hat |
Calculated value of test statistic. |
s_vec |
Vector of bootstrapped values of test statistic. |
Author(s)
Emily Hsiao
References
Hsiao et all 2024 (Under review)
Stochastic dominance test function
Description
Runs the test of stochastic dominance given two vectors of surrogate values.
Usage
sd_test(s0, s1, alpha = 0.05)
Arguments
s0 |
Vector of surrogate values in control group. |
s1 |
Vector of surrogate values in treatment group. |
alpha |
Desired alpha level of hypothesis test. |
Value
s_hat |
Value of test statistic |
p.value |
p-value of test |
reject |
Rejection decision of test |
Author(s)
Emily Hsiao
References
Barrett, Garry F., and Stephen G. Donald. "Consistent tests for stochastic dominance." Econometrica 71.1 (2003): 71-104.
Helper function
Description
Nadaraya-Watson kernel smoother
Usage
smoother_fitter(X, Y, kernel = gaussian_kernel, h)
Arguments
X |
Vector of X values |
Y |
Vector of Y values |
kernel |
Kernel to use in the kernel smoother; defaults to Gaussian kernel |
h |
Bandwidth |
Value
Returns a function which is the smoothed function; input takes in an x value.
Author(s)
Emily Hsiao
Test assumptions to prevent surrogate paradox
Description
Tests the assumptions necessary to prevent the surrogate paradox: stochastic dominance of surrogate values in the treatment group over control group, monotonicity of the relationship between surrogate and primary endpoint in both treatment and control group, and non-negative residual treatment effect of the treatment group over the control group. For computational efficiency, Version 2.0 of this package uses the monotonicity_test function from the MonotonicityTest package.
Usage
test_assumptions(s0 = NULL, y0 = NULL, s1 = NULL, y1 = NULL, trim = 0.95,
alpha = 0.05, type = "all", all_results = TRUE, direction = "positive",
monotonicity_bootstrap_n = 100, nnr_bootstrap_n = 200)
Arguments
s0 |
Vector of surrogate values in control group. |
y0 |
Vector of primary endpoint values in control group. |
s1 |
Vector of surrogate values in treatment group. |
y1 |
Vector of primary endpoint values in treatment group. |
trim |
Proportion of data to keep after trimming the outliers. Defaults to 95%. Trims data by sorting by surrogate value and removing (1 - trim)/2 % of the lowest and highest surrogate values with their corresponding primary endpoint values. |
alpha |
Desired alpha level of tests. |
type |
Type of test to run. Defaults to "all"; possible inputs are "sd" (stochastic dominance), "monotonicity" (monotonicity), and "nnr" (non-negative residual treatment effect). |
all_results |
TRUE or FALSE; return all outputs from hypothesis tests. Defaults to TRUE. |
direction |
Direction of the test. Defaults to "positive", which tests that the treatment group stochastically dominates the control group, that |
monotonicity_bootstrap_n |
Number of bootstrap samples for monotonicity test. |
nnr_bootstrap_n |
Number of bootstrap samples for nnr test. |
Value
result |
Table or string of results of the tests |
sd_result |
Detailed results of stochastic dominance test; only returned if all_results is TRUE |
monotonicity0_result |
Detailed results of monotonicity test in control group; only returned if all_results is TRUE |
monotonicity1_result |
Detailed results of monotonicity test in treatment group; only returned if all_results is TRUE |
nnr_result |
Detailed results of nnr test; only returned if all_results is TRUE |
Author(s)
Emily Hsiao
References
Barrett, Garry F., and Stephen G. Donald. "Consistent tests for stochastic dominance." Econometrica 71.1 (2003): 71-104.
Hall, Peter, and Nancy E. Heckman. "Testing for monotonicity of a regression mean by calibrating for linear functions." Annals of Statistics (2000): 20-39.
Hsiao, Tian, Parast. "Avoiding the Surrogate Paradox: An Empirical Framework for Assessing Assumptions." 2025 (Under Review)
Examples
m_c <- function(s) 1 + 2 * s
m_t <- function(s) 1 + 2 * s
s_c <- rnorm(100, 3, 1)
y_c <- sapply(s_c, function(s) rnorm(1, m_c(s), 1))
s_t <- rnorm(100, 3, 1)
y_t <- sapply(s_t, function(s) rnorm(1, m_t(s), 1))
test_assumptions(
s0 = s_c, y0 = y_t, s1 = s_t, y1 = y_t, type = "sd"
)
test_assumptions(
s0 = s_c, y0 = y_t, s1 = s_t, y1 = y_t, type = "all")