argmax.HT {argminCS} | R Documentation |
A wrapper to perform argmax hypothesis test.
Description
This function performs a hypothesis test to evaluate whether a given dimension may be the argmax.
It internally negates the data and reuses the implementation from argmin.HT
.
Usage
argmax.HT(data, r = NULL, method = "softmin.LOO", ...)
Arguments
data |
(1) A n by p matrix of raw samples (for GTA), or (2) A n by (p-1) difference matrix (for SML, HML, NS, MT). Each row is a sample. |
r |
The dimension of interest for testing; defaults to NULL. Required for GTA. |
method |
A string indicating the method to use. Defaults to 'softmin.LOO'. See **Details** for supported methods and abbreviations. |
... |
Additional arguments passed to |
Details
The supported methods include:
softmin.LOO (SML) | Leave-one-out algorithm using exponential weighting. |
argmin.LOO (HML) | A variant of SML that uses hard argmin instead of exponential weighting. Not recommended. |
nonsplit (NS) | Variant of SML without data splitting. Requires a fixed lambda value. Not recommended. |
Bonferroni (MT) | Multiple testing using Bonferroni correction. |
Gupta (GTA) | The method from Gupta SS (1965). “On Some Multiple Decision (Selection and Ranking) Rules.” Technometrics, 7(2), 225–245. doi:10.1080/00401706.1965.10490251.. |
Value
A character string: 'Accept' or 'Reject', indicating whether the dimension could be an argmax, and relevant statistics.
References
Chernozhukov V, Chetverikov D, Kato K (2013). “Testing many moment inequalities.” RePEc. IDEAS Working Paper Series.
Gupta SS (1965). “On Some Multiple Decision (Selection and Ranking) Rules.” Technometrics, 7(2), 225–245. doi:10.1080/00401706.1965.10490251.
Futschik A, Pflug G (1995). “Confidence Sets for Discrete Stochastic Optimization.” Annals of Operations Research, 56(1), 95–108. doi:10.1007/BF02031702.
Examples
set.seed(108)
n <- 200
p <- 20
mu <- (1:p)/p
cov <- diag(p)
data <- MASS::mvrnorm(n, mu, cov)
## Define the dimension of interest
r <- 4
## Construct difference matrix for dimension r
difference.matrix.r <- matrix(rep(data[, r], p - 1), ncol = p - 1, byrow = FALSE) - data[, -r]
## softmin.LOO (SML)
argmax.HT(difference.matrix.r)
## use seed
argmax.HT(difference.matrix.r, seed=19)
## With known true difference
true.mean.diff <- mu[r] - mu[-r]
argmax.HT(difference.matrix.r, true.mean = true.mean.diff)
## Without scaling
argmax.HT(difference.matrix.r, scale.input = FALSE)
## With a user-specified lambda
argmax.HT(difference.matrix.r, lambda = sqrt(n) / 2.5)
## Add a seed for reproducibility
argmax.HT(difference.matrix.r, seed = 17)
## argmin.LOO (HML)
argmax.HT(difference.matrix.r, method = "HML")
## nonsplit method
argmax.HT(difference.matrix.r, method = "NS", lambda = sqrt(n)/2.5)
## Bonferroni method (choose t test for normal data)
argmax.HT(difference.matrix.r, method = "MT", test = "t")
## Gupta method (pass full data matrix)
critical.val <- get.quantile.gupta.selection(p = length(mu))
argmax.HT(data, r, method = "GTA", critical.val = critical.val)