Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down on April 23, and its replacement, statalist.org is already up and running.

# RE: st: factor analysis and bootstrapping

 From "Grant, Robert" To "statalist@hsphsun2.harvard.edu" Subject RE: st: factor analysis and bootstrapping Date Wed, 1 Feb 2012 16:15:49 +0000

Dear Jurgen

I have done something similar. By far the best way to do it is by a short program, something like:

// example begins -------------------------------------------
// first, get the observed point estimates:
factor var1 var2 var3 ... var26, pcf factors(1)
rotate, promax // I hope this makes sense - I "don't do" oblique
forvalues i=1/26 {
}
// I was interested in % variance explained - you might want to add other stats in.

// and here comes the program...
capture: program drop myboot
program define myboot, rclass
preserve
bsample
factor var1 var2 var3 ... var26, pcf factors(1)
rotate, promax
forvalues i=1/26 {
}
scalar bootexp=e(rho)
restore
end

// now you use -simulate- to run the -myboot- program, creating one resample each time.
myboot
bstat, stat(obs) n(999) // put the original number of observations into n()
estat bootstrap, all
// example end ------------------------------

Hope that helps!
Robert

Robert Grant
Senior Research Fellow in Quantitative Methods
Faculty of Health & Social Care Sciences,
St. George's, University of London & Kingston University,
Grosvenor Wing, Cranmer Terrace, London, SW17 0RE.

Telephone +44 (0)20 8725 2281
Website http://staffnet.kingston.ac.uk/~ku45386

> Date: Wed, 1 Feb 2012 01:45:27 +0000
> Subject: Re: st: factor analysis and bootstrapping
> From: njcoxstata@gmail.com
> To: statalist@hsphsun2.harvard.edu
>
> The way -bootstrap- works hinges on taking one or more scalar results
> and looking at their distribution(s) under sampling with replacement.
> But you are trying to put a series of matrix results into a single
> variable. That won't work if only because you can't fit a matrix into
> a single value of a variable.
>
> In addition, I don't understand why you are trying to -bootstrap-
> rotation. Where's the stochastic element in that? The same rotation of
> the same factor analysis results will give the same rotated results.
> It's like rotating from facing N to facing E, but doing it 1000 times.
>
> I imagine what you want to do is -bootstrap- the whole shebang, i.e. a
> -factor- analysis followed by -rotate-, in which there will be
> variation because the factor analysis results will differ because of
> different samples. In that case, you would need to write a program to
> encapsulate both, and -- first point above -- taking each loading from
> the matrix and putting it into a separate scalar.
>
> If you seek comment on Martin Weiss's advice, please give the specific URL.
>
> Nick
>
> On Tue, Jan 31, 2012 at 11:37 PM, Jurgen Sidgman <sidgman@uwm.edu> wrote:
> > A few months ago a post identical to the one I have here was made and answered by Martin Weiss. The problem is that I have not been able to execute following his advice. So here it goes.
> >
> > I want to bootstrap the factor loadings that I obtain after executing
> >
> > factor var1 var2., pcf
> >
> > to determine if the loadings are statistically different from zero at conventional levels. Without attempting the bootstrapping all works well. However trying the following commands rotate does not work and I cannot seem to find a solution:
> >
> > bootstrap, reps(1000): rotate
> > bootstrap load:e(L), reps(1000): rotate
> > bootstrap e(L), reps(1000): rotate promax
> >
> > I have also tried:
> >
> >

This email has been scanned for all viruses by the MessageLabs Email
Security System.

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/