diff --git a/applications/lazstats/LazStats.hlp b/applications/lazstats/LazStats.hlp index 40a32004f..850f8f5b0 100644 --- a/applications/lazstats/LazStats.hlp +++ b/applications/lazstats/LazStats.hlp @@ -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. \ No newline at end of file +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. \ No newline at end of file diff --git a/applications/lazstats/source/LazStats.lpi b/applications/lazstats/source/LazStats.lpi index 4dd632a93..e2ff2ca40 100644 --- a/applications/lazstats/source/LazStats.lpi +++ b/applications/lazstats/source/LazStats.lpi @@ -1281,7 +1281,7 @@ - + diff --git a/applications/lazstats/source/forms/analysis/nonparametric/srhtestunit.lfm b/applications/lazstats/source/forms/analysis/nonparametric/srhtestunit.lfm index 49f1c8b68..b129c7f6e 100644 --- a/applications/lazstats/source/forms/analysis/nonparametric/srhtestunit.lfm +++ b/applications/lazstats/source/forms/analysis/nonparametric/srhtestunit.lfm @@ -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 diff --git a/applications/lazstats/source/forms/analysis/nonparametric/srhtestunit.pas b/applications/lazstats/source/forms/analysis/nonparametric/srhtestunit.pas index 721b4bb2b..aa20df0c9 100644 --- a/applications/lazstats/source/forms/analysis/nonparametric/srhtestunit.pas +++ b/applications/lazstats/source/forms/analysis/nonparametric/srhtestunit.pas @@ -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. diff --git a/applications/lazstats/source/forms/mainunit.pas b/applications/lazstats/source/forms/mainunit.pas index 7f9722feb..8ee2b823c 100644 --- a/applications/lazstats/source/forms/mainunit.pas +++ b/applications/lazstats/source/forms/mainunit.pas @@ -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;