Skip to content

lme() with known level-one variances

3 messages · J.R. Lockwood, vito muggeo

#
Greetings,

I have a meta-analysis problem in which I have fixed effects
regression coefficients (and estimated standard errors) from identical
models fit to different data sets.  I would like to use these results
to create pooled estimated regression coefficients and estimated
standard errors for these pooled coefficients.  In particular, I would
like to estimate the model

\beta_{i} = \mu + \eta_{i} + \epsilon_{i}

\eta_{i} ~ iid N(0,\tau^2) and independent of the \epsilon_{i}, the
latter themselves being independent with variances assumed known and
equal to the squared standard errors reported in the regression
output.

I would like to use lme() to estimate \tau^2 by REML, and also get a
sensibly weighted estimate for \mu from the fixed effects output.  I
am not sure how to do this.  I have tried

lme(fixed=beta~1,random=~1|group,weights=~beta.v)

where "beta" are my coefficients, "group" is a trivial factor
indicating that each observation is its own group, and "beta.v" are
the squared standard errors.  Whatever I get out of this doesn't make
sense to me, and I suspect that I have specified the model
incorrectly.

Incidentally, if I just run the simple unidentifiable model

lme(fixed=beta~1,random=~1|group)

lme() somehow manages to produce estimates of the two variance
components, although the estimated confidence intervals are huge and
contain zero.  If I square and sum the estimated variance components,
I do get the sample variance of my regression coefficients, but why
that particular parceling of variance was chosen as opposed to any
other with the same property eludes me.

Here are my specs:
platform i686-pc-linux-gnu
arch     i686             
os       linux-gnu        
system   i686, linux-gnu  
status                    
major    1                
minor    5.1              
year     2002             
month    06               
day      17               
language R  


Thanks in advance for your help -- I've learned a ton of statistics
and computing on this list.

J.R. Lockwood
412-683-2300 x4941
lockwood at rand.org
http://www.rand.org/methodology/stat/members/lockwood/

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
#
See the rmeta package on CRAN (the metaDSL() function would do what you are
looking for).

BTW, in your code note:

i)In the model estimation, the estimated coefficients beta have to be
weighed by the inverse of their variance (the smaller the variance, the more
accurate the estimated beta, the more important its influence on the pooled
estimate)
ii) As far as I know, it makes no sense to set no.group=no.observations;
otherwise you could not estimate the intra-group variance.

best,
vito


----- Original Message -----
From: "J.R. Lockwood" <lockwood at rand.org>
To: <r-help at stat.math.ethz.ch>
Cc: "J.R. Lockwood" <lockwood at rand.org>
Sent: Thursday, August 29, 2002 8:00 PM
Subject: [R] lme() with known level-one variances
-.-.-
http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._.
_._
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
#
Dear Vito,

Thank you for your response.  I still have some concerns:
It is not clear to me that this function does what I need.  I
apologize for casting my original question in terms of a
meta-analysis; it is a bit of a red herring.  My more general question
is whether it is possible to tell lme() to treat some variance
components as known, and to estimate others conditional on them.
Unless I am misinterpreting, the "weights" argument that I passed to
lme() is inverted.  But after further consideration I do not think
that weighting is what I am seeking.
I am not sure to what function the arguments you reference belong
(they do not appear to be part of meta.DSL()).  But the larger point
is that I do not want to estimate the intra-group variances -- I want
to treat them as known.

best,

J.R. Lockwood
412-683-2300 x4941
lockwood at rand.org
http://www.rand.org/methodology/stat/members/lockwood/

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._