Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
From | "Florian Christian Esser" <florian.esser@tu-dortmund.de> |
To | statalist@hsphsun2.harvard.edu |
Subject | Re: st: CR and AVE for factor analysis with 2 factors |
Date | Tue, 29 Oct 2013 10:33:24 +0100 |
It's 15 > What's e(df_m) in your case? > Nick > njcoxstata@gmail.com > > > On 29 October 2013 09:07, Florian Christian Esser > <florian.esser@tu-dortmund.de> wrote: >> Here we go (I included the uniqueness and the loadings as well). >> Communalities are on the bottom: >> _____________________________________________________________ >> >> >> . matrix list e(Psi) >> >> e(Psi)[1,6] >> zwmdiff_1 zwpdiff_1 zwpdiff_2 zwcost_1 zwcost_2 >> zwcost_3 >> Uniqueness .14721836 .16061008 .12541414 .01425274 .01366305 >> .02630422 >> >> . matrix list e(L) >> >> e(L)[6,3] >> Factor1 Factor2 Factor3 >> zwmdiff_1 .81629684 .233233 .36337787 >> zwpdiff_1 .82275816 .39938175 -.05434294 >> zwpdiff_2 .8671496 .34761446 .04244559 >> zwcost_1 -.52875169 .83417333 .10160593 >> zwcost_2 -.51348298 .84223386 .11538764 >> zwcost_3 -.18959666 -.28021389 .9269461 >> >> . matrix psi = e(Psi)' >> >> . matrix communalities = J(rowsof(psi),1,1) >> >> . matrix communalities = communalities - psi >> >> . matrix colnames communalities = communalities >> >> . matrix list communalities >> >> communalities[6,1] >> communalit~s >> zwmdiff_1 .85278164 >> zwpdiff_1 .83938992 >> zwpdiff_2 .87458586 >> zwcost_1 .98574726 >> zwcost_2 .98633695 >> zwcost_3 .97369578 >> _____________________________________________________ >> >>> What is implied by your log is that >>> >>> replace sum_factors = sum_factors + sqrt(communalities[3,1]) >>> >>> has the effect of replacing -sum_factors- with missing. So, please >>> show us that -communalities- matrix, >>> namely the result of your line >>> >>> matrix list communalities >>> >>> (I see on closer examination that the -communalities- matrix is not >>> the communalaties as first reported, but modified.) >>> >>> No idea, sorry, about your general factor analysis question. I'm >>> firmly a PCA person. >>> Nick >>> njcoxstata@gmail.com >>> >>> >>> On 29 October 2013 07:14, Florian Christian Esser >>> <florian.esser@tu-dortmund.de> wrote: >>>> Hi Nick, thanks a lot for your advice. >>>> Unfortunately, all my communalities are positive. >>>> Does anyone have any ideas, what else could cause the issue? >>>> >>>> Is the general approach correct, to calculate CR and AVE for both >>>> factors >>>> at the same time, or would I have to do it individually. I.e. I do the >>>> factor analysis, identify, that the indicators load on two factors and >>>> then calculate CR and AVE for each factor individually? >>>> >>>>> Your missing value is presumably the result of taking the square root >>>>> of a negative number. Is at least one of your communalities reported >>>>> as negative? >>>>> >>>>> That aside you have segments like >>>>> >>>>> gen nvar = e(df_m) >>>>> gen sum_factors=0 >>>>> local i=1 >>>>> while `i' <= nvar { >>>>> replace sum_factors = sum_factors + sqrt(communalities[`i',1]) >>>>> local i=`i'+1 >>>>> } >>>>> >>>>> You can simplify this. First, to hold constants, use locals or >>>>> scalars, not variables. Second, use -forval- to loop here: >>>>> >>>>> local nvar = e(df_m) >>>>> local sum_factors = 0 >>>>> forval i = 1/`nvar' { >>>>> local sum_factors = `sum_factors' + sqrt(communalities[`i',1] >>>>> } >>>>> >>>>> Third, use Mata instead. Here is a self-contained example: >>>>> >>>>> . matrix foo = (1,2,3,4) >>>>> >>>>> . mata : st_numscalar("sum_factors", sum(sqrt(st_matrix("foo")))) >>>>> >>>>> . scalar li >>>>> sum_factors = 6.1462644 >>>>> >>>>> However, none of these tricks can get round what appears to be your >>>>> problem. >>>>> >>>>> >>>>> Nick >>>>> njcoxstata@gmail.com >>>>> >>>>> >>>>> On 28 October 2013 14:11, Florian Christian Esser >>>>> <florian.esser@tu-dortmund.de> wrote: >>>>>> Hi everyone, >>>>>> >>>>>> I am trying to do factor analysis in order to measure two strategy >>>>>> constructs. I have 6 indicators that load on these two constructs. >>>>>> Now >>>>>> I >>>>>> want to calculate composite reliability (CR) and average variance >>>>>> extracted(AVE). >>>>>> I use the following code (here for CR): >>>>>> ___________________________________________________________________ >>>>>> factor zwmdiff_1 zwpdiff_1 zwpdiff_2 zwcost_1 zwcost_2 zwcost_3, pcf >>>>>> matrix list e(Psi) >>>>>> matrix list e(L) >>>>>> matrix psi = e(Psi)' >>>>>> matrix communalities = J(rowsof(psi),1,1) >>>>>> matrix communalities = communalities - psi >>>>>> matrix colnames communalities = communalities >>>>>> matrix list communalities >>>>>> gen nvar = e(df_m) >>>>>> gen sum_factors=0 >>>>>> local i=1 >>>>>> while `i' <= nvar { >>>>>> replace sum_factors = sum_factors + sqrt(communalities[`i',1]) >>>>>> local i=`i'+1 >>>>>> } >>>>>> generate sum_psi=0 >>>>>> local i=1 >>>>>> while `i' <= nvar { >>>>>> replace sum_psi = sum_psi + psi[`i',1] >>>>>> local i=`i'+1 >>>>>> } >>>>>> gen cr=(sum_factors*sum_factors)/((sum_factors*sum_factors)+sum_psi) >>>>>> drop nvar >>>>>> drop sum_factors >>>>>> drop sum_psi >>>>>> list cr in 1 >>>>>> _________________________________________________________________ >>>>>> >>>>>> The problem is that once the local macro starts running it tells me: >>>>>> _____________________________ >>>>>> [...] >>>>>> (534 real changes made) >>>>>> (534 real changes made) >>>>>> (534 real changes made, 534 to missing) >>>>>> (0 real changes made) >>>>>> (0 real changes made) >>>>>> (0 real changes made) >>>>>> [...] >>>>>> ___________________________ >>>>>> >>>>>> and accordingly there is an empty result for CR. >>>>>> If I add "factors(1)" in the command line above, I get a result, but >>>>>> I >>>>>> since I have two factors, I think it is not correct to do this. >>>>>> >>>>>> Does anyone know what to do here? >>>>>> >>>>>> Thanks a lot in advance. >>>>>> >>>>>> * >>>>>> * For searches and help try: >>>>>> * http://www.stata.com/help.cgi?search >>>>>> * http://www.stata.com/support/faqs/resources/statalist-faq/ >>>>>> * http://www.ats.ucla.edu/stat/stata/ >>>>> * >>>>> * For searches and help try: >>>>> * http://www.stata.com/help.cgi?search >>>>> * http://www.stata.com/support/faqs/resources/statalist-faq/ >>>>> * http://www.ats.ucla.edu/stat/stata/ >>>>> >>>> >>>> >>>> * >>>> * For searches and help try: >>>> * http://www.stata.com/help.cgi?search >>>> * http://www.stata.com/support/faqs/resources/statalist-faq/ >>>> * http://www.ats.ucla.edu/stat/stata/ >>> * >>> * For searches and help try: >>> * http://www.stata.com/help.cgi?search >>> * http://www.stata.com/support/faqs/resources/statalist-faq/ >>> * http://www.ats.ucla.edu/stat/stata/ >>> >> >> >> * >> * For searches and help try: >> * http://www.stata.com/help.cgi?search >> * http://www.stata.com/support/faqs/resources/statalist-faq/ >> * http://www.ats.ucla.edu/stat/stata/ > * > * For searches and help try: > * http://www.stata.com/help.cgi?search > * http://www.stata.com/support/faqs/resources/statalist-faq/ > * http://www.ats.ucla.edu/stat/stata/ > * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/faqs/resources/statalist-faq/ * http://www.ats.ucla.edu/stat/stata/