Page 3 of 3
Re: runmlwin with imputed data
Posted: Fri Oct 27, 2017 1:58 pm
by fonnyyyy
This is what I further tried to do:
- update the runmlwin-procedure: does not make any difference.
- surpressing the errors on convergence by using the
errorok-option and storing the results with the
mi saving. This seemed to work but at a giving moment it errored again saying
no imputations to compute between-imputation variance no results will be saved r(2000);
I can provide you with my latest code:
Code: Select all
xi: mi estimate, esampvaryok cmdok post: runmlwin move_a /*
*/ cons /*
*/ age_child age_child2 gndr_child i.edu3_child i.mstat_child i.employ_child distance_child_z siblings /*
*/ i.recent_child transfer_child receive_child /*
*/ help_child_hh i.help_child_int2 /*
*/ i.mstat i.edu3 extrahh hinc parent_move iadlmean urban owner/*
*/ formal_care /*
*/ i.country if selection > 1 & age_child >= -22.00958, /*
*/ forcesort level2(couplelevel2: cons, diagonal) level1(n) discrete(dist(multinomial) link(mlogit) denom(cons) basecategory(0)) maxiterations(150) initsv(V) initsb(c) mcmc(on) nopause
Other possibilities:
1) Turn off the
maxiterations?
2) Is it a problem for MCMC-estimation to use
esampvaryok? I use this because one of my selection-variables (see "if") is imputed and therefore varies between the imputed datasets.
Given the size, providing the dataset is difficult unless I could wetransfer it, or...?
Re: runmlwin with imputed data
Posted: Fri Oct 27, 2017 2:39 pm
by ChrisCharlton
Going back to my previous example and updating it to use MCMC worked for me:
Code: Select all
. use "http://www.bristol.ac.uk/cmm/media/runmlwin/bang.dta", clear
. // Make 10% of urban missing
. gen ind = runiform()
. replace urban = . if ind < 0.1
(279 real changes made, 279 to missing)
. // Store IGLS version of the model for initial values
. preserve
. drop if urban == .
(279 observations deleted)
. quietly runmlwin use4 cons urban, ///
> level1(woman: ) ///
> discrete(distribution(multinomial) link(mlogit) denominator(cons) basecategory(4)) ///
> nopause
. estimates store igls
. restore
. // Impute new values for urban
. mi set mlong
. mi register imputed urban
(279 m=0 obs. now marked as incomplete)
. mi impute logit urban age educ hindu, add(10)
Univariate imputation Imputations = 10
Logistic regression added = 10
Imputed: m=1 through m=10 updated = 0
------------------------------------------------------------------
| Observations per m
|----------------------------------------------
Variable | Complete Incomplete Imputed | Total
-------------------+-----------------------------------+----------
urban | 2588 279 279 | 2867
------------------------------------------------------------------
(complete + incomplete = total; imputed is the minimum across m
of the number of filled-in observations.)
. // Now fit the model to the imputed data with MCMC
. mi estimate, cmdok: runmlwin use4 cons urban, ///
> level1(woman: ) ///
> discrete(distribution(multinomial) link(mlogit) denominator(cons) basecategory(4)) ///
> initsmodel(igls) ///
> mcmc(on) ///
> nopause
Multiple-imputation estimates Imputations = 10
Unordered multinomial logit response model Number of obs = 2,867
Average RVI = .
Largest FMI = .
DF adjustment: Large sample DF: min = 575.76
avg = .
max = .
------------------------------------------------------------------------------
| Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
FP1 |
cons_1 | -1.805271 .0735022 -24.56 0.000 -1.949362 -1.661179
urban_1 | .2412033 .153445 1.57 0.117 -.0601769 .5425836
-------------+----------------------------------------------------------------
FP2 |
cons_2 | -1.535267 .0659495 -23.28 0.000 -1.66453 -1.406004
urban_2 | 1.184752 .1048985 11.29 0.000 .9791343 1.390369
-------------+----------------------------------------------------------------
FP3 |
cons_3 | -1.883377 .0760028 -24.78 0.000 -2.032348 -1.734405
urban_3 | .2751548 .1526243 1.80 0.072 -.024182 .5744916
-------------+----------------------------------------------------------------
OD |
bcons_1 | 1 . . . . .
------------------------------------------------------------------------------
1) Changing
maxiterations shouldn't make any difference as this relates to running the model with (R)IGLS and should there be ignored for your model.
2) I would not expect
esampvaryok to cause a problem as MLwiN will only see the shorter dataset at the point of running the model, you could however test this by removing the condition from your model specification.
I would suggest that you diagnose this by starting with the simplest model (for example with just a
cons predictor) and once you have determined that this works add in the other features one at a time (i.e. more predictors, the
i. syntax and then the condition).
Re: runmlwin with imputed data
Posted: Fri Oct 27, 2017 3:29 pm
by fonnyyyy
Ok, thank you once again.
I will first start to try with the IGLS listwise deletion startvalues (cfr. your example). That's something new.

If this doesn't work, I'll try the accumulate-approach following your suggestion.
Re: runmlwin with imputed data
Posted: Mon Oct 30, 2017 12:02 am
by fonnyyyy
After trying everything (empty model, different dependent variables, varying level numbers, new imputed datasets, etc. etc.) I decided to replicate your example using the online bang dataset and the same convergence error occurred. I will now update the MLwiN 2.30 (Stata version is 12.1).
Re: runmlwin with imputed data
Posted: Mon Nov 06, 2017 10:34 am
by ChrisCharlton
I just tested my example with Stata 12.1 and didn't get any errors. I would be surprised if it was related to the MLwiN version, but updating is worth a try. Could you also run the Stata command:
and report the output, in case it is picking up an old version of the command from elsewhere for some reason?