FAQ/WilliamsSPSS - CBU statistics Wiki

Revision 71 as of 2007-06-13 10:27:00

Clear message
location: FAQ / WilliamsSPSS

Comparing pairs of correlations

A variable in common (overlap) e.g. of form r(W,X) = r(W,Z).

A test for this comparison goes under various names the Williams test, Williams-Hotelling or Hotelling test.

[http://ww.utexas.edu/its/rc/answers/general/gen28.html A macro example is available. ] Just cut and paste into a SPSS syntax window to use. In the syntax window choose select all and click the run arrow. Edit the data in the spreadsheet as required. You can also use the Williams-Hotelling test by typing equalcor at a UNIX prompt on a CBU machine.

More SPSS syntax

  • [:FAQ/WilliamsSPSS/Fisher:Comparing two correlations from two independent samples]

  • [:FAQ/WilliamsSPSS/Filon:Comparing two correlations from the same sample with no variables in common eg of form r(A,B)=r(X,Y)]

  • [:FAQ/WilliamsSPSS/Meng:A z-test alternative to Williams-Hotelling for correlation comparisons of form r(W,X)=r(W,Z)]

Some of the above tests may be performed using the free downloadable program FZT.EXE http://www-class.unl.edu/psycrs/statpage/comp.html but note FZT.EXE does not compute p-values. Williams test may also be performed using [attachment:Williams-test.xls this spreadsheet].

[COPY AND PASTE SPSS SYNTAX IN THE BOX BELOW TO PERFORM WILLIAMS TEST]

* Dependent Correlation Comparison Program. 
* Compares correlation coefficients from the same sample. 
* See Cohen & Cohen (1983), p. 57. 
* Sam Field, sfield@mail.la.utexas.edu, March 1, 2000. 

* Three pairs of correlations to compare*****

set format f10.5.
DATA LIST free
 /r12 r13  r23  nsize.

BEGIN DATA
.50 .32 .65 50
.59 .31 .71 30
.80 .72 .89 26
END DATA.

define williams (rxy = !tokens(1)
                      /rvy = !tokens(1)
                      /rxv = !tokens(1)
                      /n = !tokens(1)).

COMPUTE #diffr = !rxy - !rvy.
COMPUTE #detR = (1 - !rxy **2 - !rvy**2 - !rxv**2)+ (2*!rxy*!rxv*!rvy).

COMPUTE #rbar = (!rxy + !rvy)/2.

COMPUTE #tnum = (#diffr) * (sqrt((!n-1)*(1 + !rxv))).

COMPUTE #tden = sqrt(2*((!n-1)/(!n-3))*#detR + ((#rbar**2) * ((1-!rxv)**3))).

COMPUTE t= (#tnum/#tden).

COMPUTE df = !n - 3.

COMPUTE p_1_tail = 1 - CDF.T(abs(t),df).

COMPUTE p_2_tail = (1 - CDF.T(abs(t),df))*2.

LIST t  df    p_1_tail    p_2_tail.

exe.

!enddefine.

*********************

williams rxy=r12 rvy=r13 rxv=r23 n=nsize.
  • Multiple invocations of the macro in the same interactive session will produce the following note:

>The macro name specified on the DEFINE command duplicates the name of a previously defined macro. This instance will take precedence.

This warning does not indicate a problem and may be ignored.