Bookmark and Share

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.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

st: Re: Why do Stata Cronbach's Alpha values not match SAS?


From   "Joseph Coveney" <jcoveney@bigplanet.com>
To   <statalist@hsphsun2.harvard.edu>
Subject   st: Re: Why do Stata Cronbach's Alpha values not match SAS?
Date   Thu, 28 Apr 2011 13:23:04 +0900

Benjamin Gramig wrote:

I have used the alpha, item- command in Stata to calculate Cronbachs alpha to
evaluate scale reliability of a group of Likert scale survey questions and
received the following Stata output:

[omitted]

When I attempt to use SAS to calculate the same Alpha reliability  value using
the -PROC CORR data alpha- command I get much lower values (pasted below) for
items in the scale as well as the overall alpha for the entire scale.  The
qualitative results in terms of sign and relative magnitude of alphas calculated
when removing individual items from the scale are consistent with Stata, but not
the magnitudes. I have read the manuals for both pieces of software and it is
not clear to me that there are differences in what is being reported by both
software packages.  

Has anyone else encountered this drastic difference?  I assume that there is
something systematically different about what is going on in the two packages to
calculate the reported values, but I couldn't determine what this difference
was.

It should be noted that I turned to SAS to be able to use polychoric
correlations in a PCA with a full set of diagnostics, outputs and rotations
available.  This seems necessary for my ordinal data, despite ignoring this in
the comparison of alpha calculations shared here. I did explore 
-polychoricpca- in Stata before deciding to use SAS.

Any insights are greatly appreciated,
[omitted]

--------------------------------------------------------------------------------

As far as insights for the differences between software, my first suspicion is
that you're analyzing different data.  That DATA step can be a tricky thing if
you're accustomed to Stata, and conversely those who are at-home with SAS's way
of going about data management can be tripped up by trying to emulate it in
Stata.

A second insight based upon experience:  when in doubt, compare results with a
worked example.  Choosing an example from SAS and running it in Stata (see
below) shows that the two packages will give the same results when fed the same
dataset and options (in this case, listwise deletion of observations with at
least one missing value).  There is one feature not explored in the worked
example below:  I don't know how SAS handles sign flips as compared to Stata's
-alpha-.  The worked example below doesn't have any flipped scales and, as you
mentioned, your data do.  So, that's something to look into further if you can
find a worked example that has reversed-sense variables.

As far as your choosing SAS over Stata for principal component analysis with
categorical data, I don't have any insight.  But I have a few comments:  1. I
assume principal component analysis is a considered decision--that it's what you
really want to do. 2. You can do any rotation in Stata that I'm aware of, at
least for exploratory factor analysis. 3. Based upon my experience with M-Plus,
at least a couple of the popular (must-show) diagnostic tests appear not to work
well with categorical variables.  4. At least for exploratory factor analysis, I
didn't notice any practical gain (can-do-science-better) in moving away from
Stata because of categorical variables.

Joseph Coveney

version 11.2

clear *
set more off

input float Weight double (Length3 HtPct WidthPct)
/*
omitted:  get the dataset (and the SAS output to compare
Stata's) from 
http://support.sas.com/documentation/cdl/en/procstat/63104/HTML/default/viewer.h
tm#procstat_corr_sect032.htm
*/
end
generate double Weight3 = Weight^(1/3)
generate double Height = HtPct * Length3 / 100
generate double Width = WidthPct *  Length3 / 100
drop HtPct WidthPct
label data "Fish Measurement Data"

generate byte listwise_missing = 0
foreach var of varlist Weight3 Length3 Height Width {
	replace listwise_missing = 1 if mi(`var')
}
summarize Weight3 Length3 Height Width if !listwise_missing
pwcorr Weight3 Length3 Height Width, casewise // NOMISS

alpha Weight3 Length3 Height Width, casewise item
alpha Weight3 Length3 Height Width, casewise item std

exit


*
*   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/


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