Learn R Programming

targeted (version 0.7)

test_intersection_sw: Signed Wald intersection test

Description

Calculating test statistics and p-values for the signed Wald intersection test given by $$SW = \inf_{\theta \in \cap_{i=1}^n H_i} \{(\widehat{\theta}-\theta)^\top W\widehat{\Sigma}W (\widehat{\theta}-\theta)\} $$ with individual hypotheses for each coordinate of \(\theta\) given by \(H_i: \theta_j < \delta_j\) for some non-inferiority margin \(\delta_j\), \(j=1,\ldots,n\). #

Usage

test_intersection_sw(
  par,
  vcov,
  noninf = 0,
  weights = 1,
  nsim.null = 10000,
  index = NULL,
  control = list(),
  par.name = "theta"
)

Value

htest object

Arguments

par

(numeric) parameter estimates or estimate object

vcov

(matrix) asymptotic variance estimate

noninf

(numeric) non-inferiority margins

weights

(numeric) optional weights

nsim.null

(integer) number of sample used in Monte-Carlo simulation

index

(integer) subset of parameters to test

control

(list) arguments to alternating projection algorithm. See details section.

par.name

(character) parameter names in output

Author

Klaus Kähler Holst, Christian Bressen Pipper

Details

The constrained least squares problem is solved using Dykstra's algorithm. The following parameters for the optimization can be controlled via the control list argument: dykstra_niter sets the maximum number of iterations (default 500), dykstra_tol convergence tolerance of the alternating projection algorithm (default 1e-7), pinv_tol tolerance for calculating the pseudo-inverse matrix (default length(par).Machine$double.epsmax(eigenvalue)).

References

Christian Bressen Pipper, Andreas Nordland & Klaus Kähler Holst (2025) A general approach to construct powerful tests for intersections of one-sided null-hypotheses based on influence functions. arXiv: https://arxiv.org/abs/2511.07096.

See Also

test_zmax_onesided lava::test_wald lava::closed_testing

Examples

Run this code
S <- matrix(c(1, 0.5, 0.5, 2), 2, 2)
thetahat <- c(0.5, -0.2)
test_intersection_sw(thetahat, S, nsim.null = 1e5)
test_intersection_sw(thetahat, S, weights = NULL)

if (FALSE) {
# only on 'lava' >= 1.8.2
e <- estimate(coef = thetahat, vcov = S, labels = c("p1", "p2"))
lava::closed_testing(e, test_intersection_sw, noninf = c(-0.1, -0.1)) |>
  summary()
}

Run the code above in your browser using DataLab