LazStats: Inherit BNestAUnit from BasicStatsReportAndChartForm. Refactor. Add test data file from OpenStat samples. Refine ABCNestedUnit.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7866 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2020-11-13 17:49:49 +00:00
parent a6ac93ef34
commit 817793a779
8 changed files with 1077 additions and 847 deletions

View File

@ -71,4 +71,5 @@ correlation, means, standard deviations and confidence interval for each correla
167=Notes: This is a non-parametric analysis of ordinal data.\nIt is similar to a two-way Analysis of Variance but utilizes a chi-square statistic (H) for determining the significance of the row, column and interaction effects. The dependent value, if not initially rank data, may be obtained first by creating a new variable with the "transformation" procedure available under the "Variables" menu. The output of this procedure contains the results both of a "traditional" 2-way ANOVA as well as the SRH results.\nIt should be noted that the power of the SRH analysis is less than that of the traditional ANOVA. It is suggested that there be at least 5 or more cases in each cell and that the design is a balanced design of fixed levels.\nThe H statistic is obtained as the division of the sum of squares for an effect by the mean square of the total and the test is performed by a chi-squared probability with the degrees of freedom equal to the SS of the effect being tested.
168=This procedure lets you enter the number of observed values and the number of expected values for one or more categories.\nEnter the values as indicated and when finished, press the compute button.
169=Directions:\nFor independent groups data, first click the variable to be analyzed then click the variable containing group codes.\nFor dependent variables it is assumed the data for each pair of values are in a case.\nEnter the names of those two variables.
170=Directions:\nThis analysis assumes that levels of Factor B are Nested within levels of Factor A. It is assumed that all factors are fixed level factors.\n\nThe variables for the group coding should be defined as integers. The dependent variable should be defined as a floating point variable. The number of cases for each ABC group should be equal and the number of B treatments in in each A level should be equal. The number of C treatment levels should be the same for each AB combination.\n\nClick the variable for each factor variable and the corresponding arrow to enter it in the edit box for that variable. Select the type of plot desired for the means (if any.) Click the Compute button to continue.
170=Directions:\nThis analysis assumes that levels of Factor B are nested within levels of Factor A. It is assumed that all factors are fixed level factors.\n\nThe variables for the group coding should be defined as integers. The dependent variable should be defined as a floating point variable. The number of cases for each ABC group should be equal and the number of B treatments in in each A level should be equal. The number of C treatment levels should be the same for each AB combination.\n\nClick the variable for each factor variable and the corresponding arrow to enter it in the edit box for that variable. Select the type of plot desired for the means (if any.) Click the Compute button to continue.
171=Directions: This analysis assumes that levels of Factor B are nested within levels of Factor A. Unless otherwise specified, it is assumed that Factors A and B are fixed level factors. If Factor B is a random variable, check the provided box to indicate this.\n\nThe number of cases for each B group should be equal and the number of B treatements in each A level should be equal.

View File

@ -0,0 +1,135 @@
27
3
A
VARIABLE 1
1
I
0
99999
L
B
VARIABLE 2
1
I
0
99999
L
Dep
VARIABLE 3
4
F
1
99999
L
Case 0
A
B
Dep
Case 1
1
1
1.00
Case 2
1
1
3.00
Case 3
1
1
4.00
Case 4
1
2
2.00
Case 5
1
2
3.00
Case 6
1
2
5.00
Case 7
1
3
3.00
Case 8
1
3
3.00
Case 9
1
3
6.00
Case 10
2
4
2.00
Case 11
2
4
4.00
Case 12
2
4
5.00
Case 13
2
5
3.00
Case 14
2
5
4.00
Case 15
2
5
5.00
Case 16
2
6
4.00
Case 17
2
6
5.00
Case 18
2
6
6.00
Case 19
3
7
3.00
Case 20
3
7
3.00
Case 21
3
7
5.00
Case 22
3
8
4.00
Case 23
3
8
5.00
Case 24
3
8
6.00
Case 25
3
9
6.00
Case 26
3
9
6.00
Case 27
3
9
7.00

View File

@ -0,0 +1,28 @@
A B Dep
1 1 1.00
1 1 3.00
1 1 4.00
1 2 2.00
1 2 3.00
1 2 5.00
1 3 3.00
1 3 3.00
1 3 6.00
2 4 2.00
2 4 4.00
2 4 5.00
2 5 3.00
2 5 4.00
2 5 5.00
2 6 4.00
2 6 5.00
2 6 6.00
3 7 3.00
3 7 3.00
3 7 5.00
3 8 4.00
3 8 5.00
3 8 6.00
3 9 6.00
3 9 6.00
3 9 7.00

View File

@ -1,7 +1,7 @@
inherited ABCNestedForm: TABCNestedForm
Left = 383
Left = 441
Height = 481
Top = 191
Top = 202
Width = 843
Caption = 'Three-Factor Nested ANOVA'
ClientHeight = 481

View File

@ -123,8 +123,9 @@ implementation
{$R *.lfm}
uses
Math,
TAChartUtils, TACustomSource, TALegend, TASeries,
Utils, Math, MathUnit, MatrixUnit, GridProcs, ChartFrameUnit;
Utils, MathUnit, MatrixUnit, GridProcs, ChartFrameUnit;
{ TABCNestedForm }
@ -140,6 +141,9 @@ begin
MeansPage.PageIndex := 1;
FChartFrame.Chart.Margins.Bottom := 0;
FChartFrame.Chart.BottomAxis.AxisPen.Visible := true;
FChartFrame.Chart.BottomAxis.ZPosition := 1;
FChartFrame.Chart.BottomAxis.Grid.Visible := false;
AddComboboxToToolbar(FChartFrame.ChartToolbar, 'Plots:', FChartCombobox);
FChartCombobox.OnSelect := @SelectPlot;
@ -391,78 +395,7 @@ begin
Result := true;
end;
(*
SetLength(ColNoSelected, 4);
ACol := -1;
BCol := -1;
CCol := -1;
YCol := -1;
MinA := MaxInt;
MaxA := -MaxInt;
MinB := MaxInt;
MaxB := -MaxInt;
MinC := MaxInt;
MaxC := -MaxInt;
for i := 1 to NoVariables do
begin
strvalue := Trim(OS3MainFrm.DataGrid.Cells[i,0]);
if FactorAEdit.Text = strvalue then
begin
ACol := i;
ColNoSelected[0] := i;
end;
if FactorBEdit.Text = strvalue then
begin
BCol := i;
ColNoSelected[1] := i;
end;
if FactorCEdit.Text = strvalue then
begin
CCol := i;
ColNoSelected[2] := i;
end;
if DepEdit.Text = strvalue then
begin
YCol := i;
ColNoSelected[3] := i;
end;
end;
if (ACol = -1) or (BCol = -1) or (CCol = -1) or (YCol = -1) then
begin
MessageDlg('Select a variable for each entry box.', mtError, [mbOK], 0);
exit;
end;
// get number of levels for Factors
for i := 1 to NoCases do
begin
cellstring := Trim(OS3MainFrm.DataGrid.Cells[ACol,i]);
group := round(StrToFloat(cellstring));
if (group > MaxA) then MaxA := group;
if (group < MinA) then MinA := group;
cellstring := Trim(OS3MainFrm.DataGrid.Cells[BCol,i]);
group := round(StrToFLoat(cellstring));
if (group > MaxB) then MaxB := group;
if (group < MinB) then MinB := group;
cellstring := Trim(OS3MainFrm.DataGrid.Cells[CCol,i]);
group := round(StrToFLoat(cellstring));
if (group > MaxC) then MaxC := group;
if (group < MinC) then MinC := group;
end;
NoALevels := MaxA - MinA + 1;
NoBLevels := MaxB - MinB + 1;
NoCLevels := MaxC - MinC + 1;
Result := true;
end;
*)
{ Allocates memory for all arrays needed. Setting the dynamic arrays to nil
before allocation automatically resets the array contents. }
procedure TABCNestedForm.GetMemory;
begin
SS := CubeCreate(NoBLevels, NoALevels, NoCLevels);
@ -503,12 +436,10 @@ VAR
Aindex, Bindex, Cindex, i, j, k: integer;
YValue, YValueSqr: double;
begin
// clear memory
// Accumulate sums and sums of squared values
SSTot := 0.0;
SumSqrTot := 0.0;
TotN := 0;
// Accumulate sums and sums of squared values
for i := 0 to High(DepValues) do
begin
AIndex := round(AValues[i]) - MinA;
@ -637,51 +568,69 @@ begin
lReport.Add('');
lReport.Add('CELL MEANS');
lReport.Add('-----------------------------------------------------');
lReport.Add('A LEVEL B LEVEL C LEVEL MEAN STD.DEV. ');
lReport.Add('------- ------- ------- ---------- ----------');
for i := 0 to NoALevels-1 do
for j := 0 to NoBLevels-1 do
for k := 0 to NoCLevels-1 do
if CellCount[j,i,k] > 0 then
lReport.Add('%5d %5d %5d %10.4f %10.4f', [i+MinA, j+MinB, k+MinC, CellMeans[j,i,k], CellSDs[j,i,k]]);
lReport.Add('%5d %5d %5d %10.3f %10.3f', [i+MinA, j+MinB, k+MinC, CellMeans[j,i,k], CellSDs[j,i,k]]);
lReport.Add('-----------------------------------------------------');
lReport.Add('');
lReport.Add('A MARGIN MEANS');
lReport.Add('---------------------------------');
lReport.Add('A LEVEL MEAN STD.DEV. ');
lReport.Add('------- ---------- ----------');
for i := 0 to NoALevels-1 do
lReport.Add('%5d %10.3f %10.3f', [i+MinA, AMeans[i], ASDs[i]]);
lReport.Add('---------------------------------');
lReport.Add('');
lReport.Add('B MARGIN MEANS');
lReport.Add('---------------------------------');
lReport.Add('B LEVEL MEAN STD.DEV. ');
lReport.Add('------- ---------- ----------');
for i := 0 to NoBLevels-1 do
if BCount[i] > 0 then
lReport.Add('%5d %10.3f %10.3f', [i+MinB, BMeans[i], BSDs[i]]);
lReport.Add('---------------------------------');
lReport.Add('');
lReport.Add('C MARGIN MEANS');
lReport.Add('---------------------------------');
lReport.Add('C LEVEL MEAN STD.DEV. ');
lReport.Add('------- ---------- ----------');
for i := 0 to NoCLevels-1 do
if CCount[i] > 0 then
lReport.Add('%5d %10.3f %10.3f', [i+MinC, CMeans[i], CSDs[i]]);
lReport.Add('---------------------------------');
lReport.Add('');
lReport.Add('AB MARGIN MEANS');
lReport.Add('-------------------------------------------');
lReport.Add('A LEVEL B LEVEL MEAN STD.DEV. ');
lReport.Add('------- ------- ---------- ----------');
for i := 0 to NoALevels-1 do
for j := 0 to NoBLevels-1 do
if ABCount[i,j] > 0 then
lReport.Add('%5d %5D %10.3f %10.3f', [i+MinA, j+MinB, ABMeans[i,j], ABSDs[i,j]]);
lReport.Add('%5d %5d %10.3f %10.3f', [i+MinA, j+MinB, ABMeans[i,j], ABSDs[i,j]]);
lReport.Add('-------------------------------------------');
lReport.Add('');
lReport.Add('AC MARGIN MEANS');
lReport.Add('-------------------------------------------');
lReport.Add('A LEVEL C LEVEL MEAN STD.DEV. ');
lReport.Add('------- ------- ---------- ----------');
for i := 0 to NoALevels-1 do
for j := 0 to NoCLevels-1 do
if ACCount[i,j] > 0 then
lReport.Add('%5d %5D %10.3f %10.3f',[i+MinA, j+MinC, ACMeans[i,j], ACSDs[i,j]]);
lReport.Add('%5d %5d %10.3f %10.3f',[i+MinA, j+MinC, ACMeans[i,j], ACSDs[i,j]]);
lReport.Add('-------------------------------------------');
lReport.Add('');
lReport.Add('GRAND MEAN = %10.3f', [TotMean]);
lReport.Add('GRAND MEAN: %10.3f', [TotMean]);
lReport.Add('');
FMeansReportFrame.DisplayReport(lReport);
@ -805,7 +754,7 @@ begin
lReport.Add('Factor C: %s', [FactorCEdit.Text]);
lReport.Add('');
lReport.Add('ANOVA TABLE');
lReport.Add('------------------------------------------------------------');
lReport.Add('-------------------------------------------------------------');
lReport.Add('SOURCE D.F. SS MS F PROB. ');
lReport.Add('--------- ---- ---------- ---------- --------- ---------');
@ -831,7 +780,7 @@ begin
lReport.Add('w.cells %4d %10.3f %10.3f', [dfwcell, SSW, MSW]);
lReport.Add('Total %4d %10.3f', [dftotal, SSTot]);
lReport.Add('------------------------------------------------------------');
lReport.Add('-------------------------------------------------------------');
FReportFrame.DisplayReport(lReport);

View File

@ -196,30 +196,6 @@ begin
FStyles := TChartStyles.Create(FChartFrame);
AddComboboxToToolbar(FChartFrame.ChartToolbar, 'Plots:', FChartCombobox);
{
panel := TPanel.Create(FChartFrame.ChartToolbar);
lbl := TLabel.Create(panel);
lbl.Parent := panel;
lbl.Caption := 'Plots:';
FChartCombobox := TCombobox.Create(panel);
FChartCombobox.Parent := panel;
FChartCombobox.Style := csDropdownList;
FChartCombobox.DropdownCount := 24;
FChartCombobox.Items.Clear;
FChartCombobox.Constraints.MinWidth := 300;
lbl.AnchorSideLeft.Side := asrTop;
lbl.AnchorSideLeft.Control := panel;
lbl.AnchorSideTop.Side := asrCenter;
lbl.AnchorSideTop.Control := FChartCombobox;
FChartCombobox.AnchorSideLeft.Control := lbl;
FChartCombobox.AnchorSideLeft.Side := asrBottom;
FChartCombobox.BorderSpacing.Left := 6;
FChartCombobox.BorderSpacing.Around := 2;
panel.Parent := FChartFrame.ChartToolbar;
panel.AutoSize := true;
panel.BevelInner := bvNone;
panel.BevelOuter := bvNone;
}
FChartFrame.Chart.Margins.Bottom := 0;
PageControl.ActivePageIndex := 0;

View File

@ -1,370 +1,330 @@
object BNestedAForm: TBNestedAForm
inherited BNestedAForm: TBNestedAForm
Left = 768
Height = 498
Height = 432
Top = 238
Width = 488
AutoSize = True
Width = 544
Caption = 'Factor B Nested in Factor A Analysis of Variance'
ClientHeight = 498
ClientWidth = 488
OnActivate = FormActivate
OnCreate = FormCreate
OnShow = ResetBtnClick
Position = poMainFormCenter
LCLVersion = '2.0.10.0'
object Label1: TLabel
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Memo1
AnchorSideTop.Side = asrBottom
Left = 8
Height = 15
Top = 114
Width = 100
BorderSpacing.Left = 8
BorderSpacing.Top = 16
Caption = 'Available Variables:'
ParentColor = False
ClientHeight = 432
ClientWidth = 544
inherited ParamsPanel: TPanel
Height = 416
Width = 315
ClientHeight = 416
ClientWidth = 315
inherited CloseBtn: TButton
Left = 260
Top = 391
TabOrder = 15
end
object Label2: TLabel
AnchorSideLeft.Control = AInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideBottom.Control = ACodes
Left = 266
Height = 15
Top = 138
Width = 88
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 2
Caption = 'Factor A Variable'
ParentColor = False
inherited ComputeBtn: TButton
Left = 176
Top = 391
TabOrder = 14
end
object Label3: TLabel
AnchorSideLeft.Control = BInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideBottom.Control = BCodes
Left = 266
Height = 15
Top = 222
Width = 115
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 2
Caption = 'Factor B (Nested in A)'
ParentColor = False
inherited ResetBtn: TButton
Left = 114
Top = 391
TabOrder = 13
end
object Label4: TLabel
AnchorSideLeft.Control = DepInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideBottom.Control = DepEdit
Left = 266
Height = 15
Top = 317
Width = 102
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 2
Caption = 'Dependent Variable'
ParentColor = False
inherited HelpBtn: TButton
Tag = 171
Left = 55
Top = 391
TabOrder = 12
end
object VarList: TListBox
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Label1
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = AInBtn
AnchorSideBottom.Control = OptionsBox
Left = 9
Height = 239
Top = 130
Width = 213
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Left = 9
BorderSpacing.Top = 1
BorderSpacing.Right = 8
BorderSpacing.Bottom = 8
ItemHeight = 0
MultiSelect = True
OnSelectionChange = VarListSelectionChange
TabOrder = 0
inherited ButtonBevel: TBevel
Top = 375
Width = 315
end
object AInBtn: TBitBtn
AnchorSideLeft.Control = Owner
object AInBtn: TBitBtn[5]
AnchorSideLeft.Control = ParamsPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = VarList
Left = 230
Height = 28
Top = 130
Width = 28
AnchorSideTop.Control = DepOutBtn
AnchorSideTop.Side = asrBottom
Left = 144
Height = 26
Top = 96
Width = 26
BorderSpacing.Top = 24
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = AInBtnClick
Spacing = 0
TabOrder = 1
TabOrder = 4
end
object AOutBtn: TBitBtn
AnchorSideLeft.Control = Owner
object AOutBtn: TBitBtn[6]
AnchorSideLeft.Control = ParamsPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = AInBtn
AnchorSideTop.Side = asrBottom
Left = 230
Height = 28
Top = 162
Width = 28
Left = 144
Height = 26
Top = 126
Width = 26
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = AOutBtnClick
Spacing = 0
TabOrder = 2
TabOrder = 5
end
object BInBtn: TBitBtn
AnchorSideLeft.Control = Owner
object BInBtn: TBitBtn[7]
AnchorSideLeft.Control = ParamsPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = AOutBtn
AnchorSideTop.Side = asrBottom
Left = 230
Height = 28
Top = 214
Width = 28
Left = 144
Height = 26
Top = 176
Width = 26
BorderSpacing.Top = 24
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = BInBtnClick
Spacing = 0
TabOrder = 4
TabOrder = 7
end
object BOutBtn: TBitBtn
AnchorSideLeft.Control = Owner
object BOutBtn: TBitBtn[8]
AnchorSideLeft.Control = ParamsPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = BInBtn
AnchorSideTop.Side = asrBottom
Left = 230
Height = 28
Top = 246
Width = 28
Left = 144
Height = 26
Top = 206
Width = 26
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = BOutBtnClick
Spacing = 0
TabOrder = 5
TabOrder = 8
end
object DepInBtn: TBitBtn
AnchorSideLeft.Control = Owner
object DepInBtn: TBitBtn[9]
AnchorSideLeft.Control = ParamsPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = RandomBChk
AnchorSideTop.Side = asrBottom
Left = 230
Height = 28
Top = 309
Width = 28
BorderSpacing.Top = 8
AnchorSideTop.Control = VarList
Left = 144
Height = 26
Top = 16
Width = 26
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = DepInBtnClick
Spacing = 0
TabOrder = 8
TabOrder = 1
end
object DepOutBtn: TBitBtn
AnchorSideLeft.Control = Owner
object DepOutBtn: TBitBtn[10]
AnchorSideLeft.Control = ParamsPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = DepInBtn
AnchorSideTop.Side = asrBottom
Left = 230
Height = 28
Top = 341
Width = 28
Left = 144
Height = 26
Top = 46
Width = 26
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = DepOutBtnClick
Spacing = 0
TabOrder = 9
TabOrder = 2
end
object ACodes: TEdit
object Label1: TLabel[11]
AnchorSideLeft.Control = ParamsPanel
AnchorSideTop.Control = ParamsPanel
Left = 0
Height = 15
Top = 0
Width = 100
Caption = 'Available Variables:'
ParentColor = False
end
object VarList: TListBox[12]
AnchorSideLeft.Control = ParamsPanel
AnchorSideTop.Control = Label1
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = AInBtn
AnchorSideBottom.Control = PlotOptionsGroup
Left = 0
Height = 279
Top = 16
Width = 138
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Top = 1
BorderSpacing.Right = 6
BorderSpacing.Bottom = 8
ItemHeight = 0
MultiSelect = True
OnDblClick = VarListDblClick
OnSelectionChange = VarListSelectionChange
TabOrder = 0
end
object Label2: TLabel[13]
AnchorSideLeft.Control = AInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideBottom.Control = ACodesEdit
Left = 170
Height = 15
Top = 100
Width = 88
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Factor A Variable'
ParentColor = False
end
object Label3: TLabel[14]
AnchorSideLeft.Control = BCodesEdit
AnchorSideBottom.Control = BCodesEdit
Left = 176
Height = 15
Top = 180
Width = 115
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Factor B (Nested in A)'
ParentColor = False
end
object Label4: TLabel[15]
AnchorSideLeft.Control = DepEdit
AnchorSideBottom.Control = DepEdit
Left = 176
Height = 15
Top = 20
Width = 102
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Dependent Variable'
ParentColor = False
end
object ACodesEdit: TEdit[16]
AnchorSideLeft.Control = AInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = ParamsPanel
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = AOutBtn
AnchorSideBottom.Side = asrBottom
Left = 266
Left = 176
Height = 23
Top = 155
Width = 214
Top = 117
Width = 139
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Right = 8
BorderSpacing.Bottom = 12
ReadOnly = True
TabOrder = 3
Text = 'ACodes'
end
object BCodes: TEdit
AnchorSideLeft.Control = BInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = BOutBtn
AnchorSideBottom.Side = asrBottom
Left = 266
Height = 23
Top = 239
Width = 214
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Right = 8
BorderSpacing.Left = 6
BorderSpacing.Bottom = 12
ReadOnly = True
TabOrder = 6
Text = 'BCodes'
Text = 'ACodesEdit'
end
object ResetBtn: TButton
AnchorSideRight.Control = ComputeBtn
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 275
Height = 25
Top = 465
Width = 54
Anchors = [akRight, akBottom]
AutoSize = True
BorderSpacing.Left = 12
BorderSpacing.Top = 8
BorderSpacing.Right = 8
BorderSpacing.Bottom = 8
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 12
end
object ComputeBtn: TButton
AnchorSideRight.Control = CloseBtn
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 337
Height = 25
Top = 465
Width = 76
Anchors = [akRight, akBottom]
AutoSize = True
BorderSpacing.Left = 8
BorderSpacing.Top = 8
BorderSpacing.Right = 8
BorderSpacing.Bottom = 8
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 13
end
object CloseBtn: TButton
AnchorSideRight.Control = Owner
object BCodesEdit: TEdit[17]
AnchorSideLeft.Control = BInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = ParamsPanel
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = Owner
AnchorSideBottom.Control = BOutBtn
AnchorSideBottom.Side = asrBottom
Left = 421
Height = 25
Top = 465
Width = 55
Anchors = [akRight, akBottom]
AutoSize = True
BorderSpacing.Left = 8
BorderSpacing.Top = 8
BorderSpacing.Right = 12
BorderSpacing.Bottom = 8
Caption = 'Close'
ModalResult = 11
TabOrder = 14
Left = 176
Height = 23
Top = 197
Width = 139
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 6
BorderSpacing.Bottom = 12
ReadOnly = True
TabOrder = 9
Text = 'BCodesEdit'
end
object DepEdit: TEdit
object DepEdit: TEdit[18]
AnchorSideLeft.Control = DepInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Control = ParamsPanel
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = DepOutBtn
AnchorSideBottom.Side = asrBottom
Left = 266
Left = 176
Height = 23
Top = 334
Width = 214
Top = 37
Width = 139
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Right = 8
BorderSpacing.Left = 6
BorderSpacing.Bottom = 12
ReadOnly = True
TabOrder = 10
TabOrder = 3
Text = 'DepEdit'
end
object OptionsBox: TRadioGroup
AnchorSideLeft.Control = Owner
AnchorSideBottom.Control = ButtonBevel
Left = 8
Height = 72
Top = 377
Width = 466
Anchors = [akLeft, akBottom]
AutoFill = True
AutoSize = True
BorderSpacing.Left = 8
Caption = 'OptionsBox'
ChildSizing.LeftRightSpacing = 12
ChildSizing.TopBottomSpacing = 6
ChildSizing.HorizontalSpacing = 16
ChildSizing.VerticalSpacing = 2
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 2
ClientHeight = 52
ClientWidth = 462
Columns = 2
Items.Strings = (
'Plot means using 2D Horizontal Bars'
'Plot means using 3D Horizontal Bars'
'Plot means using 2D Vertical Bars'
'Plot means using 3D Vertical Bars'
)
TabOrder = 11
end
object RandomBChk: TCheckBox
AnchorSideLeft.Control = BCodes
AnchorSideTop.Control = BOutBtn
object RandomBChk: TCheckBox[19]
AnchorSideLeft.Control = BCodesEdit
AnchorSideTop.Control = BCodesEdit
AnchorSideTop.Side = asrBottom
Left = 266
Left = 176
Height = 19
Top = 282
Top = 232
Width = 136
BorderSpacing.Top = 8
Caption = 'B is random, not fixed'
TabOrder = 7
TabOrder = 10
end
object Memo1: TLabel
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 8
Height = 90
Top = 8
Width = 472
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 8
BorderSpacing.Top = 8
BorderSpacing.Right = 8
Caption = 'Directions: This analysis assumes that levels of Factor B are Nested within levels of Factor A. Unless otherwise specified, it is assumed that Factors A and B are fixed level factors. If Factor B is a random variable, check the provided box to indicate this.'#13#10#13#10'The number of cases for each B group should be equal and the number of B treatements in each A level should be equal.'
ParentColor = False
WordWrap = True
end
object ButtonBevel: TBevel
AnchorSideLeft.Control = Owner
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = CloseBtn
object PlotOptionsGroup: TGroupBox[20]
AnchorSideLeft.Control = ParamsPanel
AnchorSideBottom.Control = ButtonBevel
Left = 0
Height = 8
Top = 449
Width = 488
Anchors = [akLeft, akRight, akBottom]
Shape = bsBottomLine
Height = 72
Top = 303
Width = 106
Anchors = [akLeft, akBottom]
AutoSize = True
Caption = 'Plot options'
ClientHeight = 52
ClientWidth = 102
TabOrder = 11
object ShowPlotsChk: TCheckBox
AnchorSideLeft.Control = PlotOptionsGroup
AnchorSideTop.Control = PlotOptionsGroup
Left = 12
Height = 19
Top = 6
Width = 78
BorderSpacing.Left = 12
BorderSpacing.Top = 6
BorderSpacing.Right = 12
Caption = 'Show plots'
Checked = True
OnChange = ShowPlotsChkChange
State = cbChecked
TabOrder = 0
end
object Plot3DChk: TCheckBox
AnchorSideLeft.Control = ShowPlotsChk
AnchorSideTop.Control = ShowPlotsChk
AnchorSideTop.Side = asrBottom
Left = 32
Height = 19
Top = 25
Width = 34
BorderSpacing.Left = 20
BorderSpacing.Bottom = 8
Caption = '3D'
OnChange = Plot3DChkChange
TabOrder = 1
end
end
end
inherited ParamsSplitter: TSplitter
Left = 327
Height = 432
end
inherited PageControl: TPageControl
Left = 336
Height = 416
Width = 200
TabIndex = 2
inherited ReportPage: TTabSheet
Caption = 'ANOVA Results'
end
object MeansPage: TTabSheet[1]
Caption = 'Means'
end
inherited ChartPage: TTabSheet[2]
Caption = 'Plots'
end
end
end