I am having trouble getting convergence when using -cmp- to fit an instrumental variable-type estimator of the effect of health insurance (Insuri) on choice of "health" provider (Provtypei) consulted in developing country X. My main outcome (Provtypei) is a multinomial variable with 4 categories, while the potentially endogenous covariate (Insuri) is a multinomial variable with 5 categories.
This is the model I am fitting:
Provtypei=b0 + b1Insur1i + b2Insur2i + b3Insur3i +b4Insur4i + Xb + ei
Where Provtypei = Type of provider chosen (No care (Ref.); Traditional healer; Public sector; Private sector) and Insur#i are health insurance dummies as follows:
In Country X, health insurance coverage is almost exclusively obtained either through employment. Civil servants are automatically enroled in Insur1 and a small percentage of their salary taken monthly to pay the premium. Private sector employers are mandated to offer health insurance to their employees and have the option of offering their own health insurance program, provided that coverage is equal to or more superior than Insur2. Most employers opt to offer the government-run Insur2 program. For the indigent insurance scheme (Insur3), household eligibility is determined by set criteria (assessed via household micropoverty assessment) at the district level (sub-municipality). The last category of insurance is a catch-all category which includes reimbursement (1.22%), voluntary private health insurance (0.88% of sample), employer's clinic (0.44%), health savings (0.04%), and multiple health insurance (1.74%).
Candidate instrumental variable:
Given the above information on how health insurance is generally obtained in Country X, I used type of occupation as the "instrumental variable." Note: I both have information on type of occupation of the household head and household income (using household consumption as proxy) in my dataset. In both bivariate and adjusted models, household head occupation is NOT related to Provtypei and IS related to Insuri, which means that it satisfies the criteria that an IV cannot be directly related to the outcome and must be directly related to the endogenous variable.
Problems fitting the model in Stata:
Peel (2014) mentioned Roodman's (2011) -cmp- command as one of commands to use when both the main outcome and endogenous regressor are multinomial in his recent article summarizing current Stata commands, R packages, and SAS procs on handling endogeneity for different variable types. For my model, I specified that both outcomes are multinomial using the required -indicators()- option for the command. Initially, I had fit the model controlling for individual, community, and health system variables using a macro ("$ALLVARS"). Stata informed me from the 0th iteration that the log psuedolikelihood was not concave. I removed the macro to see whether my instrument was the one causing the problem, and found that it, in fact, WAS causing the convergence problem (I may have other model covariates causing the problem, but if the instrument itself was problematic, it's a bit pointless to try and which control variables cause issues).
Burning questions:
References:
Stata output
I present below the output that I get when I try to fit the multinomial/multinomial IV model with occupation. For simplicity's sake, I did not control for other variables here. Note error code r(430), which, according to documentation is:
[P] error . . . . . . . . . . . . . . . . . . . . . . . . Return code 430
convergence not achieved;
You have estimated a maximum likelihood model, and Stata's
maximization procedure failed to converge to a solution;
see [R] maximize. Check if the model is identified.
This is the model I am fitting:
Provtypei=b0 + b1Insur1i + b2Insur2i + b3Insur3i +b4Insur4i + Xb + ei
Where Provtypei = Type of provider chosen (No care (Ref.); Traditional healer; Public sector; Private sector) and Insur#i are health insurance dummies as follows:
* Insur1i = Civil servants' insurance--4.97% of sampleInformation on insurance in Country X:
* Insur2i = Formal private sector employees' insurance--3.65% of sample
* Insur3i = Indigent health insurance--11.44% of sample
* Insur4i = Other type of health insurance-- 4.23% of sample
* "No insurance" is the reference category and the largest (~75.7% do not have health insurance)
In Country X, health insurance coverage is almost exclusively obtained either through employment. Civil servants are automatically enroled in Insur1 and a small percentage of their salary taken monthly to pay the premium. Private sector employers are mandated to offer health insurance to their employees and have the option of offering their own health insurance program, provided that coverage is equal to or more superior than Insur2. Most employers opt to offer the government-run Insur2 program. For the indigent insurance scheme (Insur3), household eligibility is determined by set criteria (assessed via household micropoverty assessment) at the district level (sub-municipality). The last category of insurance is a catch-all category which includes reimbursement (1.22%), voluntary private health insurance (0.88% of sample), employer's clinic (0.44%), health savings (0.04%), and multiple health insurance (1.74%).
Candidate instrumental variable:
Given the above information on how health insurance is generally obtained in Country X, I used type of occupation as the "instrumental variable." Note: I both have information on type of occupation of the household head and household income (using household consumption as proxy) in my dataset. In both bivariate and adjusted models, household head occupation is NOT related to Provtypei and IS related to Insuri, which means that it satisfies the criteria that an IV cannot be directly related to the outcome and must be directly related to the endogenous variable.
Problems fitting the model in Stata:
Peel (2014) mentioned Roodman's (2011) -cmp- command as one of commands to use when both the main outcome and endogenous regressor are multinomial in his recent article summarizing current Stata commands, R packages, and SAS procs on handling endogeneity for different variable types. For my model, I specified that both outcomes are multinomial using the required -indicators()- option for the command. Initially, I had fit the model controlling for individual, community, and health system variables using a macro ("$ALLVARS"). Stata informed me from the 0th iteration that the log psuedolikelihood was not concave. I removed the macro to see whether my instrument was the one causing the problem, and found that it, in fact, WAS causing the convergence problem (I may have other model covariates causing the problem, but if the instrument itself was problematic, it's a bit pointless to try and which control variables cause issues).
Burning questions:
- Since the log pseudolikelihood was not concave for all iterations, does that mean household head occupation is not an appropriate instrumental variable (IV)? I'd hate to have to find another instrumental variable, since household head occupation seemed like a perfect candidate IV based on the criteria for IVs.
- Related to 1.) above, if the log pseudolikelihood is not concave, does it mean my model would never converge (model would never be identified) if I kept the household head occupation as my IV, or does it mean I need to tinker with that variable some more (e.g. group some categories together)?
- Finally, going back to the theoretical motivation for using IVs, (i.e. omitted variable bias), if I have the occupation of the household head, is an IV approach really necessary here? Would it be appropriate for me to just stick household head occupation in the structural model (Provtypei=b0 + b1Insur1i + b2Insur2i + b3Insur3i +b3Insur4i + b4Insur4i + b5Job1i + b6Job2i +b7Job3i + Xb + ei)? If not, what would I be missing by failing to use an IV approach?
References:
- Peel, M. J. (2014). Addressing unobserved endogeneity bias in accounting studies: control and sensitivity methods by variable type. Accounting and Business Research, 44(5), 545–571. http://doi.org/10.1080/00014788.2014.926249
- Roodman, D. (2011). Fitting fully observed recursive mixed-process models with cmp. The Stata Journal, 11(2), 159–206.
Stata output
I present below the output that I get when I try to fit the multinomial/multinomial IV model with occupation. For simplicity's sake, I did not control for other variables here. Note error code r(430), which, according to documentation is:
[P] error . . . . . . . . . . . . . . . . . . . . . . . . Return code 430
convergence not achieved;
You have estimated a maximum likelihood model, and Stata's
maximization procedure failed to converge to a solution;
see [R] maximize. Check if the model is identified.
Code:
. cmp setup $cmp_out = 0 $cmp_missing = . $cmp_cont = 1 $cmp_left = 2 $cmp_right = 3 $cmp_probit = 4 $cmp_oprobit = 5 $cmp_mprobit = 6 $cmp_int = 7 $cmp_trunc = 8 (deprecated) $cmp_roprobit = 9 . cmp (deliver= i.insur ) (insur=i.jobhead2), ind($cmp_mprobit $cmp_mprobit) nolrt svy Fitting individual models as starting point for full model fit. Note: For programming reasons, these initial estimates may deviate from your specification. For exact fits of each equation alone, run cmp separately on each. (running probit on estimation sample) Survey: Probit regression Number of strata = 1 Number of obs = 5014 Number of PSUs = 1278 Population size = 4175.5248 Design df = 1277 F( 0, 1277) = . Prob > F = . ------------------------------------------------------------------------------ | Linearized _mp_cmp_y1 | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- _cons | -.7863826 .0477122 -16.48 0.000 -.8799856 -.6927796 ------------------------------------------------------------------------------ (running probit on estimation sample) Survey: Probit regression Number of strata = 1 Number of obs = 5014 Number of PSUs = 1278 Population size = 4175.5248 Design df = 1277 F( 4, 1274) = 3.94 Prob > F = 0.0035 ------------------------------------------------------------------------------ | Linearized _mp_cmp_y2 | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- insur | Insur1 | -.1617394 .1046839 -1.55 0.123 -.3671108 .0436319 Insur2 | -.0271466 .0845116 -0.32 0.748 -.1929434 .1386502 Insur3 | -.2788084 .1439938 -1.94 0.053 -.5612989 .0036821 Insur4 | -.3659131 .1150943 -3.18 0.002 -.5917079 -.1401184 | _cons | -.8058316 .0436262 -18.47 0.000 -.8914185 -.7202446 ------------------------------------------------------------------------------ (running probit on estimation sample) Survey: Probit regression Number of strata = 1 Number of obs = 5014 Number of PSUs = 1278 Population size = 4175.5248 Design df = 1277 F( 4, 1274) = 18.14 Prob > F = 0.0000 ------------------------------------------------------------------------------ | Linearized _mp_cmp_y3 | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- insur | Insur1 | .6722371 .0991759 6.78 0.000 .4776715 .8668026 Insur2 | .4135623 .0720892 5.74 0.000 .2721361 .5549885 Insur3 | .0791988 .1230386 0.64 0.520 -.1621812 .3205787 Insur4 | .1020489 .1503451 0.68 0.497 -.1929016 .3969995 | _cons | -1.258681 .0393746 -31.97 0.000 -1.335927 -1.181435 ------------------------------------------------------------------------------ (running probit on estimation sample) Survey: Probit regression Number of strata = 1 Number of obs = 5014 Number of PSUs = 1278 Population size = 4175.5248 Design df = 1277 F( 4, 1274) = 23.09 Prob > F = 0.0000 ------------------------------------------------------------------------------ | Linearized _mp_cmp_y4 | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- insur | Insur1 | .1367223 .0948118 1.44 0.150 -.0492816 .3227262 Insur2 | -.4902786 .0761394 -6.44 0.000 -.6396507 -.3409065 Insur3 | .5888061 .1060001 5.55 0.000 .3808525 .7967596 Insur4 | .4976108 .1230297 4.04 0.000 .2562483 .7389733 | _cons | -.1001873 .0440493 -2.27 0.023 -.1866043 -.0137704 ------------------------------------------------------------------------------ (running probit on estimation sample) Survey: Probit regression Number of strata = 1 Number of obs = 5014 Number of PSUs = 1278 Population size = 4175.5248 Design df = 1277 F( 0, 1277) = . Prob > F = . ------------------------------------------------------------------------------ | Linearized _mp_cmp_y5 | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- _cons | .6969803 .0299022 23.31 0.000 .6383175 .7556431 ------------------------------------------------------------------------------ (running probit on estimation sample) Survey: Probit regression Number of strata = 1 Number of obs = 5014 Number of PSUs = 1278 Population size = 4175.5248 Design df = 1277 F( 3, 1275) = 150.73 Prob > F = 0.0000 ------------------------------------------------------------------------------ | Linearized _mp_cmp_y6 | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- jobhead2 | Other | -.149534 .1183097 -1.26 0.206 -.3816368 .0825688 Gov't | 1.694554 .1275017 13.29 0.000 1.444418 1.94469 Private | .0170933 .1347828 0.13 0.899 -.2473268 .2815134 | _cons | -1.902193 .1048397 -18.14 0.000 -2.10787 -1.696516 ------------------------------------------------------------------------------ (running probit on estimation sample) Survey: Probit regression Number of strata = 1 Number of obs = 5014 Number of PSUs = 1278 Population size = 4175.5248 Design df = 1277 F( 3, 1275) = 7.68 Prob > F = 0.0000 ------------------------------------------------------------------------------ | Linearized _mp_cmp_y7 | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- jobhead2 | Other | .0755784 .0871146 0.87 0.386 -.0953251 .2464819 Gov't | -.6259403 .1757085 -3.56 0.000 -.9706493 -.2812313 Private | -.1521658 .0986393 -1.54 0.123 -.3456787 .0413471 | _cons | -1.183164 .0844739 -14.01 0.000 -1.348887 -1.017442 ------------------------------------------------------------------------------ (running probit on estimation sample) Survey: Probit regression Number of strata = 1 Number of obs = 5014 Number of PSUs = 1278 Population size = 4175.5248 Design df = 1277 F( 3, 1275) = 23.78 Prob > F = 0.0000 ------------------------------------------------------------------------------ | Linearized _mp_cmp_y8 | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- jobhead2 | Other | -.2138041 .1166065 -1.83 0.067 -.4425654 .0149573 Gov't | .1024891 .1631899 0.63 0.530 -.2176606 .4226389 Private | .436934 .1132295 3.86 0.000 .2147978 .6590702 | _cons | -1.867931 .1086269 -17.20 0.000 -2.081037 -1.654824 ------------------------------------------------------------------------------ (running probit on estimation sample) Survey: Probit regression Number of strata = 1 Number of obs = 5014 Number of PSUs = 1278 Population size = 4175.5248 Design df = 1277 F( 3, 1275) = 20.69 Prob > F = 0.0000 ------------------------------------------------------------------------------ | Linearized _mp_cmp_y9 | Coef. Std. Err. t P>|t| [95% Conf. Interval] -------------+---------------------------------------------------------------- jobhead2 | Other | -.2692171 .1168832 -2.30 0.021 -.4985214 -.0399129 Gov't | .1441257 .1428621 1.01 0.313 -.1361444 .4243958 Private | .3979316 .1140775 3.49 0.001 .1741317 .6217315 | _cons | -1.763148 .1117127 -15.78 0.000 -1.982309 -1.543988 ------------------------------------------------------------------------------ Fitting full model. Likelihoods for 5014 observations involve cumulative normal distributions above dimension 2. Using ghk2() to simulate them. Settings: Sequence type = halton Number of draws per observation = 142 Include antithetic draws = no Scramble = no Prime bases = 2 3 5 7 11 13 17 19 Each observation gets different draws, so changing the order of observations in the data set would change the results. Iteration 0: log pseudolikelihood = -8676.2236 (not concave) Iteration 1: log pseudolikelihood = -8642.3991 (not concave) Iteration 2: log pseudolikelihood = -8565.2511 (not concave) Iteration 3: log pseudolikelihood = -8517.411 (not concave) Iteration 4: log pseudolikelihood = -8498.342 (not concave) Iteration 5: log pseudolikelihood = -8491.4476 (not concave) Iteration 6: log pseudolikelihood = -8491.0405 (not concave) cannot compute an improvement -- discontinuous region encountered convergence not achieved convergence not achieved r(430);
Comment