Page 1 of 1

How to constrain the lowest level variance to 1

Posted: Mon Dec 19, 2011 5:48 pm
by frankpeter
Dear All,

I am trying to replicate example of multilevel approach to meta-analysis using runmlwin (http://www.ats.ucla.edu/stat/MLwiN/exam ... apter8.htm).
Please, how can I constrain the lowest level of variance to one.

Thanks.

Frank

Re: How to constrain the lowest level variance to 1

Posted: Tue Dec 20, 2011 9:52 am
by GeorgeLeckie
Dear Frank,

Consider the first model presented in:

http://www.ats.ucla.edu/stat/mlwin/exam ... apter8.htm

To replicate this model using runmlwin you need the following

Code: Select all

use "http://www.ats.ucla.edu/stat/stata/examples/mlm_ma_hox/meta20", clear

replace study = 17 if _n==17

constraint define 1 [RP1]var(stderr) = 1

generate cons = 1

generate stderr = sqrt(varofd)

runmlwin d cons, ///
	level2(study: cons) ///
	level1(d: stderr) ///
	constraints(1) ///
	mlwinsettings(size(100)) ///
	nopause 
where:

(1) the replace command is used to correct a data error in the original data (Study 17 was mistakenly given an ID of 16 rather than 17)

(2) we use Stata's constraint define command to constrain the level-1 variance to a value of one

(3) we use constraints(1) option of the runmlwin command to attach the constraint to the model.

One oddity that we hope to fix in a later release is that we have had to use the mlwinsettings(size(100)) option to manually tell MLwiN how big a worksheet it will need. Normally runmlwin works out how big a worksheet you need and there is no need for a manual override. Here you do need to manually override here due to the unusual dimensions of the worksheet (there is a very high ratio of variables to observations).

If you fit this model you should see the following output

Code: Select all

. use "http://www.ats.ucla.edu/stat/stata/examples/mlm_ma_hox/meta20", clear

. 
. replace study = 17 if _n==17
(1 real change made)

. 
. constraint define 1 [RP1]var(stderr) = 1

. 
. generate cons = 1

. 
. generate stderr = sqrt(varofd)

. 
. runmlwin d cons, ///
>         level2(study: cons) ///
>         level1(d: stderr) ///
>         constraints(1) ///
>         mlwinsettings(size(100)) ///
>         nopause 
 
 ( 1)  [RP1]var(stderr) = 1
MLwiN 2.24 multilevel model                     Number of obs      =        20
Normal response model
Estimation algorithm: IGLS

-----------------------------------------------------------
                |   No. of       Observations per Group
 Level Variable |   Groups    Minimum    Average    Maximum
----------------+------------------------------------------
          study |       20          1        1.0          1
-----------------------------------------------------------

Run time (seconds)   =       1.23
Number of iterations =          4
Log likelihood       = -13.899582
Deviance             =  27.799164
------------------------------------------------------------------------------
           d |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
        cons |   .5790381   .1049019     5.52   0.000     .3734342    .7846419
------------------------------------------------------------------------------

------------------------------------------------------------------------------
   Random-effects Parameters |   Estimate   Std. Err.     [95% Conf. Interval]
-----------------------------+------------------------------------------------
Level 2: study               |
                   var(cons) |   .1315565   .0692808     -.0042314    .2673444
-----------------------------+------------------------------------------------
Level 1: d                   |
                 var(stderr) |          1          0             1           1
------------------------------------------------------------------------------
Let us know how you get on with replicating the other models

Best wishes

George

Re: How to constrain the lowest level variance to 1

Posted: Tue Dec 20, 2011 6:49 pm
by frankpeter
Dear George,

Thanks for the prompt and for sending the code. That is exactly what I am looking for you. Please, I run the code, I got the following error message:

estimates post: matrix has missing values
Warning - runmlwin has experienced difficulties importing the standard errors, all standard errors have been set to zero
Warning: getversion plugin could not be loaded


I am using
- Stata 12/IC
- MLwiN 2.24
- runmlwin.ado, George Leckie and Chris Charlton, 01Dec2011

Thanks

Frank Peter

Code: Select all

 use "http://www.ats.ucla.edu/stat/stata/examples/mlm_ma_hox/meta20", clear

. replace study = 17 if _n==17
(1 real change made)

. constraint define 1 [RP1]var(stderr) = 1

. generate cons = 1

. generate stderr = sqrt(varofd)

. runmlwin d cons, ///
> level2(study: cons) ///
> level1(d: stderr) ///
> constraints(1) ///
> mlwinsettings(size(100)) ///
> nopause 
 
 ( 1)  [RP1]var(stderr) = 1
estimates post: matrix has missing values
Warning - runmlwin has experienced difficulties importing the standard errors, all standard errors have been set to zero
Warning: getversion plugin could not be loaded
MLwiN ... multilevel model                      Number of obs      =        20
Normal response model
Estimation algorithm: IGLS

-----------------------------------------------------------
                |   No. of       Observations per Group
 Level Variable |   Groups    Minimum    Average    Maximum
----------------+------------------------------------------
          study |       20          1        1.0          1
-----------------------------------------------------------

Run time (seconds)   =       2.75
Number of iterations =          4
Log likelihood       = -13.899582
Deviance             =  27.799164
------------------------------------------------------------------------------
           d |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
        cons |   .5790381          0        .      .      .5790381    .5790381
------------------------------------------------------------------------------

------------------------------------------------------------------------------
   Random-effects Parameters |   Estimate   Std. Err.     [95% Conf. Interval]
-----------------------------+------------------------------------------------
Level 2: study               |
                   var(cons) |   .1315565          0      .1315565    .1315565
-----------------------------+------------------------------------------------
Level 1: d                   |
                 var(stderr) |          1          0             1           1
------------------------------------------------------------------------------

. 
end of do-file



Re: How to constrain the lowest level variance to 1

Posted: Tue Dec 20, 2011 7:03 pm
by GeorgeLeckie
Hi Peter,

Apologies, the current release version of runmlwin (which you are using) has a small bug relating to the standard errors of model parameters when constraints are used.

We have fixed this on our development version and I will email you a copy of this so you can proceed with your analysis.

The next release of runmlwin will be out early January. If anyone else wants the bug fixed version before then, please contact me.

Best wishes

George

Re: How to constrain the lowest level variance to 1

Posted: Tue Dec 20, 2011 7:22 pm
by frankpeter
Hi George,

Thanks for the prompt reply. It worked fine.

Peter