diff --git a/applications/lazstats/source/forms/analysis/multiple_regression/lsmrunit.lfm b/applications/lazstats/source/forms/analysis/multiple_regression/lsmrunit.lfm index 219bf26b8..3a354d2ea 100644 --- a/applications/lazstats/source/forms/analysis/multiple_regression/lsmrunit.lfm +++ b/applications/lazstats/source/forms/analysis/multiple_regression/lsmrunit.lfm @@ -1,365 +1,333 @@ -object LSMregForm: TLSMregForm - Left = 439 - Height = 413 - Top = 192 - Width = 740 - AutoSize = True +inherited LSMregForm: TLSMregForm + Left = 449 + Height = 430 + Top = 172 + Width = 1010 Caption = 'Standard Least-Squares Multiple Regression' - ClientHeight = 413 - ClientWidth = 740 - OnActivate = FormActivate - OnCreate = FormCreate - OnShow = ResetBtnClick - Position = poMainFormCenter - LCLVersion = '2.1.0.0' - object Label1: TLabel - AnchorSideLeft.Control = Owner - AnchorSideTop.Control = Owner - Left = 8 - Height = 15 - Top = 8 - Width = 97 - BorderSpacing.Left = 8 - BorderSpacing.Top = 8 - Caption = 'Available Variables' - ParentColor = False - end - object VarList: TListBox - AnchorSideLeft.Control = Owner - AnchorSideTop.Control = Label1 - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = AllBtn - AnchorSideBottom.Control = Bevel1 - Left = 8 - Height = 339 - Top = 25 - Width = 222 - Anchors = [akTop, akLeft, akRight, akBottom] - BorderSpacing.Left = 8 - BorderSpacing.Top = 2 - BorderSpacing.Right = 8 - ItemHeight = 0 - MultiSelect = True - OnSelectionChange = VarListSelectionChange - TabOrder = 0 - end - object DepInBtn: TBitBtn - AnchorSideLeft.Control = AllBtn - AnchorSideLeft.Side = asrCenter - AnchorSideTop.Control = VarList - AnchorSideRight.Control = DepVar - Left = 247 - Height = 28 - Top = 25 - Width = 28 - Images = MainDataModule.ImageList - ImageIndex = 1 - OnClick = DepInBtnClick - Spacing = 0 - TabOrder = 1 - end - object Label2: TLabel - AnchorSideLeft.Control = DepVar - AnchorSideTop.Control = DepInBtn - Left = 292 - Height = 15 - Top = 25 - Width = 102 - BorderSpacing.Bottom = 2 - Caption = 'Dependent Variable' - ParentColor = False - end - object DepVar: TEdit - AnchorSideLeft.Control = IndepVars - AnchorSideTop.Control = Label2 - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = GroupBox1 - AnchorSideBottom.Side = asrBottom - Left = 292 - Height = 23 - Top = 42 - Width = 198 - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Right = 16 - BorderSpacing.Bottom = 12 - ReadOnly = True - TabOrder = 3 - Text = 'DepVar' - end - object Label3: TLabel - AnchorSideLeft.Control = IndepVars - AnchorSideTop.Control = DepVar - AnchorSideTop.Side = asrBottom - AnchorSideBottom.Control = IndepVars - Left = 292 - Height = 15 - Top = 97 - Width = 166 - BorderSpacing.Top = 32 - BorderSpacing.Bottom = 2 - Caption = 'Independent Var.s for this block' - ParentColor = False - end - object Label5: TLabel - AnchorSideTop.Control = InProb - AnchorSideTop.Side = asrCenter - AnchorSideRight.Control = InProb - Left = 511 - Height = 15 - Top = 12 - Width = 163 - Anchors = [akTop, akRight] - BorderSpacing.Right = 8 - Caption = 'Minimum Prob. to enter block:' - ParentColor = False - end - object GroupBox1: TGroupBox - AnchorSideTop.Control = InProb - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Owner - AnchorSideRight.Side = asrBottom - Left = 506 - Height = 212 - Top = 39 - Width = 226 - Anchors = [akTop, akRight] - AutoSize = True - BorderSpacing.Top = 8 - BorderSpacing.Right = 8 - Caption = 'Options' - ChildSizing.LeftRightSpacing = 12 - ChildSizing.TopBottomSpacing = 6 - ChildSizing.VerticalSpacing = 4 - ChildSizing.Layout = cclLeftToRightThenTopToBottom - ChildSizing.ControlsPerLine = 1 - ClientHeight = 192 - ClientWidth = 222 - TabOrder = 9 - object CPChkBox: TCheckBox - Left = 12 - Height = 19 - Top = 6 - Width = 198 - Caption = 'Show Cross-Products Matrix' + ClientHeight = 430 + ClientWidth = 1010 + inherited ParamsPanel: TPanel + Height = 414 + Width = 401 + ClientHeight = 414 + ClientWidth = 401 + inherited CloseBtn: TButton + Left = 346 + Top = 389 + TabOrder = 13 + end + inherited ComputeBtn: TButton + Left = 262 + Top = 389 + TabOrder = 12 + end + inherited ResetBtn: TButton + Left = 200 + Top = 389 + TabOrder = 11 + end + inherited HelpBtn: TButton + Left = 141 + Top = 389 + TabOrder = 10 + end + inherited ButtonBevel: TBevel + Top = 373 + Width = 401 + end + object Label1: TLabel[5] + AnchorSideLeft.Control = ParamsPanel + AnchorSideTop.Control = ParamsPanel + Left = 0 + Height = 15 + Top = 0 + Width = 97 + Caption = 'Available Variables' + ParentColor = False + end + object VarList: TListBox[6] + AnchorSideLeft.Control = ParamsPanel + AnchorSideTop.Control = Label1 + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = AllBtn + AnchorSideBottom.Control = InProb + Left = 0 + Height = 203 + Top = 17 + Width = 173 + Anchors = [akTop, akLeft, akRight, akBottom] + BorderSpacing.Top = 2 + BorderSpacing.Right = 4 + BorderSpacing.Bottom = 8 + ItemHeight = 0 + MultiSelect = True + OnDblClick = VarListDblClick + OnSelectionChange = VarListSelectionChange TabOrder = 0 end - object CovChkBox: TCheckBox - Left = 12 - Height = 19 - Top = 29 - Width = 198 - Caption = 'Show Variance-Covariance Matrix' + object DepInBtn: TBitBtn[7] + AnchorSideLeft.Control = AllBtn + AnchorSideLeft.Side = asrCenter + AnchorSideTop.Control = VarList + AnchorSideRight.Control = DepVar + Left = 187 + Height = 26 + Top = 17 + Width = 26 + Images = MainDataModule.ImageList + ImageIndex = 1 + OnClick = DepInBtnClick + Spacing = 0 TabOrder = 1 end - object CorrsChkBox: TCheckBox - Left = 12 - Height = 19 - Top = 52 - Width = 198 - Caption = 'Show Intercorrelation Matrix' - TabOrder = 2 + object Label2: TLabel[8] + AnchorSideLeft.Control = DepVar + AnchorSideTop.Control = DepInBtn + Left = 227 + Height = 15 + Top = 17 + Width = 102 + BorderSpacing.Bottom = 2 + Caption = 'Dependent Variable' + ParentColor = False end - object MeansChkBox: TCheckBox - Left = 12 - Height = 19 - Top = 75 - Width = 198 - Caption = 'Show Means' + object DepVar: TEdit[9] + AnchorSideLeft.Control = IndepVars + AnchorSideTop.Control = Label2 + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = ParamsPanel + AnchorSideRight.Side = asrBottom + AnchorSideBottom.Side = asrBottom + Left = 227 + Height = 23 + Top = 34 + Width = 174 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Bottom = 12 + ReadOnly = True TabOrder = 3 + Text = 'DepVar' end - object VarChkBox: TCheckBox - Left = 12 - Height = 19 - Top = 98 - Width = 198 - Caption = 'Show Variances' - TabOrder = 4 + object Label3: TLabel[10] + AnchorSideLeft.Control = IndepVars + AnchorSideTop.Control = InBtn + AnchorSideBottom.Control = IndepVars + Left = 227 + Height = 15 + Top = 105 + Width = 166 + BorderSpacing.Bottom = 2 + Caption = 'Independent Var.s for this block' + ParentColor = False end - object SDChkBox: TCheckBox - Left = 12 - Height = 19 - Top = 121 - Width = 198 - Caption = 'Show Standard Deviations' - TabOrder = 5 + object Label5: TLabel[11] + AnchorSideLeft.Control = ParamsPanel + AnchorSideTop.Control = InProb + AnchorSideTop.Side = asrCenter + Left = 0 + Height = 15 + Top = 232 + Width = 163 + BorderSpacing.Right = 8 + Caption = 'Minimum Prob. to enter block:' + ParentColor = False end - object MatSaveChkBox: TCheckBox - Left = 12 - Height = 19 - Top = 144 - Width = 198 - Caption = 'Save Correlation Matrix' - TabOrder = 6 + object OptionsGroup: TGroupBox[12] + AnchorSideLeft.Control = ParamsPanel + AnchorSideTop.Side = asrBottom + AnchorSideRight.Side = asrBottom + AnchorSideBottom.Control = ButtonBevel + Left = 0 + Height = 114 + Top = 259 + Width = 404 + Anchors = [akLeft, akBottom] + AutoSize = True + BorderSpacing.Top = 8 + Caption = 'Options' + ChildSizing.LeftRightSpacing = 12 + ChildSizing.TopBottomSpacing = 6 + ChildSizing.HorizontalSpacing = 8 + ChildSizing.VerticalSpacing = 2 + ChildSizing.Layout = cclLeftToRightThenTopToBottom + ChildSizing.ControlsPerLine = 2 + ClientHeight = 94 + ClientWidth = 400 + TabOrder = 9 + object CPChkBox: TCheckBox + Left = 12 + Height = 19 + Top = 6 + Width = 170 + Caption = 'Show Cross-Products Matrix' + TabOrder = 0 + end + object CovChkBox: TCheckBox + Left = 190 + Height = 19 + Top = 6 + Width = 198 + Caption = 'Show Variance-Covariance Matrix' + TabOrder = 1 + end + object CorrsChkBox: TCheckBox + Left = 12 + Height = 19 + Top = 27 + Width = 170 + Caption = 'Show Intercorrelation Matrix' + TabOrder = 2 + end + object MeansChkBox: TCheckBox + Left = 190 + Height = 19 + Top = 27 + Width = 198 + Caption = 'Show Means' + TabOrder = 3 + end + object VarChkBox: TCheckBox + Left = 12 + Height = 19 + Top = 48 + Width = 170 + Caption = 'Show Variances' + TabOrder = 4 + end + object SDChkBox: TCheckBox + Left = 190 + Height = 19 + Top = 48 + Width = 198 + Caption = 'Show Standard Deviations' + TabOrder = 5 + end + object MatSaveChkBox: TCheckBox + Left = 12 + Height = 19 + Top = 69 + Width = 170 + Caption = 'Save Correlation Matrix' + TabOrder = 6 + end + object PredictChkBox: TCheckBox + Left = 190 + Height = 19 + Top = 69 + Width = 198 + Caption = 'Predictions,residuals,C.I.''s to Grid' + TabOrder = 7 + end end - object PredictChkBox: TCheckBox - Left = 12 - Height = 19 - Top = 167 - Width = 198 - Caption = 'Predictions,residuals,C.I.''s to Grid' + object IndepVars: TListBox[13] + AnchorSideLeft.Control = AllBtn + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = Label3 + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = ParamsPanel + AnchorSideRight.Side = asrBottom + AnchorSideBottom.Control = VarList + AnchorSideBottom.Side = asrBottom + Left = 227 + Height = 98 + Top = 122 + Width = 174 + Anchors = [akTop, akLeft, akRight, akBottom] + BorderSpacing.Left = 4 + BorderSpacing.Top = 2 + ItemHeight = 0 + OnDblClick = IndepVarsDblClick + OnSelectionChange = VarListSelectionChange TabOrder = 7 end + object DepOutBtn: TBitBtn[14] + AnchorSideLeft.Control = AllBtn + AnchorSideLeft.Side = asrCenter + AnchorSideTop.Control = DepInBtn + AnchorSideTop.Side = asrBottom + Left = 187 + Height = 26 + Top = 47 + Width = 26 + BorderSpacing.Top = 4 + Images = MainDataModule.ImageList + ImageIndex = 0 + OnClick = DepOutBtnClick + Spacing = 0 + TabOrder = 2 + end + object InBtn: TBitBtn[15] + AnchorSideLeft.Control = AllBtn + AnchorSideLeft.Side = asrCenter + AnchorSideTop.Control = DepOutBtn + AnchorSideTop.Side = asrBottom + AnchorSideBottom.Control = OutBtn + Left = 187 + Height = 26 + Top = 105 + Width = 26 + BorderSpacing.Top = 32 + BorderSpacing.Bottom = 4 + Images = MainDataModule.ImageList + ImageIndex = 1 + OnClick = InBtnClick + Spacing = 0 + TabOrder = 4 + end + object OutBtn: TBitBtn[16] + AnchorSideLeft.Control = AllBtn + AnchorSideLeft.Side = asrCenter + AnchorSideTop.Control = InBtn + AnchorSideTop.Side = asrBottom + Left = 187 + Height = 26 + Top = 135 + Width = 26 + BorderSpacing.Top = 4 + Images = MainDataModule.ImageList + ImageIndex = 0 + OnClick = OutBtnClick + Spacing = 0 + TabOrder = 5 + end + object InProb: TEdit[17] + AnchorSideLeft.Control = Label5 + AnchorSideLeft.Side = asrBottom + AnchorSideRight.Side = asrBottom + AnchorSideBottom.Control = OptionsGroup + Left = 171 + Height = 23 + Top = 228 + Width = 50 + Alignment = taRightJustify + Anchors = [akLeft, akBottom] + BorderSpacing.Top = 8 + BorderSpacing.Right = 8 + TabOrder = 8 + Text = 'InProb' + end + object AllBtn: TBitBtn[18] + AnchorSideLeft.Control = ParamsPanel + AnchorSideLeft.Side = asrCenter + AnchorSideTop.Control = OutBtn + AnchorSideTop.Side = asrBottom + Left = 177 + Height = 25 + Top = 165 + Width = 46 + AutoSize = True + BorderSpacing.Top = 4 + Caption = 'ALL' + OnClick = AllBtnClick + TabOrder = 6 + end end - object ResetBtn: TButton - AnchorSideRight.Control = ComputeBtn - AnchorSideBottom.Control = Owner - AnchorSideBottom.Side = asrBottom - Left = 531 - Height = 25 - Top = 380 - Width = 54 - Anchors = [akRight, akBottom] - AutoSize = True - BorderSpacing.Left = 8 - BorderSpacing.Right = 8 - BorderSpacing.Bottom = 8 - Caption = 'Reset' - OnClick = ResetBtnClick - TabOrder = 10 + inherited ParamsSplitter: TSplitter + Left = 413 + Height = 430 end - object CloseBtn: TButton - AnchorSideRight.Control = Owner - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = Owner - AnchorSideBottom.Side = asrBottom - Left = 677 - Height = 25 - Top = 380 - Width = 55 - Anchors = [akRight, akBottom] - AutoSize = True - BorderSpacing.Left = 8 - BorderSpacing.Right = 8 - BorderSpacing.Bottom = 8 - Caption = 'Close' - ModalResult = 11 - TabOrder = 12 - end - object ComputeBtn: TButton - AnchorSideRight.Control = CloseBtn - AnchorSideBottom.Control = Owner - AnchorSideBottom.Side = asrBottom - Left = 593 - Height = 25 - Top = 380 - Width = 76 - Anchors = [akRight, akBottom] - AutoSize = True - BorderSpacing.Left = 8 - BorderSpacing.Right = 8 - BorderSpacing.Bottom = 8 - Caption = 'Compute' - OnClick = ComputeBtnClick - TabOrder = 11 - end - object IndepVars: TListBox - AnchorSideLeft.Control = AllBtn - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = Label3 - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = GroupBox1 - AnchorSideBottom.Control = Bevel1 - Left = 292 - Height = 250 - Top = 114 - Width = 198 - Anchors = [akTop, akRight, akBottom] - BorderSpacing.Left = 8 - BorderSpacing.Top = 2 - BorderSpacing.Right = 16 - ItemHeight = 0 - OnSelectionChange = VarListSelectionChange - TabOrder = 7 - end - object DepOutBtn: TBitBtn - AnchorSideLeft.Control = AllBtn - AnchorSideLeft.Side = asrCenter - AnchorSideTop.Control = DepInBtn - AnchorSideTop.Side = asrBottom - Left = 247 - Height = 28 - Top = 57 - Width = 28 - BorderSpacing.Top = 4 - Images = MainDataModule.ImageList - ImageIndex = 0 - OnClick = DepOutBtnClick - Spacing = 0 - TabOrder = 2 - end - object InBtn: TBitBtn - AnchorSideLeft.Control = AllBtn - AnchorSideLeft.Side = asrCenter - AnchorSideBottom.Control = OutBtn - Left = 247 - Height = 28 - Top = 193 - Width = 28 - Anchors = [akLeft, akBottom] - BorderSpacing.Bottom = 4 - Images = MainDataModule.ImageList - ImageIndex = 1 - OnClick = InBtnClick - Spacing = 0 - TabOrder = 4 - end - object OutBtn: TBitBtn - AnchorSideLeft.Control = AllBtn - AnchorSideLeft.Side = asrCenter - AnchorSideTop.Control = IndepVars - AnchorSideTop.Side = asrCenter - Left = 247 - Height = 28 - Top = 225 - Width = 28 - BorderSpacing.Top = 4 - Images = MainDataModule.ImageList - ImageIndex = 0 - OnClick = OutBtnClick - Spacing = 0 - TabOrder = 5 - end - object AllBtn: TBitBtn - AnchorSideTop.Control = OutBtn - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = IndepVars - Left = 238 - Height = 25 - Top = 257 - Width = 46 - Anchors = [akTop, akRight] - AutoSize = True - BorderSpacing.Top = 4 - Caption = 'ALL' - OnClick = AllBtnClick - TabOrder = 6 - end - object InProb: TEdit - AnchorSideTop.Control = Owner - AnchorSideRight.Control = Owner - AnchorSideRight.Side = asrBottom - Left = 682 - Height = 23 - Top = 8 - Width = 50 - Alignment = taRightJustify - Anchors = [akTop, akRight] - BorderSpacing.Top = 8 - BorderSpacing.Right = 8 - TabOrder = 8 - Text = 'InProb' - end - object Bevel1: TBevel - AnchorSideLeft.Control = Owner - AnchorSideRight.Control = Owner - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = CloseBtn - Left = 0 - Height = 8 - Top = 364 - Width = 740 - Anchors = [akLeft, akRight, akBottom] - BorderSpacing.Bottom = 8 - Shape = bsBottomLine + object SaveDialog: TSaveDialog[2] + Left = 45 + Top = 357 end end diff --git a/applications/lazstats/source/forms/analysis/multiple_regression/lsmrunit.pas b/applications/lazstats/source/forms/analysis/multiple_regression/lsmrunit.pas index 191ff3753..be693018c 100644 --- a/applications/lazstats/source/forms/analysis/multiple_regression/lsmrunit.pas +++ b/applications/lazstats/source/forms/analysis/multiple_regression/lsmrunit.pas @@ -5,26 +5,24 @@ unit LSMRUnit; interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - StdCtrls, Buttons, ExtCtrls, Globals, MainUnit, MatrixLib, OutPutUnit, - FunctionsLib, DataProcs, DictionaryUnit; + Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, + StdCtrls, Buttons, ExtCtrls, Globals, MainUnit, MatrixLib, + DataProcs, DictionaryUnit, BasicStatsReportFormUnit; type { TLSMregForm } - TLSMregForm = class(TForm) + TLSMregForm = class(TBasicStatsReportForm) AllBtn: TBitBtn; - Bevel1: TBevel; IndepVars: TListBox; - ComputeBtn: TButton; CorrsChkBox: TCheckBox; CovChkBox: TCheckBox; CPChkBox: TCheckBox; DepInBtn: TBitBtn; DepOutBtn: TBitBtn; DepVar: TEdit; - GroupBox1: TGroupBox; + OptionsGroup: TGroupBox; InBtn: TBitBtn; InProb: TEdit; Label1: TLabel; @@ -33,103 +31,60 @@ type Label5: TLabel; MatSaveChkBox: TCheckBox; MeansChkBox: TCheckBox; - SaveDialog1: TSaveDialog; + SaveDialog: TSaveDialog; OutBtn: TBitBtn; PredictChkBox: TCheckBox; - ResetBtn: TButton; - CloseBtn: TButton; SDChkBox: TCheckBox; VarChkBox: TCheckBox; VarList: TListBox; procedure AllBtnClick(Sender: TObject); - procedure ComputeBtnClick(Sender: TObject); procedure DepInBtnClick(Sender: TObject); procedure DepOutBtnClick(Sender: TObject); - procedure FormActivate(Sender: TObject); - procedure FormCreate(Sender: TObject); - procedure FormShow(Sender: TObject); procedure InBtnClick(Sender: TObject); + procedure IndepVarsDblClick(Sender: TObject); procedure OutBtnClick(Sender: TObject); - procedure ResetBtnClick(Sender: TObject); + procedure VarListDblClick(Sender: TObject); procedure VarListSelectionChange(Sender: TObject; {%H-}User: boolean); private { private declarations } - FAutoSized: boolean; - IndepVarsCols : IntDyneVec; - NoVars : integer; - NoBlocks : integer; - procedure UpdateBtnStates; + IndepVarsCols: IntDyneVec; + NoVars: integer; + NoBlocks: integer; + protected + procedure AdjustConstraints; override; + procedure Compute; override; + procedure UpdateBtnStates; override; public - { public declarations } + procedure Reset; override; end; var LSMregForm: TLSMregForm; + implementation +{$R *.lfm} + uses Math, Utils, MathUnit; -procedure TLSMregForm.ResetBtnClick(Sender: TObject); -var - i: integer; + +{ TLSMregForm } + +procedure TLSMregForm.AdjustConstraints; begin - IndepVars.Items.Clear; - VarList.Items.Clear; - NoBlocks := 1; - for i := 1 to NoVariables do - VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]); - - CPChkBox.Checked := false; - CovChkBox.Checked := false; - CorrsChkBox.Checked := true; - MeansChkBox.Checked := true; - VarChkBox.Checked := false; - SDChkBox.Checked := true; - MatSaveChkBox.Checked := false; - PredictChkBox.Checked := false; - - NoVars := 0; - DepVar.Text := ''; - InProb.Text := FormatFloat('0.00', DEFAULT_ALPHA_LEVEL); - SetLength(IndepVarsCols, NoVariables+1); - - UpdateBtnStates; + ParamsPanel.Constraints.MinWidth := Max( + OptionsGroup.Width, + 4*CloseBtn.Width + 3*CloseBtn.BorderSpacing.Left + ); + ParamsPanel.Constraints.MinHeight := AllBtn.Top + AllBtn.Height + + VarList.BorderSpacing.Bottom + InProb.Height + + OptionsGroup.BorderSpacing.Top + OptionsGroup.Height + + ButtonBevel.Height + CloseBtn.BorderSpacing.Top + CloseBtn.Height; end; -procedure TLSMregForm.FormActivate(Sender: TObject); -var - w: Integer; -begin - if FAutoSized then - exit; - - w := MaxValue([ResetBtn.Width, ComputeBtn.Width, CloseBtn.Width]); - ResetBtn.Constraints.MinWidth := w; - ComputeBtn.Constraints.MinWidth := w; - CloseBtn.Constraints.MinWidth := w; - - VarList.Constraints.MinWidth := IndepVars.Width; - IndepVars.Constraints.MinHeight := Max(200, GroupBox1.Top + GroupBox1.Height - IndepVars.Top); - - Constraints.MinHeight := Height; - Constraints.MinWidth := Width; - - FAutoSized := true; -end; - -procedure TLSMregForm.FormCreate(Sender: TObject); -begin - Assert(OS3MainFrm <> nil); - if DictionaryFrm = nil then Application.CreateForm(TDictionaryFrm, DictionaryFrm); -end; - -procedure TLSMregForm.FormShow(Sender: TObject); -begin - ResetBtnClick(self); -end; procedure TLSMregForm.AllBtnClick(Sender: TObject); var @@ -141,34 +96,35 @@ begin UpdateBtnStates; end; -procedure TLSMregForm.ComputeBtnClick(Sender: TObject); + +procedure TLSMregForm.Compute; var - i, j, NCases: integer; - NoIndepVars, DepVarCol, NEntered: integer; - R2, df1, df2: double; - StdErrEst, F, FProbF, OldR2 : double; - pdf1, probin, prout : double; - errorcode : boolean; - BetaWeights : DblDyneVec; - BWeights : DblDyneVec; - BStdErrs : DblDyneVec; - Bttests : DblDyneVec; - tProbs : DblDyneVec; - cellstring: string; - corrs : DblDyneMat; - Means : DblDyneVec; - Variances : DblDyneVec; - StdDevs : DblDyneVec; - title : string; - IndRowLabels : StrDyneVec; - IndColLabels : StrDyneVec; - IndepInverse : DblDyneMat; - ColEntered : IntDyneVec; - filename : string; - constant : double; - errcode: boolean = false; - anerror: Integer = 0; - lReport: TStrings; + i, j, NCases: integer; + NoIndepVars, DepVarCol, NEntered: integer; + R2, df1, df2: double; + StdErrEst, F, FProbF, OldR2: double; + pdf1, probin, prout: double; + errorcode: boolean; + BetaWeights: DblDyneVec = nil; + BWeights: DblDyneVec = nil; + BStdErrs: DblDyneVec = nil; + Bttests: DblDyneVec = nil; + tProbs: DblDyneVec = nil; + cellstring: string; + corrs: DblDyneMat = nil; + Means: DblDyneVec = nil; + Variances: DblDyneVec = nil; + StdDevs: DblDyneVec = nil; + title: string; + IndRowLabels: StrDyneVec = nil; + IndColLabels: StrDyneVec = nil; + IndepInverse: DblDyneMat = nil; + ColEntered: IntDyneVec = nil; + filename: string; + constant: double; + errcode: boolean = false; + anerror: Integer = 0; + lReport: TStrings; begin NCases := NoCases; SetLength(corrs,NoVariables+1,NoVariables+1); @@ -186,17 +142,18 @@ begin SetLength(IndRowLabels,NoVariables+1); SetLength(BetaWeights,NoVariables+1); SetLength(ColEntered,NoVariables+2); + probin := StrToFloat(InProb.Text); // probability to include a block prout := 1.0; if DepVar.Text = '' then begin - MessageDlg('No dependent variable selected.', mtError, [mbOK], 0); + ErrorMsg('No dependent variable selected.'); exit; end; if IndepVars.Items.Count = 0 then begin - MessageDlg('No independent variable selected.', mtError, [mbOK], 0); + ErrorMsg('No independent variable selected.'); exit; end; @@ -244,7 +201,7 @@ begin title := 'Cross-Products Matrix'; GridXProd(NEntered, ColEntered, Corrs, errcode, NCases); MatPrint(Corrs, NEntered, NEntered, title, IndRowLabels, IndColLabels, NCases, lReport); - lReport.Add('--------------------------------------------------------------------'); + lReport.Add(DIVIDER_SMALL); end; if CovChkBox.Checked then @@ -252,7 +209,7 @@ begin title := 'Variance-Covariance Matrix'; GridCovar(NEntered,ColEntered, Corrs, Means, Variances, StdDevs, errcode, NCases); MatPrint(Corrs, NEntered, NEntered, title, IndRowLabels, IndColLabels, NCases, lReport); - lReport.Add('--------------------------------------------------------------------'); + lReport.Add(DIVIDER_SMALL); end; Correlations(NEntered,ColEntered,Corrs,Means,Variances, StdDevs,errcode,NCases); @@ -260,28 +217,28 @@ begin begin title := 'Product-Moment Correlations Matrix'; MatPrint(Corrs, NEntered, NEntered, title, IndRowLabels, IndColLabels, NCases, lReport); - lReport.Add('--------------------------------------------------------------------'); + lReport.Add(DIVIDER_SMALL); end; if MeansChkBox.Checked then begin title := 'Means'; DynVectorPrint(Means, NEntered, title, IndColLabels, NCases, lReport); - lReport.Add('--------------------------------------------------------------------'); + lReport.Add(DIVIDER_SMALL); end; if VarChkBox.Checked = true then begin title := 'Variances'; DynVectorPrint(Variances, NEntered, title, IndColLabels, NCases, lReport); - lReport.Add('--------------------------------------------------------------------'); + lReport.Add(DIVIDER_SMALL); end; if SDChkBox.Checked = true then begin title := 'Standard Deviations'; DynVectorPrint(StdDevs, NEntered, title, IndColLabels, NCases, lReport); - lReport.Add('--------------------------------------------------------------------'); + lReport.Add(DIVIDER_SMALL); end; if errorcode then @@ -305,7 +262,7 @@ begin lReport.Add('Entry requirements not met'); lReport.Add(''); - lReport.Add('===================================================================='); + lReport.Add(DIVIDER); lReport.Add(''); { add [predicted scores, residual scores, etc. to grid if options elected } @@ -327,32 +284,23 @@ begin if MatSaveChkBox.Checked then begin - SaveDialog1.Filter := 'LazStats matrix files (*.mat)|*.mat;*.MAT|All files (*.*)|*.*'; - SaveDialog1.FilterIndex := 1; - if SaveDialog1.Execute then + SaveDialog.Filter := 'LazStats matrix files (*.mat)|*.mat;*.MAT|All files (*.*)|*.*'; + SaveDialog.FilterIndex := 1; + if SaveDialog.Execute then begin - filename := SaveDialog1.FileName; + filename := SaveDialog.FileName; MatSave(Corrs, NoVars, NoVars, Means, StdDevs, NCases, IndRowLabels, IndColLabels, filename); end; end; - DisplayReport(lReport); + FReportFrame.DisplayReport(lReport); finally lReport.Free; - ColEntered := nil; - BetaWeights := nil; - IndColLabels := nil; - IndRowLabels := nil; - StdDevs := nil; - Variances := nil; - Means := nil; - IndepInverse := nil; - corrs := nil; - IndepVarsCols := nil; end; end; + procedure TLSMregForm.DepInBtnClick(Sender: TObject); var index: integer; @@ -366,6 +314,7 @@ begin UpdateBtnStates; end; + procedure TLSMregForm.DepOutBtnClick(Sender: TObject); begin if DepVar.Text <> '' then @@ -376,6 +325,7 @@ begin UpdateBtnStates; end; + procedure TLSMregForm.InBtnClick(Sender: TObject); var i: integer; @@ -394,6 +344,20 @@ begin UpdateBtnStates; end; + +procedure TLSMregForm.IndepVarsDblClick(Sender: TObject); +var + index: Integer; +begin + index := IndepVars.ItemIndex; + if index > -1 then begin + VarList.Items.Add(IndepVars.Items[index]); + IndepVars.Items.Delete(index); + UpdateBtnStates; + end; +end; + + procedure TLSMregForm.OutBtnClick(Sender: TObject); var i: integer; @@ -412,10 +376,43 @@ begin UpdateBtnStates; end; +procedure TLSMregForm.Reset; +var + i: integer; +begin + inherited; + + IndepVars.Items.Clear; + NoBlocks := 1; + + VarList.Items.Clear; + for i := 1 to NoVariables do + VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]); + + CPChkBox.Checked := false; + CovChkBox.Checked := false; + CorrsChkBox.Checked := true; + MeansChkBox.Checked := true; + VarChkBox.Checked := false; + SDChkBox.Checked := true; + MatSaveChkBox.Checked := false; + PredictChkBox.Checked := false; + + NoVars := 0; + DepVar.Text := ''; + InProb.Text := FormatFloat('0.00', DEFAULT_ALPHA_LEVEL); + SetLength(IndepVarsCols, NoVariables+1); + + UpdateBtnStates; +end; + + procedure TLSMregForm.UpdateBtnStates; var lSelected: Boolean; begin + inherited; + lSelected := AnySelected(VarList); DepInBtn.Enabled := lSelected; InBtn.Enabled := lSelected; @@ -425,13 +422,29 @@ begin AllBtn.Enabled := VarList.Items.Count > 0; end; + +procedure TLSMregForm.VarListDblClick(Sender: TObject); +var + index: Integer; +begin + index := VarList.ItemIndex; + if index > -1 then + begin + if DepVar.Text = '' then + DepVar.Text := VarList.Items[index] + else + IndepVars.Items.Add(VarList.Items[index]); + VarList.Items.Delete(index); + UpdateBtnStates; + end; +end; + + procedure TLSMregForm.VarListSelectionChange(Sender: TObject; User: boolean); begin UpdateBtnStates; end; -initialization - {$I lsmrunit.lrs} end. diff --git a/applications/lazstats/source/forms/mainunit.lfm b/applications/lazstats/source/forms/mainunit.lfm index 947e5dd92..6e985841f 100644 --- a/applications/lazstats/source/forms/mainunit.lfm +++ b/applications/lazstats/source/forms/mainunit.lfm @@ -616,51 +616,54 @@ object OS3MainFrm: TOS3MainFrm OnClick = MenuItem74Click end end - object MenuItem36: TMenuItem + object mnuAnalysisMultReg: TMenuItem Caption = 'Multiple Regression' - object LSMRitem: TMenuItem + object mnuAnalysisMultReg_LSMR: TMenuItem Caption = 'Least Squares Multiple Regression' - OnClick = LSMRitemClick + OnClick = mnuAnalysisMultReg_LSMRClick end - object MenuItem75: TMenuItem + object mnuAnalysisMultReg_Forward: TMenuItem Caption = 'Forward Stepwise' - OnClick = MenuItem75Click + OnClick = mnuAnalysisMultReg_ForwardClick end - object MenuItem76: TMenuItem + object mnuAnalysisMultReg_Backward: TMenuItem Caption = 'Backward Stepwise' - OnClick = MenuItem76Click + OnClick = mnuAnalysisMultReg_BackwardClick end - object MenuItem77: TMenuItem + object mnuAnalysisMultReg_Simult: TMenuItem Caption = 'Simultaneous' - OnClick = MenuItem77Click + OnClick = mnuAnalysisMultReg_SimultClick end - object MenuItem78: TMenuItem + object mnuAnalysisMultReg_BlockEntry: TMenuItem Caption = 'Block Entry' - OnClick = MenuItem78Click + OnClick = mnuAnalysisMultReg_BlockEntryClick end - object MenuItem79: TMenuItem + object mnuAnalysisMultReg_BestComb: TMenuItem Caption = 'Best Combination' - OnClick = MenuItem79Click + OnClick = mnuAnalysisMultReg_BestCombClick end - object MenuItem80: TMenuItem + object mnuAnalysisMultReg_BinLogistic: TMenuItem Caption = 'Binary Logistic' - OnClick = MenuItem80Click + OnClick = mnuAnalysisMultReg_BinLogisticClick end - object MenuItem81: TMenuItem + object mnuAnalysisMultReg_CoxSurvival: TMenuItem Caption = 'Cox Proportional Hazzards Survival Regression' - OnClick = MenuItem81Click + OnClick = mnuAnalysisMultReg_CoxSurvivalClick end - object MenuItem82: TMenuItem - Caption = 'Linear Programming' - OnClick = MenuItem82Click - end - object TwoSLSReg: TMenuItem + object mnuAnalysisMultReg_TwoStage: TMenuItem Caption = 'Two Stage Least Squares Regression' - OnClick = TwoSLSRegClick + OnClick = mnuAnalysisMultReg_TwoStageClick end - object WLSReg: TMenuItem + object mnuAnalysisMultReg_Weighted: TMenuItem Caption = 'Weighted Least Squares Regression' - OnClick = WLSRegClick + OnClick = mnuAnalysisMultReg_WeightedClick + end + object MenuItem2: TMenuItem + Caption = '-' + end + object mnuAnalysisMultReg_LinProg: TMenuItem + Caption = 'Linear Programming' + OnClick = mnuAnalysisMultReg_LinProgClick end end object MenuItem37: TMenuItem diff --git a/applications/lazstats/source/forms/mainunit.pas b/applications/lazstats/source/forms/mainunit.pas index 0b7ebb68f..277b105c4 100644 --- a/applications/lazstats/source/forms/mainunit.pas +++ b/applications/lazstats/source/forms/mainunit.pas @@ -61,6 +61,7 @@ type MenuItem115: TMenuItem; MenuItem13: TMenuItem; MenuItem16: TMenuItem; + MenuItem2: TMenuItem; MenuItem20: TMenuItem; MenuItem3: TMenuItem; MenuItem4: TMenuItem; @@ -69,6 +70,39 @@ type MenuItem7: TMenuItem; mnuAnalysis: TMenuItem; + + mnuAnalysisDescr: TMenuItem; + mnuAnalysisDescr_Breakdown: TMenuItem; + mnuAnalysisDescr_BoxPlot: TMenuItem; + mnuAnalysisDescr_BubblePlot: TMenuItem; + mnuAnalysisDescr_CompareDists: TMenuItem; + mnuAnalysisDescr_CrossTabs: TMenuItem; + mnuAnalysisDescr_DataSmooth: TMenuItem; + mnuAnalysisDescr_DistribStats: TMenuItem; + mnuAnalysisDescr_Freq: TMenuItem; + mnuAnalysisDescr_GrpFreq: TMenuItem; + mnuAnalysisDescr_HomogeneityTest: TMenuItem; + mnuAnalysisDescr_MultXvsY: TMenuItem; + mnuAnalysisDescr_Normality: TMenuItem; + mnuAnalysisDescr_PlotXvsY: TMenuItem; + mnuAnalysisDescr_ResistanceLine: TMenuItem; + mnuAnalysisDescr_StemLeaf: TMenuItem; + mnuAnalysisDescr_ThreeDRotate: TMenuItem; + mnuAnalysisDescr_XvsMultY: TMenuItem; + + mnuAnalysisMultReg: TMenuItem; + mnuAnalysisMultReg_Backward: TMenuItem; + mnuAnalysisMultReg_BestComb: TMenuItem; + mnuAnalysisMultReg_BinLogistic: TMenuItem; + mnuAnalysisMultReg_BlockEntry: TMenuItem; + mnuAnalysisMultReg_CoxSurvival: TMenuItem; + mnuAnalysisMultReg_Forward: TMenuItem; + mnuAnalysisMultReg_LinProg: TMenuItem; + mnuAnalysisMultReg_LSMR: TMenuItem; + mnuAnalysisMultReg_Simult: TMenuItem; + mnuAnalysisMultReg_TwoStage: TMenuItem; + mnuAnalysisMultReg_Weighted: TMenuItem; + mnuAnalysisSPC: TMenuItem; mnuAnalysisSPC_CChart: TMenuItem; mnuAnalysisSPC_CUSUM: TMenuItem; @@ -180,7 +214,6 @@ type MedianPolish: TMenuItem; ItemBankMenuItem: TMenuItem; lifetable: TMenuItem; - LSMRitem: TMenuItem; MenuItem42: TMenuItem; MenuItem43: TMenuItem; MenuItem45: TMenuItem; @@ -198,8 +231,6 @@ type PicView: TMenuItem; mnuShowOptions: TMenuItem; WghtedKappa: TMenuItem; - WLSReg: TMenuItem; - TwoSLSReg: TMenuItem; RiditAnalysis: TMenuItem; MenuItem9: TMenuItem; OpenDialog: TOpenDialog; @@ -208,14 +239,6 @@ type MenuItem72: TMenuItem; MenuItem73: TMenuItem; MenuItem74: TMenuItem; - MenuItem75: TMenuItem; - MenuItem76: TMenuItem; - MenuItem77: TMenuItem; - MenuItem78: TMenuItem; - MenuItem79: TMenuItem; - MenuItem80: TMenuItem; - MenuItem81: TMenuItem; - MenuItem82: TMenuItem; MenuItem83: TMenuItem; MenuItem84: TMenuItem; MenuItem85: TMenuItem; @@ -246,31 +269,11 @@ type OneSampTests: TMenuItem; MenuItem34: TMenuItem; MenuItem35: TMenuItem; - MenuItem36: TMenuItem; MenuItem37: TMenuItem; MenuItem38: TMenuItem; MenuItem39: TMenuItem; MenuItem40: TMenuItem; - mnuAnalysisDescr: TMenuItem; - mnuAnalysisDescr_Breakdown: TMenuItem; - mnuAnalysisDescr_BoxPlot: TMenuItem; - mnuAnalysisDescr_BubblePlot: TMenuItem; - mnuAnalysisDescr_CompareDists: TMenuItem; - mnuAnalysisDescr_CrossTabs: TMenuItem; - mnuAnalysisDescr_DataSmooth: TMenuItem; - mnuAnalysisDescr_DistribStats: TMenuItem; - mnuAnalysisDescr_Freq: TMenuItem; - mnuAnalysisDescr_GrpFreq: TMenuItem; - mnuAnalysisDescr_HomogeneityTest: TMenuItem; - mnuAnalysisDescr_MultXvsY: TMenuItem; - mnuAnalysisDescr_Normality: TMenuItem; - mnuAnalysisDescr_PlotXvsY: TMenuItem; - mnuAnalysisDescr_ResistanceLine: TMenuItem; - mnuAnalysisDescr_StemLeaf: TMenuItem; - mnuAnalysisDescr_ThreeDRotate: TMenuItem; - mnuAnalysisDescr_XvsMultY: TMenuItem; - PropDiff: TMenuItem; CorrDiff: TMenuItem; ttests: TMenuItem; @@ -294,6 +297,7 @@ type procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormShow(Sender: TObject); + // Menu "Analysis" / "Descriptive" procedure mnuAnalysisDescr_BoxPlotClick(Sender: TObject); procedure mnuAnalysisDescr_BreakdownClick(Sender: TObject); @@ -313,6 +317,19 @@ type procedure mnuAnalysisDescr_ThreeDRotateClick(Sender: TObject); procedure mnuAnalysisDescr_XvsMultYClick(Sender: TObject); + // Menu "Multiple Regression" + procedure mnuAnalysisMultReg_BackwardClick(Sender: TObject); + procedure mnuAnalysisMultReg_BestCombClick(Sender: TObject); + procedure mnuAnalysisMultReg_BinLogisticClick(Sender: TObject); + procedure mnuAnalysisMultReg_BlockEntryClick(Sender: TObject); + procedure mnuAnalysisMultReg_CoxSurvivalClick(Sender: TObject); + procedure mnuAnalysisMultReg_ForwardClick(Sender: TObject); + procedure mnuAnalysisMultReg_LinProgClick(Sender: TObject); + procedure mnuAnalysisMultReg_LSMRClick(Sender: TObject); + procedure mnuAnalysisMultReg_SimultClick(Sender: TObject); + procedure mnuAnalysisMultReg_TwoStageClick(Sender: TObject); + procedure mnuAnalysisMultReg_WeightedClick(Sender: TObject); + // Menu 'Analysis" / "Statistical Process Control" procedure mnuAnalysisSPC_CChartClick(Sender: TObject); procedure mnuAnalysisSPC_CUSUMClick(Sender: TObject); @@ -416,7 +433,6 @@ type procedure KSTestClick(Sender: TObject); procedure LatinSquaresClick(Sender: TObject); procedure lifetableClick(Sender: TObject); - procedure LSMRitemClick(Sender: TObject); procedure MatManMnuClick(Sender: TObject); procedure MedianPolishClick(Sender: TObject); procedure MenuItem100Click(Sender: TObject); @@ -446,14 +462,6 @@ type procedure MenuItem72Click(Sender: TObject); procedure MenuItem73Click(Sender: TObject); procedure MenuItem74Click(Sender: TObject); - procedure MenuItem75Click(Sender: TObject); - procedure MenuItem76Click(Sender: TObject); - procedure MenuItem77Click(Sender: TObject); - procedure MenuItem78Click(Sender: TObject); - procedure MenuItem79Click(Sender: TObject); - procedure MenuItem80Click(Sender: TObject); - procedure MenuItem81Click(Sender: TObject); - procedure MenuItem82Click(Sender: TObject); procedure MenuItem83Click(Sender: TObject); procedure MenuItem84Click(Sender: TObject); procedure MenuItem85Click(Sender: TObject); @@ -482,10 +490,8 @@ type procedure SimpChiSqrClick(Sender: TObject); procedure SRHItemClick(Sender: TObject); procedure TTestsClick(Sender: TObject); - procedure TwoSLSRegClick(Sender: TObject); procedure WghtedKappaClick(Sender: TObject); procedure WithinAnovaClick(Sender: TObject); - procedure WLSRegClick(Sender: TObject); private { private declarations } {$IFDEF USE_EXTERNAL_HELP_VIEWER} @@ -695,69 +701,6 @@ begin CannonFrm.ShowModal; end; -// Menu "Analysis" > "Multiple Regression" > "Forward Stepwise" -procedure TOS3MainFrm.MenuItem75Click(Sender: TObject); -begin - if StepFwdFrm = nil then - Application.CreateForm(TStepFwdFrm, StepFwdFrm); - StepFwdFrm.ShowModal; -end; - -// Menu "Analysis" > "Multiple Regression" > "Backward Stepwise" -procedure TOS3MainFrm.MenuItem76Click(Sender: TObject); -begin - if BackRegFrm = nil then - Application.CreateForm(TBackRegFrm, BackRegFrm); - BackRegFrm.ShowModal; -end; - -// Menu "Analysis" > "Multiple Regression" > "Simultaneous" -procedure TOS3MainFrm.MenuItem77Click(Sender: TObject); -begin - if SimultFrm = nil then - Application.CreateForm(TSimultFrm, SimultFrm); - SimultFrm.ShowModal; -end; - -procedure TOS3MainFrm.MenuItem78Click(Sender: TObject); -begin - if BlkMregFrm = nil then - Application.CreateForm(TBlkMregFrm, BlkMregFrm); - BlkMregFrm.ShowModal; -end; - -// Menu "Analysis" > "Multiple Regression" > "Best Combination" -procedure TOS3MainFrm.MenuItem79Click(Sender: TObject); -begin - if BestRegFrm = nil then - Application.CreateForm(TBestRegFrm, BestRegFrm); - BestRegFrm.ShowModal; -end; - -// Menu "Analysis" > "Multiple Regression" > "Binary Logistic" -procedure TOS3MainFrm.MenuItem80Click(Sender: TObject); -begin - if LogRegFrm = nil then - Application.CreateForm(TLogRegFrm, LogRegFrm); - LogRegFrm.ShowModal; -end; - -// Menu "Analysis" > "Multiple Regression" > "Cox Proportional Hazzards Survival Regression" -procedure TOS3MainFrm.MenuItem81Click(Sender: TObject); -begin - if CoxRegFrm = nil then - Application.CreateForm(TCoxRegFrm, CoxRegFrm); - CoxRegFrm.ShowModal; -end; - -// Menu "Analysis" > "Multiple Regression" > "Linear Programming" -procedure TOS3MainFrm.MenuItem82Click(Sender: TObject); -begin - if LinProFrm = nil then - Application.CreateForm(TLinProFrm, LinProFrm); - LinProFrm.ShowModal; -end; - // Menu "Analysis" > "Multivariate" > "MANOVA / Discriminant Function" procedure TOS3MainFrm.MenuItem83Click(Sender: TObject); begin @@ -975,14 +918,6 @@ begin TTestFrm.ShowModal; end; -// Menu "Analysis" > "Multiple Regression" > "Two Stage Least Squares Regression" -procedure TOS3MainFrm.TwoSLSRegClick(Sender: TObject); -begin - if TwoSLSFrm = nil then - Application.CreateForm(TTwoSLSFrm, TwoSLSFrm); - TwoSLSFrm.ShowModal; -end; - // Menu "Analysis" > "Nonparametric" > "Kappa and Weighted Kappa" procedure TOS3MainFrm.WghtedKappaClick(Sender: TObject); begin @@ -999,13 +934,6 @@ begin WithinAnovaFrm.ShowModal; end; -// Menu "Analysis" > "Multiple Regression" > "Weighted Least Squares Regression" -procedure TOS3MainFrm.WLSRegClick(Sender: TObject); -begin - if WLSFrm = nil then - Application.CreateForm(TWLSFrm, WLSFrm); - WLSFrm.ShowModal; -end; { @@ -1788,14 +1716,6 @@ begin LifeTableForm.ShowModal; end; -// Menu "Analysis" > "Nonparametric" > "Least Squares Multiple Regression" -procedure TOS3MainFrm.LSMRitemClick(Sender: TObject); -begin - if LSMRegForm = nil then - Application.CreateForm(TLSMregForm, LSMregForm); - LSMregForm.ShowModal; -end; - procedure TOS3MainFrm.MatManMnuClick(Sender: TObject); begin if MatManFrm = nil then @@ -2108,6 +2028,96 @@ begin end; +{ Multiple regression commands } + +// Menu "Analysis" > "Multiple Regression" > "Backward Stepwise" +procedure TOS3MainFrm.mnuAnalysisMultReg_BackwardClick(Sender: TObject); +begin + if BackRegFrm = nil then + Application.CreateForm(TBackRegFrm, BackRegFrm); + BackRegFrm.ShowModal; +end; + +// Menu "Analysis" > "Multiple Regression" > "Best Combination" +procedure TOS3MainFrm.mnuAnalysisMultReg_BestCombClick(Sender: TObject); +begin + if BestRegFrm = nil then + Application.CreateForm(TBestRegFrm, BestRegFrm); + BestRegFrm.ShowModal; +end; + +// Menu "Analysis" > "Multiple Regression" > "Binary Logistic" +procedure TOS3MainFrm.mnuAnalysisMultReg_BinLogisticClick(Sender: TObject); +begin + if LogRegFrm = nil then + Application.CreateForm(TLogRegFrm, LogRegFrm); + LogRegFrm.ShowModal; +end; + +procedure TOS3MainFrm.mnuAnalysisMultReg_BlockEntryClick(Sender: TObject); +begin + if BlkMregFrm = nil then + Application.CreateForm(TBlkMregFrm, BlkMregFrm); + BlkMregFrm.ShowModal; +end; + +// Menu "Analysis" > "Multiple Regression" > "Cox Proportional Hazzards Survival Regression" +procedure TOS3MainFrm.mnuAnalysisMultReg_CoxSurvivalClick(Sender: TObject); +begin + if CoxRegFrm = nil then + Application.CreateForm(TCoxRegFrm, CoxRegFrm); + CoxRegFrm.ShowModal; +end; + +// Menu "Analysis" > "Multiple Regression" > "Forward Stepwise" +procedure TOS3MainFrm.mnuAnalysisMultReg_ForwardClick(Sender: TObject); +begin + if StepFwdFrm = nil then + Application.CreateForm(TStepFwdFrm, StepFwdFrm); + StepFwdFrm.ShowModal; +end; + +// Menu "Analysis" > "Multiple Regression" > "Linear Programming" +procedure TOS3MainFrm.mnuAnalysisMultReg_LinProgClick(Sender: TObject); +begin + if LinProFrm = nil then + Application.CreateForm(TLinProFrm, LinProFrm); + LinProFrm.ShowModal; +end; + +// Menu "Analysis" > "Multiple Regression" > "Least Squares Multiple Regression" +procedure TOS3MainFrm.mnuAnalysisMultReg_LSMRClick(Sender: TObject); +begin + if LSMRegForm = nil then + Application.CreateForm(TLSMregForm, LSMregForm); + LSMregForm.Show; +end; + +// Menu "Analysis" > "Multiple Regression" > "Simultaneous" +procedure TOS3MainFrm.mnuAnalysisMultReg_SimultClick(Sender: TObject); +begin + if SimultFrm = nil then + Application.CreateForm(TSimultFrm, SimultFrm); + SimultFrm.ShowModal; +end; + +// Menu "Analysis" > "Multiple Regression" > "Two Stage Least Squares Regression" +procedure TOS3MainFrm.mnuAnalysisMultReg_TwoStageClick(Sender: TObject); +begin + if TwoSLSFrm = nil then + Application.CreateForm(TTwoSLSFrm, TwoSLSFrm); + TwoSLSFrm.ShowModal; +end; + +// Menu "Analysis" > "Multiple Regression" > "Weighted Least Squares Regression" +procedure TOS3MainFrm.mnuAnalysisMultReg_WeightedClick(Sender: TObject); +begin + if WLSFrm = nil then + Application.CreateForm(TWLSFrm, WLSFrm); + WLSFrm.ShowModal; +end; + + { SPC commands } // Menu "Analysis" > "Statistical Process Control" > "Defect (nonconformity) c Chart" diff --git a/applications/lazstats/source/frames/reportframeunit.lfm b/applications/lazstats/source/frames/reportframeunit.lfm index 25ceb52d4..db03f7321 100644 --- a/applications/lazstats/source/frames/reportframeunit.lfm +++ b/applications/lazstats/source/frames/reportframeunit.lfm @@ -78,6 +78,7 @@ object ReportFrame: TReportFrame ParentFont = False ScrollBars = ssAutoBoth TabOrder = 0 + WordWrap = False end end object SaveDialog: TSaveDialog