/*********************************************************************** * Program to compute three-factor analysis of variance * with equal replication. * * Author: M.V.Wickerhauser * Date: 28 March 2005 * */ #include #include #include /* ********** STATIC (LOCAL) FUNCTIONS ********** */ /* ************************************************************ * Make and return a 1-dimensional array X[a] */ static float * array1d(int a) { float *x; x = (float *)malloc(a*sizeof(float)); assert(x); return x; } /* ************************************************************ * Make and return a 2-dimensional array X[a][b] */ static float ** array2d(int a, int b) { float **x; int i; x = (float **)malloc(a*sizeof(float *)); assert(x); for(i=0; i0) msE = ssE/dfE; /* ******************** OUTPUT ******************** */ printf("-------------------------------------------------------------\n"); printf("Source of variation Sum of squares DF Mean Square\n"); printf("-------------------------------------------------------------\n"); printf("Total %12.3f %3d %12.3f\n", ssT, dfT, msT ); printf("Cells %12.3f %3d %12.3f\n", ssc, dfc, msc ); printf("Factor A %12.3f %3d %12.3f\n", ssA, dfA, msA ); printf("Factor B %12.3f %3d %12.3f\n", ssB, dfB, msB ); printf("Factor C %12.3f %3d %12.3f\n", ssC, dfC, msC ); printf("A x B Interaction %12.3f %3d %12.3f\n", ssAB, dfAB, msAB ); printf("A x C Interaction %12.3f %3d %12.3f\n", ssAC, dfAC, msAC ); printf("B x C Interaction %12.3f %3d %12.3f\n", ssBC, dfBC, msBC ); printf("A x B x C Interaction %12.3f %3d %12.3f\n", ssABC, dfABC, msABC ); if(dfE>0) { printf("Within-cell errors %12.3f %3d %12.3f\n", ssE, dfE, msE ); printf("-------------------------------------------------------------\n"); printf("Source of F value num DF den DF F \n"); printf("-------------------------------------------------------------\n"); printf("(Factor A MS) / (Error MS) %3d %3d %12.3f\n", dfA, dfE, msA/msE ); printf("(Factor B MS) / (Error MS) %3d %3d %12.3f\n", dfB, dfE, msB/msE ); printf("(Factor C MS) / (Error MS) %3d %3d %12.3f\n", dfC, dfE, msC/msE ); printf(" (A x B MS) / (Error MS) %3d %3d %12.3f\n", dfAB, dfE, msAB/msE ); printf(" (A x C MS) / (Error MS) %3d %3d %12.3f\n", dfAC, dfE, msAC/msE ); printf(" (B x C MS) / (Error MS) %3d %3d %12.3f\n", dfBC, dfE, msBC/msE ); printf(" (A x B x C MS) / (Error MS) %3d %3d %12.3f\n", dfABC, dfE, msABC/msE ); } printf("-------------------------------------------------------------\n"); return 0; }