home *** CD-ROM | disk | FTP | other *** search
- stanvl(lcd,lcm,n,m,d,ans,t)
-
- /* this function computes the analysis of variance table */
- /* for a simple latin square design. */
-
- int lcd,lcm,m[],n;
- float ans[],d[],t[];
-
- {
- int i,ijd,ijm,j,ji,k,klrd;
- float anst,c,r,sumx,sumx2,sumc2,sumr2,sumt,sumt2,xn;
-
- for(i = 0; i <= n-1; i++)
- t[i] = 0.;
- sumx = 0.;
- sumx2 = 0.;
- sumc2 = 0.;
- sumr2 = 0.;
- klrd = 0;
-
- for( i = 0; i <= n-1; i++)
- {
- r = 0.;
- c = 0.;
- ijd = i * lcd;
- ijm = i * lcm;
-
- for(j = 0; j <= n-1; j++)
- {
- ji = klrd + j * lcd;
- sumx = sumx + d[ijd];
- sumx2 = sumx2 + d[ijd] * d[ijd];
- c = c + d[ji];
- k = m[ijm];
- t[k-1] = t[k-1] + d[ijd];
- r = r + d[ijd];
- ijd = ijd + 1;
- ijm = ijm + 1;
- }
- klrd = klrd + 1;
- sumc2 = sumc2 + c * c;
- sumr2 = sumr2 + r * r;
- }
- sumt2 = 0.;
-
- for(i = 0; i <= n-1; i++)
- sumt2 = sumt2 + t[i] * t[i];
- xn = n;
- c = sumx * sumx / (xn * xn);
- ans[0] = sumr2 / xn - c;
- ans[4] = sumc2 / xn - c;
- ans[8] = sumt2 / xn - c;
- ans[1] = n - 1;
- ans[2] = ans[0] / ans[1];
- ans[13] = ans[1] * (xn - 2.);
- ans[12] = sumx2 - c - ans[0] - ans[4] - ans[8];
- ans[14] = ans[12] / ans[13];
- ans[6] = ans[4] / ans[1];
- ans[10] = ans[8] / ans[1];
- anst = ans[1] * ans[14];
- ans[3] = ans[0] / anst;
- ans [7] = ans[4] / anst;
- ans[11] = ans[8] / anst;
- ans[5] = ans[1];
- ans[9] = ans[1];
- }
-