hypothesisTest-methods: ~~ Methods for Function 'hypothesisTest' in Package 'gmm4' ~~

Description Usage Arguments Details Methods Examples

Description

Performs hypothesis tests on the coefficients estimated by any GMM fit method.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
## S4 method for signature 'gmmfit,missing'
hypothesisTest(object.u, object.r, R,
rhs=NULL, vcov=NULL, ...)

## S4 method for signature 'sgmmfit,missing'
hypothesisTest(object.u, object.r, R,
rhs=NULL, vcov=NULL, ...)

## S4 method for signature 'gmmfit,gmmfit'
hypothesisTest(object.u, object.r,
type=c("Wald", "LR", "LM"), sameVcov=TRUE, vcov=NULL,
firstStepWeight=FALSE, wObj=NULL, ...)

## S4 method for signature 'sgmmfit,sgmmfit'
hypothesisTest(object.u, object.r,
type=c("Wald", "LR", "LM"), sameVcov=TRUE, vcov=NULL,
firstStepWeight=FALSE, wObj=NULL, ...)

## S4 method for signature 'missing,gmmfit'
hypothesisTest(object.u, object.r, wObj=NULL)

## S4 method for signature 'missing,sgmmfit'
hypothesisTest(object.u, object.r, wObj=NULL)

Arguments

object.u

An object of class gmmfit or sgmmfit obtained using an unrestricted "gmmModels" or "sysGmmModels".

object.r

An object of class gmmfit obtained using a restricted "gmmModels" or "sysGmmModels".

R

If it is an object of class gmmfit, one of the model fit must be the restricted version of the other. The restrictions are then tested. If R is a character type, it expresses the restrictions using the coefficient names. If it numeric, it must be a matrix and the restrictions are Rθ=0 for NULL rhs, or Rθ=rhs otherwise. If missing, the gmmfit must be a fitted restricted model, in which case, a LM test is performed.

rhs

A vector of right hand sides if R is numeric

type

Should we perform a Wald, LR or LM test?

sameVcov

For the LR test, should we use the same estimate of the covariance matrix of the moment conditions? See details below.

vcov

For the Wald test, it is possible to provide the method with the covariance matrix of the coefficients.

wObj

For the LR test, it is possible to provide the gmmWeights object. In that case, the provided gmm weights object if used for the restricted and unrestricted models.

...

Other argument to pass to specTest.

firstStepWeight

Should we use the first step weighting matrix to compute the test (By default, the optimal weighting matrix is recomputed using the final vector of coefficient estimates). See details below.

Details

The LR test is the difference between the J-tests of the restricted and unrestricted models. It is therefore n\bar{g}_r'W_r\bar{g}_r - n\bar{g}_u'W_u\bar{g}_u, where \bar{g}_r and \bar{g}_u are respectively the restricted and unrestricted sample mean of the moment conditions, and W_r and W_u their respective optimal weigthing matrix. The test is therefore invalid if either of the weighting matrices does not converge to the inverse of the covariance matrix of the moment conditions. The restricted and unrestricted models must therefore be estimated by efficient GMM. This is not required for the Wald test.

Asymptotically, it makes no difference which consistent estimate of W_u or W_r is used. However, it will make a difference in finite samples.

If sameVcov=TRUE, both W_r and W_u are equal to the the optimal weighting matrix from the unrestricted model if firstStepWeight=FALSE, and they are equal to the first step weighting matrix (or the last step for iteratice GMM) of the unrestricted model if it is TRUE. For CUE, the value of firstStepWeight makes no difference since the weighting matrix and coefficients are computed simultaneously. Having W_r=W_u prevents the test to be negative in small samples.

If wObj is provided, both W_r and W_u are equal to it. Of cource, wObj must be a consistent estimate of the optimal weighting matrix for the test to be valid.

Methods

signature(object.u = "gmmfit", object.r = "gmmfit")

Used to test a restricted model against an unrestricted one.

signature(object.u = "sgmmfit", object.r = "sgmmfit")

Used to test a restricted model against an unrestricted one (for systems of equations).

signature(object.u = "missing", object.r= "gmmfit")

Used to test a restricted model using the LM test.

signature(object.u = "missing", object.r= "sgmmfit")

Used to test a restricted model using the LM test (for systems of equations).

signature(object.u = "gmmfit", object.r = "missing")

Perform a Wald test using an unrestricted model and a restriction matrix or vector.

signature(object.u = "sgmmfit", object.r = "missing")

Perform a Wald test using an unrestricted model and a restriction matrix or vector in systems of linear equations.

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
data(simData)

## Unrestricted model
model1 <- gmmModel(y~x1+x2+x3, ~x2+x3+z1+z2+z3, data=simData, vcov="MDS")
res1 <- modelFit(model1)

## Wald test 
R <- c("x1=0.5","x2=x3")
hypothesisTest(object.u=res1, R=R)

## LR tests

rmodel1 <- restModel(model1, R)
res2 <- modelFit(rmodel1)
hypothesisTest(object.u=res1, object.r=res2, type="LR")

### LR and Wald should be the same as long as the same weighting
### matrix if used for both GMM fits, for the LR and Wald as well

# Unrestricted model and save the weights
res1 <- modelFit(model1)
w <- res1@wObj
# estimate models with the same weights
res2 <- modelFit(rmodel1, weights=w)

# LR test with the same weights
hypothesisTest(res1, res2, type="LR", wObj=w)

# Wald test with vcov based on the same weights (or the bread)
hypothesisTest(object.u=res1, R=R, breadOnly=TRUE)

### Another example with real data
data(Mroz)
model <- gmmModel(log(wage)~educ+exper+I(exper^2),
                  ~exper+I(exper^2)+fatheduc+motheduc, vcov="MDS",
                  data=Mroz, centeredVcov=FALSE)
R <- c("educ=0","I(exper^2)=0")
rmodel <- restModel(model, R)

res1 <- modelFit(model)
res2 <- modelFit(rmodel, weights=res1@wObj)

hypothesisTest(object.u=res1, object.r=res2, type="LR", wObj=res1@wObj)
hypothesisTest(object.u=res1, object.r=res2, type="Wald",
vcov=vcov(res1, breadOnly=TRUE))

## LM test (identical to the other two tests as well)

hypothesisTest(object.r=res2)
# or 
hypothesisTest(object.u=res1, object.r=res2, type="LM")

## Wald with the Delta Method:
## To impose nonlinear restrictions, we need to convert
## the linear model into a nonlinear one
NLmodel <- as(model1, "nonlinearGmm")
R1 <- c("theta2=2", "theta3=theta4^2")
rNLmodel <- restModel(NLmodel, R1)
res.u <- modelFit(NLmodel)
res.r <- modelFit(rNLmodel)
hypothesisTest(object.u=res.u, R=R1)

## LM

hypothesisTest(object.r=res.r)

## LR

hypothesisTest(object.r=res.r, object.u=res.u, type="LR")

gmm4 documentation built on Dec. 6, 2019, 3:01 a.m.