» Home » Resources & support » FAQs » Predicted probabilities after svylogit, svyprobt, svymlog, svyolog, or svyoprob

Note: This FAQ is for users of Stata 5, an older version of Stata.
It is not relevant for more recent versions.

Title | Stata 5: Predicted probabilities after svylogit, svyprobt, svymlog, svyolog, or svyoprob | |

Author | William Sribney, StataCorp |

The **predict** command does work after these **svy** commands;
however, it does NOT give predicted probabilities. After the **svy**
estimation commands, **predict** just computes the index **X*b**.
(This is because the **svy** commands are implemented as ado-files, and
**predict** is just performing according to its default behavior.)

Note: The **svymlog**, **svyolog**, and **svyoprob** commands are
not shipped with Stata 5.0, but they are available from the
current ado-file updates.

The easiest way to get predicted probabilities for **svylogit**,
**svyprobt**, or **svymlog** is to estimate the model again using the
analogous non-**svy** command (i.e., **logit**, **probit**,
**mlogit**, **ologit**, or **oprobit**) with **aweight**s and
then use **predict** to get predicted probabilities.

Example:

Suppose that you estimated

. svylogit y x1 x2 x3 [pw=weight], strata(county) psu(block)

To get predict probabilities, run

. logit y x1 x2 x3 [aw=weight] if county~=. & block~=. . predict prob

Note that if there are missing values of the strata and/or psu identifiers,
it is important to omit them from the **logit** estimation so that the
estimation sample is the same.

As a check, you should confirm that you get the same number of observations
and exactly the same point estimates from the non-**svy** estimation as
from the **svy** estimation.

Should you wish to use **predict** after **svymlog** to compute
**X*b**, see the note at the end of this file.

If you want predicted probabilities after **svyolog** and
**svyoprob**, you can use the **ologitp** and **oprobitp** commands
immediately afterwards. There is no need to use **ologit** or
**oprobit**.

Example:

. svyolog y x1 x2 x3 . ologitp p1 p2 p3 p4

Note that you must have the updated versions of **ologitp** and
**oprobitp** for them to work after the **svy** commands. You will
have the updated versions if you installed the current
ado-file updates (or any update from January 1998 or later).

If you do use **predict** after **svymlog** to compute the indexes
**X*b_i** for the various outcomes, note that **predict** is more
limited in its syntax after **svymlog** than after **mlogit**.

If your outcome variable has value labels, then, after **mlogit**, you
can use any of the following syntaxes:

. predict p1, outcome(#1) . predict p1, outcome(low) . predict p1, outcome(1)

The first syntax refers to equation #1. The second refers to the label of the outcome corresponding to the equation. The third refers to the value of the outcome.

After **svymlog**, only the first and second syntaxes can be used if you
have value labels for the outcome variable. If the outcome variable does
not have value labels, only the first and third syntaxes can be used.

Also note that **predict** after **svymlog** CANNOT be used to compute
the index **X*b** for the base category (i.e., the outcome omitted from
the output table).

**predict** is much smarter after **mlogit** than after **svymlog**
because **predict** has special code to handle **mlogit**. Since
**svymlog** is a new ado-file command, **predict** just works
according to its default behavior. This will be changed in the next release
of Stata.

Example:

. svymlog y x [pw=weight]Survey multinomial logistic regression pweight: weight Number of obs = 138 Strata: county Number of strata = 4 PSU: block Number of PSUs = 31 Population size = 418420 F( 2, 26) = 5.88 Prob > F = 0.0078 ------------------------------------------------------------------------------ y | Coef. Std. Err. t P>|t| [95% Conf. Interval] ---------+-------------------------------------------------------------------- med | x | .0693467 .0411836 1.684 0.104 -.015155 .1538484 _cons | -1.999809 .8354973 -2.394 0.024 -3.714108 -.2855103 ---------+-------------------------------------------------------------------- high | x | .1245421 .0360991 3.450 0.002 .0504728 .1986114 _cons | -3.043893 .7973102 -3.818 0.001 -4.679838 -1.407947 ------------------------------------------------------------------------------ (Outcome y==low is the comparison group). predict xb1, outcome(low)[cannot predict base category] equation low not found r(303);. predict xb2, outcome(2)[does not understand VALUES] equation 2 not found r(303);. predict xb2, outcome(med)[this works; it understands LABELS]. drop xb2 . predict xb2, outcome(#2)[this works; it understands equation #]. mlogit y x [aw=weight](sum of wgt is 4.1842e+005) Iteration 0: Log Likelihood = -145.7142 Iteration 1: Log Likelihood =-140.68303 Iteration 2: Log Likelihood =-140.59693 Iteration 3: Log Likelihood =-140.59682 Multinomial regression Number of obs = 137 chi2(2) = 10.23 Prob > chi2 = 0.0060 Log Likelihood = -140.59682 Pseudo R2 = 0.0351 ------------------------------------------------------------------------------ y | Coef. Std. Err. z P>|z| [95% Conf. Interval] ---------+-------------------------------------------------------------------- med | x | .0693467 .0437481 1.585 0.113 -.0163981 .1550915 _cons | -1.999809 .8845866 -2.261 0.024 -3.733567 -.2660512 ---------+-------------------------------------------------------------------- high | x | .1245421 .041514 3.000 0.003 .0431762 .205908 _cons | -3.043893 .8684863 -3.505 0.000 -4.746095 -1.341691 ------------------------------------------------------------------------------ (Outcome y==low is the comparison group). predict xb1, outcome(low)[can predict for base category]. drop xb2 . predict xb2, outcome(2)[VALUE works]. drop xb2 . predict xb2, outcome(med)[LABEL works]. drop xb2 . predict xb2, outcome(#2)[equation # works]