home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / fortran / library / ssp / statdscr / discr.for next >
Text File  |  1985-11-29  |  6KB  |  191 lines

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE DISCR
  5. C
  6. C        PURPOSE
  7. C           COMPUTE A SET OF LINEAR FUNCTIONS WHICH SERVE AS INDICES
  8. C           FOR CLASSIFYING AN INDIVIDUAL INTO ONE OF SEVERAL GROUPS.
  9. C           NORMALLY THIS SUBROUTINE IS USED IN THE PERFORMANCE OF
  10. C           DISCRIMINANT ANALYSIS.
  11. C
  12. C        USAGE
  13. C           CALL DISCR (K,M,N,X,XBAR,D,CMEAN,V,C,P,LG)
  14. C
  15. C        DESCRIPTION OF PARAMETERS
  16. C           K     - NUMBER OF GROUPS. K MUST BE GREATER THAN ONE.
  17. C           M     - NUMBER OF VARIABLES
  18. C           N     - INPUT VECTOR OF LENGTH K CONTAINING SAMPLE SIZES OF
  19. C                   GROUPS.
  20. C           X     - INPUT VECTOR CONTAINING DATA IN THE MANNER EQUIVA-
  21. C                   LENT TO A 3-DIMENSIONAL FORTRAN ARRAY, X(1,1,1),
  22. C                   X(2,1,1), X(3,1,1), ETC.  THE FIRST SUBSCRIPT IS
  23. C                   CASE NUMBER, THE SECOND SUBSCRIPT IS VARIABLE NUMBER
  24. C                   AND THE THIRD SUBSCRIPT IS GROUP NUMBER.  THE
  25. C                   LENGTH OF VECTOR X IS EQUAL TO THE TOTAL NUMBER OF
  26. C                   DATA POINTS, T*M, WHERE T = N(1)+N(2)+...+N(K).
  27. C           XBAR  - INPUT MATRIX (M X K) CONTAINING MEANS OF M VARIABLES
  28. C                   IN K GROUPS
  29. C           D     - INPUT MATRIX (M X M) CONTAINING THE INVERSE OF
  30. C                   POOLED DISPERSION MATRIX.
  31. C           CMEAN - OUTPUT VECTOR OF LENGTH M CONTAINING COMMON MEANS.
  32. C           V     - OUTPUT VARIABLE CONTAINING GENERALIZED MAHALANOBIS
  33. C                   D-SQUARE.
  34. C           C     - OUTPUT MATRIX (M+1 X K) CONTAINING THE COEFFICIENTS
  35. C                   OF DISCRIMINANT FUNCTIONS.  THE FIRST POSITION OF
  36. C                   EACH COLUMN (FUNCTION) CONTAINS THE VALUE OF THE
  37. C                   CONSTANT FOR THAT FUNCTION.
  38. C           P     - OUTPUT VECTOR CONTAINING THE PROBABILITY ASSOCIATED
  39. C                   WITH THE LARGEST DISCRIMINANT FUNCTIONS OF ALL CASES
  40. C                   IN ALL GROUPS.  CALCULATED RESULTS ARE STORED IN THE
  41. C                   MANNER EQUIVALENT TO A 2-DIMENSIONAL AREA (THE
  42. C                   FIRST SUBSCRIPT IS CASE NUMBER, AND THE SECOND
  43. C                   SUBSCRIPT IS GROUP NUMBER).  VECTOR P HAS LENGTH
  44. C                   EQUAL TO THE TOTAL NUMBER OF CASES, T (T = N(1)+N(2)
  45. C                   +...+N(K)).
  46. C           LG    - OUTPUT VECTOR CONTAINING THE SUBSCRIPTS OF THE
  47. C                   LARGEST DISCRIMINANT FUNCTIONS STORED IN VECTOR P.
  48. C                   THE LENGTH OF VECTOR LG IS THE SAME AS THE LENGTH
  49. C                   OF VECTOR P.
  50. C
  51. C        REMARKS
  52. C           THE NUMBER OF VARIABLES MUST BE GREATER THAN OR EQUAL TO
  53. C           THE NUMBER OF GROUPS.
  54. C
  55. C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  56. C           NONE
  57. C
  58. C        METHOD
  59. C           REFER TO 'BMD COMPUTER PROGRAMS MANUAL', EDITED BY W. J.
  60. C           DIXON, UCLA, 1964, AND T. W. ANDERSON, 'INTRODUCTION TO
  61. C           MULTIVARIATE STATISTICAL ANALYSIS', JOHN WILEY AND SONS,
  62. C           1958, SECTION 6.6-6.8.
  63. C
  64. C     ..................................................................
  65. C
  66.       SUBROUTINE DISCR (K,M,N,X,XBAR,D,CMEAN,V,C,P,LG)
  67.       DIMENSION N(1),X(1),XBAR(1),D(1),CMEAN(1),C(1),P(1),LG(1)
  68. C
  69. C        ...............................................................
  70. C
  71. C        IF A DOUBLE PRECISION VERSION OF THIS ROUTINE IS DESIRED, THE
  72. C        C IN COLUMN 1 SHOULD BE REMOVED FROM THE DOUBLE PRECISION
  73. C        STATEMENT WHICH FOLLOWS.
  74. C
  75. C     DOUBLE PRECISION XBAR,D,CMEAN,V,C,SUM,P,PL
  76. C
  77. C        THE C MUST ALSO BE REMOVED FROM DOUBLE PRECISION STATEMENTS
  78. C        APPEARING IN OTHER ROUTINES USED IN CONJUNCTION WITH THIS
  79. C        ROUTINE.
  80. C
  81. C        THE DOUBLE PRECISION VERSION OF THIS SUBROUTINE MUST ALSO
  82. C        CONTAIN DOUBLE PRECISION FORTRAN FUNCTIONS.  EXP IN STATEMENT
  83. C        250 MUST BE CHANGED TO DEXP.
  84. C
  85. C        ...............................................................
  86. C
  87. C     CALCULATE COMMON MEANS
  88. C
  89.       N1=N(1)
  90.       DO 100 I=2,K
  91.   100 N1=N1+N(I)
  92.       FNT=N1
  93.       DO 110 I=1,K
  94.   110 P(I)=N(I)
  95.       DO 130 I=1,M
  96.       CMEAN(I)=0
  97.       N1=I-M
  98.       DO 120 J=1,K
  99.       N1=N1+M
  100.   120 CMEAN(I)=CMEAN(I)+P(J)*XBAR(N1)
  101.   130 CMEAN(I)=CMEAN(I)/FNT
  102. C
  103. C     CALCULATE GENERALIZED MAHALANOBIS D SQUARE
  104. C
  105.       L=0
  106.       DO 140 I=1,K
  107.       DO 140 J=1,M
  108.       L=L+1
  109.   140 C(L)=XBAR(L)-CMEAN(J)
  110.       V=0.0
  111.       L=0
  112.       DO 160 J=1,M
  113.       DO 160 I=1,M
  114.       N1=I-M
  115.       N2=J-M
  116.       SUM=0.0
  117.       DO 150 IJ=1,K
  118.       N1=N1+M
  119.       N2=N2+M
  120.   150 SUM=SUM+P(IJ)*C(N1)*C(N2)
  121.       L=L+1
  122.   160 V=V+D(L)*SUM
  123. C
  124. C     CALCULATE THE COEFFICIENTS OF DISCRIMINANT FUNCTIONS
  125. C
  126.       N2=0
  127.       DO 190 KA=1,K
  128.       DO 170 I=1,M
  129.       N2=N2+1
  130.   170 P(I)=XBAR(N2)
  131.       IQ=(M+1)*(KA-1)+1
  132.       SUM=0.0
  133.       DO 180 J=1,M
  134.       N1=J-M
  135.       DO 180 L=1,M
  136.       N1=N1+M
  137.   180 SUM=SUM+D(N1)*P(J)*P(L)
  138.       C(IQ)=-(SUM/2.0)
  139.       DO 190 I=1,M
  140.       N1=I-M
  141.       IQ=IQ+1
  142.       C(IQ)=0.0
  143.       DO 190 J=1,M
  144.       N1=N1+M
  145.   190 C(IQ)=C(IQ)+D(N1)*P(J)
  146. C
  147. C     FOR EACH CASE IN EACH GROUP, CALCULATE..
  148. C
  149. C        DISCRIMINANT FUNCTIONS
  150. C
  151.       LBASE=0
  152.       N1=0
  153.       DO 270 KG=1,K
  154.       NN=N(KG)
  155.       DO 260 I=1,NN
  156.       L=I-NN+LBASE
  157.       DO 200 J=1,M
  158.       L=L+NN
  159.   200 D(J)=X(L)
  160.       N2=0
  161.       DO 220 KA=1,K
  162.       N2=N2+1
  163.       SUM=C(N2)
  164.       DO 210 J=1,M
  165.       N2=N2+1
  166.   210 SUM=SUM+C(N2)*D(J)
  167.   220 XBAR(KA)=SUM
  168. C
  169. C        THE LARGEST DISCRIMINANT FUNCTION
  170. C
  171.       L=1
  172.       SUM=XBAR(1)
  173.       DO 240 J=2,K
  174.       IF(SUM-XBAR(J)) 230, 240, 240
  175.   230 L=J
  176.       SUM=XBAR(J)
  177.   240 CONTINUE
  178. C
  179. C        PROBABILITY ASSOCIATED WITH THE LARGEST DISCRIMINANT FUNCTION
  180. C
  181.       PL=0.0
  182.       DO 250 J=1,K
  183.   250 PL=PL+ EXP(XBAR(J)-SUM)
  184.       N1=N1+1
  185.       LG(N1)=L
  186.   260 P(N1)=1.0/PL
  187.   270 LBASE=LBASE+NN*M
  188. C
  189.       RETURN
  190.       END
  191.