⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cntab1.pas

📁 Delphi Pascal 数据挖掘领域算法包 数值算法大全
💻 PAS
字号:
PROCEDURE cntab1(nn: narray; ni,nj: integer;
       VAR chisq,df,prob,cramrv,ccc: real);
(* Programs using routine CNTAB1 must define type
TYPE
   narray = ARRAY [1..ni,1..nj] OF integer;
in the calling routine. *)
CONST
   maxi=100;
   maxj=100;
   tiny=1.0e-30;
VAR
   nnj,nni,j,i,min: integer;
   sum,expctd: real;
   sumi: ARRAY[1..maxi] OF real;
   sumj: ARRAY[1..maxj] OF real;
BEGIN
   sum := 0;
   nni := ni;
   nnj := nj;
   FOR i := 1 TO ni DO BEGIN
      sumi[i] := 0.0;
      FOR j := 1 TO nj DO BEGIN
         sumi[i] := sumi[i]+nn[i,j];
         sum := sum+nn[i,j];
      END;
      IF (sumi[i] = 0.0) THEN nni := nni-1;
   END;
   FOR j := 1 TO nj DO BEGIN
      sumj[j] := 0.0;
      FOR i := 1 TO ni DO BEGIN
         sumj[j] := sumj[j]+nn[i,j];
      END;
      IF (sumj[j] = 0.0) THEN nnj := nnj-1;
   END;
   df := nni*nnj-nni-nnj+1;
   chisq := 0.0;
   FOR i := 1 TO ni DO BEGIN
      FOR j := 1 TO nj DO BEGIN
         expctd := sumj[j]*sumi[i]/sum;
         chisq := chisq+sqr(nn[i,j]-expctd)/(expctd+tiny)
      END
   END;
   prob := gammq(0.5*df,0.5*chisq);
   IF ((nni-1) < (nnj-1)) THEN BEGIN
      min := nni-1
   END ELSE BEGIN
      min := nnj-1
   END;
   cramrv := sqrt(chisq/(sum*min));
   ccc := sqrt(chisq/(chisq+sum))
END;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -