Title: | Heteroskedasticity Robust Testing |
---|---|
Description: | Functions for testing affine hypotheses on the regression coefficient vector in regression models with heteroskedastic errors: (i) a function for computing various test statistics (in particular using HC0-HC4 covariance estimators based on unrestricted or restricted residuals); (ii) a function for numerically approximating the size of a test based on such test statistics and a user-supplied critical value; and, most importantly, (iii) a function for determining size-controlling critical values for such test statistics and a user-supplied significance level (also incorporating a check of conditions under which such a size-controlling critical value exists). The three functions are based on results in Poetscher and Preinerstorfer (2021) "Valid Heteroskedasticity Robust Testing" <arXiv:2104.12597>. |
Authors: | David Preinerstorfer |
Maintainer: | David Preinerstorfer <[email protected]> |
License: | GPL-2 |
Version: | 1.0.1 |
Built: | 2024-11-26 06:33:40 UTC |
Source: | CRAN |
The package hrt provides three functions in the context of testing affine restrictions on the regression coefficient vector in linear models with heteroskedastic (but independent) errors. The methods implemented in hrt are based on the article Pötscher and Preinerstorfer (2021). The package can be used to compute various heteroskedasticity robust test statistics; to numerically determine size-controlling critical values when the error vector is heteroskedastic and Gaussian (or, more generally, elliptically symmetric); and to compute the size of a test that is obtained from a heteroskedasticity robust test statistic and a user-supplied critical value.
hrt provides three functions:
The function test.stat
can be used to evaluate the
test statistics ,
(with HC0-HC4 weights),
, or
(with HC0R-HC4R weights), as defined in
Pötscher and Preinerstorfer (2021).
The function critical.value
provides an implementation of
Algorithm 3 in Pötscher and Preinerstorfer (2021), based
on the auxiliary algorithm equal to Algorithm 1 (if
) or Algorithm 2
(if
) in the same reference. This function can be
used to determine size-controlling critical values for the test statistics
,
(with HC0-HC4 weights),
, or
(with HC0R-HC4R weights), whenever such critical values
exist (which is checked numerically when the algorithm is applied).
The function size
provides an implementation of Algorithm 1 or 2,
respectively, in Pötscher and Preinerstorfer
(2021), depending on whether or
. Given a user-supplied
critical value, the respective algorithm can be used to determine
the size of a test based on one of the test statistics
,
(with HC0-HC4 weights),
, or
(with HC0R-HC4R weights).
We refer the user to the description of the three functions below, and to Pötscher and Preinerstorfer (2021) for details concerning the framework, the test statistics, the algorithms, and the underlying theoretical results.
Pötscher, B. M. and Preinerstorfer, D. (2021). Valid Heteroskedasticity Robust Testing. <arXiv:2104.12597>
This function provides an implementation of
Algorithm 3 in Pötscher and Preinerstorfer (2021), based on
Algorithm 1 (if ) or Algorithm 2
(if
) in the same reference as the auxiliary algorithm
.
Which of the two algorithms is used is automatically
determined as a function of
, the number of rows of
R
.
The user is referred to Pötscher and Preinerstorfer (2021) for definitions, a detailed description of the problems solved by the algorithms, and for a detailed description of the algorithms themselves.
Most of the input parameters to critical.value
are actually used
in the auxiliary Algorithm 1 or 2, respectively.
Algorithm 1 is based on the function
davies
from the package CompQuadForm. The parameters
lim
and acc
for davies
can be supplemented by the user.
Algorithms 1 and 2 are implemented using the function constrOptim
from stats in Stages 1 and 2; this function
is used with default parameters, but control parameters can be supplied by the user.
After determining a critical value for a given testing
problem via the function critical.value
, it is recommended that: (i) the user
applies the function size
to compute the size of the test corresponding to the critical value obtained;
and (ii) to check whether the size obtained does coincide with (or is close to) the targeted level of
significance (that is alpha
). If (ii) is not the case, this is an indication
of numerical issues, which potentially can be avoided by changing the input parameters
responsible for the accuracy of the computations.
critical.value(alpha, R, X, hcmethod, restr.cov, Mp, M1, M2, N0 = NULL, N1 = NULL, N2 = NULL, tol = 1e-08, control.1 = list("reltol" = 1e-02, "maxit" = dim(X)[1]*20), control.2 = list("reltol" = 1e-03, "maxit" = dim(X)[1]*30), cores = 1, lower = 0, eps.close = .0001, lim = 30000, acc = 0.001, size.tol = .001, maxit = 25, as.tol = 1e-08)
critical.value(alpha, R, X, hcmethod, restr.cov, Mp, M1, M2, N0 = NULL, N1 = NULL, N2 = NULL, tol = 1e-08, control.1 = list("reltol" = 1e-02, "maxit" = dim(X)[1]*20), control.2 = list("reltol" = 1e-03, "maxit" = dim(X)[1]*30), cores = 1, lower = 0, eps.close = .0001, lim = 30000, acc = 0.001, size.tol = .001, maxit = 25, as.tol = 1e-08)
alpha |
Significance level. A real number in the interval |
R |
The restriction matrix. |
X |
The design matrix |
hcmethod |
Integer in [-1, 4]. Determines the method applied in the construction of the covariance estimator
used in the test statistic. The value -1 corresponds to unadjusted (i.e., classical) F statistic without df adjustment; the value 0
corresponds to the HC0 estimator; ...; the value 4 corresponds to the HC4 estimator. Note that in case |
restr.cov |
TRUE or FALSE. Covariance matrix estimator based on null-restricted (TRUE) or unrestricted (FALSE) residuals. |
Mp |
This input is used in Algorithm 1 or 2, respectively.
|
M1 |
This input is used in Algorithm 1 or 2, respectively. A positive integer
(should be chosen large, e.g., 500; but the feasibility depends on the dimension of |
M2 |
This input is used in Algorithm 1 or 2, respectively.
A positive integer. Corresponds to |
N0 |
This input is needed in Algorithm 2.
Only used in case |
N1 |
This input is needed in Algorithm 2.
Only used in case |
N2 |
This input is needed in Algorithm 2.
Only used in case |
tol |
This input is used in Algorithm 1 or 2, respectively. (Small) positive real number. Tolerance parameter used in checking invertibility of the covariance matrix in the test statistic. Default is 1e-08. |
control.1 |
This input is used in Algorithm 1 or 2, respectively.
Control parameters passed to the |
control.2 |
This input is used in Algorithm 1 or 2, respectively.
Control parameters passed to the |
cores |
The number of CPU cores used in the (parallelized) computations. Default is 1. Parallelized computation is enabled only if the compiler used to build hrt supports OpenMP. |
lower |
Number in |
eps.close |
(Small) positive real number. This determines the size of the dominant entry in the choice of the
initial values as discussed in the description of the input |
lim |
This input is needed in Algorithm 1. Only used in case |
acc |
This input is needed in Algorithm 1. Only used in case |
size.tol |
(Small) positive real number. |
maxit |
Maximum number of iterations in the while loop of Algorithm 3. Default is 25. |
as.tol |
(Small) positive real number. Tolerance parameter used in checking rank
conditions for verifying Assumptions 1, 2, and for checking a non-constancy condition
on the test statistic in case |
For details see the relevant sections in Pötscher and Preinerstorfer (2021), in particular the description of Algorithms 1 and 2 in the Appendix.
The output of critical.value
is the following:
critical.value |
The critical value obtained by Algorithm 3. |
approximate.size |
The approximate size of the test based on the returned critical value. |
iter |
The number of iterations performed. If |
Pötscher, B. M. and Preinerstorfer, D. (2021). Valid Heteroskedasticity Robust Testing. <arXiv:2104.12597>
#critical value for the classical (uncorrected) F-test in a location model #with unrestricted heteroskedasticity #it is known that (in this very special case) the conventional critical value #C <- qt(.975, df = 9)^2 #is size-controlling (thus the resulting size should be 5% (approximately)) R <- matrix(1, nrow = 1) X <- matrix(rep(1, length = 10), nrow = 10, ncol = 1) hcmethod <- -1 restr.cov <- FALSE Mp <- 1000 M1 <- 5 M2 <- 1 #here, the parameters are chosen such that the run-time is low #to guarantee a high accuracy level in the computation, #Mp, M1 and M2 should be chosen much higher critical.value(alpha = .05, R, X, hcmethod, restr.cov, Mp, M1, M2)
#critical value for the classical (uncorrected) F-test in a location model #with unrestricted heteroskedasticity #it is known that (in this very special case) the conventional critical value #C <- qt(.975, df = 9)^2 #is size-controlling (thus the resulting size should be 5% (approximately)) R <- matrix(1, nrow = 1) X <- matrix(rep(1, length = 10), nrow = 10, ncol = 1) hcmethod <- -1 restr.cov <- FALSE Mp <- 1000 M1 <- 5 M2 <- 1 #here, the parameters are chosen such that the run-time is low #to guarantee a high accuracy level in the computation, #Mp, M1 and M2 should be chosen much higher critical.value(alpha = .05, R, X, hcmethod, restr.cov, Mp, M1, M2)
This function provides an implementation of Algorithm 1 (if ) or 2 (if
), respectively, in Pötscher and Preinerstorfer
(2021). Which of the two algorithms is applied is automatically determined as a function of
.
The user is referred to the just-mentioned article for definitions, a detailed description of the problem solved the algorithms, and for a detailed description of the algorithms themselves.
Algorithm 1 is based on the function davies
from the package CompQuadForm. The parameters
lim
and acc
for davies
can be supplemented by the user.
Algorithms 1 and 2 are implemented using the function constrOptim
from stats in Stages 1 and 2; this function
is used with default parameters, but control parameters can be supplied by the user.
size(C, R, X, hcmethod, restr.cov, Mp, M1, M2, N0 = NULL, N1 = NULL, N2 = NULL, tol = 1e-08, control.1 = list("reltol" = 1e-02, "maxit" = dim(X)[1]*20), control.2 = list("reltol" = 1e-03, "maxit" = dim(X)[1]*30), cores = 1, lower = 0, eps.close = .0001, lim = 30000, acc = 0.001, levelCl = 0, LBcheck = FALSE, as.tol = 1e-08)
size(C, R, X, hcmethod, restr.cov, Mp, M1, M2, N0 = NULL, N1 = NULL, N2 = NULL, tol = 1e-08, control.1 = list("reltol" = 1e-02, "maxit" = dim(X)[1]*20), control.2 = list("reltol" = 1e-03, "maxit" = dim(X)[1]*30), cores = 1, lower = 0, eps.close = .0001, lim = 30000, acc = 0.001, levelCl = 0, LBcheck = FALSE, as.tol = 1e-08)
C |
Critical value. A positive real number (for negative critical values
the size of the test equals |
R |
The restriction matrix. |
X |
The design matrix |
hcmethod |
Integer in [-1, 4]. Determines the method applied in the construction of the covariance estimator
used in the test statistic. The value -1 corresponds to the unadjusted (i.e., classical) F statistic without df adjustment; the value 0
corresponds to the HC0 estimator; ...; the value 4 corresponds to the HC4 estimator. Note that in case |
restr.cov |
TRUE or FALSE. Covariance matrix estimator based on null-restricted (TRUE) or unrestricted (FALSE) residuals. |
Mp |
A positive integer (should be chosen large, e.g., 50000; but the feasibility depends on the dimension of
|
M1 |
A positive integer (should be chosen large, e.g., 500; but the feasibility depends on the dimension of |
M2 |
A positive integer. Corresponds to |
N0 |
Only used in case |
N1 |
Only used in case |
N2 |
Only used in case |
tol |
(Small) positive real number. Tolerance parameter used in checking invertibility of the covariance matrix in the test statistic. Default is 1e-08. |
control.1 |
Control parameters passed to the |
control.2 |
Control parameters passed to the |
cores |
The number of CPU cores used in the (parallelized) computations. Default is 1. Parallelized computation is enabled only if the compiler used to build hrt supports OpenMP. |
lower |
Number in |
eps.close |
(Small) positive real number. This determines the size of the dominant entry in the choice of the
initial values as discussed in the description of the input |
lim |
This input is needed in Algorithm 1. Only used in case |
acc |
This input is needed in Algorithm 1. Only used in case |
levelCl |
Number in |
LBcheck |
Either FALSE (default) or TRUE. If TRUE, then |
as.tol |
(Small) positive real number. Tolerance parameter used in checking rank
conditions for verifying Assumptions 1, 2, and for checking a non-constancy condition
on the test statistic in case |
For details see the relevant sections in Pötscher and Preinerstorfer (2021), in particular the description of Algorithms 1 and 2 in the Appendix.
The output of size
is the following:
starting.parameters |
The rows of this matrix are the initial values (diagonals of covariance matrices) that were used in Stage 1 of the algorithm, and which were chosen from the pool of initial values in Stage 0. |
starting.rejection.probs |
The null-rejection probabilities corresponding to the initial values used in Stage 1. |
first.stage.parameters |
The rows of this matrix are the parameters (diagonals of covariance matrices) that were obtained in Stage 1 of the algorithm. |
first.stage.rejection.probs |
The
null-rejection
probabilities corresponding to the |
second.stage.parameters |
The rows of this matrix are the parameters (diagonals of covariance matrices) that were obtained in Stage 2 of the algorithm. |
second.stage.rejection.probs |
The null-rejection probabilities
corresponding to the |
convergence |
Convergence codes returned from |
size |
The size computed by the algorithm, i.e., the maximum of the
|
Pötscher, B. M. and Preinerstorfer, D. (2021). Valid Heteroskedasticity Robust Testing. <arXiv:2104.12597>
#size of the classical (uncorrected) F-test in a location model #with conventional t-critical value (5% level) #it is known that (in this very special case) the conventional critical value #is size-controlling (i.e., the resulting size should be 5% (approximately)) C <- qt(.975, df = 9)^2 R <- matrix(1, nrow = 1) X <- matrix(rep(1, length = 10), nrow = 10, ncol = 1) hcmethod <- -1 restr.cov <- FALSE Mp <- 100 M1 <- 5 M2 <- 1 #here, the parameters are chosen such that the run-time is low #to guarantee a high accuracy level in the computation, #Mp, M1 and M2 should be chosen much higher size(C, R, X, hcmethod, restr.cov, Mp, M1, M2)
#size of the classical (uncorrected) F-test in a location model #with conventional t-critical value (5% level) #it is known that (in this very special case) the conventional critical value #is size-controlling (i.e., the resulting size should be 5% (approximately)) C <- qt(.975, df = 9)^2 R <- matrix(1, nrow = 1) X <- matrix(rep(1, length = 10), nrow = 10, ncol = 1) hcmethod <- -1 restr.cov <- FALSE Mp <- 100 M1 <- 5 M2 <- 1 #here, the parameters are chosen such that the run-time is low #to guarantee a high accuracy level in the computation, #Mp, M1 and M2 should be chosen much higher size(C, R, X, hcmethod, restr.cov, Mp, M1, M2)
This function computes the test statistics ,
(with HC0-HC4 weights),
, or
(with HC0R-HC4R weights) as defined in
Pötscher and Preinerstorfer (2021).
test.stat(y, R, r, X, hcmethod, restr.cov, tol = 1e-08, cores = 1)
test.stat(y, R, r, X, hcmethod, restr.cov, tol = 1e-08, cores = 1)
y |
Either an observation vector, or a matrix the columns of which are
observation vectors. The
number of rows of an observation vector must coincide with the number of rows
of the design matrix |
R |
The restriction matrix. |
r |
The restriction vector. |
X |
The design matrix |
hcmethod |
Integer in [-1, 4]. Determines the method applied in the construction of the covariance estimator
used in the test statistic. The value -1 corresponds to unadjusted (i.e., classical) F statistic without df adjustment; the value 0
corresponds to the HC0 estimator; ...; the value 4 corresponds to the HC4 estimator. Note that in case |
restr.cov |
TRUE or FALSE. Covariance matrix estimator based on null-restricted (TRUE) or unrestricted (FALSE) residuals. |
tol |
(Small) positive real number. Tolerance parameter used in checking invertibility of the covariance matrix in the test statistic. Default is 1e-08. |
cores |
The number of CPU cores used in the (parallelized) computations. Default is 1. Parallelized computation is enabled only if the compiler used to build hrt supports OpenMP. |
For details concerning the test statistics please see the relevant sections in Pötscher and Preinerstorfer (2021) .
The function returns a list consisting of:
test.val |
Either a vector the entries of which correspond to the values
of the
test statistic evaluated at each column of the input matrix |
Pötscher, B. M. and Preinerstorfer, D. (2021). Valid Heteroskedasticity Robust Testing. <arXiv:2104.12597>
n <- 20 y <- rnorm(n) X <- cbind(rep(1, length = n), rnorm(n)) R <- matrix(1, nrow = 1, ncol = 2) r <- 0 hcmethod <- 4 restr.cov <- FALSE test.stat(y, R, r, X, hcmethod, restr.cov)
n <- 20 y <- rnorm(n) X <- cbind(rep(1, length = n), rnorm(n)) R <- matrix(1, nrow = 1, ncol = 2) r <- 0 hcmethod <- 4 restr.cov <- FALSE test.stat(y, R, r, X, hcmethod, restr.cov)