LazStats: Inherit SRHTestUnit from TBasicStatsReportAndChartForm. Move on-form help to LazStats.hlp.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7836 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2020-11-01 23:04:21 +00:00
parent 2782723bca
commit 5c9302493f
5 changed files with 406 additions and 506 deletions

View File

@ -67,4 +67,5 @@ correlation, means, standard deviations and confidence interval for each correla
163=The Resistant Line procedure creates three equal groups by sorting on the X variable and obtaining the median value of each group.\n\nThe median values for these three groups on both the X and Y variables are then plotted. The line from the low group median to the middle group median is plotted as well as the line from the middle group to the top group median. A comparison of the slope of these two lines gives an indication of the degree to which the data fit a straight line. Enter the X and Y variables to be analyzed and click the compute button.
164=This procedure smooths data by averaging every three data points starting with the first three to the last three. The data smoothing can be repeated multiple times. The first and last data points are unchanged.
165=This is a test for the randomness of a series of values in a variable. Select the variable to analyze and click the Compute button.
166=Sens method for the detection and estimation of trents is used to analyze one or more variable observations collected at equally spaced intervals of time.\nFirst, select one or more series variables to analyze.\nNext, if you have entered more than one variable, indicate how the measures are to be combined (mean or median) and if the values are to be standardized (z scores with mean of 0 and standard deviation of 1.)\nFinally, select the options desired and click the compute button to complete the analysis.
166=Sens method for the detection and estimation of trents is used to analyze one or more variable observations collected at equally spaced intervals of time.\nFirst, select one or more series variables to analyze.\nNext, if you have entered more than one variable, indicate how the measures are to be combined (mean or median) and if the values are to be standardized (z scores with mean of 0 and standard deviation of 1.)\nFinally, select the options desired and click the compute button to complete the analysis.
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.

View File

@ -1281,7 +1281,7 @@
<Unit147>
<Filename Value="forms\analysis\nonparametric\srhtestunit.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="SRHTest"/>
<ComponentName Value="SRHTestForm"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="SRHTestUnit"/>

View File

@ -1,421 +1,328 @@
object SRHTest: TSRHTest
Left = 654
Height = 631
Top = 147
Width = 471
AutoSize = True
inherited SRHTestForm: TSRHTestForm
Left = 1013
Height = 442
Top = 293
Width = 814
Caption = 'Scheirer-Ray-Hare Test'
ClientHeight = 631
ClientWidth = 471
OnActivate = FormActivate
OnCreate = FormCreate
OnShow = ResetBtnClick
LCLVersion = '2.1.0.0'
object Label1: TLabel
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Memo1
AnchorSideTop.Side = asrBottom
Left = 8
Height = 15
Top = 204
Width = 49
BorderSpacing.Left = 8
BorderSpacing.Top = 16
Caption = 'Variables:'
ParentColor = False
end
object VarList: TListBox
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Label1
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Fact1In
AnchorSideBottom.Control = ButtonBevel
Left = 8
Height = 361
Top = 221
Width = 205
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Top = 2
BorderSpacing.Right = 8
ItemHeight = 0
TabOrder = 0
end
object DepIn: TBitBtn
AnchorSideLeft.Control = Owner
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = VarList
Left = 221
Height = 28
Top = 221
Width = 28
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = DepInClick
Spacing = 0
TabOrder = 1
end
object StaticText1: TStaticText
AnchorSideLeft.Control = DepIn
AnchorSideLeft.Side = asrBottom
AnchorSideBottom.Control = DepVar
Left = 257
Height = 16
Top = 228
Width = 103
Anchors = [akLeft, akBottom]
AutoSize = True
BorderSpacing.Left = 8
BorderSpacing.Bottom = 2
Caption = 'Dependent Variable'
TabOrder = 3
end
object DepVar: TEdit
AnchorSideLeft.Control = DepIn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = DepOut
AnchorSideBottom.Side = asrBottom
Left = 257
Height = 23
Top = 246
Width = 206
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Right = 8
BorderSpacing.Bottom = 12
TabOrder = 4
Text = 'DepVar'
end
object Fact1In: TBitBtn
AnchorSideLeft.Control = Owner
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = DepOut
AnchorSideTop.Side = asrBottom
Left = 221
Height = 28
Top = 301
Width = 28
BorderSpacing.Top = 20
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = Fact1InClick
Spacing = 0
TabOrder = 5
end
object StaticText2: TStaticText
AnchorSideLeft.Control = Factor1
AnchorSideBottom.Control = Factor1
Left = 257
Height = 16
Top = 308
Width = 87
Anchors = [akLeft, akBottom]
AutoSize = True
BorderSpacing.Bottom = 2
Caption = 'Factor 1 Variable'
TabOrder = 7
end
object GroupBox2: TGroupBox
AnchorSideLeft.Control = Fact1In
AnchorSideTop.Control = Fact2Out
AnchorSideTop.Side = asrBottom
Left = 221
Height = 93
Top = 457
Width = 187
AutoSize = True
BorderSpacing.Top = 16
Caption = 'Options'
ChildSizing.LeftRightSpacing = 12
ChildSizing.TopBottomSpacing = 6
ChildSizing.VerticalSpacing = 2
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 73
ClientWidth = 183
TabOrder = 13
object PlotMeans: TCheckBox
Left = 12
Height = 19
Top = 6
Width = 159
Caption = 'Plot Means Using 3D bars'
TabOrder = 0
ClientHeight = 442
ClientWidth = 814
inherited ParamsPanel: TPanel
Height = 426
Width = 378
ClientHeight = 426
ClientWidth = 378
inherited CloseBtn: TButton
Left = 323
Top = 401
end
object Plot2DLines: TCheckBox
Left = 12
Height = 19
Top = 27
Width = 159
Caption = 'Plot Means Using 2D Lines'
TabOrder = 1
inherited ComputeBtn: TButton
Left = 239
Top = 401
end
object Plot3DLines: TCheckBox
Left = 12
Height = 19
Top = 48
Width = 159
Caption = 'Plot Means Using 3D Lines'
TabOrder = 2
inherited ResetBtn: TButton
Left = 177
Top = 401
end
inherited HelpBtn: TButton
Tag = 167
Left = 118
Top = 401
end
inherited ButtonBevel: TBevel
Top = 385
Width = 378
end
object Label1: TLabel[5]
AnchorSideLeft.Control = ParamsPanel
AnchorSideTop.Control = ParamsPanel
Left = 0
Height = 15
Top = 0
Width = 49
Caption = 'Variables:'
ParentColor = False
end
object VarList: TListBox[6]
AnchorSideLeft.Control = ParamsPanel
AnchorSideTop.Control = Label1
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Fact1In
AnchorSideBottom.Control = ButtonBevel
Left = 0
Height = 368
Top = 17
Width = 168
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Top = 2
BorderSpacing.Right = 8
ItemHeight = 0
TabOrder = 4
end
object DepIn: TBitBtn[7]
AnchorSideLeft.Control = ParamsPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = VarList
Left = 176
Height = 26
Top = 17
Width = 26
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = DepInClick
Spacing = 0
TabOrder = 5
end
object StaticText1: TStaticText[8]
AnchorSideLeft.Control = DepIn
AnchorSideLeft.Side = asrBottom
AnchorSideBottom.Control = DepVar
Left = 210
Height = 16
Top = 20
Width = 103
Anchors = [akLeft, akBottom]
AutoSize = True
BorderSpacing.Left = 8
BorderSpacing.Bottom = 2
Caption = 'Dependent Variable'
TabOrder = 6
end
object DepVar: TEdit[9]
AnchorSideLeft.Control = DepIn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = ParamsPanel
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = DepOut
AnchorSideBottom.Side = asrBottom
Left = 210
Height = 23
Top = 38
Width = 168
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
TabOrder = 7
Text = 'DepVar'
end
object Fact1In: TBitBtn[10]
AnchorSideLeft.Control = ParamsPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = DepOut
AnchorSideTop.Side = asrBottom
Left = 176
Height = 26
Top = 93
Width = 26
BorderSpacing.Top = 20
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = Fact1InClick
Spacing = 0
TabOrder = 8
end
object StaticText2: TStaticText[11]
AnchorSideLeft.Control = Factor1
AnchorSideBottom.Control = Factor1
Left = 210
Height = 16
Top = 96
Width = 87
Anchors = [akLeft, akBottom]
AutoSize = True
BorderSpacing.Bottom = 2
Caption = 'Factor 1 Variable'
TabOrder = 9
end
object GroupBox2: TGroupBox[12]
AnchorSideLeft.Control = Fact1In
AnchorSideTop.Control = OverallAlpha
AnchorSideTop.Side = asrBottom
Left = 176
Height = 93
Top = 288
Width = 187
AutoSize = True
BorderSpacing.Top = 20
Caption = 'Options'
ChildSizing.LeftRightSpacing = 12
ChildSizing.TopBottomSpacing = 6
ChildSizing.VerticalSpacing = 2
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 73
ClientWidth = 183
TabOrder = 10
object PlotMeans: TCheckBox
Left = 12
Height = 19
Top = 6
Width = 159
Caption = 'Plot Means Using 3D bars'
TabOrder = 0
end
object Plot2DLines: TCheckBox
Left = 12
Height = 19
Top = 27
Width = 159
Caption = 'Plot Means Using 2D Lines'
TabOrder = 1
end
object Plot3DLines: TCheckBox
Left = 12
Height = 19
Top = 48
Width = 159
Caption = 'Plot Means Using 3D Lines'
TabOrder = 2
end
end
object Label3: TLabel[13]
AnchorSideLeft.Control = Fact2Out
AnchorSideTop.Control = OverallAlpha
AnchorSideTop.Side = asrCenter
Left = 176
Height = 15
Top = 249
Width = 147
Caption = 'Alpha Level for Overall Tests'
ParentColor = False
end
object Factor1: TEdit[14]
AnchorSideLeft.Control = Fact1In
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Fact1Out
AnchorSideRight.Control = ParamsPanel
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = Fact1Out
AnchorSideBottom.Side = asrBottom
Left = 210
Height = 23
Top = 114
Width = 168
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
TabOrder = 11
Text = 'Edit1'
end
object DepOut: TBitBtn[15]
AnchorSideLeft.Control = ParamsPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = DepIn
AnchorSideTop.Side = asrBottom
Left = 176
Height = 26
Top = 47
Width = 26
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = DepOutClick
Spacing = 0
TabOrder = 12
end
object Fact1Out: TBitBtn[16]
AnchorSideLeft.Control = ParamsPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = Fact1In
AnchorSideTop.Side = asrBottom
Left = 176
Height = 26
Top = 123
Width = 26
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = Fact1OutClick
Spacing = 0
TabOrder = 13
end
object Fact2In: TBitBtn[17]
AnchorSideLeft.Control = ParamsPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = Fact1Out
AnchorSideTop.Side = asrBottom
Left = 176
Height = 26
Top = 169
Width = 26
BorderSpacing.Top = 20
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = Fact2InClick
Spacing = 0
TabOrder = 14
end
object Fact2Out: TBitBtn[18]
AnchorSideLeft.Control = ParamsPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = Fact2In
AnchorSideTop.Side = asrBottom
Left = 176
Height = 26
Top = 199
Width = 26
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = Fact2OutClick
Spacing = 0
TabOrder = 15
end
object StaticText3: TStaticText[19]
AnchorSideLeft.Control = Factor2
AnchorSideBottom.Control = Factor2
Left = 210
Height = 16
Top = 172
Width = 87
Anchors = [akLeft, akBottom]
AutoSize = True
BorderSpacing.Bottom = 2
Caption = 'Factor 2 Variable'
TabOrder = 16
end
object Factor2: TEdit[20]
AnchorSideLeft.Control = Fact2In
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = ParamsPanel
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = Fact2Out
AnchorSideBottom.Side = asrBottom
Left = 210
Height = 23
Top = 190
Width = 168
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
TabOrder = 17
Text = 'Edit1'
end
object OverallAlpha: TEdit[21]
AnchorSideLeft.Control = Label3
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Fact2Out
AnchorSideTop.Side = asrBottom
Left = 331
Height = 23
Top = 245
Width = 45
Alignment = taRightJustify
BorderSpacing.Left = 8
BorderSpacing.Top = 20
TabOrder = 18
Text = 'OverallAlpha'
end
end
object Label3: TLabel
AnchorSideLeft.Control = GroupBox2
AnchorSideTop.Control = OverallAlpha
AnchorSideTop.Side = asrCenter
Left = 229
Height = 15
Top = 562
Width = 147
BorderSpacing.Left = 8
Caption = 'Alpha Level for Overall Tests'
ParentColor = False
inherited ParamsSplitter: TSplitter
Left = 390
Height = 442
end
object HelpBtn: TButton
Tag = 107
AnchorSideRight.Control = ResetBtn
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 107
Height = 25
Top = 598
Width = 51
Anchors = [akRight, akBottom]
AutoSize = True
BorderSpacing.Top = 8
BorderSpacing.Right = 12
BorderSpacing.Bottom = 8
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 15
end
object Factor1: TEdit
AnchorSideLeft.Control = Fact1In
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Fact1Out
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = Fact1Out
AnchorSideBottom.Side = asrBottom
Left = 257
Height = 23
Top = 326
Width = 206
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Right = 8
BorderSpacing.Bottom = 12
TabOrder = 8
Text = 'Edit1'
end
object DepOut: TBitBtn
AnchorSideLeft.Control = Owner
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = DepIn
AnchorSideTop.Side = asrBottom
Left = 221
Height = 28
Top = 253
Width = 28
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = DepOutClick
Spacing = 0
TabOrder = 2
end
object Fact1Out: TBitBtn
AnchorSideLeft.Control = Owner
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = Fact1In
AnchorSideTop.Side = asrBottom
Left = 221
Height = 28
Top = 333
Width = 28
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = Fact1OutClick
Spacing = 0
TabOrder = 6
end
object Fact2In: TBitBtn
AnchorSideLeft.Control = Owner
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = Fact1Out
AnchorSideTop.Side = asrBottom
Left = 221
Height = 28
Top = 381
Width = 28
BorderSpacing.Top = 20
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = Fact2InClick
Spacing = 0
TabOrder = 9
end
object Fact2Out: TBitBtn
AnchorSideLeft.Control = Owner
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = Fact2In
AnchorSideTop.Side = asrBottom
Left = 221
Height = 28
Top = 413
Width = 28
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = Fact2OutClick
Spacing = 0
TabOrder = 10
end
object StaticText3: TStaticText
AnchorSideLeft.Control = Factor2
AnchorSideBottom.Control = Factor2
Left = 257
Height = 16
Top = 388
Width = 87
Anchors = [akLeft, akBottom]
AutoSize = True
BorderSpacing.Bottom = 2
Caption = 'Factor 2 Variable'
TabOrder = 11
end
object Factor2: TEdit
AnchorSideLeft.Control = Fact2In
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = Fact2Out
AnchorSideBottom.Side = asrBottom
Left = 257
Height = 23
Top = 406
Width = 206
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Right = 8
BorderSpacing.Bottom = 12
TabOrder = 12
Text = 'Edit1'
end
object OverallAlpha: TEdit
AnchorSideLeft.Control = Label3
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = GroupBox2
AnchorSideTop.Side = asrBottom
Left = 384
Height = 23
Top = 558
Width = 45
Alignment = taRightJustify
BorderSpacing.Left = 8
BorderSpacing.Top = 8
TabOrder = 14
Text = 'OverallAlpha'
end
object ResetBtn: TButton
AnchorSideRight.Control = CancelBtn
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 170
Height = 25
Top = 598
Width = 54
Anchors = [akRight, akBottom]
AutoSize = True
BorderSpacing.Top = 8
BorderSpacing.Right = 12
BorderSpacing.Bottom = 8
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 16
end
object CancelBtn: TButton
AnchorSideRight.Control = ComputeBtn
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 236
Height = 25
Top = 598
Width = 62
Anchors = [akRight, akBottom]
AutoSize = True
BorderSpacing.Top = 8
BorderSpacing.Right = 12
BorderSpacing.Bottom = 8
Caption = 'Cancel'
ModalResult = 2
TabOrder = 17
end
object ComputeBtn: TButton
AnchorSideRight.Control = ReturnBtn
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 310
Height = 25
Top = 598
Width = 76
Anchors = [akRight, akBottom]
AutoSize = True
BorderSpacing.Top = 8
BorderSpacing.Right = 12
BorderSpacing.Bottom = 8
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 18
end
object ReturnBtn: TButton
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 398
Height = 25
Top = 598
Width = 61
Anchors = [akRight, akBottom]
AutoSize = True
BorderSpacing.Top = 8
BorderSpacing.Right = 12
BorderSpacing.Bottom = 8
Caption = 'Return'
ModalResult = 1
TabOrder = 19
end
object ButtonBevel: TBevel
AnchorSideLeft.Control = Owner
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = ReturnBtn
Left = 0
Height = 8
Top = 582
Width = 471
Anchors = [akLeft, akRight, akBottom]
Shape = bsBottomLine
end
object Memo1: TLabel
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 8
Height = 180
Top = 8
Width = 455
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 8
BorderSpacing.Top = 8
BorderSpacing.Right = 8
Caption = 'Notes: This is a non-parametric analysis of ordinal data. It 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. It 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. The 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.'
ParentColor = False
WordWrap = True
inherited PageControl: TPageControl
Left = 399
Height = 426
Width = 407
end
end

View File

@ -7,17 +7,14 @@ interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons, ExtCtrls,
MainUnit, Globals, FunctionsLib, OutputUnit, DataProcs, GraphLib,
ContextHelpUnit;
MainUnit, Globals, FunctionsLib, OutputUnit, DataProcs, GraphLib, BasicStatsReportAndChartFormUnit;
type
{ TSRHTest }
{ TSRHTestForm }
TSRHTest = class(TForm)
TSRHTestForm = class(TBasicStatsReportAndChartForm)
Bevel1: TBevel;
CancelBtn: TButton;
ComputeBtn: TButton;
DepIn: TBitBtn;
DepOut: TBitBtn;
DepVar: TEdit;
@ -28,34 +25,24 @@ type
Factor1: TEdit;
Factor2: TEdit;
GroupBox2: TGroupBox;
HelpBtn: TButton;
Label1: TLabel;
Label3: TLabel;
Memo1: TLabel;
OverallAlpha: TEdit;
Plot2DLines: TCheckBox;
Plot3DLines: TCheckBox;
PlotMeans: TCheckBox;
ResetBtn: TButton;
ReturnBtn: TButton;
StaticText1: TStaticText;
StaticText2: TStaticText;
StaticText3: TStaticText;
VarList: TListBox;
procedure ComputeBtnClick(Sender: TObject);
procedure DepInClick(Sender: TObject);
procedure DepOutClick(Sender: TObject);
procedure Fact1InClick(Sender: TObject);
procedure Fact1OutClick(Sender: TObject);
procedure Fact2InClick(Sender: TObject);
procedure Fact2OutClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
private
{ private declarations }
FAutoSized: boolean;
NoSelected, intvalue, N : integer;
ColNoSelected : IntDyneVec;
outline, cellstring : string;
@ -83,17 +70,23 @@ type
allAlpha : double; // alphas for tests
CompError : boolean;
procedure getlevels(Sender : TObject);
procedure GetLevels(Sender : TObject);
procedure Calc2Way(Sender: TObject);
procedure TwoWayTable(Sender: TObject);
procedure TwoWayPlot(Sender: TObject);
protected
procedure AdjustConstraints; override;
procedure Compute; override;
procedure UpdateBtnStates; override;
public
{ public declarations }
constructor Create(AOwner: TComponent); override;
procedure Reset; override;
end;
var
SRHTest: TSRHTest;
SRHTestForm: TSRHTestForm;
implementation
@ -102,36 +95,38 @@ implementation
uses
Math, MathUnit;
{ TSRHTest }
{ TSRHTestForm }
procedure TSRHTest.ResetBtnClick(Sender: TObject);
Var i : integer;
constructor TSRHTestForm.Create(AOwner: TComponent);
begin
VarList.Clear;
DepIn.Enabled := true;
Fact1In.Enabled := true;
Fact2In.Enabled := true;
DepOut.Enabled := false;
Fact1Out.Enabled := false;
Fact2Out.Enabled := false;
DepVar.Text := '';
Factor1.Text := '';
Factor2.Text := '';
PlotMeans.Checked := false;
OverAllalpha.Text := '0.05';
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
inherited;
if OutputFrm = nil then
Application.CreateForm(TOutputFrm, OutputFrm);
if GraphFrm = nil then
Application.CreateForm(TGraphFrm, GraphFrm);
PageControl.ActivePageIndex := 0;
end;
procedure TSRHTest.HelpBtnClick(Sender: TObject);
procedure TSRHTestForm.AdjustConstraints;
begin
if ContextHelpForm = nil then
Application.CreateForm(TContextHelpForm, ContextHelpForm);
ContextHelpForm.HelpMessage((Sender as TButton).tag);
inherited;
ParamsPanel.Constraints.MinWidth := Max(
4*CloseBtn.Width + 3*CloseBtn.BorderSpacing.Left,
2*(Label3.Width + OverallAlpha.BorderSpacing.Left + OverallAlpha.Width) - Fact1In.Width);
ParamsPanel.Constraints.MinHeight := GroupBox2.Top + GroupBox2.Height +
ButtonBevel.Height + CloseBtn.BorderSpacing.Top + CloseBtn.Height;
end;
procedure TSRHTest.DepInClick(Sender: TObject);
VAR index : integer;
procedure TSRHTestForm.DepInClick(Sender: TObject);
var
index : integer;
begin
index := VarList.ItemIndex;
DepVar.Text := VarList.Items.Strings[index];
@ -140,8 +135,8 @@ begin
VarList.Items.Delete(index);
end;
procedure TSRHTest.ComputeBtnClick(Sender: TObject);
Var
procedure TSRHTestForm.Compute;
var
i : integer;
Label cleanit;
label nexttwo;
@ -244,7 +239,7 @@ cleanit:
ColNoSelected := nil;
end;
procedure TSRHTest.DepOutClick(Sender: TObject);
procedure TSRHTestForm.DepOutClick(Sender: TObject);
begin
VarList.Items.Add(DepVar.Text);
DepVar.Text := '';
@ -252,7 +247,7 @@ begin
DepIn.Enabled := true;
end;
procedure TSRHTest.Fact1InClick(Sender: TObject);
procedure TSRHTestForm.Fact1InClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
@ -263,7 +258,7 @@ begin
VarList.Items.Delete(index);
end;
procedure TSRHTest.Fact1OutClick(Sender: TObject);
procedure TSRHTestForm.Fact1OutClick(Sender: TObject);
begin
VarList.Items.Add(Factor1.Text);
Factor1.Text := '';
@ -271,7 +266,7 @@ begin
Fact1In.Enabled := true;
end;
procedure TSRHTest.Fact2InClick(Sender: TObject);
procedure TSRHTestForm.Fact2InClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
@ -282,7 +277,7 @@ begin
VarList.Items.Delete(index);
end;
procedure TSRHTest.Fact2OutClick(Sender: TObject);
procedure TSRHTestForm.Fact2OutClick(Sender: TObject);
begin
VarList.Items.Add(Factor2.Text);
Factor2.Text := '';
@ -290,42 +285,13 @@ begin
Fact2In.Enabled := true;
end;
procedure TSRHTest.FormActivate(Sender: TObject);
var
w: Integer;
begin
if FAutoSized then
exit;
w := MaxValue([HelpBtn.Width, ResetBtn.Width, CancelBtn.Width, ComputeBtn.Width, ReturnBtn.Width]);
HelpBtn.Constraints.MinWidth := w;
ResetBtn.Constraints.MinWidth := w;
CancelBtn.Constraints.MinWidth := w;
ComputeBtn.Constraints.MinWidth := w;
ReturnBtn.Constraints.MinWidth := w;
VarList.Constraints.MinHeight := OverallAlpha.Top + OverallAlpha.Height - VarList.Top;
Constraints.MinWidth := Width;
Constraints.MinHeight := Height;
FAutoSized := True;
end;
procedure TSRHTest.FormCreate(Sender: TObject);
begin
Assert(OS3MainFrm <> nil);
if OutputFrm = nil then
Application.CreateForm(TOutputFrm, OutputFrm);
if GraphFrm = nil then
Application.CreateForm(TGraphFrm, GraphFrm);
end;
procedure TSRHTest.getlevels(Sender: TObject);
procedure TSRHTestForm.GetLevels(Sender: TObject);
var
i : integer;
begin
minf1 := 10000;
maxf1 := -10000;
minf1 := MaxInt;
maxf1 := -MaxInt;
for i := 1 to NoCases do
begin
if Not GoodRecord(i,NoSelected,ColNoSelected) then continue;
@ -334,10 +300,11 @@ begin
if intvalue < minf1 then minf1 := intvalue;
end;
Nf1cells := maxf1 - minf1 + 1;
if nofactors > 1 then
begin
minf2 := 10000;
maxf2 := -10000;
minf2 := MaxInt;
maxf2 := -MaxInt;
for i := 1 to NoCases do
begin
if Not GoodRecord(i,NoSelected,ColNoSelected) then continue;
@ -347,10 +314,11 @@ begin
end;
Nf2cells := maxf2 - minf2 + 1;
end;
totcells := Nf1cells + Nf2cells;
end;
procedure TSRHTest.Calc2Way(Sender: TObject);
procedure TSRHTestForm.Calc2Way(Sender: TObject);
var
i, j : integer;
grpA, grpB : integer;
@ -468,7 +436,7 @@ begin
if (Omega < 0.0) then Omega := 0.0;
end;
procedure TSRHTest.TwoWayTable(Sender: TObject);
procedure TSRHTestForm.TwoWayTable(Sender: TObject);
var
groupsize : integer;
MinVar, MaxVar, sumvars, sumDFrecip : double;
@ -610,7 +578,7 @@ begin
OutputFrm.RichEdit.Lines.Add('---------------------------------------------------------------------');
end;
procedure TSRHTest.TwoWayPlot(Sender: TObject);
procedure TSRHTestForm.TwoWayPlot(Sender: TObject);
var
i, j : integer;
maxmean, XBar : double;
@ -656,6 +624,7 @@ begin
GraphFrm.FloorColor := clLtGray;
GraphFrm.ShowBackWall := true;
GraphFrm.ShowModal;
// do Factor B next
setstring := 'FACTOR B';
GraphFrm.SetLabels[1] := setstring;
@ -707,7 +676,6 @@ begin
XValue[j-1] := minF2 + j - 1;
GraphFrm.Xpoints[0,j-1] := XValue[j-1];
end;
GraphFrm.nosets := NF1cells;
GraphFrm.nbars := NF2cells;
GraphFrm.Heading := 'Factor A x Factor B';
@ -729,6 +697,30 @@ begin
GraphFrm.Ypoints := nil;
end;
procedure TSRHTestForm.Reset;
var
i : integer;
begin
inherited;
DepVar.Clear;
Factor1.Clear;
Factor2.Clear;
PlotMeans.Checked := false;
OverAllalpha.Text := FormatFloat('0.00', DEFAULT_ALPHA_LEVEL);
VarList.Clear;
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i, 0]);
UpdateBtnStates;
end;
procedure TSRHTestForm.UpdateBtnStates;
begin
inherited;
end;
end.

View File

@ -1914,9 +1914,9 @@ end;
// Menu "Analysis" > "Nonparametric" > "Schreier-Ray-Hare Two-Way ANOVA"
procedure TOS3MainFrm.mnuAnalysisNonPar_SRHClick(Sender: TObject);
begin
if SRHTest = nil then
Application.CreateForm(TSRHTest, SRHTest);
SRHTest.ShowModal;
if SRHTestForm = nil then
Application.CreateForm(TSRHTestForm, SRHTestForm);
SRHTestForm.ShowModal;
end;