ConTestWald: Wald-bar test for robust iht

Description Usage Arguments Details Value Author(s) References See Also Examples

Description

conTestWald tests linear equality and/or inequality restricted hypotheses for linear models by Wald-tests. It can be used directly and is called by the conTest function if test = "Wald".

Usage

1
2
3
4
5
## S3 method for class 'conRLM'
conTestWald(object, type = "A", neq.alt = 0, 
           boot = "no", R = 9999, p.distr = rnorm,  
           parallel = "no", ncpus = 1L, cl = NULL, seed = 1234, 
           verbose = FALSE, control = NULL, ...)

Arguments

object

an object of class conRLM.

type

hypothesis test type "A", "B", "C", "global", or "summary" (default). See details for more information.

neq.alt

integer: number of equality constraints that are maintained under the alternative hypothesis (for hypothesis test type "B"), see example 3.

boot

the null-distribution of these test-statistics (except under type "C", see details) takes the form of a mixture of F-distributions. The tail probabilities can be computed directly via bootstrapping; if "parametric", the p-value is computed based on the parametric bootstrap. By default, samples are drawn from a normal distribution with mean zero and varance one. See p.distr for other distributional options. If "model.based", a model-based bootstrap method is used. Instead of computing the p-value via simulation, the p-value can also be computed using the chi-bar-square weights. If "no", the p-value is computed based on the weights obtained via simulation (mix.weights = "boot") or using the multivariate normal distribution function (mix.weights = "pmvnorm"). Note that, these weights are already available in the restriktor objected and do not need to be estimated again. However, there are two exception for objects of class conRLM, namely for computing the p-value for the robust test = "Wald" and the robust "score". In these cases the weights need to be recalculated.

R

integer; number of bootstrap draws for boot. The default value is set to 9999.

p.distr

random generation distribution for the parametric bootstrap. For all available distributions see ?distributions. For example, if rnorm, samples are drawn from the normal distribution (default) with mean zero and variance one. If rt, samples are drawn from a t-distribution. If rchisq, samples are drawn from a chi-square distribution. The random generation distributional parameters will be passed in via ....

parallel

the type of parallel operation to be used (if any). If missing, the default is set "no".

ncpus

integer: number of processes to be used in parallel operation: typically one would chose this to the number of available CPUs.

cl

an optional parallel or snow cluster for use if parallel = "snow". If not supplied, a cluster on the local machine is created for the duration of the conTest call.

seed

seed value. The default value is set to 1234.

verbose

logical; if TRUE, information is shown at each bootstrap draw.

control

a list of control arguments:

  • absval tolerance criterion for convergence (default = sqrt(.Machine$double.eps)). Only used for model of class lm.

  • maxit the maximum number of iterations for the optimizer (default = 10000). Only used for model of class mlm (not yet supported).

  • tol numerical tolerance value. Estimates smaller than tol are set to 0.

...

additional arguments to be passed to the p.distr function.

Details

The following hypothesis tests are available:

The null-distribution of hypothesis test Type C is based on a t-distribution (one-sided). Its power can be poor in case of many inequalty constraints. Its main role is to prevent wrong conclusions from significant results from hypothesis test Type A.

The exact finite sample distributions of the non-robust F-, score- and LR-test statistics based on restricted OLS estimates and normally distributed errors, are a mixture of F-distributions under the null hypothesis (Wolak, 1987). In agreement with Silvapulle (1992), we found that the results based on these mixtures of F-distributions approximate the tail probabilities of the robust tests better than their asymptotic distributions. Therefore, all p-values for hypothesis test Type "A", "B" and "global" are computed based on mixtures of F-distributions.

Value

An object of class conTest, for which a print is available. More specifically, it is a list with the following items:

CON

a list with useful information about the constraints.

Amat

constraints matrix.

bvec

vector of right-hand side elements.

meq

number of equality constraints.

meq.alt

same as input neq.alt.

iact

number of active constraints.

type

same as input.

test

same as input.

Ts

test-statistic value.

df.residual

the residual degrees of freedom.

pvalue

tail probability for Ts.

b.eqrestr

equality restricted regression coefficients. Only available for type = "A" and type = "global", else b.eqrestr = NULL.

b.unrestr

unrestricted regression coefficients.

b.restr

restricted regression coefficients.

b.restr.alt

restricted regression coefficients under HA if some equality constraints are maintained. Only available for type = "B" else b.restr.alt = NULL.

Sigma

variance-covariance matrix of unrestricted model.

R2.org

unrestricted R-squared, not available for objects of class conGLM.

R2.reduced

restricted R-squared, not available for objects of class conGLM.

boot

same as input.

model.org

original model.

Author(s)

Leonard Vanbrabant and Yves Rosseel

References

Silvapulle, M. (1992b). Robust Wald-Type Tests of One-Sided Hypotheses in the Linear Model. Journal of the American Statistical Association, 87, 156–161.

Silvapulle, M. (1996) Robust bounded influence tests against one-sided hypotheses in general parametric models. Statistics & probability letters, 31, 45–50.

Silvapulle, M.J. and Sen, P.K. (2005). Constrained Statistical Inference. Wiley, New York

See Also

quadprog, conTest

Examples

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
library(MASS)
## example 1:
# the data consist of ages (in months) at which an 
# infant starts to walk alone.

# prepare data
DATA1 <- subset(ZelazoKolb1972, Group != "Control")

# fit unrestricted robust linear model
fit1.rlm <- rlm(Age ~ -1 + Group, data = DATA1, method = "MM")

# the variable names can be used to impose constraints on
# the corresponding regression parameters.
coef(fit1.rlm)

# constraint syntax: assuming that the walking 
# exercises would not have a negative effect of increasing the 
# mean age at which a child starts to walk. 
myConstraints1 <- ' GroupActive  < GroupPassive; 
                    GroupPassive < GroupNo '

conTest(fit1.rlm, myConstraints1, test = "Wald")


# another way is to first fit the restricted model
fit.restr1 <- restriktor(fit1.rlm, constraints = myConstraints1)

conTest(fit.restr1, test = "Wald")

## Not run:  
  # Or in matrix notation.
  Amat1 <- rbind(c(-1, 0,  1),
                 c( 0, 1, -1))
  myRhs1 <- rep(0L, nrow(Amat1)) 
  myNeq1 <- 0
  
  conTest(fit1.rlm, constraints = Amat1, test = "Wald",
          rhs = myRhs1, neq = myNeq1)

## End(Not run)            

#########################
## Artificial examples ##
#########################
# generate data
n <- 30
means <- c(1,2,1,3)
nm <- length(means)
group <- as.factor(rep(1:nm, each = n))
y <- rnorm(n * nm, rep(means, each = n))
DATA2 <- data.frame(y, group)

# fit unrestricted robust linear model
fit2.rlm <- rlm(y ~ -1 + group, data = DATA2, method = "MM")
coef(fit2.rlm)

## example 2: increasing means
myConstraints2 <- ' group1 < group2
                    group2 < group3
                    group3 < group4 '

# compute Wald-test for hypothesis test Type A and compute the tail 
# probability based on the parametric bootstrap. We only generate 9 
# bootstrap samples in this example; in practice you may wish to 
# use a much higher number.
conTest(fit2.rlm, constraints = myConstraints2, type = "A", 
        test = "Wald", boot = "parametric", R = 9)


# or fit restricted robust linear model
fit2.con <- restriktor(fit2.rlm, constraints = myConstraints2)

conTest(fit2.con, test = "Wald")

## Not run:  
  # increasing means in matrix notation.
  Amat2 <- rbind(c(-1, 1, 0, 0),
                 c( 0,-1, 1, 0),
                 c( 0, 0,-1, 1))
  myRhs2 <- rep(0L, nrow(Amat2)) 
  myNeq2 <- 0

  conTest(fit2.con, constraints = Amat2, rhs = myRhs2, neq = myNeq2, 
          type = "A", test = "Wald", boot = "parametric", R = 9)

## End(Not run)            

## example 3:
# combination of equality and inequality constraints.
myConstraints3 <- ' group1 == group2
                    group3  < group4 '

conTest(fit2.rlm, constraints = myConstraints3, type = "B", test = "Wald", neq.alt = 1)

# fit robust resticted model and compute model-based bootstrapped 
# standard errors. We only generate 9 bootstrap samples in this 
# example; in practice you may wish to use a much higher number.
# Note that, a warning message may be thrown because the number of 
# bootstrap samples is too low.
fit3.con <- restriktor(fit2.rlm, constraints = myConstraints3, 
                       se = "boot.model.based", B = 9)
conTest(fit3.con, type = "B", test = "Wald", neq.alt = 1)


## example 4:
# restriktor can also be used to define effects using the := operator 
# and impose constraints on them. For example, is the 
# average effect (AVE) larger than zero?
# generate data
n <- 30
b0 <- 10; b1 = 0.5; b2 = 1; b3 = 1.5
X <- c(rep(c(0), n/2), rep(c(1), n/2))
set.seed(90) 
Z <- rnorm(n, 16, 5)
y <- b0 + b1*X + b2*Z + b3*X*Z + rnorm(n, 0, sd = 10) 
DATA3 = data.frame(cbind(y, X, Z))

# fit linear model with interaction
fit3.rlm <- rlm(y ~ X*Z, data = DATA3, method = "MM")

# constraint syntax
myConstraints4 <- ' AVE := X + 16.86137*X.Z; 
                    AVE > 0 '

conTest(fit3.rlm, constraints = myConstraints4, test = "Wald")

# or
fit3.con <- restriktor(fit3.rlm, constraints = ' AVE := X + 16.86137*X.Z; 
                                                 AVE > 0 ')
conTest(fit3.con, test = "Wald")

restriktor documentation built on Feb. 25, 2020, 5:08 p.m.