LazStats: Refactor BlkAnovaUnit.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7854 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2020-11-10 15:11:42 +00:00
parent bc5987793a
commit 43496a10e8
3 changed files with 1174 additions and 924 deletions

View File

@@ -641,15 +641,16 @@ inherited BlksAnovaForm: TBlksAnovaForm
Height = 537 Height = 537
Width = 485 Width = 485
ActivePage = PosthocPage ActivePage = PosthocPage
TabIndex = 2
inherited ReportPage: TTabSheet inherited ReportPage: TTabSheet
Caption = 'ANOVA Results' Caption = 'ANOVA Results'
end end
object PosthocPage: TTabSheet[1] inherited ChartPage: TTabSheet
Caption = 'Plots'
end
object PosthocPage: TTabSheet[2]
Caption = 'Post-Hoc' Caption = 'Post-Hoc'
TabVisible = False TabVisible = False
end end
inherited ChartPage: TTabSheet[2]
Caption = 'Plots'
end
end end
end end

View File

@@ -886,27 +886,27 @@ begin
Constant := sqr(MeanDep) / N; Constant := sqr(MeanDep) / N;
GrandMean := MeanDep / N; GrandMean := MeanDep / N;
// Get ss for rows // Get SS for rows
SSF1 := 0; SSF1 := 0;
RowsTotCnt := 0; RowsTotCnt := 0;
for i := 0 to NoGrpsA - 1 do for i := 0 to NoGrpsA - 1 do
begin begin
SSF1 := SSF1 + RowSums[i] * RowSums[i] / RowCount[i]; SSF1 := SSF1 + sqr(RowSums[i]) / RowCount[i];
RowsTotCnt := RowsTotCnt + RowCount[i]; RowsTotCnt := RowsTotCnt + RowCount[i];
end; end;
SSF1 := SSF1 - Constant; SSF1 := SSF1 - Constant;
// Get ss for columns // Get SS for columns
SSF2 := 0; SSF2 := 0;
ColsTotCnt := 0; ColsTotCnt := 0;
for j := 0 to NoGrpsB - 1 do for j := 0 to NoGrpsB - 1 do
begin begin
SSF2 := SSF2 + ColSums[j] * ColSums[j] / ColCount[j]; SSF2 := SSF2 + sqr(ColSums[j]) / ColCount[j];
ColsTotCnt := ColsTotCnt + ColCount[j]; ColsTotCnt := ColsTotCnt + ColCount[j];
end; end;
SSF2 := SSF2 - Constant; SSF2 := SSF2 - Constant;
// Get ss for slices // Get SS for slices
SSF3 := 0; SSF3 := 0;
SlcsTotCnt := 0; SlcsTotCnt := 0;
for k := 0 to NoGrpsC - 1 do for k := 0 to NoGrpsC - 1 do
@@ -1016,6 +1016,7 @@ begin
else else
DFErr := DFTot - DFF1 - DFF2 - DFF3; DFErr := DFTot - DFF1 - DFF2 - DFF3;
DFBalance := DFErr - 1; DFBalance := DFErr - 1;
MSF1 := SSF1 / DFF1; MSF1 := SSF1 / DFF1;
MSF2 := SSF2 / DFF2; MSF2 := SSF2 / DFF2;
MSF3 := SSF3 / DFF3; MSF3 := SSF3 / DFF3;
@@ -1025,6 +1026,7 @@ begin
MSErr := SSErr / DFErr; MSErr := SSErr / DFErr;
MSDep := SSDep / DFTot; MSDep := SSDep / DFTot;
MSBalance := SSBalance / DFBalance; MSBalance := SSBalance / DFBalance;
OmegaF1 := (SSF1 - DFF1 * MSErr) / (SSDep + MSErr); OmegaF1 := (SSF1 - DFF1 * MSErr) / (SSDep + MSErr);
OmegaF2 := (SSF2 - DFF2 * MSErr) / (SSDep + MSErr); OmegaF2 := (SSF2 - DFF2 * MSErr) / (SSDep + MSErr);
OmegaF3 := (SSF3 - DFF3 * MSErr) / (SSDep + MSErr); OmegaF3 := (SSF3 - DFF3 * MSErr) / (SSDep + MSErr);