**[R] testnl** -- Test nonlinear hypotheses after estimation

__Syntax__

**testnl** *exp* **=** *exp* [**=** *exp* ...] [**,** *options*]

**testnl** **(***exp* **=** *exp* [**=** *exp*...]**)** [**(***exp* **=** *exp* [**=** *exp* ...]**)** *...*] [**,**
*options*]

*options* Description
-------------------------------------------------------------------------
__m__**test**[**(***opt***)**] test each condition separately
__iter__**ate(***#***)** use maximum *#* of iterations to find the optimal step
size

**df(***#***)** use F distribution with *#* denominator degrees of freedom
for the reference distribution of the test statistic
__nosvy__**adjust** carry out the Wald test as W/k ~ F(k,d); for use with
**svy** estimation commands when the **df()** option is also
specified
-------------------------------------------------------------------------
**df(***#***)** and **nosvyadjust** do not appear in the dialog box.

The second syntax means that if more than one expression is specified,
each must be surrounded by parentheses.

*exp* is a possibly nonlinear expression containing
**_b[***coef***]**
**_b[***eqno***:***coef***]**
**[***eqno***]***coef*
**[***eqno***]_b[***coef***]**

*eqno* is
**#***#*
*name*

*coef* identifies a coefficient in the model. *coef* is typically a variable
name, a level indicator, an interaction indicator, or an interaction
involving continuous variables. Level indicators identify one level of a
factor variable and interaction indicators identify one combination of
levels of an interaction; see fvvarlist. *coef* may contain time-series
operators; see tsvarlist.

Distinguish between **[]**, which are to be typed, and [], which indicate
optional arguments.

__Menu__

**Statistics > Postestimation**

__Description__

**testnl** tests (linear or nonlinear) hypotheses about the estimated
parameters from the most recently fit model.

**testnl** produces Wald-type tests of smooth nonlinear (or linear)
hypotheses about the estimated parameters from the most recently fit
model. The p-values are based on the delta method, an approximation
appropriate in large samples.

**testnl** can be used with **svy** estimation results, see **[SVY] svy**
**postestimation**.

The format **(***exp1***=***exp2***=***exp3*... **)** for a simultaneous-equality hypothesis is
just a convenient shorthand for a list **(***exp1***=***exp2***)** **(***exp1***=***exp3***)**, etc.

**testnl** may also be used to test linear hypotheses. **test** is faster if you
want to test only linear hypotheses; see **[R] test**. **testnl** is the only
option for testing linear and nonlinear hypotheses simultaneously.

__Options__

**mtest**[**(***opt***)**] specifies that tests be performed for each condition
separately. *opt* specifies the method for adjusting p-values for
multiple testing. Valid values for *opt* are

__b__**onferroni** Bonferroni's method
__h__**olm** Holm's method
__s__**idak** Sidak's method
__noadj__**ust** no adjustment is to be made
Specifying **mtest** without an argument is equivalent to
**mtest(noadjust)**.

**iterate(***#***)** specifies the maximum number of iterations used to find the
optimal step size in the calculation of numerical derivatives of the
test expressions. By default, the maximum number of iterations is
100, but convergence is usually achieved after only a few iterations.
You should rarely have to use this option.

The following options are available with **testnl** but are not shown in the
dialog box:

**df(***#***)** specifies that the F distribution with *#* denominator degrees of
freedom be used for the reference distribution of the test statistic.
With survey data, *#* is the design degrees of freedom unless
**nosvyadjust** is specified.

**nosvyadjust** is for use with **svy** estimation commands when the **df()** option
is also specified; see **[SVY] svy estimation**. It specifies that the
Wald test be carried out without the default adjustment for the
design degrees of freedom. That is, the test is carried out as
W/k ~ F(k,d) rather than as (d-k+1)W/(kd) ~ F(k,d-k+1), where
k = the dimension of the test and d = the design degrees of freedom
specified in the **df()** option.

__Remarks__

In contrast to likelihood-ratio tests, different -- mathematically
equivalent -- formulations of an hypothesis may lead to different results
for a nonlinear Wald test (lack of "invariance"). For instance, the two
hypotheses

H0: b1 = b2

H0: exp(b1) = exp(b2)

are mathematically equivalent expressions but do not yield the same test
statistic and p-value. In extreme cases, under one formulation, one would
reject H0, whereas under an equivalent formulation one would not reject
H0.

Likelihood-ratio testing does satisfy representation invariance.

__Examples__

Setup
**. sysuse auto**
**. generate weightsq = weight^2**
**. regress price mpg trunk length weight weightsq foreign**

Test one nonlinear constraint
**. testnl _b[mpg] = 1/_b[weight]**

Test multiple nonlinear constraints
**. testnl (_b[mpg] = 1/_b[weight]) (_b[trunk] = 1/_b[length])**

Test multiple nonlinear constraints separately, and adjust p-values using
Holm's method
**. testnl (_b[mpg] = 1/_b[weight]) (_b[trunk] = 1/_b[length]),**
**mtest(holm)**

__Stored results__

**testnl** stores the following in **r()**:

Scalars
**r(df)** degrees of freedom
**r(df_r)** residual degrees of freedom
**r(chi2)** chi-squared
**r(p)** p-value for Wald test
**r(F)** F statistic

Macros
**r(mtmethod)** method specified in **mtest()**

Matrices
**r(G)** derivatives of R(b) with respect to b; see *Methods and*
*formulas* in **[R] testnl**
**r(R)** R(b)-q; see *Methods and formulas* in **[R] testnl**
**r(mtest)** multiple test results