# propcnsreg: Stata module fitting a measurement model with causal indicators

### Author: Maarten L. Buis

propcnsreg combines information from several observed variables into a single latent variable and estimates the effect of this latent variable on the depedent variable. These observed variables are so-called causal indicators (Bollen and Lennox, Psychological Bulletin 1991), that is, they influence the latent variable. It forms an alternative to factor analysis, which assumes that the latent variable influences the observed variables.

This package can be installed by typing in Stata: ssc install propcnsreg

### Examples

Regression with parametrically weighted covariates using the default identifying constraints: The latent variable equals 0 when all indicators are 0, and the standard deviation of the latent variable equals 1)

```
. sysuse nlsw88, clear
(NLSW, 1988 extract)

(2 missing values generated)

(2 missing values generated)

(2 missing values generated)

.
. gen lnwage = ln(wage)

.
. gen tenure2 = tenure^2
(15 missing values generated)

.
. gen white = race == 1 if race < .

.
. propcnsreg lnwage white tenure tenure2 union, ///
>     lambda(tenure white)                      ///
>     constrained(hs sc c)

Iteration 0:   log likelihood = -1068.1472
Iteration 1:   log likelihood = -1065.1181
Iteration 2:   log likelihood = -1063.6147
Iteration 3:   log likelihood = -1063.5977
Iteration 4:   log likelihood = -1063.5976

Number of obs   =       1866
LR chi2(10)     =     195.30
Log likelihood = -1063.5976                       Prob > chi2     =     0.0000

Constraint: sd of latent variables = 1
------------------------------------------------------------------------------
lnwage |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
unconstrai~d |
white |   .1904098   .0360015     5.29   0.000     .1198482    .2609715
tenure |    .054622   .0062901     8.68   0.000     .0422936    .0669505
tenure2 |  -.0012782   .0003087    -4.14   0.000    -.0018832   -.0006732
union |   .1571225   .0234278     6.71   0.000     .1112049    .2030401
_cons |   1.186804   .0405603    29.26   0.000     1.107307    1.266301
-------------+----------------------------------------------------------------
constrained  |
hs |   .7604651   .1479557     5.14   0.000     .4704772    1.050453
sc |    1.92175   .1469289    13.08   0.000     1.633775    2.209726
c |   2.836071   .0863589    32.84   0.000     2.666811    3.005332
-------------+----------------------------------------------------------------
lambda       |
tenure |  -.0043634   .0018805    -2.32   0.020    -.0080492   -.0006777
white |  -.0609361   .0232006    -2.63   0.009    -.1064085   -.0154638
_cons |   .2706179   .0239255    11.31   0.000     .2237248     .317511
-------------+----------------------------------------------------------------
sigma        |
_cons |   .4278637   .0070038    61.09   0.000     .4141365    .4415909
------------------------------------------------------------------------------
LR test vs. unconstrained model: chi2(4) =      3.49   Prob > chi2 =     0.479

[do-file]```

Regression with parametrically weighted covariates using an alternative identifying constraints: The latent variable equals 0 when all indicators are 0, and the latent variable equals 1 when c equals 1, that is, the remaining educational categories are scaled relative to less than high school(all indicators are 0) and college (c is 1)

```
. sysuse nlsw88, clear
(NLSW, 1988 extract)

(2 missing values generated)

(2 missing values generated)

(2 missing values generated)

.
. gen lnwage = ln(wage)

.
. gen tenure2 = tenure^2
(15 missing values generated)

.
. gen white = race == 1 if race < .

.
. propcnsreg lnwage white tenure tenure2 union, ///
>     lambda(tenure white)                      ///
>     constrained(hs sc c) unit(c)

Iteration 0:   log likelihood = -1068.1472
Iteration 1:   log likelihood = -1063.7472
Iteration 2:   log likelihood = -1063.5978
Iteration 3:   log likelihood = -1063.5976
Iteration 4:   log likelihood = -1063.5976

Number of obs   =       1866
LR chi2(10)     =     195.30
Log likelihood = -1063.5976                       Prob > chi2     =     0.0000

Constraint: [constrained]c = 1
------------------------------------------------------------------------------
lnwage |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
unconstrai~d |
white |   .1904094   .0360015     5.29   0.000     .1198477    .2609711
tenure |    .054622   .0062901     8.68   0.000     .0422936    .0669504
tenure2 |  -.0012782   .0003087    -4.14   0.000    -.0018832   -.0006732
union |   .1571225   .0234278     6.71   0.000     .1112049    .2030401
_cons |   1.186805   .0405603    29.26   0.000     1.107308    1.266301
-------------+----------------------------------------------------------------
constrained  |
hs |   .2681403   .0448295     5.98   0.000     .1802761    .3560045
sc |   .6776101   .0497143    13.63   0.000     .5801719    .7750483
c |          1          .        .       .            .           .
-------------+----------------------------------------------------------------
lambda       |
tenure |  -.0123749   .0053077    -2.33   0.020    -.0227778   -.0019721
white |  -.1728182   .0649983    -2.66   0.008    -.3002125   -.0454239
_cons |   .7674904   .0675006    11.37   0.000     .6351915    .8997892
-------------+----------------------------------------------------------------
ln_sigma     |
_cons |  -.8489505   .0163693   -51.86   0.000    -.8810337   -.8168673
------------------------------------------------------------------------------
LR test vs. unconstrained model: chi2(4) =      3.49   Prob > chi2 =     0.479

[do-file]```

A MIMIC model

```
. sysuse nlsw88, clear
(NLSW, 1988 extract)

(2 missing values generated)

(2 missing values generated)

(2 missing values generated)

.
. gen lnwage = ln(wage)

.
. gen tenure2 = tenure^2
(15 missing values generated)

.
. gen white = race == 1 if race < .

.
. propcnsreg lnwage white tenure tenure2 union, ///
>     lambda(tenure white)                      ///
>     constrained(hs sc c) mimic

Iteration 0:   log likelihood = -1970.1958  (not concave)
Iteration 1:   log likelihood = -1468.3636  (not concave)
Iteration 2:   log likelihood = -1152.4663
Iteration 3:   log likelihood = -1063.4018
Iteration 4:   log likelihood = -1057.0959
Iteration 5:   log likelihood = -1052.3576  (not concave)
Iteration 6:   log likelihood = -1052.1687
Iteration 7:   log likelihood =  -1051.858
Iteration 8:   log likelihood = -1051.5414
Iteration 9:   log likelihood = -1051.4807
Iteration 10:  log likelihood = -1051.4742
Iteration 11:  log likelihood = -1051.4742

Number of obs   =       1866
LR chi2(10)     =     209.49
Log likelihood = -1051.4742                       Prob > chi2     =     0.0000

Constraint: sd of latent variables = 1
------------------------------------------------------------------------------
lnwage |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
unconstrai~d |
white |   .1353823   .0284992     4.75   0.000      .079525    .1912397
tenure |   .0559132   .0060458     9.25   0.000     .0440636    .0677627
tenure2 |  -.0011921   .0002843    -4.19   0.000    -.0017493   -.0006349
union |   .1543966   .0229632     6.72   0.000     .1093896    .1994036
_cons |   1.200793   .0410802    29.23   0.000     1.120277    1.281309
-------------+----------------------------------------------------------------
constrained  |
hs |   .8228831   .1509213     5.45   0.000     .5270828    1.118683
sc |    1.98763   .1466134    13.56   0.000     1.700273    2.274987
c |   2.860568   .0863068    33.14   0.000      2.69141    3.029726
-------------+----------------------------------------------------------------
lambda       |
tenure |  -.0060213   .0017467    -3.45   0.001    -.0094448   -.0025978
white |  -.0145962   .0135443    -1.08   0.281    -.0411426    .0119502
_cons |   .2485132   .0214567    11.58   0.000     .2064589    .2905674
-------------+----------------------------------------------------------------
sigma        |
_cons |   .2985457   .0430397     6.94   0.000     .2141895    .3829019
-------------+----------------------------------------------------------------
sigma_latent |
_cons |   .3785701   .0392528     9.64   0.000      .301636    .4555042
------------------------------------------------------------------------------

[do-file]```