The following example shows the output in Mplus, as well as how to reproduce
it using Stata. For this example we will use the same dataset we used for our
poisson
regression data analysis example. You can download the dataset for Mplus here: poissonreg.dat.
The model we specify for this example includes four variables, three predictors
and one outcome. We use student’s gender (**male**), the student’s score on a
standardized test in math (**math**), and the student’s score on a standardized
test in language arts (**langarts**) to predict the number of days a student was absent from
school during a single school year (**daysabs**). The Mplus input for this
model is:

DATA: File is "D:datapoissonreg.dat" ; VARIABLE: Names are id school male math langarts daysatt daysabs; usevariables are langarts math daysabs male; count is daysabs; MODEL: daysabs on male math langarts; OUTPUT: stand

Below are the results from the model described above. Note that Mplus produces two types of standardized coefficients “Std” which are in the fifth column of the output shown below, and “StdXY” which are in the sixth column. The Std column contains coefficients standardized using the variance of continuous latent variables. Because all of the variables in this model are manifest (i.e. observed) the coefficients in this column are identical to those in the column of regular coefficients (i.e. the "Estimates" column). The StdXY column contains the coefficients standardized using the variance of the background and/or outcome variables, in addition to the variance of continuous latent variables.

MODEL RESULTS Estimates S.E. Est./S.E. Std StdYX DAYSABS ON MALE -0.401 0.139 -2.877 -0.401 -0.652 MATH -0.004 0.008 -0.462 -0.004 -0.205 LANGARTS -0.012 0.005 -2.299 -0.012 -0.709 Intercepts DAYSABS 2.688 0.218 12.340 2.688 8.750

Now, from the latent variable point of view, there is a latent variable behind the observed count variable and this latent variable is the true outcome variable. In other words, the poisson regression is simply modeling the latent variable (y*) using the linear relationship:

y* = beta_0 + beta_1* male + beta_2*math + beta_3*langarts

Notice that there is no random residual term here. Therefore, the variance of y* is the variance of the linear prediction. In other words, V(y*) = V(xb). This is how Mplus calculates the variance of the "latent" outcome variable.

Now, we will replicate these coefficients in Stata. The first bold line below opens the dataset, and the second runs the Poisson regression model in Stata. Note that the unstandardized coefficients from Stata and Mplus are within rounding error of each other, this should be the case, since we are running the same model.

use https://stats.idre.ucla.edu/stat/stata/dae/poissonreg, clear poisson daysabs male math langartsIteration 0: log likelihood = -1547.9709 Iteration 1: log likelihood = -1547.9709 Poisson regression Number of obs = 316 LR chi2(3) = 175.27 Prob > chi2 = 0.0000 Log likelihood = -1547.9709 Pseudo R2 = 0.0536 ------------------------------------------------------------------------------ daysabs | Coef. Std. Err. z P>|z| [95% Conf. Interval] -------------+---------------------------------------------------------------- male | -.4009209 .0484122 -8.28 0.000 -.495807 -.3060348 math | -.0035232 .0018213 -1.93 0.053 -.007093 .0000466 langarts | -.0121521 .0018348 -6.62 0.000 -.0157483 -.0085559 _cons | 2.687666 .0726512 36.99 0.000 2.545272 2.83006 ------------------------------------------------------------------------------

In order to calculate a standardized coefficient we will need three pieces of information, the standard deviation of y* (the linear prediction), the standard deviation of the predictor variable for which we want to create a standardized coefficient, and the unstandardized coefficient for that predictor variable.

Let’s say that we need to calculate the standardized coefficient for **
male**. Here is what we need to do. First of all, calculate the standard
deviation of y*, which is the linear prediction. This is stored in a local
macro variable called "ystd". Secondly, we need to
obtain the standard deviation for the linear predictor **male**. We
summarize the predictor variable,
in this case **male**, and use the results that Stata saves after a command is run to place
it’s standard deviation into a local macro called “xstd.” Since Stata
automatically stores the coefficients from the last regression we ran, we can
access the coefficient for **male** by typing **_b[male]**. Now we are
ready to actually calculate the standardized coefficients. The second to
last command below creates a new local macro called "male_std" and sets it equal
to the standardized coefficient for **male** (i.e.** _b[male]*`xstd’/`ystd’**).
The last command shown below tells Stata to display the contents of "male_std"
which is the standardized coefficient for the relationship between **male**
and log of the predicted count of **daysabs**. This value is approximately
-0.652, looking at the Mplus output above, we see that the standardized
coefficient (StdYX) for **male** is also estimated to be -0.652 by Mplus.

predict xb, xb sum xbVariable | Obs Mean Std. Dev. Min Max -------------+-------------------------------------------------------- xb | 316 1.712138 .3076592 .8868849 2.671879local ystd=r(sd) sum maleVariable | Obs Mean Std. Dev. Min Max -------------+-------------------------------------------------------- male | 316 .4873418 .5006325 0 1local xstd = r(sd)local male_std = _b[male]*`xstd'/`ystd' display "`male_std'"-.6523909465586064

The commands and output below show the same process for the other two predictor variables in the model.

sum mathVariable | Obs Mean Std. Dev. Min Max -------------+-------------------------------------------------------- math | 316 48.75101 17.88076 1.007114 98.99289local xstd = r(sd) local math_std = _b[math]*`xstd'/`ystd' display "`math_std'"-.2047650322590808sum langartsVariable | Obs Mean Std. Dev. Min Max -------------+-------------------------------------------------------- langarts | 316 50.06379 17.93921 1.007114 98.99289local xstd = r(sd) local langarts_std = _b[langarts]*`xstd'/`ystd' display "`langarts_std'"-.7085747822838703

## Cautions, Flies in the Ointment

- Because the variance of the linear prediction (xb) is used instead of the actual variance of y, your standardized coefficients will be heavily influenced by your model, not just through regression coefficients themselves (which are always based on the model) but through the standardization process as well. This makes the interpretation of these standardized coefficients not as straightforward as the interpretation of standardized coefficients from a linear regression.

## See Also

- Mplus User’s Guide online (See page 503 of the Version 4.1 User’s Guide. Note: this is a free download.)
- How does Mplus calculate standardized coefficients
based on a logistic regression?