help for propcnsreg postestimation

Description

This file documents postestimation tools for propcnsreg.

propcnsasl computes a bootstrap test
of the proportionality constraint imposed by propcnsreg.

The table below lists the standard postestimation commands that are also available.
Notice that margins is not part of this list, because propcnsreg does not allow
the factor variable notation. The reason is that the purpose of propcnsreg
is to estimate a model with a special (constrained) type of interaction effect while part of the
job of the factor variable notation is to keep track of interactions in your model, and the two
bite.

command description

predict predictions

Help for propcnsasl

Syntax

propcnsasl
[
,
reps(#)
nodots
mcci(#)
saving(filename [, replace double every(#)])
]

Description

propcnsasl computes a bootstrap test (Davison and Hinkley 1997, Chapter 4;
Efron and Tibshirani 1993, chapter 16) of the proportionality constraint imposed
by propcnsreg. It is similar to the tests reported propcnsreg, except that
it computes the p-values using the bootstrap. It is mainly useful when the
vce(bootstrap) option was used for estimating the standard errors of the
propcnsreg model. In that case no test of the proportionality constrained will
be reported and the test returned by propcnsasl is the natural analogue of that
test.

A propcnsreg model allows the effects of the variables in
constrained() to change as the variables in lambda() change but imposes
the constraint that the effects of all variables in constrained() change by the
same proportion. So if we have the variables father's education and mother's education
in constrained() and birth-cohort in lambda(), than propcnsreg
imposes the constraint that the effects of both parents' education change over time by
the same proportion. In other words, the effect of parental eduction may have changed
but the relative influence of the father compared to the mother has remained constant.

This bootstrap test takes the following steps:

1) It estimates an unconstrained model, that is, a model that includes all interactions
between the variables in lambda() and constrained(), and computes a
non-linear Wald test of the proportionality constraint.

2) It creates a dataset such that the null hypothesis is true but is otherwise as
similar as possible to the observed data. It samples with replacement reps samples
from this dataset.

If the logit option was not specified in the preceding propcnsreg
command, than this is done by first subtracting the predicted values of the unconstrained
model from the dependent variable and than adding the predicted values of the constrained
model. It than samples with replacement reps samples from this dataset.

If the logit option was specified in the preceding propcnsreg
command, than this was done by first computing predicted probabilities under the
constrained model, and than sample reps new dependent variables based on these
probabilities.

3) It than computes the Wald statistic in each of these samples. This gives an estimate of
the sampling distribution of the test statistic if the null hypothesis is true.

4) The estimate of the Achieved Significance Level (ASL) or p-value is the number of
replications in which the Wald statistic is larger than the observed value plus one
divided by the number of replications plus one.

A key aspect this test is that it is computed with aid of a Monte Carlo experiment and are thus
uncertain. If one were to call propcnsasl twice (and not set the seed), one
will find slightly different ASLs. propcnsasl quantifies this uncertainty by displaying a
Monte Carlo confidence interval for the ASL. If you were to call propcnsasl a 100 times you
would in 95 of these calls expect to find an ASL within this interval. If you are unhappy with
the width of this interval, than you can decrease it by specifying more replications in the
reps(). Typically, I find 19,999 a number that works well for this type of procedure; if
the "true" p-value is 0.05 than the ASL will on average be computed based on a 999 replications
where the simulated statistic is larger than the observed statistic.

An aside

The estimate of the ASL used in this program is discussed in Chapter 4 of
(Davison and Hinkley 1997) and deviates slightly from the estimate
discussed in Chapter 16 of (Efron and Tibshirani 1993) in that the
latter estimate the ASL using just the proportion of times that that test statistic is more extreme
than the one found in the real data. With a large number of replications this difference is not going
to matter, but striclty speaking the former is slightly preferable.

If we find an ASL of a, than the probability of drawing a dataset with an ASL less than or equal
to a if the null hypothesis is true should itself be a, and this should be true for all
possible values of a. So the sampling distribution of the ASL if the null hypothesis is true
should be a standard uniform distribution. In other words, if the null hypothesis is true all possible
values of a should be equally likely.

If we compute our ASL using B replications, than the number of possible values for a is limited
to only B+1 values: a value based on 0, 1, 2, ..., or B replications with a test statistic as extreme
or more than the one found in the real data. Based on the condition discussed above, each of these
possible values should have a probability of 1/(B+1) if the null hypothesis is true. This means that
if the null hypothesis is true, the probability of finding 0 replications with a test statistic as
extreme or more as the one found in the real data is 1/(B+1). Similarly, the probability of finding 1
or less replications with a test statistic at least as extreme as the one found in the real data is
2/(B+1). Generally, the probability of finding k or less replications with a test statistic as
extreme or more as the one found in the real data if the null hypothesis is true is (k+1)/(B+1).

Options

reps(#) specifies the number of replications used to compute the ASL. The default is reps(1000).

nodots suppresses display of the replication dots. By default, one dot character is displayed for
each successful replication. A red "x" is displayed if there was an error while computing the test
statistic or if it is missing.

mcci(#) specifies the confidence level, as a percentage, for the Monte Carlo confidence interval. The
default is mcci(95) or as set by set level.

saving(filename [, replace double every(#)]) creates a Stata data file containing for each replication
the Wald statistic and p-value. See: prefix_saving_option.

Example

sysuse nlsw88, clear
gen hs = grade == 12 if grade < .
gen sc = grade > 12 & grade < 16 if grade < .
gen c = grade >= 16 if grade < .
gen tenure2 = tenure^2
gen tenureXunion = tenure*union
gen tenure2Xunion = tenure2*union
gen hours2 = ( hours - 40 ) / 5
gen white = race == 1 if race < .

propcnsreg wage tenure* union white hours2 , ///
lambda(tenure tenureXunion union) ///
constrained(hs sc c) unit(c) ///
poisson irr vce(bootstrap)

propcnsasl

(click to run)

References

A.C. Davison & D.V. Hinkley (1997)
Bootstrap Methods and their Application. Cambridge: Cambridge University Press.

B. Efron & R.J. Tibshirani (1993)
An Introduction to the Bootstrap. Boca Raton: Chapman & Hall/CRC.

Help for predict

Syntax for predict

predict [type] newvar [if] [in]
[, statistic
equation(eqno[, eqno])]

statistic

mu expected value of y (the default)

latent predicted value of the latent variable

effect predicted effect of the latent variable

xb xb, linear prediction

stdp standard error of the linear prediction

score first derivative of the log likelihood with respect to the linear
predictor.

Options for predict

mu (the default) calculates the expected value of the dependent variable.

latent calculates the predicted value of the latent variable.

effect calculates the predicted effect of the latent variable.

xb calculates the linear prediction.

stdp calculates the standard error of the linear prediction.

score calculates the first derivative of the log likelihood with respect
to the linear predictions.

eqation() specifies which equation is used. The complete syntax is given in
predict. For example predict eff, xb equation(lambda) is equivalent to
predict eff, effect. An example of its use for predicting standard errors (and
confidence intervals) is given here.