You are here: Symbol Reference > Regress Namespace > Functions > Regress.ANOVA2 Function
Stats Master VCL
ContentsIndex
PreviousUpNext
Regress.ANOVA2 Function

Performs balanced two-way analysis of variance (ANOVA).

Pascal
function ANOVA2(const Data: TMtx; out pRows: double; out pCols: double; out pInt: double; Replications: Integer = 1; Alpha: double = 0.05): TANOVA2Result;
Parameters 
Description 
Data 
Stores the data to me analyzed. 
pRows 
Return the significance probability for the null hypothesis that rows, cols or interacted terms means are equal. These values have some meaning if Replications is more than 1. If any p is less than desired significance alpha then the result suggests the null hypothesis (rows mean, columns mean or interaction mean is not equal) can be rejected. 
pCols 
Return the significance probability for the null hypothesis that rows, cols or interacted terms means are equal. These values have some meaning if Replications is more than 1. If any p is less than desired significance alpha then the result suggests the null hypothesis (rows mean, columns mean or interaction mean is not equal) can be rejected. 
pInt 
Return the significance probability for the null hypothesis that rows, cols or interacted terms means are equal. These values have some meaning if Replications is more than 1. If any p is less than desired significance alpha then the result suggests the null hypothesis (rows mean, columns mean or interaction mean is not equal) can be rejected. 
Replications 
Defines the number of rows/cols replications. 
Alpha 
Desired significance level. 

Performs balanced two-way analysis of variance on ranks of data contained in Data matrix. The two-way analysis of variance compares the means of two or more rows and two or more columns. The data in different columns can be interpreted as change of one factor and data in different rows can be interpreted as changes in other factor. If there is more than one observation per row/column then you can set the number of row/column replications by changing Replications value to appropriate factor. An exception will be raised if (Data.Rows mod Replications) is not zero. Example layout for replication factor 2: 

 

        Group1      Group2        Group3       Group4
Trial1  xx          xx            xx           xx
        xx          xx            xx           xx
        xx          xx            xx           xx
Trial2  xx          xx            xx           xx
        xx          xx            xx           xx
        xx          xx            xx           xx

 

Both trials have 3 samples and data is in 4 groups.

This example shows the ANOVA on data with Replications set to 1 meaning there is no interaction.

Uses MtxExpr, Regress, Math387;
procedure Example;
var Data: Matrix;
  ANOVARes : TANOVA2Result;
  pRows, pCols, pInteract : double;
begin
  Data.SetIt(4,4,false,
            [2.5, 3.2, 4.2, 3.9,
             1.9, 3.5, 3.6, 3.7,
             3.4, 3.5, 3.3, 3.4,
             4.2, 5.0, 3.1, 2.4]);
  ANOVARes := ANOVA2(Data,pRows,pCols,pInteract,1); // no interaction !!
  // ANOVARes =(SS1:0.505; SS2:1.37; SS3:NAN; SS4:6.555; SSTotal:8.43 ;
  // Deg1: 3; Deg2:3 ; Deg3:+NAN; Deg4:9 ; DegTotal:15 ;
  // MS1:0.16833333333 ; MS2:0.45666666667 ; MS3:+NAN ; MS4:0.72833333333 ;
  //FDist1:0.12260277778 ; FDist2:0.33260555556 ; FDist3:+NAN ;
  // FCrit1:3.8625483576 ; FCrit2:3.8625483576 ; FCrit3:+NAN ;
  // pRows: 0.94442876898
  // pCols: 0.80219818603
  // pInteract: 2.0820886898e-307
end;
#include "MtxExpr.hpp"
#include "Regress.hpp"
#include "Math.hpp"
void __fastcall Example()
{
  sMatrix Data;
  Data.SetIt(4,4,false,OPENARRAY(double,(2.5, 3.2, 4.2, 3.9,
         1.9, 3.5, 3.6, 3.7,
         3.4, 3.5, 3.3, 3.4,
         4.2, 5.0, 3.1, 2.4)));
  double prows,pcols,pinteract;
  TANOVA2Result ar = ANOVA2(Data,prows,pcols,pinteract,1,0.05);
  // ar =(SS1:0.505; SS2:1.37; SS3:NAN; SS4:6.555; SSTotal:8.43 ;
  // Deg1: 3; Deg2:3 ; Deg3:+NAN; Deg4:9 ; DegTotal:15 ;
  // MS1:0.16833333333 ; MS2:0.45666666667 ; MS3:+NAN ; MS4:0.72833333333 ;
  //FDist1:0.12260277778 ; FDist2:0.33260555556 ; FDist3:+NAN ;
  // FCrit1:3.8625483576 ; FCrit2:3.8625483576 ; FCrit3:+NAN ;
  // pRows: 0.94442876898
  // pCols: 0.80219818603
  // pInteract: 2.0820886898e-307
}
Examples on GitHub

This example shows the ANOVA on data with Replications set to 2 meaning there are two rows/cols per "cell".

Uses MtxExpr, Regress, Math387;
procedure Example;
var Data: Matrix;
  ANOVARes : TANOVA2Result;
  pRows, pCols, pInteract : double;
begin
  Data.SetIt(4,4,false,
            [2.5, 3.2, 4.2, 3.9,
             1.9, 3.5, 3.6, 3.7,
             3.4, 3.5, 3.3, 3.4,
             4.2, 5.0, 3.1, 2.4]);
  ANOVARes := ANOVA2(Data,pRows,pCols,pInteract,2); // replications! two rows/cols per "cell"
  // ANOVARes =(SS1:0.2025; SS2:1.37; SS3:4.4675; SS4:2.39; SSTotal:8.43 ;
  // Deg1: 1; Deg2:3 ; Deg3:3; Deg4:8 ; DegTotal:15 ;
  // MS1:0.2025 ; MS2:0.45666666667 ; MS3:1.4891666667 ; MS4:0.29875 ;
  // FDist1:0.060496875 ; FDist2:0.13642916667 ; FDist3:0.44488854167 ;
  // FCrit1:5.3176550716 ; FCrit2:4.0661805514 ; FCrit3:4.0661805514 ;
  // pRows: 0.81190529881
  // pCols: 0.93549639694
  // pInteract: 0.72753486979
end;
#include "MtxExpr.hpp"
#include "Regress.hpp"
#include "Math.hpp"
void __fastcall Example()
{
  sMatrix Data;
  Data->SetIt(4,4,false,OPENARRAY(double,(2.5, 3.2, 4.2, 3.9,
             1.9, 3.5, 3.6, 3.7,
             3.4, 3.5, 3.3, 3.4,
             4.2, 5.0, 3.1, 2.4)));
  double prows,pcols,pinteract;
  TANOVA2Result ar = ANOVA2(Data,prows,pcols,pinteract,2,0.05);
  // ar =(SS1:0.2025; SS2:1.37; SS3:4.4675; SS4:2.39; SSTotal:8.43 ;
  // Deg1: 1; Deg2:3 ; Deg3:3; Deg4:8 ; DegTotal:15 ;
  // MS1:0.2025 ; MS2:0.45666666667 ; MS3:1.4891666667 ; MS4:0.29875 ;
  // FDist1:0.060496875 ; FDist2:0.13642916667 ; FDist3:0.44488854167 ;
  // FCrit1:5.3176550716 ; FCrit2:4.0661805514 ; FCrit3:4.0661805514 ;
  // pRows: 0.81190529881
  // pCols: 0.93549639694
  // pInteract: 0.72753486979
}
Examples on GitHub
Copyright (c) 1999-2025 by Dew Research. All rights reserved.
What do you think about this topic? Send feedback!