C --------------------------------------------------------------------------
C  ALPHANEW.FOR          GJL 9-6-89  12-11-89
C  18:00
C
C  Comparing Alpha Coefficients for Independent Samples
C  Algorithm adapted from formulae in:
C  Feldt, Woodruff & Salih (1987).  Statistical inference for coefficient
C        alpha.  APPLIED PSYCH MEAS., 11, 93-103.
C
C
      CHARACTER INF*24,OUTF*24,FMT*80,FMT2*80
      INTEGER DF,I,N,TYPE
      DIMENSION A(20),NI(20),NN(20),R(20,20)
      REAL*8 A,MU,NB,Q,QQ,SA,SI,SS,SM,UX,ZCHI,PCHI,RDF,TDF,R,HMN,NC,SUMN
      REAL*8 CM,CI,CP,NI,NN
C  Variable definitions ...
C  NB    DF + 1  or  NB - 1 = DF for test i
C  NI(I)    the number of items in test i
C  NN(I)    number of respondents who took test i
C  SI      the estimated variance of alpha for test i
C  A(I)    Alpha Coefficient for test i
C  Q        Constant = 1/3    for transforming alphas
C  QQ      Constant = 2/3            "
C  SA    the sum of unweighted transformed alphas (used to get MU below)
C  MU    the simple unweighted average of the transformed alphas
C  na    the number of alphas (or # of groups)
C  UX    the Chi-squared value for omnibus Ho:  A(1) = A(2) = ... = A(na)
C
C
      WRITE (*,1)
1    FORMAT(//,
    +'  Lautenschlager, G. J. (1989).  ALPHATST: Testing for'/
    +'      differences in coefficient alpha.'/
    +'      Applied Psychological Measurement, 13, 284.'//)
C
  27  WRITE(*,28)
  28  FORMAT('    ENTER INPUT FILENAME:  ',\)
      READ(*,29) INF
  29  FORMAT(A24)
      OPEN(5,FILE=INF,STATUS='OLD')
          READ(5,31) TYPE,N,OUTF
  31      FORMAT(I1,I2,A24)
C
      WRITE (6,32) TYPE,N,OUTF
  32  FORMAT(' ------------- ALPHATST OUTPUT -------------------------'/
    +1X,'TYPE =',I1,'N = ', I2, 'INPUT FILE =',A24)
C
      IF (TYPE.GT.2) GOTO 700
      IF (TYPE.LT.1) GOTO 700
C  N = # OF GROUPS (IND) OR # OF SUBTESTS COMPARED ACROSS GROUPS
C  OUTF = file name for output
C
          OPEN(6,FILE=OUTF,STATUS='NEW')
          READ(5,33) FMT
C  FMT  = FIRST input format
  33      FORMAT(A80)
C
      WRITE (6,34) FMT
  34  FORMAT('FORMAT=',A80)
C
C
C
      Q = .33333333333333333
      QQ = .66666666666666666
C
C  READ IN ALPHA, # ITEMS & SAMPLE SIZE INFORMATION
      READ(5,FMT) ( A(I),NI(I),NN(I),I=1,N )
      WRITE(6,FMT) ( A(I),NI(I),NN(I),I=1,N )
C
      MU = 0
      SA = 0
      DO 45 I = 1,N
      SA = SA + ( 1 / (1 - A(I))**Q)
  45  CONTINUE
      MU = SA / N
C
C ******************************************************************
C
C Solution of INDEPENDENT GROUPS case when TYPE=1
      IF (TYPE.EQ.1) THEN
C
C
C  EACH SI    FOUND USING FORMULA (19)    AND  SUM INTO  SS
C      SEE PARAGRAPH ABOVE FORMULA (19) FOR MEANING OF  NB
C  FIND VARIANCE OF USING FORMULA (20)
      SS = 0
      SM = 0
      DO 80 I = 1,N
      NB =  ( (NI(I) - 1) * NN(I) ) / (NI(I)+1.0)
      SI    = 2 / ( 9 * (NB - 1) * ((1-A(I))**QQ) )
C
      SS = SS + SI
  80  CONTINUE
C
      SM = SS / N
C
C  CALCULATE INDEPENDENT GROUPS CHI-SQUARED      USING FORMULA (21)
      UX = 0
      DO 85 I = 1,N
      UX = UX +  ( ( ( (1/(1-A(I))**Q) -MU) **2) /SM )
  85  CONTINUE
      DF=N-1
      RDF=N-1
C
      ENDIF
C
C ******************************************************************
C
C  Solution of DEPENDENT GROUP case when TYPE=2
      IF (TYPE.EQ.2) THEN
C
C  FMT2  = CORRELATION MATRIX input format  ONLY FOR DEPENDENT TESTS
          READ(5,33) FMT2
  90      FORMAT(A80)
C
C  READ IN CORRELATION MATRIX lower triangular regardless of input file
      DO 100 I=1,N
      READ(5,FMT2)(R(I,J),J=1,I)
      WRITE(6,FMT2)(R(I,J),J=1,I)
100  CONTINUE
C
      SUMN=0
      DO 110 I=1,N
        SUMN=SUMN+(1/NI(I))
110  CONTINUE
      HMN=N/SUMN
      I=1
      NC=NN(I)*(HMN-1)/(HMN+1)
C
C  EACH SI    FOUND USING FORMULA (24)    SUBSTITUTING
C            COMMON N (NC AS CALCULATED ABOVE)
C
C  FIND VARIANCE OF USING FORMULA (20)
      SS = 0
      SM = 0
      DO 120 I = 1,N
      SI    = 2 / ( 9 * (NC-1) * ((1-A(I))**QQ) )
      SS = SS + SI
120  CONTINUE
      SM = SS / N
C
      CP=0
      DO 130 I=2,N
      DO 130 J=1,I-1
      CI = 2*R(I,J)**2 / ( 9*(NC-1)*((1-A(I))**Q)*((1-A(J))**Q) )
C
      CP = CP + CI
130  CONTINUE
C
C  FIND COVARIANCE OF ALPHA I & ALPHA J USING FORMULA (25)
      CM = CP / ((N**2-N)/2)
C
C  CALCULATE DEPENDENT SAMPLE CHI-SQUARED      USING FORMULA (26)
      UX = 0
      DO 335 I = 1,N
      UX = UX +  ( ( ( (1/(1-A(I))**Q) -MU) **2) /(SM-CM)  )
335  CONTINUE
      DF=N-1
      RDF=N-1
C
      ENDIF
C
C ******************************************************************
C ******************************************************************
C  FIND p-VALUE FOR CHI-SQUARED
C
      TDF = 2/(9*RDF)
      ZCHI = ( (UX/DF)**Q - (1-TDF) ) / DSQRT(TDF)
      PCHI = .5 / (1 + (.196854*ZCHI) + (.115194*(ZCHI)**2) +
    + (.000344*(ZCHI)**3) + (.019527*(ZCHI)**4) ) ** 4
C  PRINT HEADER & INPUT INFORMATION
      WRITE (6,345) INF
345  FORMAT(' -------------------------------------------------------'/
    +1X,' ------------- TEST FOR ALPHA COEFFICIENTS -------------'/
    +1X,'INPUT FILE FOR THIS RUN WAS:  ',A24)
C
      IF (TYPE.EQ.1) THEN
        WRITE(6,350) N
350    FORMAT(5X,'# OF INDEPENDENT GROUPS:  ',I3,/)
      ELSEIF (TYPE.EQ.2) THEN
        WRITE(6,355) N
355    FORMAT(5X,'# OF DEPENDENT ALPHAS:  ',I3,/)
      ENDIF
      WRITE(6,400) UX
400  FORMAT(10X,'CHI-SQUARED VALUE IS :  ',F12.4,/)
      WRITE(6,410) DF,PCHI
410  FORMAT(12X,'df =  ',I5,11X,'p < ',F8.5)
C
C  CLOSE FILES
500    CLOSE(5)
        CLOSE(6)
        GOTO 900
700  WRITE(*,701)
701  FORMAT(' ERROR IN INPUT FILE!!',\)
900  STOP
      END