home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / C-SSP.ARJ / STLNRG.C < prev    next >
Encoding:
Text File  |  1984-08-30  |  1.7 KB  |  67 lines

  1.    stlnrg(k,nyval,xy,ans)
  2.  
  3.       /* this function computes the slope and other statistics    */
  4.       /* for a linear regression with several y values for each x */
  5.       /* value or with one independent variable.                  */
  6.  
  7.       int k,nyval[];
  8.       float xy[],ans[];
  9.  
  10.    {
  11.  
  12.       int i,j,m,n,nx,ny;
  13.       float a12,a13,en,ends1,en1,en2,s1,s2,s4,sumx,sumx2,sumxy,sumy;
  14.       extern double sqrt();
  15.  
  16.       sumx = 0.;
  17.       sumx2 = 0.;
  18.       sumy = 0.;
  19.       ans[5] = 0.;
  20.       sumxy = 0.0;
  21.       n = 0;
  22.       nx = 1;
  23.       ny = 2;
  24.  
  25.       for(j = 1; j <= k; j++)
  26.       {
  27.        m = nyval[j-1];
  28.        n = n + m;
  29.  
  30.        for(i = 1; i <= m; i++)
  31.        {
  32.         sumx = sumx + xy[nx-1];
  33.         sumx2 = sumx2 + xy[nx-1] * xy[nx-1];
  34.         sumy = sumy + xy[ny-1];
  35.         ans[5] = ans[5] + xy[ny-1] * xy[ny-1];
  36.         sumxy = sumxy + xy[nx-1] * xy[ny-1];
  37.         ny++;
  38.        }
  39.        nx = nx + nyval[j-1] + 1;
  40.        ny++;
  41.       }
  42.       en = n;
  43.       ans[0] = en;
  44.       s1 = ans[0] * sumx2 - sumx * sumx;
  45.       s2 = ans[0] * sumxy - sumx * sumy;
  46.       en1 = en - 1.;
  47.       en2 = en1 - 1.;
  48.       ans[1] = s2 / s1;
  49.       ans[2] = sumy / en;
  50.       ans[3] = sumx / en;
  51.       ans[4] = ans[2] - ans[1] * ans[3];
  52.       ans[6] = ans[2] * sumy;
  53.       ans[7] = ans[1] * s2 / en;
  54.       ans[8] = ans[5] - ans[6] - ans[7];
  55.       s4 = ans[8] / (en - 2.);
  56.       ends1 = en / s1;
  57.       ans[9] = sqrt(1./(en1 * ends1));
  58.       ans[10] = sqrt((ans[5] - ans[6]) / en1);
  59.       ans[11] = sqrt(s4);
  60.       a12 = s4 / en;
  61.       ans[12] = sqrt(a12);
  62.       a13 = s4 * ends1;
  63.       ans[13] = sqrt(a13);
  64.       ans[14] = sqrt(a12 + a13 * ans[3] * ans[3]);
  65.       ans[15] = ans[7] / s4;
  66.    }
  67.