help for propcnsreg

Fitting a measurement model with causal indicators

propcnsreg
depvar
[indepvars]
[if] [in]
[weight]
,
constrained(varlist_c)
lambda(varlist_l)
[
standardized
lcons
unit(varname)
mimic
logit
poisson
vce(vcetype)
robust
cluster(clustervar)
level(#)
{or | irr}
wald
maximize_options
]

by ... : may be used with propcnsreg; see help
by.

fweights, pweights, aweights, and iweights are
allowed; see help weights.

Description

propcnsreg combines information from several observed
variables into a single latent variable and estimates the effect of this latent
variable on the dependent variable. propcnsreg assumes that the observed
variables influence the latent variable. A common alternative assumption is
that the latent variable influences the observed variables. For example,
factor analysis is based in this alternative assumption. To
distinguish between these two situations some authors, following Bollen (1984)
and Bollen and Lennox (1991), call the observed variables "effect indicators"
when they are influenced by the latent variable, while they call the observed
variables "causal indicators" when they influence the latent variable.
Distinguishing between these two is important as they require very different
strategies for recovering the latent variable. In a basic (exploratory) factor
analysis, which is a model for effect indicators, one assumes that the only
thing that the observed variables have in common is the latent variable, so any
correlation between the observed variables must be due to the latent variable,
and it is this correlation that is used to recover the latent variable. In
propcnsreg, which estimates models for causal indicators, we assume that the
latent variable is a weighted sum of the observed variables (and optionally an
error term), and the weights are estimated such that they are optimal for
predicting the dependent variable.

Models for dealing with causal indicators come in roughly three
flavors: A model with "sheaf coefficients" (Heise 1972), a model with
"parametricaly weighted covariates" (Yamaguchi 2002), and a
Multiple Indicators and Multiple Causes (MIMIC) model (Hauser Goldberger 1971).
The latter two can be estimated using propcnsreg, while the former
can be estimated using sheafcoef, which is also available from SSC.

Sheaf coefficient

The sheaf coefficient is the simplest model of the three. Say we want
to explain a variable y using three observed variables x1, x2, and x3, and we
think that x1 and x2 actually influence y through a latent variable eta.
Because eta is a latent variable we need to fix the origin and the unit. The
origin can be fixed by setting eta to 0 when both x1 and x2 are 0, the
unit can be fixed by setting the standard deviation of eta equal to 1. The
model starts with simple regression model, where the b-s are the regression
coefficients and e a normally distributed error term, with a mean of 0 and
a standard deviation that is to be estimated:

(1) y = b0 + b1 x1 + b2 x2 + b3 x3 + e

and we want to turn this into, where l is the effect of the latent
variable and the c-s are the effects of the observed variables on the latent
variable:

(2) y = b0 + l eta + b3 x3 + e

(3) eta = c0 + c1 x1 + c2 x2

We can fix the origin of eta by constraining c0 to be 0, this way eta will be
0 when both x1 and x2 equal 0. This leaves c1 and c2. We want to choose
values for these parameters such that eta optimally predicts y, and the standard
deviation of eta equals 1. This means that c1 and c2 are going to be a
transformation of b1 and b2. We can start with an initial guess that c1 equals
b1 and c2 equals b2, and call the resulting latent variable eta'. This will
get us closer to where we want to be, as we now have values for all parameters:
c0=0, c1'=b1, c2'=b2, and l'=1. The value for l' is derived from the fact that
that is the only value where equations (2) and (3) lead to equation (1).
However, the standard deviation of eta' will generally not be equal to 1,
actually we can calculate the standard deviation of eta' as follows:

sd(eta') = sqrt{b1^2 var(x1) + b2^2 var(x2) + 2 b1 b2 cov(x1, x2)}

We can recover eta by dividing eta' by its standard deviation, which means that
the true values of c1 and c2 are actually b1/sd(eta') and b2/sd(eta'). If we
divide eta' by its standard deviation, then we must multiply l' by that same
number to ensure that equations (2) and (3) continue to lead to equation (1).
As a consequence l will equal sd(eta').

Notice that the effect of the latent variable will thus always be positive.
This is necesary because we have only specified the origin and unit of the
latent variable but not its direction. Say, x1 is the proportion of vegetables
in a person's diet and x2 the number minutes spent a day excercizing. If we
did not fix the effect of the latent variable to be positive, then there would
always be two sets of estimates that would represent exactly the same
information. If the c's are positive then the latent variable represent the
healtyness of someone's lifestyle, and if the c's are negative then the latent
variable represent the unhealtyness of that person's lifestyle. Saying that
the healthyness of someone's lifestyle has a positive effect is exactly the
same as saying that the unhealthyness of someone's lifestyle has a negative
effect. Stata can't choose between these two, since both statements are the
same, so we need to choose for it. We can do so by either fixing the
direction of the latent variable or fixing the direction of the effect. The
default is to fix the direction of the effect, but we can also specify one
key variable and fix the direction of the latent variable relative to this
key variable either by stating that the latent variable is high when the key
variable is high and low when the key variable is low, or exactly the
opposite.

This illustrates how the following set assumptions can be used to recover
the latent variable and its effect of the dependent variable:

- the latent variable is a weighted sum of the observed variables such that the
latent variable optimally predicts the dependent variable.

- a constraint that fixes the origin of the latent variable.

- a constraint that fixes the unit of the latent variable.

- a constraint that either fixes the direction of the latent variable or the
direction of the effect of the latent variable.

However, a sheaf coefficient just reorders the information you obtained from
a regular regression. It is just a different way of looking at the regression
results, which can be useful but it does not impose a testable constraint.

One possible application of the sheaf coefficient is the comparison of effect
sizes of different blocks of variables. For example, we may have a block of
variables representing the family situation of the respondent and another
block of variables representing characteristics of the work situation and we
wonder whether the work situation or the family situation is more important
for determining a certain outcome variable. In that case we would estimate
a model with two latent variables, one for the family situation and one for
the work situation, and since both latent variables are standardized their
effects will be comparable.

Parametricaly weighted covariates

The model with parametricaly weighted covariates builds on the model with
sheaf coefficients, but adds a testable constraint by assuming that the
effect of the latent variable changes over another observed variable. This
means that instead of equation (2) we will be estimating equation (4) where
the effect of eta changes over x3:

(4) y = b0 + (l0 + l1 x3) eta + b3 x3 + e

If we replace eta with equation (3), and fix the unit of eta by constraining c0
to be zero, we get:

y = b0 + (l0 + l1 x3) (c1 x1 + c2 x2) + b3 x3 + e

= b0 + (l0 + l1 x3) c1 x1 + (l0 + l1 x3) c2 x2 + b3 x3 + e

This means the effect of x1 (through eta) on y equals (l0 + l1 x3) c1, and that the
effect of x2 (through eta) on y equals (l0 + l1 x3) c2. This implies the following
constraint: for every value of x3, the effect of x1 relative to x2 will always be
{(l0 + l1 x3) c1} / {(l0 + l1 x3) c2} = c1/c2, which is a
constant. In other words, the model with parametricaly weighted covariates imposes
a proportionality constraint. A test of this constraint is reported at the bottom
of the output from propcnsreg (when the mimic option is not specified).

This proportionality constraint can also be of substantive interest without
referring to a latent variable. Consider a
model where one wants to explain the respondent's education (ed) with the
eduction of the father (fed) and the mother (med), and that one is
interested in testing whether the relative contribution of the mother's
education has increased over time. propcnsreg will estimate this model
under the null hypothesis that the relative contributions of fed and med
have remained constant overtime. Notice that the effects of fed and med
are allowed to change over time, but the effects of fed and med are
constrained to change by the same proportion over time. So if the effect of
fed drops by 10% over a decade, than so does the effect of med.

propcnsreg will allow you to identify the unit of the latent
variable in one of the following three ways:

- By setting its standard deviation of the latent variable to 1, effectively
standardizing the latent variable. This is the default parametrization , but can also
be explicitly requesting by specifying the standardized option. One can
specify one key variable by prefixing that variable in the constrained
option with either a + or a -. The + means that the latent
variable is high when the key variable is high and the latent variable is low
when the key variable is low. The - means exactly the opposite. If no
key variable is specified then l0 is constrained to be postive.

- By setting the coefficient l0 to 1, which means that c1 and c2 represent the
indirect effects of x1 and x2 through the latent variable on y when x3 equals 0.

- By setting either the coefficient c1 or c2 to 1, which means that the unit of the latent
variable will equal the unit of either x1 or x2 respectively. This can be done by
specifying the unit(varname) option.

MIMIC

The MIMIC model builds on the model with parametricaly weighted covariates by
assuming that the latent variable is measured with error. This means that the
following model is estimated:

(5) y = b0 + (l0 + l1 x3) eta + b3 x3 + e_y

(6) eta = c0 + c1 x1 + c2 x2 + e_eta

Where e_y and e_eta are independent normally distributed error terms with means zero
and standard deviations that need to be estimated. By replacing eta in equation (5)
with equation (6) one can see that the error term of this model is:

e_y + (l0 + l1 x3) e_eta

This combined error term will also be normally distributed, as the sum of two
independent normally distributed variables is itself also normally distributed, with
a mean zero and the following standard deviation:

sqrt{var(e_y) + (l0 + l1 x3)^2 var(e_eta)}

So the empirical information that is used to separate the standard deviation of e_y
from the standard deviation of e_eta is the changes in the residual variance over x3.
So the data will only contain rather indirect information that can be used for
estimating this model, and the model may thus not always converge. However, if the
model is correct it will enable one to control for measurement error in the latent
variable.

There is an important downside to this model, and that is that heteroscedasticity,
and in particular changes in the variance of e_y over x3, could have a distorting
influence on the parameter estimates of l0 and l1. Consider again the example where
one wants to explain the respondent's education with the education of the father and
the mother, but now assume that we are interested in how the effect of the latent
variable changes over time. In this case we have good reason to suspect that the
variance of e_y will also change over time: Education consists of a discrete number
of categories, and in early cohorts most of the respondents tend to cluster in the
lowest categories. Over time the average level of education tends to increase, which
means that the respondents tend to cluster less in the lowest category, and have
more room to differ from one another. As a consequence the residual variance is likely
to have increased over time. Normally this heteroscedasticity would not be an issue
of great concern, but in a MIMIC model this heteroscedasticity is incorrectly
interpreted as indicating that there is measurement error in the latent variable
representing parental education. Moreover, this "information" on the measurement error
is used to "refine" the estimates of l0 and l1. So, this would be an example where the
MIMIC model would not be appropriate.

Options

Model

constrained(varlist_c) specifies the variables can be thought of as being
measurements of the same latent variable. The effects of these variables are to be
constrained to change by the same proportion as the variables specified in
lambda() change.

If the standardized option is specified one can
identify one variable as a key variable that identifies the direction of the latent
variable, either in the same direction as the key variable (+) or in the
opposite direction (-). If the standardized option is specified but no
key variable is specified, then the constant of the lambda equation will be
constrained to be positive.

lambda(varlist_l) specifies the variables along which the effects of the
latent variable changes.

mimic specifies that a MIMIC model is to be estimated.

logit specifies that the dependent variable is binary and that the influence of
the latent and control variables on the probability is modeled through a logistic
regression model.

poisson specifies that the dependent variable is a count and that the influence of
the latent and control variables on the rate is modeled through a poisson regression
model.

Identification

standardized specified that the unit of the latent variable is identified by
constraining the standardard deviation of the latent variable to be equal to 1. This
is the default parametrization.

lcons specifies that the parameters of the variables specified in the
option constrained() measure the indirect effect of these variables through the
latent variable on the dependent variable when all variables specified in the option
lamda() are zero.

unit(varname) specifies that the scale of the latent variable is
indentified by constraining the unit of the latent variable to be equal to the unit
of varname. The variable varname must be specified in varlist_c.

SE/robust/reporting

vce(vcetype) specifies the type of standard error
reported, which includes types that are derived from asymptotic theory, that are robust
to some kinds of misspecification, that allow for intragroup correlation, and that use
bootstrap or jackknife methods; see vce_option.

robust specifies that the Huber/White/sandwich estimator
of variance is to be used in place of the traditional calculation; see
[U] 23.14 Obtaining robust variance estimates. robust
combined with cluster() allows observations which are not
independent within cluster (although they must be independent between
clusters).

cluster(clustervar) specifies that the observations
are independent across groups (clusters) but not necessarily within groups.
clustervar specifies to which group each observation belongs; e.g.,
cluster(personid) in data with repeated observations on individuals. See
[U] 23.14 Obtaining robust variance estimates. Specifying cluster()
implies robust.

level(#) specifies the confidence level, in percent,
for the confidence intervals of the coefficients; see help level.

or specifies that odds ratios are to be displayed. If the lcons option
is specified than the parameters in all three equations (unconstrained, lambda, and
unconstrained) will be exponentiated. In all other cases only the parameters in the
first two equations (unconstrained, and lambda) will be exponentiated. This option
is only allowed in combination with the logit option.

irr specifies that incidence rate ratios are to be displayed. If the
lcons option is specified than the parameters in all three equations
(unconstrained, lambda, and unconstrained) will be exponentiated. In all other
cases only the parameters in the first two equations (unconstrained, and lambda)
will be exponentiated. This option is only allowed in combination with the
poisson option.

wald specifies that the test of the proportionality constrained is to be
a Wald test instead of a likelihood ratio test. This is the default when robust
standard errors have been used. This option is not allowed in combination with
the mimic option.

maximize_options

difficult,
technique(algorithm_spec),
iterate(#),
trace,
gradient,
showstep,
hessian,
shownrtolerance,
tolerance(#),
ltolerance(#),
gtolerance(#),
nrtolerance(#),
nonrtolerance(#);
see maximize. These options are seldom used.

Example

Example illustrating the use of the poisson option to model a
non-negative but not necessarily a count dependent variable. For its
advantages see: (Cox et al. 2007; Nichols, 2010; Gould 2011). However,
in a simulation the point estimates seem to be
unbiased but the robust standard errors don't seem to perform as well.
So I use bootstrap standard errors instead of robust standard errors.
This example also illustrates the use of predict to help with
interpreting the model:

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 vce(bootstrap) irr

predict double effect, effect
predict double se_effect, stdp eq(lambda)
gen double lb = effect - invnormal(.975)*se_effect
gen double ub = effect + invnormal(.975)*se_effect

replace effect = exp(effect)
replace lb = exp(lb)
replace ub = exp(ub)

sort tenure

twoway rarea lb ub tenure if union == 1 || /*
*/ rarea lb ub tenure if union== 0, /*
*/ astyle(ci ci) || /*
*/ line effect tenure if union == 1 || /*
*/ line effect tenure if union == 0, /*
*/ yline(1) clpattern(longdash shortdash) /*
*/ legend(label(1 "95% conf. int.") /*
*/ label(2 "95% conf. int.") /*
*/ label(3 "union") /*
*/ label(4 "non-union") /*
*/ order(3 4 1 2)) /*
*/ ytitle("effect of education on wage")

(click to run)

An example for a binary dependent variable. Note that in this
case both the parameters in the unconstrained and the lambda
equation are both odds ratios.

sysuse nlsw88, clear
gen byte high = occupation < 3 if !missing(occupation)
gen byte white = race == 1 if !missing(race)

gen byte hs = grade == 12 if !missing(grade)
gen byte sc = grade > 12 & grade < 16 if !missing(grade)
gen byte c = grade >= 16 if !missing(grade)

propcnsreg high white ttl_exp married never_married age, ///
lambda(ttl_exp white) ///
constrained(hs sc c) unit(c) logit or

(click to run)

Author

Maarten L. Buis, Wissenschaftszentrum Berlin für Sozialforschung (WZB)
maarten.buis@wzb.eu

References

Bollen, Kenneth A. 1984. "Multiple Indicators: Internal Consistency or
No Necessary Relationship" Quality and Quantity 18(4): 377-385.

Bollen, Kenneth A. and Richard Lennox. 1991. "Conventional Wisdom
on Measurement: A Structural Equation Perspective"
Psychological Bulletin 110(2): 305-314.

Cox, Nicholas J., Jeff Warburton, Alona Armstrong and Victoria
J. Holliday (2007) "Fitting concentration and load rating curves with
generalized linear models" Earth Surface Processes and Landforms, 33(1):25--39.

Gould, William. (2011) "Use poisson rather than regress; tell a friend"
Not Elsewhere Classified, the official Stata blog.
http://blog.stata.com/2011/08/22/use-poisson-rather-than-regress-tell-a-friend/

Hauser, Robert M. and Arthur S. Goldberger. 1971.
"The Treatment of Unobservable Variables in Path Analysis."
Sociological Methodology 3: 81-117.

Heise, David R. 1972. "Employing nominal variables, induced
variables, and block variables in path analysis."
Sociological Methods & Research 1(2): 147-173.

Nichols, Austin (2010) "Regression for nonnegative skewed dependent variables"
Stata Conference, 2010.
http://www.stata.com/meeting/boston10/boston10_nichols.pdf

Yamaguchi, Kazuo. 2002. "Regression models with parametrically
weighted explanatory variables." Sociological Methodology
32: 219-245.

Suggested citation if using propcnsreg in published work

propcnsreg is not an official Stata command. It is a free contribution
to the research community, like a paper. Please cite it as such.

Buis, Maarten L. 2007. "PROPCNSREG: Stata program fitting a linear regression
with a proportionality constraint by maximum likelihood"
http://ideas.repec.org/c/boc/bocode/s456858.html

Also see:

propcnsreg_postestimation, factor, sheafcoef (if installed)