waldtest               package:lmtest               R Documentation

_W_a_l_d _T_e_s_t

_D_e_s_c_r_i_p_t_i_o_n:

     'waldtest' is a generic function for carrying out Wald tests.
     Methods for comparing nested linear models (specified via
     'formula's or fitted '"lm"' objects) are provided.

_U_s_a_g_e:

      waldtest(object, ...)

      ## S3 method for class 'formula':
      waldtest(object, ...)

      ## S3 method for class 'lm':
      waldtest(object, ..., vcov = NULL,
        test = c("F", "Chisq"), data = list()) 

_A_r_g_u_m_e_n_t_s:

  object: an object. For the 'formula' and 'lm' method this can either
          be a symbolic description of a linear model or a fitted
          object of class '"lm"'.

     ...: further arguments passed to methods. For the 'formula' and
          'lm' method this can be further formulas or models to be
          compared with 'object'. See below for further details.

    test: character specifying wether to compute the finite sample F
          statistic (with approximate F distribution) or the large
          sample Chi-squared statistic (with asymptotic Chi-squared
          distribution).

    vcov: a function for estimating the covariance matrix of the
          regression coefficients, e.g., 'vcovHC'. If only two models
          are compared it can also be the covariance matrix of the more
          general model.

    data: an optional data frame containing the variables in the model.
          By default the variables are taken from the environment which
          'waldtest' is called from.

_D_e_t_a_i_l_s:

     'waldtest' is intended to be a generic function for comparisons of
     models via Wald tests. Methods for comparing linear models are
     provided.

     The methods for objects of classes '"formula"' and '"lm"' both
     compare linear models: 'waldtest.formula' simply calls
     'waldtest.lm' passing on all other arguments. 'waldtest.lm' takes
     all objects in 'list(object, ...)' and tries to compute fitted
     linear models from  them using the following algorithm: 

        1.  If 'object' is a formula, fit the corresponding linear
           model.

        2.  For each two consecutive objects, 'object1' and 'object2'
           say, try to turn 'object2' into a fitted model that can be
           compared to 'object1'.

        3.  If 'object2' is numeric, the corresponding element of
           'attr(terms(object1), "term.labels")' is selected.

        4.  If 'object2' is a character, the corresponding terms are
           included into an update formula like '. ~ . - term2a -
           term2b'.

        5.  If 'object2' is a formula, then compute the fitted model
           via 'update(object1, object2)'.

     Consequently, the models in '...' can be specified as integers,
     characters (both for terms that should be eliminated from the
     previous model), update formulas or fitted '"lm"' objects.

     Subsequently, a Wald test for each two consecutive models is
     carried out. This is very similar to 'anova', but with a few
     differences. If  only one '"lm"' object is specified, it is
     compared to the trivial model (with only an intercept). The test
     can be either the finite sample F statistic or the asymptotic
     Chi-squared statistic (F = Chisq/k if k is the difference in
     degrees of freedom). The covariance matrix is always estimated on
     the more general of two subsequent models (and not only in the
     most general model overall). If 'vcov' is specified, HC and HAC
     estimators can also be plugged into 'waldtest'.

_V_a_l_u_e:

     An object of class '"anova"' which contains the residual degrees
     of freedom, the difference in degrees of freedom, Wald statistic
     (either '"F"' or '"Chisq"') and corresponding p value.

_S_e_e _A_l_s_o:

     'coeftest', 'anova', 'linear.hypothesis'

_E_x_a_m_p_l_e_s:

     ## fit two competing, non-nested models and their encompassing
     ## model for aggregate consumption, as in Greene (1993),
     ## Examples 7.11 and 7.12

     ## load data and compute lags
     data(USDistLag)
     usdl <- na.contiguous(cbind(USDistLag, lag(USDistLag, k = -1)))
     colnames(usdl) <- c("con", "gnp", "con1", "gnp1")

     ## C(t) = a0 + a1*Y(t) + a2*C(t-1) + u
     fm1 <- lm(con ~ gnp + con1, data = usdl)

     ## C(t) = b0 + b1*Y(t) + b2*Y(t-1) + v
     fm2 <- lm(con ~ gnp + gnp1, data = usdl)

     ## Encompassing model
     fm3 <- lm(con ~ gnp + con1 + gnp1, data = usdl)

     ## a simple ANOVA for fm3 vs. fm1
     waldtest(fm3, fm2)
     anova(fm3, fm2)
     ## as df = 1, the test is equivalent to the corresponding t test in
     coeftest(fm3)

     ## various equivalent specifications of the two models
     waldtest(fm3, fm2)
     waldtest(fm3, 2)
     waldtest(fm3, "con1")
     waldtest(fm3, . ~ . - con1)

     ## comparing more than one model
     ## (euqivalent to the encompassing test)
     waldtest(fm1, fm3, fm2)
     encomptest(fm1, fm2)

     ## using the asymptotic Chisq statistic
     waldtest(fm3, fm2, test = "Chisq")
     ## plugging in a HC estimator
     if(require(sandwich)) waldtest(fm3, fm2, vcov = vcovHC)  

