Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.

# Re: st: CR and AVE for factor analysis with 2 factors

 From "Florian Christian Esser" <[email protected]> To [email protected] 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
> [email protected]
>
>
> On 29 October 2013 09:07, Florian Christian Esser
> <[email protected]> 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.)
>>>
>>> firmly a PCA person.
>>> Nick
>>> [email protected]
>>>
>>>
>>> On 29 October 2013 07:14, Florian Christian Esser
>>> <[email protected]> wrote:
>>>> 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
>>>>> [email protected]
>>>>>
>>>>>
>>>>> On 28 October 2013 14:11, Florian Christian Esser
>>>>> <[email protected]> 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 to missing)
>>>>>> [...]
>>>>>> ___________________________
>>>>>>
>>>>>> 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/
```