Statalist


[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

st: RE: Re: corr() with weights, -by-


From   "Nick Cox" <n.j.cox@durham.ac.uk>
To   <statalist@hsphsun2.harvard.edu>
Subject   st: RE: Re: corr() with weights, -by-
Date   Sun, 8 Jun 2008 16:37:40 +0100

On the other hand, if you want the covariances alongside the data, this
approach is cleaner than recourse to -levelsof-: 

gen cov = . 
egen group = group(country year) 
su group, meanonly 

quietly forval i = 1/`r(max)' { 
	corr x l2.x [aw=weight] if group == `i', cov 
	replace cov = r(cov_12) if group == `i' 
} 

See also 

FAQ     . . . . . . . . . . Making foreach go through all values of a
variable
        8/05    Is there a way to tell Stata to try all values of a
                particular variable in a foreach statement without
                specifying them?
                http://www.stata.com/support/faqs/data/foreach.html

However, -statsby- and then using -merge- may be just as efficient. 

Nick 
n.j.cox@durham.ac.uk 


Michael Blasnik

...
You  want the -statsby- command.  Something like this work:

statsby cov=r(cov_12), by(year country) : corr x l2.x  [aw= weight], cov

Philipp Rehm

> I am looking for an efficient way to extract weighted covariances, for
a 
> by-able problem.
> 
> Currently, I am running a very inefficient loop (using a lot of 
> -levelof-s and if-qualifiers), along these lines (my data is -tsset-):
> 
> corr x l2.x [aweight=weight] if year==`i' & country==`j', covariance
> 
> I then write the results [r(cov_12)] into a variable, again using 
> if-qualifiers.
> 
> A much quicker way to do this is to use the corr() function (written
by 
> Nick Winter) from the egenmore package. It does exactly what I want, 
> except that it does not accept weights.
> 
> I can also run something like:
> 
> bys country year: correlate(x l2.x) [aweight=weight], covariance
> 
> but r(C) leaves behind the covariance matrix only for the very last 
> estimation.
> 
> So, ideally I am looking for a version of Nick Winter's corr() which 
> accepts weights.
> 
> Any ideas / suggestions would be appreciated. I prefer a solution that

> works in Stata 9, but I do have access to Stata 10.

*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/



© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index