FAQ/WilliamsSPSS - CBU statistics Wiki

Revision 53 as of 2006-07-12 11:32:02

Clear message
location: FAQ / WilliamsSPSS

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.

An example of its use in macro form is given below. This uses SPSS syntax from http://www.utexas.edu/its/rc/answers/general/gen28.html. 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 testing correlations 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

[COPY AND PASTE BELOW SPSS SYNTAX 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.