You've already forked lazarus-ccr
LazStats: Inherit the remaining regression forms from TBasicStatsReportForm.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7791 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -497,7 +497,7 @@
|
||||
<Unit49>
|
||||
<Filename Value="forms\analysis\multiple_regression\blkmregunit.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="BlkMregFrm"/>
|
||||
<ComponentName Value="BlkMregForm"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="BlkMRegUnit"/>
|
||||
@ -513,7 +513,7 @@
|
||||
<Unit51>
|
||||
<Filename Value="forms\analysis\multiple_regression\bestregunit.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="BestRegFrm"/>
|
||||
<ComponentName Value="BestRegForm"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="BestRegUnit"/>
|
||||
@ -521,7 +521,7 @@
|
||||
<Unit52>
|
||||
<Filename Value="forms\analysis\multiple_regression\simultregunit.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="SimultFrm"/>
|
||||
<ComponentName Value="SimultForm"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="SimultRegUnit"/>
|
||||
@ -529,7 +529,7 @@
|
||||
<Unit53>
|
||||
<Filename Value="forms\analysis\multiple_regression\coxregunit.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="CoxRegFrm"/>
|
||||
<ComponentName Value="CoxRegForm"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="CoxRegUnit"/>
|
||||
@ -537,7 +537,7 @@
|
||||
<Unit54>
|
||||
<Filename Value="forms\analysis\multiple_regression\logregunit.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="LogRegFrm"/>
|
||||
<ComponentName Value="LogRegForm"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="LogRegUnit"/>
|
||||
@ -545,7 +545,7 @@
|
||||
<Unit55>
|
||||
<Filename Value="forms\analysis\multiple_regression\linprounit.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="LinProFrm"/>
|
||||
<ComponentName Value="LinProForm"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="LinProUnit"/>
|
||||
@ -905,7 +905,7 @@
|
||||
<Unit100>
|
||||
<Filename Value="forms\analysis\multiple_regression\twoslsunit.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="TwoSLSFrm"/>
|
||||
<ComponentName Value="TwoSLSForm"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="TwoSLSUnit"/>
|
||||
|
@ -1,398 +1,351 @@
|
||||
object BestRegFrm: TBestRegFrm
|
||||
Left = 869
|
||||
inherited BestRegForm: TBestRegForm
|
||||
Left = 525
|
||||
Height = 433
|
||||
Top = 266
|
||||
Width = 474
|
||||
Top = 233
|
||||
Width = 843
|
||||
HelpType = htKeyword
|
||||
HelpKeyword = 'html/BestCombinationMultipleRegressio.htm'
|
||||
AutoSize = True
|
||||
Caption = 'Best Combination Multiple Regression'
|
||||
ClientHeight = 433
|
||||
ClientWidth = 474
|
||||
OnActivate = FormActivate
|
||||
OnCreate = FormCreate
|
||||
OnShow = FormShow
|
||||
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 Label2: TLabel
|
||||
AnchorSideLeft.Control = BlockList
|
||||
AnchorSideTop.Control = InBtn
|
||||
Left = 268
|
||||
Height = 15
|
||||
Top = 105
|
||||
Width = 93
|
||||
Caption = 'Selected Variables'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label3: TLabel
|
||||
AnchorSideLeft.Control = DepVar
|
||||
AnchorSideBottom.Control = DepVar
|
||||
Left = 268
|
||||
Height = 15
|
||||
Top = 33
|
||||
Width = 102
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Bottom = 2
|
||||
Caption = 'Dependent Variable'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label4: TLabel
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = InProb
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = GroupBox1
|
||||
Left = 8
|
||||
Height = 15
|
||||
Top = 224
|
||||
Width = 185
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 16
|
||||
BorderSpacing.Right = 8
|
||||
Caption = 'Minimum Probability for Inclusion:'
|
||||
ParentColor = False
|
||||
WordWrap = True
|
||||
end
|
||||
object VarList: TListBox
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Label1
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = AllBtn
|
||||
AnchorSideBottom.Control = InProb
|
||||
Left = 8
|
||||
Height = 187
|
||||
Top = 25
|
||||
Width = 198
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 6
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnSelectionChange = VarListSelectionChange
|
||||
TabOrder = 0
|
||||
end
|
||||
object InBtn: TBitBtn
|
||||
AnchorSideLeft.Control = AllBtn
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = DepOutBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 223
|
||||
Height = 28
|
||||
Top = 105
|
||||
Width = 28
|
||||
BorderSpacing.Top = 20
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = InBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 1
|
||||
end
|
||||
object OutBtn: TBitBtn
|
||||
AnchorSideLeft.Control = AllBtn
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = InBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 223
|
||||
Height = 28
|
||||
Top = 137
|
||||
Width = 28
|
||||
BorderSpacing.Top = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = OutBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 2
|
||||
end
|
||||
object AllBtn: TBitBtn
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = OutBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 214
|
||||
Height = 25
|
||||
Top = 185
|
||||
Width = 46
|
||||
AutoSize = True
|
||||
BorderSpacing.Top = 20
|
||||
Caption = 'ALL'
|
||||
OnClick = AllBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 3
|
||||
end
|
||||
object BlockList: TListBox
|
||||
AnchorSideLeft.Control = AllBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = Label2
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = VarList
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 268
|
||||
Height = 90
|
||||
Top = 122
|
||||
Width = 198
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 8
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnSelectionChange = VarListSelectionChange
|
||||
TabOrder = 4
|
||||
end
|
||||
object DepInBtn: TBitBtn
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = VarList
|
||||
Left = 223
|
||||
Height = 28
|
||||
Top = 25
|
||||
Width = 28
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = DepInBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 5
|
||||
end
|
||||
object DepOutBtn: TBitBtn
|
||||
AnchorSideLeft.Control = DepInBtn
|
||||
AnchorSideTop.Control = DepInBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 223
|
||||
Height = 28
|
||||
Top = 57
|
||||
Width = 28
|
||||
BorderSpacing.Top = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = DepOutBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 6
|
||||
end
|
||||
object DepVar: TEdit
|
||||
AnchorSideLeft.Control = AllBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = DepOutBtn
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 268
|
||||
Height = 23
|
||||
Top = 50
|
||||
Width = 198
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 12
|
||||
TabOrder = 7
|
||||
Text = 'DepVar'
|
||||
end
|
||||
object GroupBox1: TGroupBox
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideBottom.Control = Bevel1
|
||||
Left = 8
|
||||
Height = 135
|
||||
Top = 249
|
||||
Width = 459
|
||||
Anchors = [akLeft, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Right = 8
|
||||
Caption = 'Options'
|
||||
ChildSizing.LeftRightSpacing = 12
|
||||
ChildSizing.TopBottomSpacing = 6
|
||||
ChildSizing.VerticalSpacing = 2
|
||||
ChildSizing.Layout = cclTopToBottomThenLeftToRight
|
||||
ChildSizing.ControlsPerLine = 5
|
||||
ClientHeight = 115
|
||||
ClientWidth = 455
|
||||
TabOrder = 8
|
||||
object CPChkBox: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 6
|
||||
Width = 223
|
||||
Caption = 'Show Cross-Products Matrix'
|
||||
TabOrder = 0
|
||||
ClientWidth = 843
|
||||
inherited ParamsPanel: TPanel
|
||||
Height = 417
|
||||
Width = 467
|
||||
ClientHeight = 417
|
||||
ClientWidth = 467
|
||||
inherited CloseBtn: TButton
|
||||
Left = 412
|
||||
Top = 392
|
||||
end
|
||||
object CovChkBox: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 27
|
||||
Width = 223
|
||||
Caption = 'Show Deviation Cross-Products Matrix'
|
||||
TabOrder = 1
|
||||
inherited ComputeBtn: TButton
|
||||
Left = 328
|
||||
Top = 392
|
||||
end
|
||||
object CorrsChkBox: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 48
|
||||
Width = 223
|
||||
Caption = 'Show Intercorrelations Matrix'
|
||||
TabOrder = 2
|
||||
inherited ResetBtn: TButton
|
||||
Left = 266
|
||||
Top = 392
|
||||
end
|
||||
object MeansChkBox: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 69
|
||||
Width = 223
|
||||
Caption = 'Show Means'
|
||||
TabOrder = 3
|
||||
inherited HelpBtn: TButton
|
||||
Left = 207
|
||||
Top = 392
|
||||
end
|
||||
object VarChkBox: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 90
|
||||
Width = 223
|
||||
Caption = 'Show Variances'
|
||||
inherited ButtonBevel: TBevel
|
||||
Top = 376
|
||||
Width = 467
|
||||
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 Label2: TLabel[6]
|
||||
AnchorSideLeft.Control = BlockList
|
||||
AnchorSideTop.Control = InBtn
|
||||
Left = 259
|
||||
Height = 15
|
||||
Top = 93
|
||||
Width = 93
|
||||
Caption = 'Selected Variables'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label3: TLabel[7]
|
||||
AnchorSideLeft.Control = DepVarEdit
|
||||
AnchorSideBottom.Control = DepVarEdit
|
||||
Left = 259
|
||||
Height = 15
|
||||
Top = 21
|
||||
Width = 102
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Bottom = 2
|
||||
Caption = 'Dependent Variable'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label4: TLabel[8]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideTop.Control = InProbEdit
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = GroupBox1
|
||||
Left = 0
|
||||
Height = 15
|
||||
Top = 214
|
||||
Width = 185
|
||||
BorderSpacing.Top = 16
|
||||
BorderSpacing.Right = 8
|
||||
Caption = 'Minimum Probability for Inclusion:'
|
||||
ParentColor = False
|
||||
WordWrap = True
|
||||
end
|
||||
object VarList: TListBox[9]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideTop.Control = Label1
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = AllBtn
|
||||
AnchorSideBottom.Control = InProbEdit
|
||||
Left = 0
|
||||
Height = 185
|
||||
Top = 17
|
||||
Width = 207
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 6
|
||||
BorderSpacing.Bottom = 8
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnDblClick = VarListDblClick
|
||||
OnSelectionChange = VarListSelectionChange
|
||||
TabOrder = 4
|
||||
end
|
||||
object SDChkBox: TCheckBox
|
||||
Left = 235
|
||||
Height = 19
|
||||
Top = 6
|
||||
Width = 208
|
||||
Caption = 'Show Standard Deviations'
|
||||
object InBtn: TBitBtn[10]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = DepOutBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 219
|
||||
Height = 26
|
||||
Top = 93
|
||||
Width = 28
|
||||
BorderSpacing.Top = 20
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = InBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 5
|
||||
end
|
||||
object MatSaveChkBox: TCheckBox
|
||||
Left = 235
|
||||
Height = 19
|
||||
Top = 27
|
||||
Width = 208
|
||||
Caption = 'Save Correlation Matrix'
|
||||
object OutBtn: TBitBtn[11]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = InBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 219
|
||||
Height = 26
|
||||
Top = 123
|
||||
Width = 28
|
||||
BorderSpacing.Top = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = OutBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 6
|
||||
end
|
||||
object PredictChkBox: TCheckBox
|
||||
Left = 235
|
||||
Height = 19
|
||||
Top = 48
|
||||
Width = 208
|
||||
Caption = 'Predictions, residuals, C.I''s to grid'
|
||||
object AllBtn: TBitBtn[12]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = OutBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 213
|
||||
Height = 25
|
||||
Top = 169
|
||||
Width = 40
|
||||
AutoSize = True
|
||||
BorderSpacing.Top = 20
|
||||
Caption = 'All'
|
||||
OnClick = AllBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 7
|
||||
end
|
||||
object MatInChkBox: TCheckBox
|
||||
Left = 235
|
||||
Height = 19
|
||||
Top = 69
|
||||
object BlockList: TListBox[13]
|
||||
AnchorSideLeft.Control = AllBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = Label2
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = ParamsPanel
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = VarList
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 259
|
||||
Height = 92
|
||||
Top = 110
|
||||
Width = 208
|
||||
Caption = 'Enter Data from a Matrix'
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 2
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnDblClick = BlockListDblClick
|
||||
OnSelectionChange = VarListSelectionChange
|
||||
TabOrder = 8
|
||||
end
|
||||
object ComboShowChkBox: TCheckBox
|
||||
Left = 235
|
||||
Height = 19
|
||||
Top = 90
|
||||
Width = 208
|
||||
Caption = 'Show Results for each Combination'
|
||||
object DepInBtn: TBitBtn[14]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = VarList
|
||||
Left = 219
|
||||
Height = 26
|
||||
Top = 17
|
||||
Width = 28
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = DepInBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 9
|
||||
end
|
||||
object DepOutBtn: TBitBtn[15]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = DepInBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 219
|
||||
Height = 26
|
||||
Top = 47
|
||||
Width = 28
|
||||
BorderSpacing.Top = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = DepOutBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 10
|
||||
end
|
||||
object DepVarEdit: TEdit[16]
|
||||
AnchorSideLeft.Control = AllBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideRight.Control = ParamsPanel
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = DepOutBtn
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 259
|
||||
Height = 23
|
||||
Top = 38
|
||||
Width = 208
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Bottom = 12
|
||||
TabOrder = 11
|
||||
Text = 'DepVarEdit'
|
||||
end
|
||||
object GroupBox1: TGroupBox[17]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideBottom.Control = ButtonBevel
|
||||
Left = 0
|
||||
Height = 135
|
||||
Top = 241
|
||||
Width = 459
|
||||
Anchors = [akLeft, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Right = 8
|
||||
Caption = 'Options'
|
||||
ChildSizing.LeftRightSpacing = 12
|
||||
ChildSizing.TopBottomSpacing = 6
|
||||
ChildSizing.VerticalSpacing = 2
|
||||
ChildSizing.Layout = cclTopToBottomThenLeftToRight
|
||||
ChildSizing.ControlsPerLine = 5
|
||||
ClientHeight = 115
|
||||
ClientWidth = 455
|
||||
TabOrder = 12
|
||||
object CPChkBox: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 6
|
||||
Width = 223
|
||||
Caption = 'Show Cross-Products Matrix'
|
||||
TabOrder = 0
|
||||
end
|
||||
object CovChkBox: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 27
|
||||
Width = 223
|
||||
Caption = 'Show Deviation Cross-Products Matrix'
|
||||
TabOrder = 1
|
||||
end
|
||||
object CorrsChkBox: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 48
|
||||
Width = 223
|
||||
Caption = 'Show Intercorrelations Matrix'
|
||||
TabOrder = 2
|
||||
end
|
||||
object MeansChkBox: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 69
|
||||
Width = 223
|
||||
Caption = 'Show Means'
|
||||
TabOrder = 3
|
||||
end
|
||||
object VarChkBox: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 90
|
||||
Width = 223
|
||||
Caption = 'Show Variances'
|
||||
TabOrder = 4
|
||||
end
|
||||
object SDChkBox: TCheckBox
|
||||
Left = 235
|
||||
Height = 19
|
||||
Top = 6
|
||||
Width = 208
|
||||
Caption = 'Show Standard Deviations'
|
||||
TabOrder = 5
|
||||
end
|
||||
object MatSaveChkBox: TCheckBox
|
||||
Left = 235
|
||||
Height = 19
|
||||
Top = 27
|
||||
Width = 208
|
||||
Caption = 'Save Correlation Matrix'
|
||||
TabOrder = 6
|
||||
end
|
||||
object PredictChkBox: TCheckBox
|
||||
Left = 235
|
||||
Height = 19
|
||||
Top = 48
|
||||
Width = 208
|
||||
Caption = 'Predictions, residuals, C.I''s to grid'
|
||||
TabOrder = 7
|
||||
end
|
||||
object MatInChkBox: TCheckBox
|
||||
Left = 235
|
||||
Height = 19
|
||||
Top = 69
|
||||
Width = 208
|
||||
Caption = 'Enter Data from a Matrix'
|
||||
TabOrder = 8
|
||||
end
|
||||
object ComboShowChkBox: TCheckBox
|
||||
Left = 235
|
||||
Height = 19
|
||||
Top = 90
|
||||
Width = 208
|
||||
Caption = 'Show Results for each Combination'
|
||||
TabOrder = 9
|
||||
end
|
||||
end
|
||||
object InProbEdit: TEdit[18]
|
||||
AnchorSideLeft.Control = Label4
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = Label4
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideBottom.Control = GroupBox1
|
||||
Left = 193
|
||||
Height = 23
|
||||
Top = 210
|
||||
Width = 59
|
||||
Alignment = taRightJustify
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
TabOrder = 13
|
||||
Text = 'InProbEdit'
|
||||
end
|
||||
end
|
||||
object InProb: TEdit
|
||||
AnchorSideLeft.Control = Label4
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = Label4
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideBottom.Control = GroupBox1
|
||||
Left = 201
|
||||
Height = 23
|
||||
Top = 220
|
||||
Width = 59
|
||||
Alignment = taRightJustify
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Bottom = 6
|
||||
TabOrder = 9
|
||||
Text = 'InProb'
|
||||
inherited ParamsSplitter: TSplitter
|
||||
Left = 479
|
||||
Height = 433
|
||||
end
|
||||
object ResetBtn: TButton
|
||||
AnchorSideRight.Control = ComputeBtn
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 265
|
||||
Height = 25
|
||||
Top = 400
|
||||
Width = 54
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Reset'
|
||||
OnClick = ResetBtnClick
|
||||
TabOrder = 10
|
||||
end
|
||||
object ComputeBtn: TButton
|
||||
AnchorSideRight.Control = CloseBtn
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 327
|
||||
Height = 25
|
||||
Top = 400
|
||||
Width = 76
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Compute'
|
||||
OnClick = ComputeBtnClick
|
||||
TabOrder = 11
|
||||
end
|
||||
object CloseBtn: TButton
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 411
|
||||
Height = 25
|
||||
Top = 400
|
||||
Width = 55
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Close'
|
||||
ModalResult = 11
|
||||
TabOrder = 12
|
||||
end
|
||||
object Bevel1: TBevel
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = CloseBtn
|
||||
Left = 0
|
||||
Height = 8
|
||||
Top = 384
|
||||
Width = 474
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
Shape = bsBottomLine
|
||||
end
|
||||
object OpenDialog1: TOpenDialog
|
||||
object OpenDialog1: TOpenDialog[2]
|
||||
Left = 56
|
||||
Top = 40
|
||||
end
|
||||
object SaveDialog1: TSaveDialog
|
||||
object SaveDialog1: TSaveDialog[3]
|
||||
Left = 56
|
||||
Top = 104
|
||||
end
|
||||
|
@ -5,17 +5,16 @@ unit BestRegUnit;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
|
||||
StdCtrls, Buttons, ExtCtrls,
|
||||
Globals, MainUnit, MatrixLib, OutputUnit, FunctionsLib, DataProcs;
|
||||
Globals, MainUnit, MatrixLib, FunctionsLib, DataProcs, BasicStatsReportFormUnit;
|
||||
|
||||
|
||||
type
|
||||
|
||||
{ TBestRegFrm }
|
||||
{ TBestRegForm }
|
||||
|
||||
TBestRegFrm = class(TForm)
|
||||
Bevel1: TBevel;
|
||||
TBestRegForm = class(TBasicStatsReportForm)
|
||||
CPChkBox: TCheckBox;
|
||||
ComboShowChkBox: TCheckBox;
|
||||
CovChkBox: TCheckBox;
|
||||
@ -31,11 +30,8 @@ type
|
||||
AllBtn: TBitBtn;
|
||||
DepInBtn: TBitBtn;
|
||||
DepOutBtn: TBitBtn;
|
||||
ResetBtn: TButton;
|
||||
ComputeBtn: TButton;
|
||||
CloseBtn: TButton;
|
||||
DepVar: TEdit;
|
||||
InProb: TEdit;
|
||||
DepVarEdit: TEdit;
|
||||
InProbEdit: TEdit;
|
||||
GroupBox1: TGroupBox;
|
||||
Label1: TLabel;
|
||||
Label2: TLabel;
|
||||
@ -47,21 +43,16 @@ type
|
||||
VarList: TListBox;
|
||||
|
||||
procedure AllBtnClick(Sender: TObject);
|
||||
procedure ComputeBtnClick(Sender: TObject);
|
||||
procedure BlockListDblClick(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 ResetBtnClick(Sender: TObject);
|
||||
procedure OutBtnClick(Sender: TObject);
|
||||
procedure VarListDblClick(Sender: TObject);
|
||||
procedure VarListSelectionChange(Sender: TObject; User: boolean);
|
||||
|
||||
|
||||
private
|
||||
{ private declarations }
|
||||
FAutoSized: boolean;
|
||||
pred_labels : StrDyneVec;
|
||||
y_ptr, v : integer;
|
||||
ii, jj : integer;
|
||||
@ -119,53 +110,183 @@ type
|
||||
procedure BestSetStats(AReport: TStrings);
|
||||
procedure BumpOne;
|
||||
procedure StartSet;
|
||||
procedure Reset;
|
||||
|
||||
procedure UpdateBtnStates;
|
||||
procedure ResetVars;
|
||||
|
||||
protected
|
||||
procedure AdjustConstraints; override;
|
||||
procedure Compute; override;
|
||||
procedure UpdateBtnStates; override;
|
||||
|
||||
public
|
||||
{ public declarations }
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
procedure Reset; override;
|
||||
end;
|
||||
|
||||
var
|
||||
BestRegFrm: TBestRegFrm;
|
||||
BestRegForm: TBestRegForm;
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
uses
|
||||
Math,
|
||||
Utils, MathUnit;
|
||||
|
||||
{ TBestRegFrm }
|
||||
|
||||
procedure TBestRegFrm.ResetBtnClick(Sender: TObject);
|
||||
var
|
||||
i: integer;
|
||||
{ TBestRegForm }
|
||||
|
||||
constructor TBestRegForm.Create(AOwner: TComponent);
|
||||
begin
|
||||
BlockList.Clear;
|
||||
inherited;
|
||||
InProbEdit.Text := FormatFloat('0.00', DEFAULT_ALPHA_LEVEL);
|
||||
end;
|
||||
|
||||
|
||||
procedure TBestRegForm.AdjustConstraints;
|
||||
begin
|
||||
inherited;
|
||||
|
||||
ParamsPanel.Constraints.MinWidth := Max(
|
||||
4*CloseBtn.Width + 3*CloseBtn.BorderSpacing.Left,
|
||||
Groupbox1.Width);
|
||||
ParamsPanel.Constraints.MinHeight := InProbEdit.Top + InProbEdit.Height +
|
||||
InProbEdit.BorderSpacing.Top + GroupBox1.Height + ButtonBevel.Height +
|
||||
CloseBtn.BorderSpacing.Top + CloseBtn.Height;
|
||||
end;
|
||||
|
||||
|
||||
procedure TBestRegForm.AllBtnClick(Sender: TObject);
|
||||
var
|
||||
index: integer;
|
||||
begin
|
||||
for index := 0 to VarList.Items.Count-1 do
|
||||
BlockList.Items.Add(VarList.Items[index]);
|
||||
VarList.Clear;
|
||||
for i := 1 to NoVariables do
|
||||
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
|
||||
DepVar.Text := '';
|
||||
|
||||
CPChkBox.Checked := false;
|
||||
CovChkBox.Checked := false;
|
||||
CorrsChkBox.Checked := true;
|
||||
MeansChkBox.Checked := true;
|
||||
VarChkBox.Checked := false;
|
||||
SDChkBox.Checked := true;
|
||||
MatSaveChkBox.Checked := false;
|
||||
PredictChkBox.Checked := false;
|
||||
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TBestRegFrm.FormShow(Sender: TObject);
|
||||
|
||||
procedure TBestRegForm.BestSetStats(AReport: TStrings);
|
||||
var
|
||||
i, j: integer;
|
||||
outline: string;
|
||||
begin
|
||||
ResetBtnClick(self);
|
||||
AReport.Add('');
|
||||
AReport.Add('Variables entered in step %d', [sets]);
|
||||
for i := 1 to sets do
|
||||
begin
|
||||
ii := max_set[i-1];
|
||||
selected[i-1] := max_set[i-1];
|
||||
AReport.Add('%2d %s',[max_set[i-1],ColLabels[ii-1]]);
|
||||
end;
|
||||
AReport.Add('');
|
||||
|
||||
Regress(AReport);
|
||||
|
||||
AReport.Add('Squared Multiple Correlation: %.4f', [mult_r2]);
|
||||
AReport.Add('Dependent variable: %s', [ColLabels[y_ptr-1]]);
|
||||
AReport.Add('');
|
||||
AReport.Add('ANOVA for Regression Effects: ');
|
||||
AReport.Add('SOURCE df SS MS F Prob');
|
||||
|
||||
df_reg := sets;
|
||||
df_res := round(NCases) - sets - 1;
|
||||
df_tot := round(NCases) - 1;
|
||||
ms_reg := ss_reg / df_reg;
|
||||
ss_res := ( 1.0 - mult_R2) * ss_total ;
|
||||
ms_res := ss_res / df_res ;
|
||||
f_test := ms_reg / ms_res ;
|
||||
prob_f := ProbF(f_test, df_reg,df_res);
|
||||
|
||||
{ Get variance of b coefficients }
|
||||
AReport.Add('Regression %3d %14.4f %14.4f %14.4f %14.4f', [df_reg, ss_reg, ms_reg, f_test, prob_f]);
|
||||
AReport.Add('Residual %3d %14.4f %14.4f', [df_res, ss_res, ms_res]);
|
||||
AReport.Add('Total %3d %14.4f', [df_tot, ss_total]);
|
||||
AReport.Add('');
|
||||
|
||||
AReport.Add('Variables in the equation');
|
||||
AReport.Add('VARIABLE b s.e. b Beta t prob. t');
|
||||
for i := 1 to sets do
|
||||
for j := 1 to sets do
|
||||
ind_mat[i-1,j-1] := ind_mat[i-1,j-1] * ms_res ;
|
||||
for i := 1 to sets do
|
||||
begin
|
||||
ii := selected[i-1];
|
||||
pred_labels[i-1] := ColLabels[ii-1];
|
||||
outline := Format('%16s %10.5f ',[ColLabels[ii-1],raw_b[i-1]]);
|
||||
seb := sqrt(ind_mat[i-1,i-1]);
|
||||
t := raw_b[i-1] / seb ;
|
||||
f_test := t * t ;
|
||||
prob_f := probf(f_test,1,df_res);
|
||||
beta := raw_b[i-1] * stddev[ii-1] / stddev[y_ptr-1] ;
|
||||
outline := outline + Format('%8.4f %8.4f %6.3f %6.4f', [seb,beta,t,prob_f]);
|
||||
AReport.Add(outline);
|
||||
end;
|
||||
|
||||
AReport.Add('(Intercept) %10.5f',[b_zero]);
|
||||
AReport.Add('');
|
||||
|
||||
{ MAT_PRINT(sets,ind_mat,pred_labels,'Variance-covariance matrix of b s');}
|
||||
|
||||
{ Now see if the gain was significant over last step }
|
||||
df1 := sets - last_set ;
|
||||
f_test := ((mult_R2 - last_R2 ) / df1 ) / ( (1.0 - mult_R2) / df_res) ;
|
||||
prob_f := probf(f_test, df1,df_res);
|
||||
if prob_f > stop_prob then more_to_do := FALSE ;
|
||||
R2_diff := mult_R2 - last_R2 ;
|
||||
AReport.Add('Increase in squared R for this step: %8.6f', [R2_diff]);
|
||||
AReport.Add('F: %.4f with D.F. %d and %d with Probability %.4f', [f_test, df1, df_res, prob_f]);
|
||||
AReport.Add('');
|
||||
AReport.Add('----------------------------------------------------------');
|
||||
|
||||
last_set := sets;
|
||||
last_R2 := mult_R2;
|
||||
end;
|
||||
|
||||
procedure TBestRegFrm.ComputeBtnClick(Sender: TObject);
|
||||
|
||||
procedure TBestRegForm.BlockListDblClick(Sender: TObject);
|
||||
var
|
||||
index: Integer;
|
||||
begin
|
||||
index := BlockList.ItemIndex;
|
||||
if index > -1 then
|
||||
begin
|
||||
VarList.Items.Add(BlockList.Items[index]);
|
||||
BlockList.Items.Delete(index);
|
||||
UpdatebtnStates;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TBestRegForm.BumpOne;
|
||||
begin
|
||||
if selected[first_pt-1] < no_predictors then
|
||||
selected[first_pt-1] := selected[first_pt-1] + 1
|
||||
else
|
||||
begin
|
||||
all_done := false;
|
||||
while not all_done do
|
||||
begin
|
||||
first_pt := first_pt -1;
|
||||
if first_pt < 1 then
|
||||
all_done := true
|
||||
else
|
||||
begin
|
||||
selected[first_pt-1] := selected[first_pt-1] + 1;
|
||||
if selected[first_pt-1] < selected[first_pt] then
|
||||
begin
|
||||
ResetVars();
|
||||
first_pt := pointer;
|
||||
all_done := true;
|
||||
end else
|
||||
selected[first_pt-1] := selected[first_pt-1] - 1;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TBestRegForm.Compute;
|
||||
var
|
||||
i, j: integer;
|
||||
title: string;
|
||||
@ -177,16 +298,16 @@ var
|
||||
constant: double;
|
||||
lReport: TStrings;
|
||||
begin
|
||||
if InProb.Text = '' then
|
||||
if InProbEdit.Text = '' then
|
||||
begin
|
||||
InProb.SetFocus;
|
||||
InProbEdit.SetFocus;
|
||||
MessageDlg('Probability for inclusion not specified.', mtError, [mbOK], 0);
|
||||
exit;
|
||||
end;
|
||||
|
||||
if not TryStrToFloat(InProb.Text, stop_prob) then // probability to include a block
|
||||
if not TryStrToFloat(InProbEdit.Text, stop_prob) then // probability to include a block
|
||||
begin
|
||||
InProb.SetFocus;
|
||||
InProbEdit.SetFocus;
|
||||
MessageDlg('No number given for probability.', mtError, [mbOk], 0);
|
||||
exit;
|
||||
end;
|
||||
@ -271,7 +392,7 @@ begin
|
||||
|
||||
DepVarCol := NoVars;
|
||||
y_ptr := NoVars;
|
||||
DepVar.Text := RowLabels[NoVars];
|
||||
DepVarEdit.Text := RowLabels[NoVars];
|
||||
|
||||
{ convert correlations to deviation cross-products }
|
||||
for i := 1 to NoVars do
|
||||
@ -304,7 +425,7 @@ begin
|
||||
end;
|
||||
|
||||
{ get dependendent variable column }
|
||||
if DepVar.Text = '' then
|
||||
if DepVarEdit.Text = '' then
|
||||
begin
|
||||
MessageDlg('No dependent variable selected.', mtError, [mbOK], 0);
|
||||
exit;
|
||||
@ -314,7 +435,7 @@ begin
|
||||
y_ptr := NoVars;
|
||||
for j := 1 to NoVariables do
|
||||
begin
|
||||
if DepVar.Text = OS3MainFrm.DataGrid.Cells[j,0] then
|
||||
if DepVarEdit.Text = OS3MainFrm.DataGrid.Cells[j,0] then
|
||||
begin
|
||||
DepVarCol := j;
|
||||
ColNoSelected[NoVars-1] := j;
|
||||
@ -470,29 +591,58 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
DisplayReport(lReport);
|
||||
FReportFrame.DisplayReport(lReport);
|
||||
|
||||
finally
|
||||
lReport.Free;
|
||||
pred_labels := nil;
|
||||
Max_Set := nil;
|
||||
Selected := nil;
|
||||
ColNoSelected := nil;
|
||||
IndepIndex := nil;
|
||||
ColLabels := nil;
|
||||
RowLabels := nil;
|
||||
raw_b := nil;
|
||||
xycross := nil;
|
||||
variance := nil;
|
||||
stddev := nil;
|
||||
mean := nil;
|
||||
sumx := nil;
|
||||
ind_mat := nil;
|
||||
cross_prod := nil;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TBestRegFrm.Init;
|
||||
|
||||
procedure TBestRegForm.DepInBtnClick(Sender: TObject);
|
||||
var
|
||||
index: integer;
|
||||
begin
|
||||
index := VarList.ItemIndex;
|
||||
if (index > -1) and (DepVarEdit.Text = '') then
|
||||
begin
|
||||
DepVarEdit.Text := VarList.Items[index];
|
||||
VarList.Items.Delete(index);
|
||||
end;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
|
||||
procedure TBestRegForm.DepOutBtnClick(Sender: TObject);
|
||||
begin
|
||||
if DepVarEdit.Text <> '' then
|
||||
begin
|
||||
VarList.Items.Add(DepVarEdit.Text);
|
||||
DepVarEdit.Text := '';
|
||||
end;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
|
||||
procedure TBestRegForm.InBtnClick(Sender: TObject);
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
i := 0;
|
||||
while i < VarList.Items.Count do
|
||||
begin
|
||||
if VarList.Selected[i] then
|
||||
begin
|
||||
BlockList.Items.Add(VarList.Items[i]);
|
||||
VarList.Items.Delete(i);
|
||||
i := 0;
|
||||
end else
|
||||
inc(i);
|
||||
end;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TBestRegForm.Init;
|
||||
var
|
||||
i, j: integer;
|
||||
begin
|
||||
@ -507,7 +657,27 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TBestRegFrm.Regress(AReport: TStrings);
|
||||
|
||||
procedure TBestRegForm.OutBtnClick(Sender: TObject);
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
i := 0;
|
||||
while i < BlockList.Items.Count do
|
||||
begin
|
||||
if BlockList.Selected[i] then
|
||||
begin
|
||||
VarList.Items.Add(BlockList.Items[i]);
|
||||
BlockList.Items.Delete(i);
|
||||
i := 0;
|
||||
end else
|
||||
inc(i);
|
||||
end;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
|
||||
procedure TBestRegForm.Regress(AReport: TStrings);
|
||||
var
|
||||
i, j: integer;
|
||||
begin
|
||||
@ -564,122 +734,33 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TBestRegFrm.BestSetStats(AReport: TStrings);
|
||||
var
|
||||
i, j: integer;
|
||||
outline: string;
|
||||
begin
|
||||
AReport.Add('');
|
||||
AReport.Add('Variables entered in step %d', [sets]);
|
||||
for i := 1 to sets do
|
||||
begin
|
||||
ii := max_set[i-1];
|
||||
selected[i-1] := max_set[i-1];
|
||||
AReport.Add('%2d %s',[max_set[i-1],ColLabels[ii-1]]);
|
||||
end;
|
||||
AReport.Add('');
|
||||
|
||||
Regress(AReport);
|
||||
|
||||
AReport.Add('Squared Multiple Correlation: %.4f', [mult_r2]);
|
||||
AReport.Add('Dependent variable: %s', [ColLabels[y_ptr-1]]);
|
||||
AReport.Add('');
|
||||
AReport.Add('ANOVA for Regression Effects: ');
|
||||
AReport.Add('SOURCE df SS MS F Prob');
|
||||
|
||||
df_reg := sets;
|
||||
df_res := round(NCases) - sets - 1;
|
||||
df_tot := round(NCases) - 1;
|
||||
ms_reg := ss_reg / df_reg;
|
||||
ss_res := ( 1.0 - mult_R2) * ss_total ;
|
||||
ms_res := ss_res / df_res ;
|
||||
f_test := ms_reg / ms_res ;
|
||||
prob_f := ProbF(f_test, df_reg,df_res);
|
||||
|
||||
{ Get variance of b coefficients }
|
||||
AReport.Add('Regression %3d %14.4f %14.4f %14.4f %14.4f', [df_reg, ss_reg, ms_reg, f_test, prob_f]);
|
||||
AReport.Add('Residual %3d %14.4f %14.4f', [df_res, ss_res, ms_res]);
|
||||
AReport.Add('Total %3d %14.4f', [df_tot, ss_total]);
|
||||
AReport.Add('');
|
||||
|
||||
AReport.Add('Variables in the equation');
|
||||
AReport.Add('VARIABLE b s.e. b Beta t prob. t');
|
||||
for i := 1 to sets do
|
||||
for j := 1 to sets do
|
||||
ind_mat[i-1,j-1] := ind_mat[i-1,j-1] * ms_res ;
|
||||
for i := 1 to sets do
|
||||
begin
|
||||
ii := selected[i-1];
|
||||
pred_labels[i-1] := ColLabels[ii-1];
|
||||
outline := Format('%16s %10.5f ',[ColLabels[ii-1],raw_b[i-1]]);
|
||||
seb := sqrt(ind_mat[i-1,i-1]);
|
||||
t := raw_b[i-1] / seb ;
|
||||
f_test := t * t ;
|
||||
prob_f := probf(f_test,1,df_res);
|
||||
beta := raw_b[i-1] * stddev[ii-1] / stddev[y_ptr-1] ;
|
||||
outline := outline + Format('%8.4f %8.4f %6.3f %6.4f', [seb,beta,t,prob_f]);
|
||||
AReport.Add(outline);
|
||||
end;
|
||||
|
||||
AReport.Add('(Intercept) %10.5f',[b_zero]);
|
||||
AReport.Add('');
|
||||
|
||||
{ MAT_PRINT(sets,ind_mat,pred_labels,'Variance-covariance matrix of b s');}
|
||||
|
||||
{ Now see if the gain was significant over last step }
|
||||
df1 := sets - last_set ;
|
||||
f_test := ((mult_R2 - last_R2 ) / df1 ) / ( (1.0 - mult_R2) / df_res) ;
|
||||
prob_f := probf(f_test, df1,df_res);
|
||||
if prob_f > stop_prob then more_to_do := FALSE ;
|
||||
R2_diff := mult_R2 - last_R2 ;
|
||||
AReport.Add('Increase in squared R for this step: %8.6f', [R2_diff]);
|
||||
AReport.Add('F: %.4f with D.F. %d and %d with Probability %.4f', [f_test, df1, df_res, prob_f]);
|
||||
AReport.Add('');
|
||||
AReport.Add('----------------------------------------------------------');
|
||||
|
||||
last_set := sets;
|
||||
last_R2 := mult_R2;
|
||||
end;
|
||||
|
||||
procedure TBestRegFrm.BumpOne;
|
||||
begin
|
||||
if selected[first_pt-1] < no_predictors then
|
||||
selected[first_pt-1] := selected[first_pt-1] + 1
|
||||
else
|
||||
begin
|
||||
all_done := false;
|
||||
while not all_done do
|
||||
begin
|
||||
first_pt := first_pt -1;
|
||||
if first_pt < 1 then
|
||||
all_done := true
|
||||
else
|
||||
begin
|
||||
selected[first_pt-1] := selected[first_pt-1] + 1;
|
||||
if selected[first_pt-1] < selected[first_pt] then
|
||||
begin
|
||||
Reset();
|
||||
first_pt := pointer;
|
||||
all_done := true;
|
||||
end else
|
||||
selected[first_pt-1] := selected[first_pt-1] - 1;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TBestRegFrm.StartSet;
|
||||
procedure TBestRegForm.Reset;
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
end_of_set := false;
|
||||
for i := 1 to sets do
|
||||
selected[i-1] := i;
|
||||
first_pt := sets;
|
||||
pointer := sets;
|
||||
inherited;
|
||||
|
||||
DepVarEdit.Clear;
|
||||
BlockList.Clear;
|
||||
VarList.Clear;
|
||||
for i := 1 to NoVariables do
|
||||
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
|
||||
|
||||
CPChkBox.Checked := false;
|
||||
CovChkBox.Checked := false;
|
||||
CorrsChkBox.Checked := false;
|
||||
MeansChkBox.Checked := false;
|
||||
VarChkBox.Checked := false;
|
||||
SDChkBox.Checked := false;
|
||||
MatSaveChkBox.Checked := false;
|
||||
PredictChkBox.Checked := false;
|
||||
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TBestRegFrm.Reset;
|
||||
|
||||
procedure TBestRegForm.ResetVars;
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
@ -691,117 +772,53 @@ begin
|
||||
selected[i-1] := selected[i-2] + 1;
|
||||
end;
|
||||
|
||||
procedure TBestRegFrm.InBtnClick(Sender: TObject);
|
||||
|
||||
procedure TBestRegForm.StartSet;
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
i := 0;
|
||||
while i < VarList.Items.Count do
|
||||
begin
|
||||
if VarList.Selected[i] then
|
||||
begin
|
||||
BlockList.Items.Add(VarList.Items[i]);
|
||||
VarList.Items.Delete(i);
|
||||
i := 0;
|
||||
end else
|
||||
inc(i);
|
||||
end;
|
||||
UpdateBtnStates;
|
||||
end_of_set := false;
|
||||
for i := 1 to sets do
|
||||
selected[i-1] := i;
|
||||
first_pt := sets;
|
||||
pointer := sets;
|
||||
end;
|
||||
|
||||
procedure TBestRegFrm.OutBtnClick(Sender: TObject);
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
i := 0;
|
||||
while i < BlockList.Items.Count do
|
||||
begin
|
||||
if BlockList.Selected[i] then
|
||||
begin
|
||||
VarList.Items.Add(BlockList.Items[i]);
|
||||
BlockList.Items.Delete(i);
|
||||
i := 0;
|
||||
end else
|
||||
inc(i);
|
||||
end;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TBestRegFrm.AllBtnClick(Sender: TObject);
|
||||
var
|
||||
index: integer;
|
||||
begin
|
||||
for index := 0 to VarList.Items.Count-1 do
|
||||
BlockList.Items.Add(VarList.Items[index]);
|
||||
VarList.Clear;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TBestRegFrm.DepInBtnClick(Sender: TObject);
|
||||
var
|
||||
index: integer;
|
||||
begin
|
||||
index := VarList.ItemIndex;
|
||||
if (index > -1) and (DepVar.Text = '') then
|
||||
begin
|
||||
DepVar.Text := VarList.Items[index];
|
||||
VarList.Items.Delete(index);
|
||||
end;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TBestRegFrm.DepOutBtnClick(Sender: TObject);
|
||||
begin
|
||||
if DepVar.Text <> '' then
|
||||
begin
|
||||
VarList.Items.Add(DepVar.Text);
|
||||
DepVar.Text := '';
|
||||
end;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TBestRegFrm.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.MinHeight := AllBtn.Top + AllBtn.Height - VarList.Top;
|
||||
|
||||
Constraints.MinWidth := Width;
|
||||
Constraints.MinHeight := Height;
|
||||
|
||||
FAutoSized := true;
|
||||
end;
|
||||
|
||||
procedure TBestRegFrm.FormCreate(Sender: TObject);
|
||||
begin
|
||||
Assert(OS3MainFrm <> nil);
|
||||
InProb.Text := FormatFloat('0.00', DEFAULT_ALPHA_LEVEL);
|
||||
end;
|
||||
|
||||
procedure TBestRegFrm.UpdateBtnStates;
|
||||
|
||||
|
||||
procedure TBestRegForm.UpdateBtnStates;
|
||||
begin
|
||||
inherited;
|
||||
|
||||
InBtn.Enabled := AnySelected(VarList);
|
||||
OutBtn.Enabled := AnySelected(BlockList);
|
||||
DepInBtn.Enabled := (VarList.ItemIndex > -1) and (DepVar.Text <= '');
|
||||
DepOutBtn.Enabled := DepVar.Text <> '';
|
||||
DepInBtn.Enabled := (VarList.ItemIndex > -1) and (DepVarEdit.Text <= '');
|
||||
DepOutBtn.Enabled := DepVarEdit.Text <> '';
|
||||
end;
|
||||
|
||||
procedure TBestRegFrm.VarListSelectionChange(Sender: TObject; User: boolean);
|
||||
|
||||
procedure TBestRegForm.VarListDblClick(Sender: TObject);
|
||||
var
|
||||
index: Integer;
|
||||
begin
|
||||
index := VarList.ItemIndex;
|
||||
if index > -1 then
|
||||
begin
|
||||
if DepVarEdit.Text = '' then
|
||||
DepVarEdit.Text := VarList.Items[index]
|
||||
else
|
||||
BlockList.Items.Add(VarList.Items[index]);
|
||||
VarList.Items.Delete(index);
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TBestRegForm.VarListSelectionChange(Sender: TObject; User: boolean);
|
||||
begin
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
|
||||
initialization
|
||||
{$I bestregunit.lrs}
|
||||
|
||||
end.
|
||||
|
||||
|
@ -1,446 +1,401 @@
|
||||
object BlkMregFrm: TBlkMregFrm
|
||||
Left = 503
|
||||
Height = 451
|
||||
Top = 292
|
||||
Width = 465
|
||||
inherited BlkMregForm: TBlkMregForm
|
||||
Left = 520
|
||||
Height = 415
|
||||
Top = 224
|
||||
Width = 962
|
||||
HelpType = htKeyword
|
||||
HelpKeyword = 'html/BlockEntryMultipleRegression.htm'
|
||||
AutoSize = True
|
||||
Caption = 'Block Entry Multiple Regression'
|
||||
ClientHeight = 451
|
||||
ClientWidth = 465
|
||||
OnActivate = FormActivate
|
||||
OnCreate = FormCreate
|
||||
OnShow = FormShow
|
||||
Position = poMainFormCenter
|
||||
LCLVersion = '2.1.0.0'
|
||||
object Label1: TLabel
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Bevel3
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 8
|
||||
Height = 15
|
||||
Top = 48
|
||||
Width = 97
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
Caption = 'Available Variables'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label2: TLabel
|
||||
AnchorSideLeft.Control = DepVar
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideBottom.Control = DepVar
|
||||
Left = 263
|
||||
Height = 15
|
||||
Top = 77
|
||||
Width = 102
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Bottom = 2
|
||||
Caption = 'Dependent Variable'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label3: TLabel
|
||||
AnchorSideLeft.Control = BlockList
|
||||
Left = 263
|
||||
Height = 15
|
||||
Top = 144
|
||||
Width = 166
|
||||
Caption = 'Independent Var.s for this block'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label4: TLabel
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = BlockNoEdit
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = BlockNoEdit
|
||||
Left = 8
|
||||
Height = 15
|
||||
Top = 12
|
||||
Width = 54
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Right = 8
|
||||
Caption = 'Block No. '
|
||||
ParentColor = False
|
||||
end
|
||||
object Label5: TLabel
|
||||
AnchorSideLeft.Control = NextBlkBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = InProb
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = InProb
|
||||
Left = 218
|
||||
Height = 15
|
||||
Top = 13
|
||||
Width = 187
|
||||
Alignment = taRightJustify
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Right = 8
|
||||
Caption = 'Minimum Prob. to enter block:'
|
||||
ParentColor = False
|
||||
WordWrap = True
|
||||
end
|
||||
object VarList: TListBox
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Label1
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = AllBtn
|
||||
AnchorSideBottom.Control = GroupBox1
|
||||
Left = 8
|
||||
Height = 220
|
||||
Top = 65
|
||||
Width = 193
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Constraints.MinHeight = 220
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnSelectionChange = VarListSelectionChange
|
||||
TabOrder = 3
|
||||
end
|
||||
object DepInBtn: TBitBtn
|
||||
AnchorSideLeft.Control = AllBtn
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = VarList
|
||||
Left = 217
|
||||
Height = 28
|
||||
Top = 69
|
||||
Width = 28
|
||||
Anchors = [akTop]
|
||||
BorderSpacing.Top = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = DepInBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 4
|
||||
end
|
||||
object DepOutBtn: TBitBtn
|
||||
AnchorSideLeft.Control = AllBtn
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = DepInBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 218
|
||||
Height = 28
|
||||
Top = 101
|
||||
Width = 28
|
||||
BorderSpacing.Top = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = DepOutBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 5
|
||||
end
|
||||
object InBtn: TBitBtn
|
||||
AnchorSideLeft.Control = AllBtn
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideBottom.Control = OutBtn
|
||||
Left = 218
|
||||
Height = 28
|
||||
Top = 174
|
||||
Width = 28
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Bottom = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = InBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 7
|
||||
end
|
||||
object OutBtn: TBitBtn
|
||||
AnchorSideLeft.Control = AllBtn
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = BlockList
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 218
|
||||
Height = 28
|
||||
Top = 206
|
||||
Width = 28
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = OutBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 8
|
||||
end
|
||||
object AllBtn: TBitBtn
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = OutBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 209
|
||||
Height = 25
|
||||
Top = 244
|
||||
Width = 46
|
||||
AutoSize = True
|
||||
BorderSpacing.Top = 10
|
||||
Caption = 'ALL'
|
||||
OnClick = AllBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 9
|
||||
end
|
||||
object DepVar: TEdit
|
||||
AnchorSideLeft.Control = AllBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = DepOutBtn
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 263
|
||||
Height = 23
|
||||
Top = 94
|
||||
Width = 194
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 12
|
||||
ReadOnly = True
|
||||
TabOrder = 6
|
||||
Text = 'DepVar'
|
||||
end
|
||||
object BlockList: TListBox
|
||||
AnchorSideLeft.Control = AllBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = Label3
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = GroupBox1
|
||||
Left = 263
|
||||
Height = 119
|
||||
Top = 161
|
||||
Width = 194
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnSelectionChange = VarListSelectionChange
|
||||
TabOrder = 10
|
||||
end
|
||||
object BlockNoEdit: TEdit
|
||||
AnchorSideLeft.Control = Label4
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = Owner
|
||||
AnchorSideRight.Control = NextBlkBtn
|
||||
Left = 70
|
||||
Height = 23
|
||||
Top = 8
|
||||
Width = 37
|
||||
Alignment = taRightJustify
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 8
|
||||
TabOrder = 0
|
||||
Text = 'BlockNoEdit'
|
||||
end
|
||||
object NextBlkBtn: TButton
|
||||
AnchorSideLeft.Control = BlockNoEdit
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = BlockNoEdit
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 127
|
||||
Height = 25
|
||||
Top = 8
|
||||
Width = 83
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 20
|
||||
BorderSpacing.Right = 8
|
||||
Caption = 'Next Block'
|
||||
OnClick = NextBlkBtnClick
|
||||
TabOrder = 1
|
||||
end
|
||||
object InProb: TEdit
|
||||
AnchorSideTop.Control = NextBlkBtn
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 413
|
||||
Height = 23
|
||||
Top = 9
|
||||
Width = 44
|
||||
Alignment = taRightJustify
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 8
|
||||
TabOrder = 2
|
||||
Text = 'InProb'
|
||||
end
|
||||
object GroupBox1: TGroupBox
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideBottom.Control = Bevel1
|
||||
Left = 8
|
||||
Height = 114
|
||||
Top = 288
|
||||
Width = 449
|
||||
Anchors = [akLeft, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Right = 8
|
||||
Caption = 'Options'
|
||||
ChildSizing.LeftRightSpacing = 16
|
||||
ChildSizing.TopBottomSpacing = 6
|
||||
ChildSizing.HorizontalSpacing = 20
|
||||
ChildSizing.VerticalSpacing = 2
|
||||
ChildSizing.Layout = cclTopToBottomThenLeftToRight
|
||||
ChildSizing.ControlsPerLine = 4
|
||||
ClientHeight = 94
|
||||
ClientWidth = 445
|
||||
TabOrder = 11
|
||||
object CPChkBox: TCheckBox
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 6
|
||||
Width = 198
|
||||
Caption = 'Show Cross-Products Matrix'
|
||||
TabOrder = 0
|
||||
ClientHeight = 415
|
||||
ClientWidth = 962
|
||||
inherited ParamsPanel: TPanel
|
||||
Height = 399
|
||||
Width = 442
|
||||
ClientHeight = 399
|
||||
ClientWidth = 442
|
||||
inherited CloseBtn: TButton
|
||||
Left = 387
|
||||
Top = 374
|
||||
TabOrder = 15
|
||||
end
|
||||
object CovChkBox: TCheckBox
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 27
|
||||
Width = 198
|
||||
Caption = 'Show Variance-Covariance Matrix'
|
||||
inherited ComputeBtn: TButton
|
||||
Left = 303
|
||||
Top = 374
|
||||
TabOrder = 14
|
||||
end
|
||||
inherited ResetBtn: TButton
|
||||
Left = 241
|
||||
Top = 374
|
||||
TabOrder = 13
|
||||
end
|
||||
inherited HelpBtn: TButton
|
||||
Left = 182
|
||||
Top = 374
|
||||
TabOrder = 12
|
||||
end
|
||||
inherited ButtonBevel: TBevel
|
||||
Top = 358
|
||||
Width = 442
|
||||
end
|
||||
object Label4: TLabel[5]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideTop.Control = BlockNoEdit
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = BlockNoEdit
|
||||
Left = 0
|
||||
Height = 15
|
||||
Top = 5
|
||||
Width = 54
|
||||
BorderSpacing.Right = 8
|
||||
Caption = 'Block No. '
|
||||
ParentColor = False
|
||||
end
|
||||
object Label5: TLabel[6]
|
||||
AnchorSideLeft.Control = NextBlkBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = InProb
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = InProb
|
||||
Left = 227
|
||||
Height = 15
|
||||
Top = 5
|
||||
Width = 163
|
||||
Alignment = taRightJustify
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Right = 8
|
||||
Caption = 'Minimum Prob. to enter block:'
|
||||
ParentColor = False
|
||||
WordWrap = True
|
||||
end
|
||||
object BlockNoEdit: TEdit[7]
|
||||
AnchorSideLeft.Control = Label4
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = NextBlkBtn
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = NextBlkBtn
|
||||
Left = 62
|
||||
Height = 23
|
||||
Top = 1
|
||||
Width = 37
|
||||
Alignment = taRightJustify
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Right = 8
|
||||
TabOrder = 0
|
||||
Text = 'BlockNoEdit'
|
||||
end
|
||||
object NextBlkBtn: TButton[8]
|
||||
AnchorSideLeft.Control = BlockNoEdit
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = ParamsPanel
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 119
|
||||
Height = 25
|
||||
Top = 0
|
||||
Width = 83
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 20
|
||||
BorderSpacing.Right = 8
|
||||
Caption = 'Next Block'
|
||||
OnClick = NextBlkBtnClick
|
||||
TabOrder = 1
|
||||
end
|
||||
object CorrsChkBox: TCheckBox
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 48
|
||||
Width = 198
|
||||
Caption = 'Show Intercorrelation Matrix'
|
||||
object InProb: TEdit[9]
|
||||
AnchorSideTop.Control = NextBlkBtn
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = ParamsPanel
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 398
|
||||
Height = 23
|
||||
Top = 1
|
||||
Width = 44
|
||||
Alignment = taRightJustify
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Top = 8
|
||||
TabOrder = 2
|
||||
Text = 'InProb'
|
||||
end
|
||||
object MeansChkBox: TCheckBox
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 69
|
||||
Width = 198
|
||||
Caption = 'Show Means'
|
||||
object Label1: TLabel[10]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideTop.Control = Bevel3
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 0
|
||||
Height = 15
|
||||
Top = 40
|
||||
Width = 97
|
||||
BorderSpacing.Top = 8
|
||||
Caption = 'Available Variables'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label2: TLabel[11]
|
||||
AnchorSideLeft.Control = DepVarEdit
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideBottom.Control = DepVarEdit
|
||||
Left = 247
|
||||
Height = 15
|
||||
Top = 65
|
||||
Width = 102
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Bottom = 2
|
||||
Caption = 'Dependent Variable'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label3: TLabel[12]
|
||||
AnchorSideLeft.Control = BlockList
|
||||
Left = 247
|
||||
Height = 15
|
||||
Top = 144
|
||||
Width = 166
|
||||
Caption = 'Independent Var.s for this block'
|
||||
ParentColor = False
|
||||
end
|
||||
object VarList: TListBox[13]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideTop.Control = Label1
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = AllBtn
|
||||
AnchorSideBottom.Control = OptionsGroup
|
||||
Left = 0
|
||||
Height = 179
|
||||
Top = 57
|
||||
Width = 195
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 6
|
||||
BorderSpacing.Bottom = 8
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnDblClick = VarListDblClick
|
||||
OnSelectionChange = VarListSelectionChange
|
||||
TabOrder = 3
|
||||
end
|
||||
object VarChkBox: TCheckBox
|
||||
Left = 234
|
||||
Height = 19
|
||||
Top = 6
|
||||
Width = 195
|
||||
Caption = 'Show Variances'
|
||||
object DepInBtn: TBitBtn[14]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = VarList
|
||||
Left = 208
|
||||
Height = 26
|
||||
Top = 61
|
||||
Width = 26
|
||||
BorderSpacing.Top = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = DepInBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 4
|
||||
end
|
||||
object SDChkBox: TCheckBox
|
||||
Left = 234
|
||||
Height = 19
|
||||
Top = 27
|
||||
Width = 195
|
||||
Caption = 'Show Standard Deviations'
|
||||
object DepOutBtn: TBitBtn[15]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = DepInBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 208
|
||||
Height = 26
|
||||
Top = 91
|
||||
Width = 26
|
||||
BorderSpacing.Top = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = DepOutBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 5
|
||||
end
|
||||
object MatSaveChkBox: TCheckBox
|
||||
Left = 234
|
||||
Height = 19
|
||||
Top = 48
|
||||
Width = 195
|
||||
Caption = 'Save Correlation Matrix'
|
||||
TabOrder = 6
|
||||
end
|
||||
object PredictChkBox: TCheckBox
|
||||
Left = 234
|
||||
Height = 19
|
||||
Top = 69
|
||||
Width = 195
|
||||
Caption = 'Predictions,residuals,C.I.''s to Grid'
|
||||
object InBtn: TBitBtn[16]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = DepOutBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 208
|
||||
Height = 26
|
||||
Top = 149
|
||||
Width = 26
|
||||
BorderSpacing.Top = 32
|
||||
BorderSpacing.Bottom = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = InBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 7
|
||||
end
|
||||
object OutBtn: TBitBtn[17]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = InBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 208
|
||||
Height = 26
|
||||
Top = 179
|
||||
Width = 26
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = OutBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 8
|
||||
end
|
||||
object AllBtn: TBitBtn[18]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = OutBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 201
|
||||
Height = 25
|
||||
Top = 209
|
||||
Width = 40
|
||||
AutoSize = True
|
||||
BorderSpacing.Top = 4
|
||||
Caption = 'All'
|
||||
OnClick = AllBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 9
|
||||
end
|
||||
object DepVarEdit: TEdit[19]
|
||||
AnchorSideLeft.Control = AllBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = ParamsPanel
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = DepOutBtn
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 247
|
||||
Height = 23
|
||||
Top = 82
|
||||
Width = 195
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Bottom = 12
|
||||
ReadOnly = True
|
||||
TabOrder = 6
|
||||
Text = 'DepVarEdit'
|
||||
end
|
||||
object BlockList: TListBox[20]
|
||||
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 = 247
|
||||
Height = 75
|
||||
Top = 161
|
||||
Width = 195
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 2
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnDblClick = BlockListDblClick
|
||||
OnSelectionChange = VarListSelectionChange
|
||||
TabOrder = 10
|
||||
end
|
||||
object OptionsGroup: TGroupBox[21]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideBottom.Control = ButtonBevel
|
||||
Left = 0
|
||||
Height = 114
|
||||
Top = 244
|
||||
Width = 449
|
||||
Anchors = [akLeft, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Right = 8
|
||||
Caption = 'Options'
|
||||
ChildSizing.LeftRightSpacing = 16
|
||||
ChildSizing.TopBottomSpacing = 6
|
||||
ChildSizing.HorizontalSpacing = 20
|
||||
ChildSizing.VerticalSpacing = 2
|
||||
ChildSizing.Layout = cclTopToBottomThenLeftToRight
|
||||
ChildSizing.ControlsPerLine = 4
|
||||
ClientHeight = 94
|
||||
ClientWidth = 445
|
||||
TabOrder = 11
|
||||
object CPChkBox: TCheckBox
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 6
|
||||
Width = 198
|
||||
Caption = 'Show Cross-Products Matrix'
|
||||
TabOrder = 0
|
||||
end
|
||||
object CovChkBox: TCheckBox
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 27
|
||||
Width = 198
|
||||
Caption = 'Show Variance-Covariance Matrix'
|
||||
TabOrder = 1
|
||||
end
|
||||
object CorrsChkBox: TCheckBox
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 48
|
||||
Width = 198
|
||||
Caption = 'Show Intercorrelation Matrix'
|
||||
TabOrder = 2
|
||||
end
|
||||
object MeansChkBox: TCheckBox
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 69
|
||||
Width = 198
|
||||
Caption = 'Show Means'
|
||||
TabOrder = 3
|
||||
end
|
||||
object VarChkBox: TCheckBox
|
||||
Left = 234
|
||||
Height = 19
|
||||
Top = 6
|
||||
Width = 195
|
||||
Caption = 'Show Variances'
|
||||
TabOrder = 4
|
||||
end
|
||||
object SDChkBox: TCheckBox
|
||||
Left = 234
|
||||
Height = 19
|
||||
Top = 27
|
||||
Width = 195
|
||||
Caption = 'Show Standard Deviations'
|
||||
TabOrder = 5
|
||||
end
|
||||
object MatSaveChkBox: TCheckBox
|
||||
Left = 234
|
||||
Height = 19
|
||||
Top = 48
|
||||
Width = 195
|
||||
Caption = 'Save Correlation Matrix'
|
||||
TabOrder = 6
|
||||
end
|
||||
object PredictChkBox: TCheckBox
|
||||
Left = 234
|
||||
Height = 19
|
||||
Top = 69
|
||||
Width = 195
|
||||
Caption = 'Predictions,residuals,C.I.''s to Grid'
|
||||
TabOrder = 7
|
||||
end
|
||||
end
|
||||
object Bevel3: TBevel[22]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideTop.Control = Label5
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = ParamsPanel
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = CloseBtn
|
||||
Left = 0
|
||||
Height = 12
|
||||
Top = 20
|
||||
Width = 442
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
Shape = bsBottomLine
|
||||
end
|
||||
end
|
||||
object ResetBtn: TButton
|
||||
AnchorSideRight.Control = ComputeBtn
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 256
|
||||
Height = 25
|
||||
Top = 418
|
||||
Width = 54
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Reset'
|
||||
OnClick = ResetBtnClick
|
||||
TabOrder = 12
|
||||
inherited ParamsSplitter: TSplitter
|
||||
Left = 454
|
||||
Height = 415
|
||||
end
|
||||
object ComputeBtn: TButton
|
||||
AnchorSideRight.Control = CloseBtn
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 318
|
||||
Height = 25
|
||||
Top = 418
|
||||
Width = 76
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Compute'
|
||||
OnClick = ComputeBtnClick
|
||||
TabOrder = 13
|
||||
end
|
||||
object CloseBtn: TButton
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 402
|
||||
Height = 25
|
||||
Top = 418
|
||||
Width = 55
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Close'
|
||||
ModalResult = 11
|
||||
TabOrder = 14
|
||||
end
|
||||
object Bevel1: TBevel
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = CloseBtn
|
||||
Left = 0
|
||||
Height = 8
|
||||
Top = 402
|
||||
Width = 465
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
Shape = bsBottomLine
|
||||
end
|
||||
object Bevel3: TBevel
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Label5
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = CloseBtn
|
||||
Left = 0
|
||||
Height = 12
|
||||
Top = 28
|
||||
Width = 465
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
Shape = bsBottomLine
|
||||
end
|
||||
object SaveDialog1: TSaveDialog
|
||||
object SaveDialog1: TSaveDialog[2]
|
||||
Left = 72
|
||||
Top = 112
|
||||
end
|
||||
|
@ -9,22 +9,16 @@ unit BlkMRegUnit;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
|
||||
StdCtrls, Buttons, ExtCtrls,
|
||||
Globals, MainUnit, MatrixLib, OutputUnit, FunctionsLib,
|
||||
DataProcs, DictionaryUnit;
|
||||
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Buttons, ExtCtrls,
|
||||
Globals, MainUnit, MatrixLib, FunctionsLib, DataProcs, DictionaryUnit, BasicStatsReportFormUnit;
|
||||
|
||||
|
||||
type
|
||||
|
||||
{ TBlkMregFrm }
|
||||
{ TBlkMregForm }
|
||||
|
||||
TBlkMregFrm = class(TForm)
|
||||
Bevel1: TBevel;
|
||||
TBlkMregForm = class(TBasicStatsReportForm)
|
||||
Bevel3: TBevel;
|
||||
ResetBtn: TButton;
|
||||
ComputeBtn: TButton;
|
||||
CloseBtn: TButton;
|
||||
CPChkBox: TCheckBox;
|
||||
CovChkBox: TCheckBox;
|
||||
CorrsChkBox: TCheckBox;
|
||||
@ -34,7 +28,7 @@ type
|
||||
SDChkBox: TCheckBox;
|
||||
MatSaveChkBox: TCheckBox;
|
||||
PredictChkBox: TCheckBox;
|
||||
GroupBox1: TGroupBox;
|
||||
OptionsGroup: TGroupBox;
|
||||
InProb: TEdit;
|
||||
Label5: TLabel;
|
||||
NextBlkBtn: TButton;
|
||||
@ -45,107 +39,77 @@ type
|
||||
Label4: TLabel;
|
||||
OutBtn: TBitBtn;
|
||||
AllBtn: TBitBtn;
|
||||
DepVar: TEdit;
|
||||
DepVarEdit: TEdit;
|
||||
Label1: TLabel;
|
||||
Label2: TLabel;
|
||||
Label3: TLabel;
|
||||
BlockList: TListBox;
|
||||
VarList: TListBox;
|
||||
procedure AllBtnClick(Sender: TObject);
|
||||
procedure ComputeBtnClick(Sender: TObject);
|
||||
procedure BlockListDblClick(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 NextBlkBtnClick(Sender: TObject);
|
||||
procedure OutBtnClick(Sender: TObject);
|
||||
procedure ResetBtnClick(Sender: TObject);
|
||||
procedure VarListDblClick(Sender: TObject);
|
||||
procedure VarListSelectionChange(Sender: TObject; User: boolean);
|
||||
private
|
||||
{ private declarations }
|
||||
FAutoSized: Boolean;
|
||||
BlkVarCols : IntDyneMat;
|
||||
NoBlocks : integer;
|
||||
VarsInBlk : IntDyneVec;
|
||||
NoVars : integer;
|
||||
procedure UpdateBtnStates;
|
||||
function Valid(out AMsg: String; out AControl: TWinControl): Boolean;
|
||||
|
||||
protected
|
||||
procedure AdjustConstraints; override;
|
||||
procedure Compute; override;
|
||||
procedure UpdateBtnStates; override;
|
||||
function Validate(out AMsg: String; out AControl: TWinControl): Boolean; override;
|
||||
|
||||
public
|
||||
{ public declarations }
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
procedure Reset; override;
|
||||
end;
|
||||
|
||||
var
|
||||
BlkMregFrm: TBlkMregFrm;
|
||||
BlkMregForm: TBlkMregForm;
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
uses
|
||||
Math,
|
||||
Utils, MathUnit;
|
||||
|
||||
{ TBlkMregFrm }
|
||||
|
||||
procedure TBlkMregFrm.ResetBtnClick(Sender: TObject);
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
BlockList.Items.Clear;
|
||||
VarList.Items.Clear;
|
||||
BlockNoEdit.Text := '1';
|
||||
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;
|
||||
// HeteroChk.Checked := false;
|
||||
|
||||
NoVars := 0;
|
||||
DepVar.Text := '';
|
||||
InProb.Text := FormatFloat('0.00', DEFAULT_ALPHA_LEVEL);
|
||||
|
||||
SetLength(BlkVarCols,NoVariables,NoVariables);
|
||||
SetLength(VarsInBlk,NoVariables);
|
||||
end;
|
||||
|
||||
procedure TBlkMregFrm.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;
|
||||
|
||||
Constraints.MinWidth := Width;
|
||||
Constraints.MinHeight := Height;
|
||||
|
||||
FAutoSized := true;
|
||||
end;
|
||||
|
||||
procedure TBlkMregFrm.FormCreate(Sender: TObject);
|
||||
{ TBlkMregForm }
|
||||
|
||||
constructor TBlkMregForm.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited;
|
||||
|
||||
Assert(OS3MainFrm <> nil);
|
||||
if DictionaryFrm = nil then Application.CreateForm(TDictionaryFrm, DictionaryFrm);
|
||||
end;
|
||||
|
||||
procedure TBlkMregFrm.FormShow(Sender: TObject);
|
||||
|
||||
procedure TBlkMregForm.AdjustConstraints;
|
||||
begin
|
||||
ResetBtnClick(self);
|
||||
inherited;
|
||||
|
||||
ParamsPanel.Constraints.MinWidth := Max(
|
||||
4*CloseBtn.Width + 3*CloseBtn.BorderSpacing.Left,
|
||||
OptionsGroup.Width);
|
||||
|
||||
ParamsPanel.Constraints.MinHeight := AllBtn.Top + AllBtn.Height +
|
||||
VarList.BorderSpacing.Bottom + ButtonBevel.Height +
|
||||
CloseBtn.BorderSpacing.Top + CloseBtn.Height;
|
||||
end;
|
||||
|
||||
procedure TBlkMregFrm.AllBtnClick(Sender: TObject);
|
||||
|
||||
procedure TBlkMregForm.AllBtnClick(Sender: TObject);
|
||||
var
|
||||
index: integer;
|
||||
begin
|
||||
@ -155,7 +119,22 @@ begin
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TBlkMregFrm.ComputeBtnClick(Sender: TObject);
|
||||
|
||||
procedure TBlkMregForm.BlockListDblClick(Sender: TObject);
|
||||
var
|
||||
index: Integer;
|
||||
begin
|
||||
index := BlockList.ItemIndex;
|
||||
if index > -1 then
|
||||
begin
|
||||
VarList.Items.Add(BlockList.Items[index]);
|
||||
BlockList.Items.Delete(index);
|
||||
UpdatebtnStates;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TBlkMregForm.Compute;
|
||||
var
|
||||
i, j, k, errorcode: integer;
|
||||
NoIndepVars, DepVarCol, NEntered, StepNo : integer;
|
||||
@ -182,13 +161,6 @@ var
|
||||
C: TWinControl;
|
||||
lReport: TStrings;
|
||||
begin
|
||||
if not Valid(msg, C) then
|
||||
begin
|
||||
C.SetFocus;
|
||||
MessageDlg(msg, mtError, [mbOK], 0);
|
||||
exit;
|
||||
end;
|
||||
|
||||
SetLength(corrs,NoVariables+1,NoVariables+1);
|
||||
SetLength(IndepInverse,NoVariables,NoVariables);
|
||||
SetLength(Means,NoVariables);
|
||||
@ -211,7 +183,7 @@ begin
|
||||
errorcode := 0;
|
||||
|
||||
{ get dependendent variable column }
|
||||
if DepVar.Text = '' then
|
||||
if DepVarEdit.Text = '' then
|
||||
begin
|
||||
MessageDlg('No Dependent variable selected.', mtError, [mbOK], 0);
|
||||
exit;
|
||||
@ -226,7 +198,7 @@ begin
|
||||
DepVarCol := 0;
|
||||
NoVars := NoVars + 1;
|
||||
for j := 1 to NoVariables do
|
||||
if DepVar.Text = OS3MainFrm.DataGrid.Cells[j,0] then DepVarCol := j;
|
||||
if DepVarEdit.Text = OS3MainFrm.DataGrid.Cells[j,0] then DepVarCol := j;
|
||||
|
||||
R2 := 0.0;
|
||||
OldR2 := 0.0;
|
||||
@ -300,7 +272,7 @@ begin
|
||||
|
||||
if errorcode > 0 then
|
||||
begin
|
||||
DisplayReport(lReport);
|
||||
FReportFrame.DisplayReport(lReport);
|
||||
MessageDlg('A selected variable has no variability-run aborted.', mtError,[mbOK], 0);
|
||||
exit;
|
||||
end;
|
||||
@ -424,7 +396,7 @@ begin
|
||||
lReport.Add('');
|
||||
end;
|
||||
}
|
||||
DisplayReport(lReport);
|
||||
FReportFrame.DisplayReport(lReport);
|
||||
|
||||
if MatSaveChkBox.Checked then
|
||||
begin
|
||||
@ -439,46 +411,36 @@ begin
|
||||
|
||||
finally
|
||||
lReport.Free;
|
||||
ColEntered := nil;
|
||||
Candidate := nil;
|
||||
BetaWeights := nil;
|
||||
IndColLabels := nil;
|
||||
IndRowLabels := nil;
|
||||
IndepIndex := nil;
|
||||
StdDevs := nil;
|
||||
Variances := nil;
|
||||
Means := nil;
|
||||
IndepInverse := nil;
|
||||
corrs := nil;
|
||||
VarsInBlk := nil;
|
||||
BlkVarCols := nil;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TBlkMregFrm.DepInBtnClick(Sender: TObject);
|
||||
|
||||
procedure TBlkMregForm.DepInBtnClick(Sender: TObject);
|
||||
var
|
||||
index: integer;
|
||||
begin
|
||||
index := VarList.ItemIndex;
|
||||
if (index > -1) and (DepVar.Text = '') then
|
||||
if (index > -1) and (DepVarEdit.Text = '') then
|
||||
begin
|
||||
DepVar.Text := VarList.Items[index];
|
||||
DepVarEdit.Text := VarList.Items[index];
|
||||
VarList.Items.Delete(index);
|
||||
end;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TBlkMregFrm.DepOutBtnClick(Sender: TObject);
|
||||
|
||||
procedure TBlkMregForm.DepOutBtnClick(Sender: TObject);
|
||||
begin
|
||||
if DepVar.Text <> '' then
|
||||
if DepVarEdit.Text <> '' then
|
||||
begin
|
||||
VarList.Items.Add(DepVar.Text);
|
||||
DepVar.Text := '';
|
||||
VarList.Items.Add(DepVarEdit.Text);
|
||||
DepVarEdit.Text := '';
|
||||
end;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TBlkMregFrm.InBtnClick(Sender: TObject);
|
||||
|
||||
procedure TBlkMregForm.InBtnClick(Sender: TObject);
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
@ -496,7 +458,8 @@ begin
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TBlkMregFrm.NextBlkBtnClick(Sender: TObject);
|
||||
|
||||
procedure TBlkMregForm.NextBlkBtnClick(Sender: TObject);
|
||||
var
|
||||
blkno, i, j, count: integer;
|
||||
cellstring: string;
|
||||
@ -530,7 +493,8 @@ begin
|
||||
//BlockList.Clear;
|
||||
end;
|
||||
|
||||
procedure TBlkMregFrm.OutBtnClick(Sender: TObject);
|
||||
|
||||
procedure TBlkMregForm.OutBtnClick(Sender: TObject);
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
@ -548,21 +512,56 @@ begin
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TBlkMregFrm.UpdateBtnStates;
|
||||
|
||||
procedure TBlkMregForm.Reset;
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
inherited;
|
||||
|
||||
BlockList.Items.Clear;
|
||||
VarList.Items.Clear;
|
||||
BlockNoEdit.Text := '1';
|
||||
NoBlocks := 1;
|
||||
for i := 1 to NoVariables do
|
||||
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
|
||||
|
||||
CPChkBox.Checked := false;
|
||||
CovChkBox.Checked := false;
|
||||
CorrsChkBox.Checked := false;
|
||||
MeansChkBox.Checked := false;
|
||||
VarChkBox.Checked := false;
|
||||
SDChkBox.Checked := false;
|
||||
MatSaveChkBox.Checked := false;
|
||||
PredictChkBox.Checked := false;
|
||||
|
||||
NoVars := 0;
|
||||
DepVarEdit.Text := '';
|
||||
InProb.Text := FormatFloat('0.00', DEFAULT_ALPHA_LEVEL);
|
||||
|
||||
SetLength(BlkVarCols, NoVariables, NoVariables);
|
||||
SetLength(VarsInBlk, NoVariables);
|
||||
end;
|
||||
|
||||
|
||||
procedure TBlkMregForm.UpdateBtnStates;
|
||||
var
|
||||
lSelected: Boolean;
|
||||
begin
|
||||
lSelected := AnySelected(VarList);
|
||||
DepInBtn.Enabled := lSelected and (DepVar.Text = '');
|
||||
InBtn.Enabled := lSelected;
|
||||
inherited;
|
||||
|
||||
lSelected := AnySelected(VarList);
|
||||
DepInBtn.Enabled := lSelected and (DepVarEdit.Text = '');
|
||||
InBtn.Enabled := lSelected;
|
||||
|
||||
DepOutBtn.Enabled := (DepVar.Text <> '');
|
||||
OutBtn.Enabled := AnySelected(BlockList);
|
||||
DepOutBtn.Enabled := (DepVarEdit.Text <> '');
|
||||
OutBtn.Enabled := AnySelected(BlockList);
|
||||
|
||||
AllBtn.Enabled := VarList.Items.Count > 0;
|
||||
AllBtn.Enabled := VarList.Items.Count > 0;
|
||||
end;
|
||||
|
||||
function TBlkMregFrm.Valid(out AMsg: String; out AControl: TWinControl): Boolean;
|
||||
|
||||
function TBlkMregForm.Validate(out AMsg: String; out AControl: TWinControl): Boolean;
|
||||
var
|
||||
n: Integer;
|
||||
x: Double;
|
||||
@ -610,14 +609,29 @@ begin
|
||||
Result := true;
|
||||
end;
|
||||
|
||||
procedure TBlkMregFrm.VarListSelectionChange(Sender: TObject; User: boolean);
|
||||
|
||||
procedure TBlkMregForm.VarListDblClick(Sender: TObject);
|
||||
var
|
||||
index: Integer;
|
||||
begin
|
||||
index := VarList.ItemIndex;
|
||||
if index > -1 then
|
||||
begin
|
||||
if DepVarEdit.Text = '' then
|
||||
DepVarEdit.Text := VarList.Items[index]
|
||||
else
|
||||
BlockList.Items.Add(VarList.Items[index]);
|
||||
VarList.Items.Delete(index);
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TBlkMregForm.VarListSelectionChange(Sender: TObject; User: boolean);
|
||||
begin
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
|
||||
initialization
|
||||
{$I blkmregunit.lrs}
|
||||
|
||||
end.
|
||||
|
||||
|
@ -1,409 +1,316 @@
|
||||
object CoxRegFrm: TCoxRegFrm
|
||||
inherited CoxRegForm: TCoxRegForm
|
||||
Left = 457
|
||||
Height = 401
|
||||
Height = 393
|
||||
Top = 291
|
||||
Width = 424
|
||||
Width = 480
|
||||
HelpType = htKeyword
|
||||
HelpKeyword = 'html/CoxProportionalHazardsSurvivalRe.htm'
|
||||
AutoSize = True
|
||||
Caption = 'Cox Proportional Hazards Survival Regression'
|
||||
ClientHeight = 401
|
||||
ClientWidth = 424
|
||||
OnActivate = FormActivate
|
||||
OnCreate = FormCreate
|
||||
OnShow = FormShow
|
||||
Position = poMainFormCenter
|
||||
LCLVersion = '2.1.0.0'
|
||||
object Label1: TLabel
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Owner
|
||||
Left = 8
|
||||
Height = 15
|
||||
Top = 9
|
||||
Width = 89
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 9
|
||||
Caption = 'Avaialbe Variable'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label2: TLabel
|
||||
AnchorSideLeft.Control = BlockList
|
||||
AnchorSideTop.Control = Owner
|
||||
Left = 234
|
||||
Height = 15
|
||||
Top = 8
|
||||
Width = 116
|
||||
BorderSpacing.Top = 8
|
||||
Caption = 'Independent Variables'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label3: TLabel
|
||||
AnchorSideLeft.Control = DepVar
|
||||
AnchorSideBottom.Control = DepVar
|
||||
Left = 234
|
||||
Height = 15
|
||||
Top = 108
|
||||
Width = 114
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Bottom = 2
|
||||
Caption = 'Survival Time Variable'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label4: TLabel
|
||||
AnchorSideLeft.Control = StatusEdit
|
||||
AnchorSideBottom.Control = StatusEdit
|
||||
Left = 234
|
||||
Height = 15
|
||||
Top = 195
|
||||
Width = 120
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Bottom = 2
|
||||
Caption = 'Survival Status Variable'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label5: TLabel
|
||||
AnchorSideLeft.Control = GroupBox1
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = GroupBox1
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 219
|
||||
Height = 15
|
||||
Top = 296
|
||||
Width = 117
|
||||
BorderSpacing.Left = 40
|
||||
Caption = 'Maximum Interations:'
|
||||
ParentColor = False
|
||||
end
|
||||
object VarList: TListBox
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Label1
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = InBtn
|
||||
AnchorSideBottom.Control = GroupBox1
|
||||
Left = 8
|
||||
Height = 221
|
||||
Top = 26
|
||||
Width = 182
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Constraints.MinHeight = 220
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnSelectionChange = VarListSelectionChange
|
||||
TabOrder = 0
|
||||
end
|
||||
object InBtn: TBitBtn
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = VarList
|
||||
Left = 198
|
||||
Height = 28
|
||||
Top = 26
|
||||
Width = 28
|
||||
Glyph.Data = {
|
||||
36040000424D3604000000000000360000002800000010000000100000000100
|
||||
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
|
||||
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
|
||||
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
|
||||
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
|
||||
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
|
||||
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
|
||||
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
|
||||
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
|
||||
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
|
||||
}
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = InBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 1
|
||||
end
|
||||
object OutBtn: TBitBtn
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = InBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 198
|
||||
Height = 28
|
||||
Top = 58
|
||||
Width = 28
|
||||
BorderSpacing.Top = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = OutBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 2
|
||||
end
|
||||
object DepInBtn: TBitBtn
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = Label3
|
||||
Left = 198
|
||||
Height = 28
|
||||
Top = 108
|
||||
Width = 28
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = DepInBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 4
|
||||
end
|
||||
object DepOutBtn: TBitBtn
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = DepInBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 198
|
||||
Height = 28
|
||||
Top = 140
|
||||
Width = 28
|
||||
BorderSpacing.Top = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = DepOutBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 5
|
||||
end
|
||||
object StatusInBtn: TBitBtn
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideBottom.Control = StatusOutBtn
|
||||
Left = 198
|
||||
Height = 28
|
||||
Top = 187
|
||||
Width = 28
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Bottom = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = StatusInBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 7
|
||||
end
|
||||
object StatusOutBtn: TBitBtn
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideBottom.Control = VarList
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 198
|
||||
Height = 28
|
||||
Top = 219
|
||||
Width = 28
|
||||
Anchors = [akLeft, akBottom]
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = StatusOutBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 8
|
||||
end
|
||||
object BlockList: TListBox
|
||||
AnchorSideLeft.Control = InBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = Label2
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = Label3
|
||||
Left = 234
|
||||
Height = 67
|
||||
Top = 25
|
||||
Width = 182
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 16
|
||||
ItemHeight = 0
|
||||
OnSelectionChange = VarListSelectionChange
|
||||
TabOrder = 3
|
||||
end
|
||||
object DepVar: TEdit
|
||||
AnchorSideLeft.Control = InBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = VarList
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 234
|
||||
Height = 23
|
||||
Top = 125
|
||||
Width = 182
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Right = 8
|
||||
ReadOnly = True
|
||||
TabOrder = 6
|
||||
Text = 'DepVar'
|
||||
end
|
||||
object StatusEdit: TEdit
|
||||
AnchorSideLeft.Control = DepInBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = StatusOutBtn
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 234
|
||||
Height = 23
|
||||
Top = 212
|
||||
Width = 182
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 12
|
||||
ReadOnly = True
|
||||
TabOrder = 9
|
||||
Text = 'StatusEdit'
|
||||
end
|
||||
object GroupBox1: TGroupBox
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideBottom.Control = Bevel1
|
||||
Left = 8
|
||||
Height = 97
|
||||
Top = 255
|
||||
Width = 171
|
||||
Anchors = [akLeft, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
Caption = 'Options'
|
||||
ChildSizing.LeftRightSpacing = 12
|
||||
ChildSizing.TopBottomSpacing = 6
|
||||
ChildSizing.VerticalSpacing = 2
|
||||
ClientHeight = 77
|
||||
ClientWidth = 167
|
||||
TabOrder = 10
|
||||
object DescChk: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 6
|
||||
ClientHeight = 393
|
||||
ClientWidth = 480
|
||||
inherited ParamsPanel: TPanel
|
||||
Height = 377
|
||||
ClientHeight = 377
|
||||
inherited CloseBtn: TButton
|
||||
Top = 352
|
||||
end
|
||||
inherited ComputeBtn: TButton
|
||||
Top = 352
|
||||
end
|
||||
inherited ResetBtn: TButton
|
||||
Top = 352
|
||||
end
|
||||
inherited HelpBtn: TButton
|
||||
Top = 352
|
||||
end
|
||||
inherited ButtonBevel: TBevel
|
||||
Top = 336
|
||||
end
|
||||
object Label1: TLabel[5]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideTop.Control = ParamsPanel
|
||||
Left = 0
|
||||
Height = 15
|
||||
Top = 0
|
||||
Width = 94
|
||||
Caption = 'Availabe Variables'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label2: TLabel[6]
|
||||
AnchorSideLeft.Control = BlockList
|
||||
AnchorSideTop.Control = ParamsPanel
|
||||
Left = 164
|
||||
Height = 15
|
||||
Top = 8
|
||||
Width = 116
|
||||
BorderSpacing.Top = 8
|
||||
Caption = 'Independent Variables'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label3: TLabel[7]
|
||||
AnchorSideLeft.Control = DepVar
|
||||
AnchorSideBottom.Control = DepVar
|
||||
Left = 166
|
||||
Height = 15
|
||||
Top = 80
|
||||
Width = 114
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Bottom = 2
|
||||
Caption = 'Survival Time Variable'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label4: TLabel[8]
|
||||
AnchorSideLeft.Control = StatusEdit
|
||||
AnchorSideBottom.Control = StatusEdit
|
||||
Left = 166
|
||||
Height = 15
|
||||
Top = 148
|
||||
Width = 120
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Bottom = 2
|
||||
Caption = 'Survival Status Variable'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label5: TLabel[9]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideTop.Control = MaxItsEdit
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 0
|
||||
Height = 15
|
||||
Top = 212
|
||||
Width = 117
|
||||
Caption = 'Maximum Interations:'
|
||||
ParentColor = False
|
||||
end
|
||||
object VarList: TListBox[10]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideTop.Control = Label1
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = InBtn
|
||||
AnchorSideBottom.Control = MaxItsEdit
|
||||
Left = 0
|
||||
Height = 183
|
||||
Top = 17
|
||||
Width = 126
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 6
|
||||
BorderSpacing.Bottom = 8
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnDblClick = VarListDblClick
|
||||
OnSelectionChange = VarListSelectionChange
|
||||
TabOrder = 4
|
||||
end
|
||||
object InBtn: TBitBtn[11]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = VarList
|
||||
Left = 132
|
||||
Height = 26
|
||||
Top = 17
|
||||
Width = 26
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = InBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 5
|
||||
end
|
||||
object OutBtn: TBitBtn[12]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = InBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 132
|
||||
Height = 26
|
||||
Top = 47
|
||||
Width = 26
|
||||
BorderSpacing.Top = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = OutBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 6
|
||||
end
|
||||
object DepInBtn: TBitBtn[13]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = Label3
|
||||
Left = 132
|
||||
Height = 26
|
||||
Top = 80
|
||||
Width = 26
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = DepInBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 7
|
||||
end
|
||||
object DepOutBtn: TBitBtn[14]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = DepInBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 132
|
||||
Height = 26
|
||||
Top = 110
|
||||
Width = 26
|
||||
BorderSpacing.Top = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = DepOutBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 8
|
||||
end
|
||||
object StatusInBtn: TBitBtn[15]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideBottom.Control = StatusOutBtn
|
||||
Left = 132
|
||||
Height = 26
|
||||
Top = 144
|
||||
Width = 26
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Bottom = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = StatusInBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 9
|
||||
end
|
||||
object StatusOutBtn: TBitBtn[16]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideBottom.Control = VarList
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 132
|
||||
Height = 26
|
||||
Top = 174
|
||||
Width = 26
|
||||
Anchors = [akLeft, akBottom]
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = StatusOutBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 10
|
||||
end
|
||||
object BlockList: TListBox[17]
|
||||
AnchorSideLeft.Control = InBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = Label2
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = ParamsPanel
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = Label3
|
||||
Left = 164
|
||||
Height = 39
|
||||
Top = 25
|
||||
Width = 127
|
||||
Caption = 'Descriptive Statistics'
|
||||
TabOrder = 0
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Bottom = 16
|
||||
ItemHeight = 0
|
||||
OnDblClick = BlockListDblClick
|
||||
OnSelectionChange = VarListSelectionChange
|
||||
TabOrder = 11
|
||||
end
|
||||
object ProbsChk: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 29
|
||||
Width = 143
|
||||
Caption = 'Base Survival Functions'
|
||||
TabOrder = 1
|
||||
object DepVar: TEdit[18]
|
||||
AnchorSideLeft.Control = InBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = VarList
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = ParamsPanel
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 166
|
||||
Height = 23
|
||||
Top = 97
|
||||
Width = 125
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Left = 8
|
||||
ReadOnly = True
|
||||
TabOrder = 12
|
||||
Text = 'DepVar'
|
||||
end
|
||||
object ItersChk: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 52
|
||||
Width = 101
|
||||
Caption = 'Show Iterations'
|
||||
TabOrder = 2
|
||||
object StatusEdit: TEdit[19]
|
||||
AnchorSideLeft.Control = DepInBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideRight.Control = ParamsPanel
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = StatusOutBtn
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 166
|
||||
Height = 23
|
||||
Top = 165
|
||||
Width = 125
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Bottom = 12
|
||||
ReadOnly = True
|
||||
TabOrder = 13
|
||||
Text = 'StatusEdit'
|
||||
end
|
||||
object GroupBox1: TGroupBox[20]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideBottom.Control = ButtonBevel
|
||||
Left = 0
|
||||
Height = 97
|
||||
Top = 239
|
||||
Width = 171
|
||||
Anchors = [akLeft, akBottom]
|
||||
AutoSize = True
|
||||
Caption = 'Options'
|
||||
ChildSizing.LeftRightSpacing = 12
|
||||
ChildSizing.TopBottomSpacing = 6
|
||||
ChildSizing.VerticalSpacing = 2
|
||||
ClientHeight = 77
|
||||
ClientWidth = 167
|
||||
TabOrder = 14
|
||||
object DescChk: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 6
|
||||
Width = 127
|
||||
Caption = 'Descriptive Statistics'
|
||||
TabOrder = 0
|
||||
end
|
||||
object ProbsChk: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 29
|
||||
Width = 143
|
||||
Caption = 'Base Survival Functions'
|
||||
TabOrder = 1
|
||||
end
|
||||
object ItersChk: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 52
|
||||
Width = 101
|
||||
Caption = 'Show Iterations'
|
||||
TabOrder = 2
|
||||
end
|
||||
end
|
||||
object MaxItsEdit: TEdit[21]
|
||||
AnchorSideLeft.Control = Label5
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideBottom.Control = GroupBox1
|
||||
Left = 125
|
||||
Height = 23
|
||||
Top = 208
|
||||
Width = 42
|
||||
Alignment = taRightJustify
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
TabOrder = 15
|
||||
Text = 'MaxItsEdit'
|
||||
end
|
||||
end
|
||||
object MaxItsEdit: TEdit
|
||||
AnchorSideLeft.Control = Label5
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = Label5
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 344
|
||||
Height = 23
|
||||
Top = 292
|
||||
Width = 42
|
||||
Alignment = taRightJustify
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Right = 8
|
||||
TabOrder = 11
|
||||
Text = 'MaxItsEdit'
|
||||
end
|
||||
object ResetBtn: TButton
|
||||
AnchorSideRight.Control = ComputeBtn
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 215
|
||||
Height = 25
|
||||
Top = 368
|
||||
Width = 54
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Reset'
|
||||
OnClick = ResetBtnClick
|
||||
TabOrder = 12
|
||||
end
|
||||
object ComputeBtn: TButton
|
||||
AnchorSideRight.Control = CloseBtn
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 277
|
||||
Height = 25
|
||||
Top = 368
|
||||
Width = 76
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Compute'
|
||||
OnClick = ComputeBtnClick
|
||||
TabOrder = 13
|
||||
end
|
||||
object CloseBtn: TButton
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 361
|
||||
Height = 25
|
||||
Top = 368
|
||||
Width = 55
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Close'
|
||||
ModalResult = 11
|
||||
TabOrder = 14
|
||||
end
|
||||
object Bevel1: TBevel
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = CloseBtn
|
||||
Left = 0
|
||||
Height = 8
|
||||
Top = 352
|
||||
Width = 424
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
Shape = bsBottomLine
|
||||
inherited ParamsSplitter: TSplitter
|
||||
Height = 393
|
||||
end
|
||||
end
|
||||
|
@ -5,26 +5,22 @@ unit CoxRegUnit;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
|
||||
StdCtrls, Buttons, ExtCtrls,
|
||||
Globals, MainUnit, OutputUnit;
|
||||
Globals, MainUnit, BasicStatsReportFormUnit;
|
||||
|
||||
|
||||
type
|
||||
|
||||
{ TCoxRegFrm }
|
||||
{ TCoxRegForm }
|
||||
|
||||
TCoxRegFrm = class(TForm)
|
||||
Bevel1: TBevel;
|
||||
TCoxRegForm = class(TBasicStatsReportForm)
|
||||
InBtn: TBitBtn;
|
||||
OutBtn: TBitBtn;
|
||||
DepInBtn: TBitBtn;
|
||||
DepOutBtn: TBitBtn;
|
||||
StatusInBtn: TBitBtn;
|
||||
StatusOutBtn: TBitBtn;
|
||||
ResetBtn: TButton;
|
||||
ComputeBtn: TButton;
|
||||
CloseBtn: TButton;
|
||||
DescChk: TCheckBox;
|
||||
MaxItsEdit: TEdit;
|
||||
Label5: TLabel;
|
||||
@ -39,131 +35,98 @@ type
|
||||
Label3: TLabel;
|
||||
Label4: TLabel;
|
||||
VarList: TListBox;
|
||||
procedure ComputeBtnClick(Sender: TObject);
|
||||
procedure BlockListDblClick(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 OutBtnClick(Sender: TObject);
|
||||
procedure ResetBtnClick(Sender: TObject);
|
||||
procedure StatusInBtnClick(Sender: TObject);
|
||||
procedure StatusOutBtnClick(Sender: TObject);
|
||||
function ChiSq(x : double; n : integer) : double;
|
||||
function Norm(z : double): double;
|
||||
function ix(j, k, nCols : integer): integer;
|
||||
procedure VarListDblClick(Sender: TObject);
|
||||
procedure VarListSelectionChange(Sender: TObject; User: boolean);
|
||||
|
||||
private
|
||||
{ private declarations }
|
||||
FAutoSized: Boolean;
|
||||
procedure UpdateBtnStates;
|
||||
|
||||
protected
|
||||
procedure AdjustConstraints; override;
|
||||
procedure Compute; override;
|
||||
procedure UpdateBtnStates; override;
|
||||
|
||||
public
|
||||
{ public declarations }
|
||||
procedure Reset; override;
|
||||
end;
|
||||
|
||||
var
|
||||
CoxRegFrm: TCoxRegFrm;
|
||||
CoxRegForm: TCoxRegForm;
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
uses
|
||||
Math,
|
||||
Utils;
|
||||
|
||||
{ TCoxRegFrm }
|
||||
{ TCoxRegForm }
|
||||
|
||||
procedure TCoxRegFrm.ResetBtnClick(Sender: TObject);
|
||||
procedure TCoxRegForm.AdjustConstraints;
|
||||
begin
|
||||
inherited;
|
||||
ParamsPanel.Constraints.MinWidth := Max(
|
||||
4*CloseBtn.Width + 3*CloseBtn.BorderSpacing.Left,
|
||||
GroupBox1.Width);
|
||||
ParamsPanel.Constraints.MinHeight := InBtn.Top + 6*InBtn.Height + 7*OutBtn.BorderSpacing.Top +
|
||||
VarList.BorderSpacing.Bottom + MaxItsEdit.Height + MaxItsEdit.BorderSpacing.Bottom +
|
||||
GroupBox1.Height + ButtonBevel.Height + CloseBtn.BorderSpacing.Top + CloseBtn.Height;
|
||||
end;
|
||||
|
||||
procedure TCoxRegForm.BlockListDblClick(Sender: TObject);
|
||||
var
|
||||
i: integer;
|
||||
index: Integer;
|
||||
begin
|
||||
BlockList.Clear;
|
||||
VarList.Clear;
|
||||
for i := 1 to NoVariables do
|
||||
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
|
||||
ProbsChk.Checked := true;
|
||||
DescChk.Checked := true;
|
||||
DepVar.Text := '';
|
||||
StatusEdit.Text := '';
|
||||
MaxItsEdit.Text := '20';
|
||||
index := BlockList.ItemIndex;
|
||||
if index > -1 then
|
||||
begin
|
||||
VarList.Items.Add(BlockList.Items[index]);
|
||||
BlockList.Items.Delete(index);
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCoxRegFrm.StatusInBtnClick(Sender: TObject);
|
||||
|
||||
function TCoxRegForm.ChiSq(x: double; n: integer): double;
|
||||
var
|
||||
index: integer;
|
||||
p, t, a: double;
|
||||
k: integer;
|
||||
begin
|
||||
index := VarList.ItemIndex;
|
||||
if (index > -1) and (StatusEdit.Text = '') then
|
||||
p := exp(-0.5 * x);
|
||||
if n mod 2 = 1 then
|
||||
p := p * sqrt(2 * x / Pi);
|
||||
|
||||
k := n;
|
||||
while K >= 2 do
|
||||
begin
|
||||
StatusEdit.Text := VarList.Items[index];
|
||||
VarList.Items.Delete(index);
|
||||
p := p * x / k;
|
||||
k := k - 2;
|
||||
end;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TCoxRegFrm.StatusOutBtnClick(Sender: TObject);
|
||||
begin
|
||||
if (StatusEdit.Text <> '') then
|
||||
t := p;
|
||||
a := n;
|
||||
while t > 0.000001 * p do
|
||||
begin
|
||||
VarList.Items.Add(StatusEdit.Text);
|
||||
StatusEdit.Text := '';
|
||||
a := a + 2;
|
||||
t := t * x / a;
|
||||
p := p + t;
|
||||
end;
|
||||
UpdateBtnStates;
|
||||
Result := (1 - p);
|
||||
end;
|
||||
|
||||
procedure TCoxRegFrm.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;
|
||||
|
||||
Constraints.MinWidth := Width;
|
||||
Constraints.MinHeight := Height;
|
||||
|
||||
FAutoSized := true;
|
||||
end;
|
||||
|
||||
procedure TCoxRegFrm.FormCreate(Sender: TObject);
|
||||
begin
|
||||
Assert(OS3MainFrm <> nil);
|
||||
end;
|
||||
|
||||
procedure TCoxRegFrm.FormShow(Sender: TObject);
|
||||
begin
|
||||
ResetBtnClick(Self);
|
||||
end;
|
||||
|
||||
procedure TCoxRegFrm.DepInBtnClick(Sender: TObject);
|
||||
var
|
||||
index: integer;
|
||||
begin
|
||||
index := VarList.ItemIndex;
|
||||
if (index > -1) and (DepVar.Text = '') then
|
||||
begin
|
||||
DepVar.Text := VarList.Items[index];
|
||||
VarList.Items.Delete(index);
|
||||
end;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TCoxRegFrm.DepOutBtnClick(Sender: TObject);
|
||||
begin
|
||||
if DepVar.Text <> '' then
|
||||
begin
|
||||
VarList.Items.Add(DepVar.Text);
|
||||
DepVar.Text := '';
|
||||
end;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TCoxRegFrm.ComputeBtnClick(Sender: TObject);
|
||||
procedure TCoxRegForm.Compute;
|
||||
var
|
||||
i, j, k : integer;
|
||||
indx : integer;
|
||||
@ -524,30 +487,40 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
DisplayReport(lReport);
|
||||
FReportFrame.DisplayReport(lReport);
|
||||
|
||||
finally
|
||||
lReport.Free;
|
||||
|
||||
SurvT := nil;
|
||||
Stat := nil;
|
||||
Alpha := nil;
|
||||
x := nil;
|
||||
b := nil;
|
||||
a := nil;
|
||||
s1 := nil;
|
||||
s2 := nil;
|
||||
s := nil;
|
||||
Av := nil;
|
||||
SD := nil;
|
||||
SE := nil;
|
||||
RowLabels := nil;
|
||||
ColLabels := nil;
|
||||
ColNoSelected := nil;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCoxRegFrm.InBtnClick(Sender: TObject);
|
||||
|
||||
procedure TCoxRegForm.DepInBtnClick(Sender: TObject);
|
||||
var
|
||||
index: integer;
|
||||
begin
|
||||
index := VarList.ItemIndex;
|
||||
if (index > -1) and (DepVar.Text = '') then
|
||||
begin
|
||||
DepVar.Text := VarList.Items[index];
|
||||
VarList.Items.Delete(index);
|
||||
end;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
|
||||
procedure TCoxRegForm.DepOutBtnClick(Sender: TObject);
|
||||
begin
|
||||
if DepVar.Text <> '' then
|
||||
begin
|
||||
VarList.Items.Add(DepVar.Text);
|
||||
DepVar.Text := '';
|
||||
end;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
|
||||
procedure TCoxRegForm.InBtnClick(Sender: TObject);
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
@ -565,66 +538,87 @@ begin
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TCoxRegFrm.OutBtnClick(Sender: TObject);
|
||||
|
||||
function TCoxRegForm.ix(j, k, nCols : integer): integer;
|
||||
begin
|
||||
Result := j*nCols + k;
|
||||
end;
|
||||
|
||||
|
||||
function TCoxRegForm.Norm(z: double): double;
|
||||
begin
|
||||
Result := ChiSq(z*z, 1);
|
||||
end;
|
||||
|
||||
|
||||
procedure TCoxRegForm.OutBtnClick(Sender: TObject);
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
i := 0;
|
||||
while i < BlockList.Items.Count do
|
||||
begin
|
||||
if BlockList.Selected[i] then
|
||||
if BlockList.Selected[i] then
|
||||
begin
|
||||
VarList.Items.Add(BlockList.Items[i]);
|
||||
BlockList.Items.Delete(i);
|
||||
i := 0;
|
||||
end else
|
||||
i := i + 1;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TCoxRegForm.Reset;
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
inherited;
|
||||
|
||||
BlockList.Clear;
|
||||
VarList.Clear;
|
||||
for i := 1 to NoVariables do
|
||||
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
|
||||
ProbsChk.Checked := true;
|
||||
DescChk.Checked := true;
|
||||
DepVar.Text := '';
|
||||
StatusEdit.Text := '';
|
||||
MaxItsEdit.Text := '20';
|
||||
end;
|
||||
|
||||
|
||||
procedure TCoxRegForm.StatusInBtnClick(Sender: TObject);
|
||||
var
|
||||
index: integer;
|
||||
begin
|
||||
index := VarList.ItemIndex;
|
||||
if (index > -1) and (StatusEdit.Text = '') then
|
||||
begin
|
||||
VarList.Items.Add(BlockList.Items[i]);
|
||||
BlockList.Items.Delete(i);
|
||||
i := 0;
|
||||
end else
|
||||
i := i + 1;
|
||||
StatusEdit.Text := VarList.Items[index];
|
||||
VarList.Items.Delete(index);
|
||||
end;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
function TCoxRegFrm.ChiSq(x: double; n: integer): double;
|
||||
var
|
||||
p, t, a: double;
|
||||
k: integer;
|
||||
begin
|
||||
p := exp(-0.5 * x);
|
||||
if n mod 2 = 1 then
|
||||
p := p * sqrt(2 * x / Pi);
|
||||
|
||||
k := n;
|
||||
while K >= 2 do
|
||||
procedure TCoxRegForm.StatusOutBtnClick(Sender: TObject);
|
||||
begin
|
||||
if (StatusEdit.Text <> '') then
|
||||
begin
|
||||
p := p * x / k;
|
||||
k := k - 2;
|
||||
VarList.Items.Add(StatusEdit.Text);
|
||||
StatusEdit.Text := '';
|
||||
end;
|
||||
|
||||
t := p;
|
||||
a := n;
|
||||
while t > 0.000001 * p do
|
||||
begin
|
||||
a := a + 2;
|
||||
t := t * x / a;
|
||||
p := p + t;
|
||||
end;
|
||||
Result := (1 - p);
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
function TCoxRegFrm.Norm(z: double): double;
|
||||
begin
|
||||
Result := ChiSq(z*z, 1);
|
||||
end;
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
function TCoxRegFrm.ix(j, k, nCols : integer): integer;
|
||||
begin
|
||||
Result := j*nCols + k;
|
||||
end;
|
||||
|
||||
procedure TCoxRegFrm.UpdateBtnStates;
|
||||
procedure TCoxRegForm.UpdateBtnStates;
|
||||
var
|
||||
lSelected: Boolean;
|
||||
begin
|
||||
inherited;
|
||||
|
||||
lSelected := AnySelected(VarList);
|
||||
InBtn.Enabled := lSelected;
|
||||
DepInBtn.Enabled := lSelected and (DepVar.Text = '');
|
||||
@ -635,14 +629,27 @@ begin
|
||||
StatusOutBtn.Enabled := StatusEdit.Text <> '';
|
||||
end;
|
||||
|
||||
procedure TCoxRegFrm.VarListSelectionChange(Sender: TObject; User: boolean);
|
||||
|
||||
procedure TCoxRegForm.VarListDblClick(Sender: TObject);
|
||||
var
|
||||
index: Integer;
|
||||
begin
|
||||
index := VarList.ItemIndex;
|
||||
if index > -1 then
|
||||
begin
|
||||
BlockList.Items.Add(VarList.Items[index]);
|
||||
VarList.Items.Delete(index);
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TCoxRegForm.VarListSelectionChange(Sender: TObject; User: boolean);
|
||||
begin
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
|
||||
initialization
|
||||
{$I coxregunit.lrs}
|
||||
|
||||
end.
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
object LinProFrm: TLinProFrm
|
||||
object LinProForm: TLinProForm
|
||||
Left = 445
|
||||
Height = 507
|
||||
Top = 263
|
||||
@ -613,11 +613,11 @@ object LinProFrm: TLinProFrm
|
||||
TabOrder = 3
|
||||
end
|
||||
object OpenDialog1: TOpenDialog
|
||||
left = 696
|
||||
top = 136
|
||||
Left = 696
|
||||
Top = 136
|
||||
end
|
||||
object SaveDialog1: TSaveDialog
|
||||
left = 600
|
||||
top = 120
|
||||
Left = 600
|
||||
Top = 120
|
||||
end
|
||||
end
|
||||
|
@ -11,9 +11,9 @@ uses
|
||||
|
||||
type
|
||||
|
||||
{ TLinProFrm }
|
||||
{ TLinProForm }
|
||||
|
||||
TLinProFrm = class(TForm)
|
||||
TLinProForm = class(TForm)
|
||||
Bevel1: TBevel;
|
||||
ExitBtn: TButton;
|
||||
Panel1: TPanel;
|
||||
@ -98,16 +98,16 @@ type
|
||||
end;
|
||||
|
||||
var
|
||||
LinProFrm: TLinProFrm;
|
||||
LinProForm: TLinProForm;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
Math;
|
||||
|
||||
{ TLinProFrm }
|
||||
{ TLinProForm }
|
||||
|
||||
procedure TLinProFrm.ResetBtnClick(Sender: TObject);
|
||||
procedure TLinProForm.ResetBtnClick(Sender: TObject);
|
||||
begin
|
||||
NoVarsEdit.Text := '0';
|
||||
NoMaxEdit.Text := '';
|
||||
@ -139,7 +139,7 @@ begin
|
||||
ResultsEdit.Text := '';
|
||||
end;
|
||||
|
||||
procedure TLinProFrm.SaveBtnClick(Sender: TObject);
|
||||
procedure TLinProForm.SaveBtnClick(Sender: TObject);
|
||||
var
|
||||
F : TextFile;
|
||||
i, j : integer;
|
||||
@ -170,7 +170,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TLinProFrm.FormActivate(Sender: TObject);
|
||||
procedure TLinProForm.FormActivate(Sender: TObject);
|
||||
var
|
||||
w: Integer;
|
||||
begin
|
||||
@ -188,17 +188,17 @@ begin
|
||||
FAutoSized := true;
|
||||
end;
|
||||
|
||||
procedure TLinProFrm.FormCreate(Sender: TObject);
|
||||
procedure TLinProForm.FormCreate(Sender: TObject);
|
||||
begin
|
||||
if OutputFrm = nil then Application.CreateForm(TOutputFrm, OutputFrm);
|
||||
end;
|
||||
|
||||
procedure TLinProFrm.FormShow(Sender: TObject);
|
||||
procedure TLinProForm.FormShow(Sender: TObject);
|
||||
begin
|
||||
ResetBtnClick(Self);
|
||||
end;
|
||||
|
||||
procedure TLinProFrm.LoadBtnClick(Sender: TObject);
|
||||
procedure TLinProForm.LoadBtnClick(Sender: TObject);
|
||||
var
|
||||
i, j : integer;
|
||||
FName : string;
|
||||
@ -283,7 +283,7 @@ begin
|
||||
ComputeBtn.SetFocus;
|
||||
end;
|
||||
|
||||
procedure TLinProFrm.CancelBtnClick(Sender: TObject);
|
||||
procedure TLinProForm.CancelBtnClick(Sender: TObject);
|
||||
begin
|
||||
Coefficients := nil;
|
||||
EqlConstraints := nil;
|
||||
@ -293,7 +293,7 @@ begin
|
||||
Close;
|
||||
end;
|
||||
|
||||
procedure TLinProFrm.ComputeBtnClick(Sender: TObject);
|
||||
procedure TLinProForm.ComputeBtnClick(Sender: TObject);
|
||||
var
|
||||
m1, m2, m3, m, mp, n, np, nm1m2 : integer;
|
||||
i,icase,j : integer;
|
||||
@ -415,7 +415,7 @@ begin
|
||||
izrov := nil;
|
||||
end;
|
||||
|
||||
procedure TLinProFrm.ExitBtnClick(Sender: TObject);
|
||||
procedure TLinProForm.ExitBtnClick(Sender: TObject);
|
||||
begin
|
||||
Coefficients := nil;
|
||||
EqlConstraints := nil;
|
||||
@ -425,7 +425,7 @@ begin
|
||||
Close;
|
||||
end;
|
||||
|
||||
procedure TLinProFrm.NoEqualEditExit(Sender: TObject);
|
||||
procedure TLinProForm.NoEqualEditExit(Sender: TObject);
|
||||
VAR value : integer;
|
||||
begin
|
||||
value := StrToInt(NoEqualEdit.Text);
|
||||
@ -438,12 +438,12 @@ begin
|
||||
SetLength(Coefficients,NoCoefs+1,NoVars+1);
|
||||
end;
|
||||
|
||||
procedure TLinProFrm.NoEqualEditKeyPress(Sender: TObject; var Key: char);
|
||||
procedure TLinProForm.NoEqualEditKeyPress(Sender: TObject; var Key: char);
|
||||
begin
|
||||
if ord(Key) = 13 then ObjectiveGrid.SetFocus;
|
||||
end;
|
||||
|
||||
procedure TLinProFrm.NoMaxEditExit(Sender: TObject);
|
||||
procedure TLinProForm.NoMaxEditExit(Sender: TObject);
|
||||
VAR value : integer;
|
||||
begin
|
||||
value := StrToInt(NoMaxEdit.Text);
|
||||
@ -454,12 +454,12 @@ begin
|
||||
SetLength(MaxConstraints,NoMax + 1);
|
||||
end;
|
||||
|
||||
procedure TLinProFrm.NoMaxEditKeyPress(Sender: TObject; var Key: char);
|
||||
procedure TLinProForm.NoMaxEditKeyPress(Sender: TObject; var Key: char);
|
||||
begin
|
||||
if ord(Key) = 13 then NoMinEdit.SetFocus;
|
||||
end;
|
||||
|
||||
procedure TLinProFrm.NoMinEditExit(Sender: TObject);
|
||||
procedure TLinProForm.NoMinEditExit(Sender: TObject);
|
||||
VAR value : integer;
|
||||
begin
|
||||
value := StrToInt(NoMinEdit.Text);
|
||||
@ -470,12 +470,12 @@ begin
|
||||
SetLength(MinConstraints,NoMin + 1);
|
||||
end;
|
||||
|
||||
procedure TLinProFrm.NoMinEditKeyPress(Sender: TObject; var Key: char);
|
||||
procedure TLinProForm.NoMinEditKeyPress(Sender: TObject; var Key: char);
|
||||
begin
|
||||
if ord(Key) = 13 then NoEqualEdit.SetFocus;
|
||||
end;
|
||||
|
||||
procedure TLinProFrm.NoVarsEditExit(Sender: TObject);
|
||||
procedure TLinProForm.NoVarsEditExit(Sender: TObject);
|
||||
var value : integer;
|
||||
begin
|
||||
value := StrToInt(NoVarsEdit.Text);
|
||||
@ -488,12 +488,12 @@ begin
|
||||
SetLength(Objective,NoVars + 1);
|
||||
end;
|
||||
|
||||
procedure TLinProFrm.NoVarsEditKeyPress(Sender: TObject; var Key: char);
|
||||
procedure TLinProForm.NoVarsEditKeyPress(Sender: TObject; var Key: char);
|
||||
begin
|
||||
if ord(Key) = 13 then NoMaxEdit.SetFocus;
|
||||
end;
|
||||
|
||||
PROCEDURE TLinProFrm.simplx(VAR a: DblDyneMat; m,n,mp,np,m1,m2,m3: integer;
|
||||
PROCEDURE TLinProForm.simplx(VAR a: DblDyneMat; m,n,mp,np,m1,m2,m3: integer;
|
||||
VAR icase: integer; VAR izrov: IntDyneVec;
|
||||
VAR iposv: IntDyneVec);
|
||||
LABEL 1,2,10,20,30,99;
|
||||
@ -607,7 +607,7 @@ BEGIN
|
||||
END;
|
||||
|
||||
|
||||
PROCEDURE TLinProFrm.simp1(VAR a: DblDyneMat; mp,np,mm: integer;
|
||||
PROCEDURE TLinProForm.simp1(VAR a: DblDyneMat; mp,np,mm: integer;
|
||||
ll: IntDyneVec; nll,iabf: integer;
|
||||
VAR kp: integer; VAR bmax: double);
|
||||
LABEL 99;
|
||||
@ -632,7 +632,7 @@ BEGIN
|
||||
99: END;
|
||||
|
||||
|
||||
PROCEDURE TLinProFrm.simp2(VAR a: DblDyneMat; m,n,mp,np: integer;
|
||||
PROCEDURE TLinProForm.simp2(VAR a: DblDyneMat; m,n,mp,np: integer;
|
||||
l2: IntDyneVec; nl2: integer; VAR ip: integer;
|
||||
kp: integer; VAR q1: double);
|
||||
LABEL 2,6,99;
|
||||
@ -670,7 +670,7 @@ BEGIN
|
||||
end;
|
||||
|
||||
|
||||
PROCEDURE TLinProFrm.simp3(VAR a: DblDyneMat; mp,np,i1,k1,ip,kp: integer);
|
||||
PROCEDURE TLinProForm.simp3(VAR a: DblDyneMat; mp,np,i1,k1,ip,kp: integer);
|
||||
(* Programs using routine SIMP3 must define the type
|
||||
TYPE
|
||||
glmpbynp = ARRAY [1..mp,1..np] OF real;
|
||||
@ -700,7 +700,7 @@ BEGIN
|
||||
END;
|
||||
|
||||
|
||||
procedure TLinProFrm.LoadArrayData(Sender: TObject);
|
||||
procedure TLinProForm.LoadArrayData(Sender: TObject);
|
||||
var
|
||||
i, j : integer;
|
||||
begin
|
||||
|
@ -1,305 +1,260 @@
|
||||
object LogRegFrm: TLogRegFrm
|
||||
Left = 876
|
||||
Height = 355
|
||||
Top = 245
|
||||
Width = 353
|
||||
inherited LogRegForm: TLogRegForm
|
||||
Left = 566
|
||||
Height = 342
|
||||
Top = 243
|
||||
Width = 582
|
||||
HelpType = htKeyword
|
||||
HelpKeyword = 'html/BinaryLogisticRegression.htm'
|
||||
AutoSize = True
|
||||
Caption = 'Binary Logistic Regression'
|
||||
ClientHeight = 355
|
||||
ClientWidth = 353
|
||||
OnActivate = FormActivate
|
||||
OnCreate = FormCreate
|
||||
OnShow = FormShow
|
||||
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
|
||||
BorderSpacing.Right = 8
|
||||
Caption = 'Available Variables'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label2: TLabel
|
||||
AnchorSideLeft.Control = DepVar
|
||||
AnchorSideBottom.Control = DepVar
|
||||
Left = 198
|
||||
Height = 15
|
||||
Top = 31
|
||||
Width = 102
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Bottom = 2
|
||||
Caption = 'Dependent Variable'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label3: TLabel
|
||||
AnchorSideLeft.Control = BlockList
|
||||
AnchorSideTop.Control = InBtn
|
||||
Left = 198
|
||||
Height = 15
|
||||
Top = 120
|
||||
Width = 116
|
||||
Caption = 'Independent Variables'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label4: TLabel
|
||||
AnchorSideLeft.Control = GroupBox1
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = GroupBox1
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 179
|
||||
Height = 15
|
||||
Top = 247
|
||||
Width = 107
|
||||
BorderSpacing.Left = 16
|
||||
Caption = 'Maximum Iterations'
|
||||
ParentColor = False
|
||||
end
|
||||
object VarList: TListBox
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Label1
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = DepInBtn
|
||||
AnchorSideBottom.Control = GroupBox1
|
||||
Left = 8
|
||||
Height = 170
|
||||
Top = 25
|
||||
Width = 146
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnSelectionChange = VarListSelectionChange
|
||||
TabOrder = 0
|
||||
end
|
||||
object DepInBtn: TBitBtn
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = VarList
|
||||
Left = 162
|
||||
Height = 28
|
||||
Top = 25
|
||||
Width = 28
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = DepInBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 1
|
||||
end
|
||||
object DepOutBtn: TBitBtn
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = DepInBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 162
|
||||
Height = 28
|
||||
Top = 55
|
||||
Width = 28
|
||||
BorderSpacing.Top = 2
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = DepOutBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 2
|
||||
end
|
||||
object InBtn: TBitBtn
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
Left = 162
|
||||
Height = 28
|
||||
Top = 120
|
||||
Width = 28
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = InBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 4
|
||||
end
|
||||
object OutBtn: TBitBtn
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
Left = 162
|
||||
Height = 28
|
||||
Top = 148
|
||||
Width = 28
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = OutBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 5
|
||||
end
|
||||
object DepVar: TEdit
|
||||
AnchorSideLeft.Control = DepInBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = DepOutBtn
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 198
|
||||
Height = 23
|
||||
Top = 48
|
||||
Width = 147
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 12
|
||||
ReadOnly = True
|
||||
TabOrder = 3
|
||||
Text = 'DepVar'
|
||||
end
|
||||
object BlockList: TListBox
|
||||
AnchorSideLeft.Control = InBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = Label3
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = VarList
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 198
|
||||
Height = 60
|
||||
Top = 135
|
||||
Width = 147
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Right = 8
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnSelectionChange = VarListSelectionChange
|
||||
TabOrder = 6
|
||||
end
|
||||
object GroupBox1: TGroupBox
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideBottom.Control = Bevel1
|
||||
Left = 8
|
||||
Height = 103
|
||||
Top = 203
|
||||
Width = 155
|
||||
Anchors = [akLeft, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
Caption = 'Options'
|
||||
ChildSizing.LeftRightSpacing = 12
|
||||
ChildSizing.TopBottomSpacing = 6
|
||||
ChildSizing.VerticalSpacing = 2
|
||||
ClientHeight = 83
|
||||
ClientWidth = 151
|
||||
TabOrder = 7
|
||||
object DescChk: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 6
|
||||
Width = 127
|
||||
Caption = 'Descriptive Statistics'
|
||||
ClientHeight = 342
|
||||
ClientWidth = 582
|
||||
inherited ParamsPanel: TPanel
|
||||
Height = 326
|
||||
ClientHeight = 326
|
||||
inherited CloseBtn: TButton
|
||||
Top = 301
|
||||
TabOrder = 12
|
||||
end
|
||||
inherited ComputeBtn: TButton
|
||||
Top = 301
|
||||
TabOrder = 11
|
||||
end
|
||||
inherited ResetBtn: TButton
|
||||
Top = 301
|
||||
TabOrder = 10
|
||||
end
|
||||
inherited HelpBtn: TButton
|
||||
Top = 301
|
||||
TabOrder = 9
|
||||
end
|
||||
inherited ButtonBevel: TBevel
|
||||
Top = 285
|
||||
end
|
||||
object Label1: TLabel[5]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideTop.Control = ParamsPanel
|
||||
Left = 0
|
||||
Height = 15
|
||||
Top = 0
|
||||
Width = 97
|
||||
BorderSpacing.Right = 8
|
||||
Caption = 'Available Variables'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label2: TLabel[6]
|
||||
AnchorSideLeft.Control = DepVarEdit
|
||||
AnchorSideBottom.Control = DepVarEdit
|
||||
Left = 164
|
||||
Height = 15
|
||||
Top = 19
|
||||
Width = 102
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Bottom = 2
|
||||
Caption = 'Dependent Variable'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label3: TLabel[7]
|
||||
AnchorSideLeft.Control = BlockList
|
||||
AnchorSideTop.Control = InBtn
|
||||
Left = 164
|
||||
Height = 15
|
||||
Top = 103
|
||||
Width = 116
|
||||
Caption = 'Independent Variables'
|
||||
ParentColor = False
|
||||
end
|
||||
object VarList: TListBox[8]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideTop.Control = Label1
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = DepInBtn
|
||||
AnchorSideBottom.Control = OptionsGroup
|
||||
Left = 0
|
||||
Height = 157
|
||||
Top = 17
|
||||
Width = 126
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 6
|
||||
BorderSpacing.Bottom = 8
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnDblClick = VarListDblClick
|
||||
OnSelectionChange = VarListSelectionChange
|
||||
TabOrder = 0
|
||||
end
|
||||
object ProbsChk: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 32
|
||||
Width = 95
|
||||
Caption = 'Y Probabilities'
|
||||
object DepInBtn: TBitBtn[9]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = VarList
|
||||
Left = 132
|
||||
Height = 26
|
||||
Top = 17
|
||||
Width = 26
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = DepInBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 1
|
||||
end
|
||||
object ItersChk: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 58
|
||||
Width = 101
|
||||
Caption = 'Show Iterations'
|
||||
object DepOutBtn: TBitBtn[10]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = DepInBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 132
|
||||
Height = 26
|
||||
Top = 45
|
||||
Width = 26
|
||||
BorderSpacing.Top = 2
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = DepOutBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 2
|
||||
end
|
||||
object InBtn: TBitBtn[11]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = DepOutBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 132
|
||||
Height = 26
|
||||
Top = 103
|
||||
Width = 26
|
||||
BorderSpacing.Top = 32
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = InBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 4
|
||||
end
|
||||
object OutBtn: TBitBtn[12]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = InBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 132
|
||||
Height = 26
|
||||
Top = 131
|
||||
Width = 26
|
||||
BorderSpacing.Top = 2
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = OutBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 5
|
||||
end
|
||||
object DepVarEdit: TEdit[13]
|
||||
AnchorSideLeft.Control = DepInBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideRight.Control = ParamsPanel
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = DepOutBtn
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 164
|
||||
Height = 23
|
||||
Top = 36
|
||||
Width = 127
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Bottom = 12
|
||||
ReadOnly = True
|
||||
TabOrder = 3
|
||||
Text = 'DepVarEdit'
|
||||
end
|
||||
object BlockList: TListBox[14]
|
||||
AnchorSideLeft.Control = DepInBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = Label3
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = ParamsPanel
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = VarList
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 164
|
||||
Height = 56
|
||||
Top = 118
|
||||
Width = 127
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 6
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnDblClick = BlockListDblClick
|
||||
OnSelectionChange = VarListSelectionChange
|
||||
TabOrder = 6
|
||||
end
|
||||
object MaxItsLabel: TLabel[15]
|
||||
AnchorSideLeft.Control = OptionsGroup
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideBottom.Control = MaxItsEdit
|
||||
Left = 171
|
||||
Height = 15
|
||||
Top = 205
|
||||
Width = 107
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Left = 16
|
||||
BorderSpacing.Bottom = 2
|
||||
Caption = 'Maximum Iterations'
|
||||
ParentColor = False
|
||||
end
|
||||
object OptionsGroup: TGroupBox[16]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideBottom.Control = ButtonBevel
|
||||
Left = 0
|
||||
Height = 103
|
||||
Top = 182
|
||||
Width = 155
|
||||
Anchors = [akLeft, akBottom]
|
||||
AutoSize = True
|
||||
Caption = 'Options'
|
||||
ChildSizing.LeftRightSpacing = 12
|
||||
ChildSizing.TopBottomSpacing = 6
|
||||
ChildSizing.VerticalSpacing = 2
|
||||
ClientHeight = 83
|
||||
ClientWidth = 151
|
||||
TabOrder = 7
|
||||
object DescChk: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 6
|
||||
Width = 127
|
||||
Caption = 'Descriptive Statistics'
|
||||
TabOrder = 0
|
||||
end
|
||||
object ProbsChk: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 32
|
||||
Width = 95
|
||||
Caption = 'Y Probabilities'
|
||||
TabOrder = 1
|
||||
end
|
||||
object ItersChk: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 58
|
||||
Width = 101
|
||||
Caption = 'Show Iterations'
|
||||
TabOrder = 2
|
||||
end
|
||||
end
|
||||
object MaxItsEdit: TEdit[17]
|
||||
AnchorSideLeft.Control = MaxItsLabel
|
||||
AnchorSideTop.Control = OptionsGroup
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 187
|
||||
Height = 23
|
||||
Top = 222
|
||||
Width = 40
|
||||
Alignment = taRightJustify
|
||||
BorderSpacing.Left = 16
|
||||
TabOrder = 8
|
||||
Text = 'MaxItsEdit'
|
||||
end
|
||||
end
|
||||
object MaxItsEdit: TEdit
|
||||
AnchorSideLeft.Control = Label4
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = Label4
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 294
|
||||
Height = 23
|
||||
Top = 243
|
||||
Width = 38
|
||||
Alignment = taRightJustify
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Right = 8
|
||||
TabOrder = 8
|
||||
Text = 'MaxItsEdit'
|
||||
end
|
||||
object ResetBtn: TButton
|
||||
AnchorSideRight.Control = ComputeBtn
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 140
|
||||
Height = 25
|
||||
Top = 322
|
||||
Width = 54
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 12
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Reset'
|
||||
OnClick = ResetBtnClick
|
||||
TabOrder = 9
|
||||
end
|
||||
object ComputeBtn: TButton
|
||||
AnchorSideRight.Control = CloseBtn
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 202
|
||||
Height = 25
|
||||
Top = 322
|
||||
Width = 76
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Compute'
|
||||
OnClick = ComputeBtnClick
|
||||
TabOrder = 10
|
||||
end
|
||||
object CloseBtn: TButton
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 286
|
||||
Height = 25
|
||||
Top = 322
|
||||
Width = 55
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 12
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Close'
|
||||
ModalResult = 11
|
||||
TabOrder = 11
|
||||
end
|
||||
object Bevel1: TBevel
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = CloseBtn
|
||||
Left = 0
|
||||
Height = 8
|
||||
Top = 306
|
||||
Width = 353
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
Shape = bsBottomLine
|
||||
inherited ParamsSplitter: TSplitter
|
||||
Height = 342
|
||||
end
|
||||
end
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,286 +1,250 @@
|
||||
object SimultFrm: TSimultFrm
|
||||
Left = 872
|
||||
inherited SimultForm: TSimultForm
|
||||
Left = 619
|
||||
Height = 447
|
||||
Top = 291
|
||||
Width = 437
|
||||
Top = 274
|
||||
Width = 866
|
||||
HelpType = htKeyword
|
||||
HelpKeyword = 'html/SimultaneousMultipleRegression.htm'
|
||||
AutoSize = True
|
||||
Caption = 'Simultaneous Multiple Regression'
|
||||
ClientHeight = 447
|
||||
ClientWidth = 437
|
||||
OnActivate = FormActivate
|
||||
OnCreate = FormCreate
|
||||
OnShow = FormShow
|
||||
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 Label2: TLabel
|
||||
AnchorSideLeft.Control = ListBox1
|
||||
AnchorSideTop.Control = Owner
|
||||
Left = 249
|
||||
Height = 15
|
||||
Top = 8
|
||||
Width = 127
|
||||
BorderSpacing.Top = 8
|
||||
Caption = 'Variables to be Analyzed'
|
||||
ParentColor = False
|
||||
end
|
||||
object VarList: TListBox
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Label1
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = AllBtn
|
||||
AnchorSideBottom.Control = GroupBox1
|
||||
Left = 8
|
||||
Height = 234
|
||||
Top = 25
|
||||
Width = 179
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Constraints.MinHeight = 220
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnSelectionChange = VarListSelectionChange
|
||||
TabOrder = 0
|
||||
end
|
||||
object InBtn: TBitBtn
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
Left = 204
|
||||
Height = 28
|
||||
Top = 25
|
||||
Width = 28
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = InBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 1
|
||||
end
|
||||
object OutBtn: TBitBtn
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
Left = 204
|
||||
Height = 28
|
||||
Top = 65
|
||||
Width = 28
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = OutBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 2
|
||||
end
|
||||
object AllBtn: TBitBtn
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
Left = 195
|
||||
Height = 25
|
||||
Top = 112
|
||||
Width = 46
|
||||
AutoSize = True
|
||||
Caption = 'ALL'
|
||||
OnClick = AllBtnClick
|
||||
TabOrder = 3
|
||||
end
|
||||
object ListBox1: TListBox
|
||||
AnchorSideLeft.Control = AllBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = GroupBox1
|
||||
Left = 249
|
||||
Height = 235
|
||||
Top = 24
|
||||
Width = 180
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnSelectionChange = VarListSelectionChange
|
||||
TabOrder = 4
|
||||
end
|
||||
object GroupBox1: TGroupBox
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideBottom.Control = Bevel1
|
||||
Left = 8
|
||||
Height = 123
|
||||
Top = 267
|
||||
Width = 417
|
||||
Anchors = [akLeft, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Options'
|
||||
ChildSizing.LeftRightSpacing = 12
|
||||
ChildSizing.HorizontalSpacing = 16
|
||||
ChildSizing.VerticalSpacing = 2
|
||||
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
|
||||
ChildSizing.Layout = cclLeftToRightThenTopToBottom
|
||||
ChildSizing.ControlsPerLine = 2
|
||||
ClientHeight = 103
|
||||
ClientWidth = 413
|
||||
TabOrder = 5
|
||||
object MatInChkBox: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 0
|
||||
Width = 175
|
||||
Caption = 'Get Data From a Matrix File'
|
||||
TabOrder = 0
|
||||
ClientWidth = 866
|
||||
inherited ParamsPanel: TPanel
|
||||
Height = 431
|
||||
Width = 407
|
||||
ClientHeight = 431
|
||||
ClientWidth = 407
|
||||
inherited CloseBtn: TButton
|
||||
Left = 352
|
||||
Top = 406
|
||||
TabOrder = 9
|
||||
end
|
||||
object MatSaveChkBox: TCheckBox
|
||||
Left = 203
|
||||
Height = 19
|
||||
Top = 0
|
||||
Width = 198
|
||||
Caption = 'Save Correlation Matrix'
|
||||
TabOrder = 1
|
||||
end
|
||||
object CPChkBox: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 21
|
||||
Width = 175
|
||||
Caption = 'Show Cross-Products Matrix'
|
||||
TabOrder = 2
|
||||
end
|
||||
object CovChkBox: TCheckBox
|
||||
Left = 203
|
||||
Height = 19
|
||||
Top = 21
|
||||
Width = 198
|
||||
Caption = 'Show Variance-Covariance Matrix'
|
||||
TabOrder = 3
|
||||
end
|
||||
object CorrsChkBox: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 42
|
||||
Width = 175
|
||||
Caption = 'Show Intercorrelations Matrix'
|
||||
TabOrder = 4
|
||||
end
|
||||
object MeansChkBox: TCheckBox
|
||||
Left = 203
|
||||
Height = 19
|
||||
Top = 42
|
||||
Width = 198
|
||||
Caption = 'Show Means'
|
||||
TabOrder = 5
|
||||
end
|
||||
object VarChkBox: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 63
|
||||
Width = 175
|
||||
Caption = 'Show Variances'
|
||||
TabOrder = 6
|
||||
end
|
||||
object SDChkBox: TCheckBox
|
||||
Left = 203
|
||||
Height = 19
|
||||
Top = 63
|
||||
Width = 198
|
||||
Caption = 'Show Standard Deviations'
|
||||
TabOrder = 7
|
||||
end
|
||||
object InvMatChkBox: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 84
|
||||
Width = 175
|
||||
Caption = 'Show Inverse Matrix'
|
||||
inherited ComputeBtn: TButton
|
||||
Left = 268
|
||||
Top = 406
|
||||
TabOrder = 8
|
||||
end
|
||||
inherited ResetBtn: TButton
|
||||
Left = 206
|
||||
Top = 406
|
||||
TabOrder = 7
|
||||
end
|
||||
inherited HelpBtn: TButton
|
||||
Left = 147
|
||||
Top = 406
|
||||
TabOrder = 6
|
||||
end
|
||||
inherited ButtonBevel: TBevel
|
||||
Top = 390
|
||||
Width = 407
|
||||
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 Label2: TLabel[6]
|
||||
AnchorSideLeft.Control = SelList
|
||||
AnchorSideTop.Control = ParamsPanel
|
||||
Left = 231
|
||||
Height = 15
|
||||
Top = 0
|
||||
Width = 127
|
||||
Caption = 'Variables to be Analyzed'
|
||||
ParentColor = False
|
||||
end
|
||||
object VarList: TListBox[7]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideTop.Control = Label1
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = AllBtn
|
||||
AnchorSideBottom.Control = OptionsGroup
|
||||
Left = 0
|
||||
Height = 222
|
||||
Top = 17
|
||||
Width = 177
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 6
|
||||
BorderSpacing.Bottom = 8
|
||||
Constraints.MinHeight = 220
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnDblClick = VarListDblClick
|
||||
OnSelectionChange = VarListSelectionChange
|
||||
TabOrder = 0
|
||||
end
|
||||
object InBtn: TBitBtn[8]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
Left = 190
|
||||
Height = 26
|
||||
Top = 25
|
||||
Width = 26
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = InBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 1
|
||||
end
|
||||
object OutBtn: TBitBtn[9]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
Left = 190
|
||||
Height = 26
|
||||
Top = 65
|
||||
Width = 26
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = OutBtnClick
|
||||
Spacing = 0
|
||||
TabOrder = 2
|
||||
end
|
||||
object AllBtn: TBitBtn[10]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
Left = 183
|
||||
Height = 25
|
||||
Top = 112
|
||||
Width = 40
|
||||
AutoSize = True
|
||||
Caption = 'All'
|
||||
OnClick = AllBtnClick
|
||||
TabOrder = 3
|
||||
end
|
||||
object SelList: TListBox[11]
|
||||
AnchorSideLeft.Control = AllBtn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = Label2
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = ParamsPanel
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = OptionsGroup
|
||||
Left = 231
|
||||
Height = 222
|
||||
Top = 17
|
||||
Width = 168
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnDblClick = SelListDblClick
|
||||
OnSelectionChange = VarListSelectionChange
|
||||
TabOrder = 4
|
||||
end
|
||||
object OptionsGroup: TGroupBox[12]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideBottom.Control = ButtonBevel
|
||||
Left = 0
|
||||
Height = 135
|
||||
Top = 247
|
||||
Width = 417
|
||||
Anchors = [akLeft, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Options'
|
||||
ChildSizing.LeftRightSpacing = 12
|
||||
ChildSizing.TopBottomSpacing = 6
|
||||
ChildSizing.HorizontalSpacing = 16
|
||||
ChildSizing.VerticalSpacing = 2
|
||||
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
|
||||
ChildSizing.Layout = cclLeftToRightThenTopToBottom
|
||||
ChildSizing.ControlsPerLine = 2
|
||||
ClientHeight = 115
|
||||
ClientWidth = 413
|
||||
TabOrder = 5
|
||||
object MatInChkBox: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 6
|
||||
Width = 175
|
||||
Caption = 'Get Data From a Matrix File'
|
||||
TabOrder = 0
|
||||
end
|
||||
object MatSaveChkBox: TCheckBox
|
||||
Left = 203
|
||||
Height = 19
|
||||
Top = 6
|
||||
Width = 198
|
||||
Caption = 'Save Correlation Matrix'
|
||||
TabOrder = 1
|
||||
end
|
||||
object CPChkBox: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 27
|
||||
Width = 175
|
||||
Caption = 'Show Cross-Products Matrix'
|
||||
TabOrder = 2
|
||||
end
|
||||
object CovChkBox: TCheckBox
|
||||
Left = 203
|
||||
Height = 19
|
||||
Top = 27
|
||||
Width = 198
|
||||
Caption = 'Show Variance-Covariance Matrix'
|
||||
TabOrder = 3
|
||||
end
|
||||
object CorrsChkBox: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 48
|
||||
Width = 175
|
||||
Caption = 'Show Intercorrelations Matrix'
|
||||
TabOrder = 4
|
||||
end
|
||||
object MeansChkBox: TCheckBox
|
||||
Left = 203
|
||||
Height = 19
|
||||
Top = 48
|
||||
Width = 198
|
||||
Caption = 'Show Means'
|
||||
TabOrder = 5
|
||||
end
|
||||
object VarChkBox: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 69
|
||||
Width = 175
|
||||
Caption = 'Show Variances'
|
||||
TabOrder = 6
|
||||
end
|
||||
object SDChkBox: TCheckBox
|
||||
Left = 203
|
||||
Height = 19
|
||||
Top = 69
|
||||
Width = 198
|
||||
Caption = 'Show Standard Deviations'
|
||||
TabOrder = 7
|
||||
end
|
||||
object InvMatChkBox: TCheckBox
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 90
|
||||
Width = 175
|
||||
Caption = 'Show Inverse Matrix'
|
||||
TabOrder = 8
|
||||
end
|
||||
end
|
||||
end
|
||||
object ResetBtn: TButton
|
||||
AnchorSideRight.Control = ComputeBtn
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 228
|
||||
Height = 25
|
||||
Top = 414
|
||||
Width = 54
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Reset'
|
||||
OnClick = ResetBtnClick
|
||||
TabOrder = 6
|
||||
inherited ParamsSplitter: TSplitter
|
||||
Left = 419
|
||||
Height = 447
|
||||
end
|
||||
object ComputeBtn: TButton
|
||||
AnchorSideRight.Control = CloseBtn
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 290
|
||||
Height = 25
|
||||
Top = 414
|
||||
Width = 76
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Compute'
|
||||
OnClick = ComputeBtnClick
|
||||
TabOrder = 7
|
||||
end
|
||||
object CloseBtn: TButton
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 374
|
||||
Height = 25
|
||||
Top = 414
|
||||
Width = 55
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Close'
|
||||
ModalResult = 11
|
||||
TabOrder = 8
|
||||
end
|
||||
object Bevel1: TBevel
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = CloseBtn
|
||||
Left = 0
|
||||
Height = 8
|
||||
Top = 398
|
||||
Width = 437
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
Shape = bsBottomLine
|
||||
end
|
||||
object OpenDialog1: TOpenDialog
|
||||
object OpenDialog1: TOpenDialog[2]
|
||||
Left = 88
|
||||
Top = 96
|
||||
end
|
||||
object SaveDialog1: TSaveDialog
|
||||
object SaveDialog1: TSaveDialog[3]
|
||||
Left = 88
|
||||
Top = 160
|
||||
end
|
||||
|
@ -7,20 +7,16 @@ unit SimultRegUnit;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
|
||||
StdCtrls, Buttons, ExtCtrls,
|
||||
Globals, MainUnit, MatrixLib, OutputUnit, FunctionsLib, DataProcs;
|
||||
Globals, MainUnit, MatrixLib, FunctionsLib, DataProcs, BasicStatsReportFormUnit;
|
||||
|
||||
type
|
||||
|
||||
{ TSimultFrm }
|
||||
{ TSimultForm }
|
||||
|
||||
TSimultFrm = class(TForm)
|
||||
Bevel1: TBevel;
|
||||
TSimultForm = class(TBasicStatsReportForm)
|
||||
OpenDialog1: TOpenDialog;
|
||||
ResetBtn: TButton;
|
||||
ComputeBtn: TButton;
|
||||
CloseBtn: TButton;
|
||||
MatInChkBox: TCheckBox;
|
||||
MatSaveChkBox: TCheckBox;
|
||||
CPChkBox: TCheckBox;
|
||||
@ -31,103 +27,91 @@ type
|
||||
VarChkBox: TCheckBox;
|
||||
SDChkBox: TCheckBox;
|
||||
InvMatChkBox: TCheckBox;
|
||||
GroupBox1: TGroupBox;
|
||||
OptionsGroup: TGroupBox;
|
||||
InBtn: TBitBtn;
|
||||
OutBtn: TBitBtn;
|
||||
AllBtn: TBitBtn;
|
||||
Label1: TLabel;
|
||||
Label2: TLabel;
|
||||
ListBox1: TListBox;
|
||||
SelList: TListBox;
|
||||
VarList: TListBox;
|
||||
procedure AllBtnClick(Sender: TObject);
|
||||
procedure ComputeBtnClick(Sender: TObject);
|
||||
procedure FormActivate(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
procedure InBtnClick(Sender: TObject);
|
||||
procedure OutBtnClick(Sender: TObject);
|
||||
procedure ResetBtnClick(Sender: TObject);
|
||||
procedure SelListDblClick(Sender: TObject);
|
||||
procedure VarListDblClick(Sender: TObject);
|
||||
procedure VarListSelectionChange(Sender: TObject; User: boolean);
|
||||
private
|
||||
{ private declarations }
|
||||
procedure UpdateBtnStates;
|
||||
|
||||
protected
|
||||
procedure AdjustConstraints; override;
|
||||
procedure Compute; override;
|
||||
procedure UpdateBtnStates; override;
|
||||
|
||||
public
|
||||
{ public declarations }
|
||||
procedure Reset; override;
|
||||
end;
|
||||
|
||||
var
|
||||
SimultFrm: TSimultFrm;
|
||||
SimultForm: TSimultForm;
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
uses
|
||||
Math,
|
||||
Utils, MathUnit;
|
||||
|
||||
{ TSimultFrm }
|
||||
|
||||
procedure TSimultFrm.ResetBtnClick(Sender: TObject);
|
||||
VAR i : integer;
|
||||
{ TSimultForm }
|
||||
|
||||
procedure TSimultForm.AdjustConstraints;
|
||||
begin
|
||||
VarList.Clear;
|
||||
ListBox1.Clear;
|
||||
for i := 1 to NoVariables do
|
||||
begin
|
||||
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
|
||||
end;
|
||||
InBtn.Enabled := true;
|
||||
OutBtn.Enabled := false;
|
||||
CPChkBox.Checked := false;
|
||||
CovChkBox.Checked := false;
|
||||
CorrsChkBox.Checked := true;
|
||||
MeansChkBox.Checked := true;
|
||||
VarChkBox.Checked := false;
|
||||
SDChkBox.Checked := true;
|
||||
MatInChkBox.Checked := false;
|
||||
MatSaveChkBox.Checked := false;
|
||||
inherited;
|
||||
|
||||
ParamsPanel.Constraints.MinWidth := Max(
|
||||
4*CloseBtn.Width + 3*CloseBtn.BorderSpacing.Left,
|
||||
OptionsGroup.Width);
|
||||
|
||||
ParamsPanel.Constraints.MinHeight := AllBtn.Top + AllBtn.Height +
|
||||
VarList.BorderSpacing.Bottom + OptionsGroup.Height + ButtonBevel.Height +
|
||||
CloseBtn.BorderSpacing.Top + CloseBtn.Height;
|
||||
end;
|
||||
|
||||
procedure TSimultFrm.VarListSelectionChange(Sender: TObject; User: boolean);
|
||||
begin
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TSimultFrm.FormShow(Sender: TObject);
|
||||
begin
|
||||
ResetBtnClick(Self);
|
||||
end;
|
||||
|
||||
procedure TSimultFrm.AllBtnClick(Sender: TObject);
|
||||
procedure TSimultForm.AllBtnClick(Sender: TObject);
|
||||
var
|
||||
index: integer;
|
||||
begin
|
||||
for index := 0 to VarList.Items.Count-1 do
|
||||
ListBox1.Items.Add(VarList.Items[index]);
|
||||
SelList.Items.Add(VarList.Items[index]);
|
||||
VarList.Clear;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TSimultFrm.ComputeBtnClick(Sender: TObject);
|
||||
procedure TSimultForm.Compute;
|
||||
var
|
||||
NoVars, i, j, NCases, errcode: integer;
|
||||
StdErr, df1, df2, x, determinant : double;
|
||||
errorcode : boolean = false;
|
||||
filename : string;
|
||||
cellstring, valstring : string;
|
||||
Corrs : DblDyneMat;
|
||||
Means : DblDyneVec;
|
||||
Variances : DblDyneVec;
|
||||
StdDevs : DblDyneVec;
|
||||
ColNoSelected : IntDyneVec;
|
||||
Corrs : DblDyneMat = nil;
|
||||
Means : DblDyneVec = nil;
|
||||
Variances : DblDyneVec = nil;
|
||||
StdDevs : DblDyneVec = nil;
|
||||
ColNoSelected : IntDyneVec = nil;
|
||||
title : string;
|
||||
RowLabels : StrDyneVec;
|
||||
ColLabels : StrDyneVec;
|
||||
InverseMat : DblDyneMat;
|
||||
R2s : DblDyneVec;
|
||||
W : DblDyneVec;
|
||||
ProdMat : DblDyneMat;
|
||||
FProbs : DblDyneVec;
|
||||
CorrMat : DblDyneMat;
|
||||
RowLabels : StrDyneVec = nil;
|
||||
ColLabels : StrDyneVec = nil;
|
||||
InverseMat : DblDyneMat = nil;
|
||||
R2s : DblDyneVec = nil;
|
||||
W : DblDyneVec = nil;
|
||||
ProdMat : DblDyneMat = nil;
|
||||
FProbs : DblDyneVec = nil;
|
||||
CorrMat : DblDyneMat = nil;
|
||||
lReport: TStrings;
|
||||
|
||||
begin
|
||||
@ -165,7 +149,7 @@ begin
|
||||
end else
|
||||
begin
|
||||
{ get variable columns }
|
||||
NoVars := ListBox1.Items.Count;
|
||||
NoVars := SelList.Items.Count;
|
||||
if NoVars < 1 then
|
||||
begin
|
||||
MessageDlg('No variables selected.',mtError, [mbOK], 0);
|
||||
@ -173,7 +157,7 @@ begin
|
||||
end;
|
||||
for i := 1 to NoVars do
|
||||
begin
|
||||
cellstring := ListBox1.Items.Strings[i-1];
|
||||
cellstring := SelList.Items.Strings[i-1];
|
||||
for j := 1 to NoVariables do
|
||||
begin
|
||||
if cellstring = OS3MainFrm.DataGrid.Cells[j,0] then
|
||||
@ -354,7 +338,7 @@ begin
|
||||
|
||||
finally
|
||||
if lReport.Count > 0 then
|
||||
DisplayReport(lReport);
|
||||
FReportFrame.DisplayReport(lReport);
|
||||
|
||||
ColNoSelected := nil;
|
||||
CorrMat := nil;
|
||||
@ -372,25 +356,8 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TSimultFrm.FormActivate(Sender: TObject);
|
||||
var
|
||||
w: Integer;
|
||||
begin
|
||||
w := MaxValue([ResetBtn.Width, ComputeBtn.Width, CloseBtn.Width]);
|
||||
ResetBtn.Constraints.MinWidth := w;
|
||||
ComputeBtn.Constraints.MinWidth := w;
|
||||
CloseBtn.Constraints.MinWidth := w;
|
||||
|
||||
Constraints.MinWidth := Width;
|
||||
Constraints.MinHeight := Height;
|
||||
end;
|
||||
|
||||
procedure TSimultFrm.FormCreate(Sender: TObject);
|
||||
begin
|
||||
Assert(OS3MainFrm <> nil);
|
||||
end;
|
||||
|
||||
procedure TSimultFrm.InBtnClick(Sender: TObject);
|
||||
procedure TSimultForm.InBtnClick(Sender: TObject);
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
@ -399,7 +366,7 @@ begin
|
||||
begin
|
||||
if VarList.Selected[i] then
|
||||
begin
|
||||
ListBox1.Items.Add(VarList.Items[i]);
|
||||
SelList.Items.Add(VarList.Items[i]);
|
||||
VarList.Items.Delete(i);
|
||||
i := 0;
|
||||
end
|
||||
@ -409,17 +376,18 @@ begin
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TSimultFrm.OutBtnClick(Sender: TObject);
|
||||
|
||||
procedure TSimultForm.OutBtnClick(Sender: TObject);
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
i := 0;
|
||||
while i < Listbox1.Items.Count do
|
||||
while i < SelList.Items.Count do
|
||||
begin
|
||||
if Listbox1.Selected[i] then
|
||||
if SelList.Selected[i] then
|
||||
begin
|
||||
VarList.Items.Add(Listbox1.Items[i]);
|
||||
Listbox1.Items.Delete(i);
|
||||
VarList.Items.Add(SelList.Items[i]);
|
||||
SelList.Items.Delete(i);
|
||||
i := 0;
|
||||
end else
|
||||
inc(i);
|
||||
@ -427,15 +395,72 @@ begin
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TSimultFrm.UpdateBtnStates;
|
||||
|
||||
procedure TSimultForm.Reset;
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
inherited;
|
||||
|
||||
VarList.Clear;
|
||||
SelList.Clear;
|
||||
for i := 1 to NoVariables do
|
||||
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
|
||||
|
||||
CPChkBox.Checked := false;
|
||||
CovChkBox.Checked := false;
|
||||
CorrsChkBox.Checked := false;
|
||||
MeansChkBox.Checked := false;
|
||||
VarChkBox.Checked := false;
|
||||
SDChkBox.Checked := false;
|
||||
MatInChkBox.Checked := false;
|
||||
MatSaveChkBox.Checked := false;
|
||||
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
|
||||
procedure TSimultForm.SelListDblClick(Sender: TObject);
|
||||
var
|
||||
index: Integer;
|
||||
begin
|
||||
index := SelList.ItemIndex;
|
||||
if index > -1 then
|
||||
begin
|
||||
VarList.Items.Add(SelList.Items[index]);
|
||||
SelList.Items.Delete(index);
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TSimultForm.VarListDblClick(Sender: TObject);
|
||||
var
|
||||
index: Integer;
|
||||
begin
|
||||
index := VarList.ItemIndex;
|
||||
if index > -1 then
|
||||
begin
|
||||
SelList.Items.Add(VarList.Items[index]);
|
||||
VarList.Items.Delete(index);
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TSimultForm.VarListSelectionChange(Sender: TObject; User: boolean);
|
||||
begin
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
|
||||
procedure TSimultForm.UpdateBtnStates;
|
||||
begin
|
||||
inherited;
|
||||
|
||||
InBtn.Enabled := AnySelected(VarList);
|
||||
OutBtn.Enabled := AnySelected(ListBox1);
|
||||
OutBtn.Enabled := AnySelected(SelList);
|
||||
AllBtn.Enabled := VarList.Items.Count > 0;
|
||||
end;
|
||||
|
||||
initialization
|
||||
{$I simultregunit.lrs}
|
||||
|
||||
end.
|
||||
|
||||
|
@ -1,377 +1,300 @@
|
||||
object TwoSLSFrm: TTwoSLSFrm
|
||||
inherited TwoSLSForm: TTwoSLSForm
|
||||
Left = 582
|
||||
Height = 416
|
||||
Height = 376
|
||||
Top = 203
|
||||
Width = 415
|
||||
HelpType = htKeyword
|
||||
HelpKeyword = 'html/TwoStageLeastSquaresRegression.htm'
|
||||
AutoSize = True
|
||||
Caption = 'Two Stage Least Squares Regression'
|
||||
ClientHeight = 416
|
||||
ClientHeight = 376
|
||||
ClientWidth = 415
|
||||
OnActivate = FormActivate
|
||||
OnCreate = FormCreate
|
||||
OnShow = FormShow
|
||||
Position = poMainFormCenter
|
||||
LCLVersion = '2.1.0.0'
|
||||
object Label1: TLabel
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Owner
|
||||
Left = 8
|
||||
Height = 15
|
||||
Top = 8
|
||||
Width = 46
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
Caption = 'Variables'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label2: TLabel
|
||||
AnchorSideLeft.Control = DepVarEdit
|
||||
AnchorSideTop.Control = DepIn
|
||||
AnchorSideBottom.Control = DepVarEdit
|
||||
Left = 229
|
||||
Height = 15
|
||||
Top = 25
|
||||
Width = 102
|
||||
Caption = 'Dependent Variable'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label3: TLabel
|
||||
AnchorSideLeft.Control = Explanatory
|
||||
AnchorSideTop.Control = ExpIn
|
||||
Left = 229
|
||||
Height = 15
|
||||
Top = 101
|
||||
Width = 111
|
||||
Caption = 'Explanatory Variables'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label4: TLabel
|
||||
AnchorSideLeft.Control = Instrumental
|
||||
AnchorSideTop.Control = Bevel2
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 229
|
||||
Height = 15
|
||||
Top = 182
|
||||
Width = 116
|
||||
Caption = 'Instrumental Variables'
|
||||
ParentColor = False
|
||||
end
|
||||
object VarList: TListBox
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Label1
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = DepIn
|
||||
AnchorSideBottom.Control = GroupBox1
|
||||
Left = 8
|
||||
Height = 253
|
||||
Top = 25
|
||||
Width = 177
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Constraints.MinHeight = 220
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnSelectionChange = ExplanatorySelectionChange
|
||||
TabOrder = 0
|
||||
end
|
||||
object DepIn: TBitBtn
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = VarList
|
||||
Left = 193
|
||||
Height = 28
|
||||
Top = 25
|
||||
Width = 28
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = DepInClick
|
||||
Spacing = 0
|
||||
TabOrder = 1
|
||||
end
|
||||
object DepOut: TBitBtn
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = DepIn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 193
|
||||
Height = 28
|
||||
Top = 57
|
||||
Width = 28
|
||||
BorderSpacing.Top = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = DepOutClick
|
||||
Spacing = 0
|
||||
TabOrder = 2
|
||||
end
|
||||
object ExpIn: TBitBtn
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = DepOut
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 193
|
||||
Height = 28
|
||||
Top = 101
|
||||
Width = 28
|
||||
BorderSpacing.Top = 16
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = ExpInClick
|
||||
Spacing = 0
|
||||
TabOrder = 4
|
||||
end
|
||||
object ExpOut: TBitBtn
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = ExpIn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 193
|
||||
Height = 28
|
||||
Top = 133
|
||||
Width = 28
|
||||
BorderSpacing.Top = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = ExpOutClick
|
||||
Spacing = 0
|
||||
TabOrder = 5
|
||||
end
|
||||
object InstIn: TBitBtn
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = Label4
|
||||
AnchorSideBottom.Control = InstOut
|
||||
Left = 193
|
||||
Height = 28
|
||||
Top = 182
|
||||
Width = 28
|
||||
BorderSpacing.Bottom = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = InstInClick
|
||||
Spacing = 0
|
||||
TabOrder = 7
|
||||
end
|
||||
object InstOut: TBitBtn
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = InstIn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideBottom.Control = VarList
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 193
|
||||
Height = 28
|
||||
Top = 214
|
||||
Width = 28
|
||||
BorderSpacing.Top = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = InstOutClick
|
||||
Spacing = 0
|
||||
TabOrder = 8
|
||||
end
|
||||
object DepVarEdit: TEdit
|
||||
AnchorSideLeft.Control = DepIn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = Label2
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = DepOut
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 229
|
||||
Height = 23
|
||||
Top = 42
|
||||
Width = 178
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 8
|
||||
ReadOnly = True
|
||||
TabOrder = 3
|
||||
Text = 'DepVarEdit'
|
||||
end
|
||||
object Explanatory: TListBox
|
||||
AnchorSideLeft.Control = ExpIn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = Label3
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = Label4
|
||||
Left = 229
|
||||
Height = 40
|
||||
Top = 118
|
||||
Width = 178
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 24
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnSelectionChange = ExplanatorySelectionChange
|
||||
TabOrder = 6
|
||||
end
|
||||
object Instrumental: TListBox
|
||||
AnchorSideLeft.Control = InstIn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = Label4
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = GroupBox1
|
||||
Left = 229
|
||||
Height = 79
|
||||
Top = 199
|
||||
Width = 178
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnSelectionChange = ExplanatorySelectionChange
|
||||
TabOrder = 9
|
||||
end
|
||||
object GroupBox1: TGroupBox
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideBottom.Control = Bevel1
|
||||
Left = 8
|
||||
Height = 73
|
||||
Top = 286
|
||||
Width = 316
|
||||
Anchors = [akLeft, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Options'
|
||||
ChildSizing.LeftRightSpacing = 16
|
||||
ChildSizing.TopBottomSpacing = 6
|
||||
ChildSizing.VerticalSpacing = 2
|
||||
ClientHeight = 53
|
||||
ClientWidth = 312
|
||||
TabOrder = 10
|
||||
object ProxyRegShowChk: TCheckBox
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 6
|
||||
Width = 273
|
||||
Caption = 'Show Regression Results for each Proxy Variable'
|
||||
inherited ParamsPanel: TPanel
|
||||
Height = 360
|
||||
Width = 315
|
||||
ClientHeight = 360
|
||||
ClientWidth = 315
|
||||
inherited CloseBtn: TButton
|
||||
Left = 260
|
||||
Top = 335
|
||||
TabOrder = 14
|
||||
end
|
||||
inherited ComputeBtn: TButton
|
||||
Left = 176
|
||||
Top = 335
|
||||
TabOrder = 13
|
||||
end
|
||||
inherited ResetBtn: TButton
|
||||
Left = 114
|
||||
Top = 335
|
||||
TabOrder = 12
|
||||
end
|
||||
inherited HelpBtn: TButton
|
||||
Left = 55
|
||||
Top = 335
|
||||
TabOrder = 11
|
||||
end
|
||||
inherited ButtonBevel: TBevel
|
||||
Top = 319
|
||||
Width = 315
|
||||
end
|
||||
object Label1: TLabel[5]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideTop.Control = ParamsPanel
|
||||
Left = 0
|
||||
Height = 15
|
||||
Top = 0
|
||||
Width = 46
|
||||
Caption = 'Variables'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label2: TLabel[6]
|
||||
AnchorSideLeft.Control = DepVarEdit
|
||||
AnchorSideTop.Control = DepIn
|
||||
AnchorSideBottom.Control = DepVarEdit
|
||||
Left = 176
|
||||
Height = 15
|
||||
Top = 17
|
||||
Width = 102
|
||||
Caption = 'Dependent Variable'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label3: TLabel[7]
|
||||
AnchorSideLeft.Control = ExplanatoryList
|
||||
AnchorSideTop.Control = ExpIn
|
||||
Left = 176
|
||||
Height = 15
|
||||
Top = 89
|
||||
Width = 111
|
||||
Caption = 'Explanatory Variables'
|
||||
ParentColor = False
|
||||
end
|
||||
object Label4: TLabel[8]
|
||||
AnchorSideLeft.Control = InstrumentalList
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 176
|
||||
Height = 15
|
||||
Top = 182
|
||||
Width = 116
|
||||
Caption = 'Instrumental Variables'
|
||||
ParentColor = False
|
||||
end
|
||||
object VarList: TListBox[9]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideTop.Control = Label1
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = DepIn
|
||||
AnchorSideBottom.Control = OptionsGroup
|
||||
Left = 0
|
||||
Height = 221
|
||||
Top = 17
|
||||
Width = 138
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 6
|
||||
BorderSpacing.Bottom = 8
|
||||
Constraints.MinHeight = 220
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnDblClick = VarListDblClick
|
||||
OnSelectionChange = ExplanatoryListSelectionChange
|
||||
TabOrder = 0
|
||||
end
|
||||
object SaveItChk: TCheckBox
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 28
|
||||
Width = 280
|
||||
Caption = 'Save Predicted and Residuals of 2nd Stage to Grid'
|
||||
object DepIn: TBitBtn[10]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = VarList
|
||||
Left = 144
|
||||
Height = 26
|
||||
Top = 17
|
||||
Width = 26
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = DepInClick
|
||||
Spacing = 0
|
||||
TabOrder = 1
|
||||
end
|
||||
object DepOut: TBitBtn[11]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = DepIn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 144
|
||||
Height = 26
|
||||
Top = 47
|
||||
Width = 26
|
||||
BorderSpacing.Top = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = DepOutClick
|
||||
Spacing = 0
|
||||
TabOrder = 3
|
||||
end
|
||||
object ExpIn: TBitBtn[12]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = DepOut
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 144
|
||||
Height = 26
|
||||
Top = 89
|
||||
Width = 26
|
||||
BorderSpacing.Top = 16
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = ExpInClick
|
||||
Spacing = 0
|
||||
TabOrder = 4
|
||||
end
|
||||
object ExpOut: TBitBtn[13]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = ExpIn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 144
|
||||
Height = 26
|
||||
Top = 119
|
||||
Width = 26
|
||||
BorderSpacing.Top = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = ExpOutClick
|
||||
Spacing = 0
|
||||
TabOrder = 5
|
||||
end
|
||||
object InstIn: TBitBtn[14]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = Label4
|
||||
AnchorSideBottom.Control = InstOut
|
||||
Left = 144
|
||||
Height = 26
|
||||
Top = 182
|
||||
Width = 26
|
||||
BorderSpacing.Bottom = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 1
|
||||
OnClick = InstInClick
|
||||
Spacing = 0
|
||||
TabOrder = 7
|
||||
end
|
||||
object InstOut: TBitBtn[15]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = InstIn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideBottom.Control = VarList
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 144
|
||||
Height = 26
|
||||
Top = 212
|
||||
Width = 26
|
||||
BorderSpacing.Top = 4
|
||||
Images = MainDataModule.ImageList
|
||||
ImageIndex = 0
|
||||
OnClick = InstOutClick
|
||||
Spacing = 0
|
||||
TabOrder = 8
|
||||
end
|
||||
object DepVarEdit: TEdit[16]
|
||||
AnchorSideLeft.Control = DepIn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = Label2
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = ParamsPanel
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = DepOut
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 176
|
||||
Height = 23
|
||||
Top = 34
|
||||
Width = 139
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 2
|
||||
ReadOnly = True
|
||||
TabOrder = 2
|
||||
Text = 'DepVarEdit'
|
||||
end
|
||||
object ExplanatoryList: TListBox[17]
|
||||
AnchorSideLeft.Control = ExpIn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = Label3
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = ParamsPanel
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = Label4
|
||||
Left = 176
|
||||
Height = 52
|
||||
Top = 106
|
||||
Width = 139
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Bottom = 24
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnDblClick = ExplanatoryListDblClick
|
||||
OnSelectionChange = ExplanatoryListSelectionChange
|
||||
TabOrder = 6
|
||||
end
|
||||
object InstrumentalList: TListBox[18]
|
||||
AnchorSideLeft.Control = InstIn
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = Label4
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = ParamsPanel
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = OptionsGroup
|
||||
Left = 176
|
||||
Height = 39
|
||||
Top = 199
|
||||
Width = 139
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Bottom = 8
|
||||
ItemHeight = 0
|
||||
MultiSelect = True
|
||||
OnDblClick = InstrumentalListDblClick
|
||||
OnSelectionChange = ExplanatoryListSelectionChange
|
||||
TabOrder = 9
|
||||
end
|
||||
object OptionsGroup: TGroupBox[19]
|
||||
AnchorSideLeft.Control = ParamsPanel
|
||||
Left = 0
|
||||
Height = 73
|
||||
Top = 246
|
||||
Width = 316
|
||||
Anchors = [akLeft, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Options'
|
||||
ChildSizing.LeftRightSpacing = 16
|
||||
ChildSizing.TopBottomSpacing = 6
|
||||
ChildSizing.VerticalSpacing = 2
|
||||
ClientHeight = 53
|
||||
ClientWidth = 312
|
||||
TabOrder = 10
|
||||
object ProxyRegShowChk: TCheckBox
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 6
|
||||
Width = 273
|
||||
Caption = 'Show Regression Results for each Proxy Variable'
|
||||
TabOrder = 0
|
||||
end
|
||||
object SaveItChk: TCheckBox
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 28
|
||||
Width = 280
|
||||
Caption = 'Save Predicted and Residuals of 2nd Stage to Grid'
|
||||
TabOrder = 1
|
||||
end
|
||||
end
|
||||
end
|
||||
object ResetBtn: TButton
|
||||
AnchorSideRight.Control = ComputeBtn
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 202
|
||||
Height = 25
|
||||
Top = 383
|
||||
Width = 54
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Reset'
|
||||
OnClick = ResetBtnClick
|
||||
TabOrder = 12
|
||||
end
|
||||
object ComputeBtn: TButton
|
||||
AnchorSideRight.Control = CloseBtn
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 264
|
||||
Height = 25
|
||||
Top = 383
|
||||
Width = 76
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Compute'
|
||||
OnClick = ComputeBtnClick
|
||||
TabOrder = 13
|
||||
end
|
||||
object CloseBtn: TButton
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 348
|
||||
Height = 25
|
||||
Top = 383
|
||||
Width = 55
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 12
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Close'
|
||||
ModalResult = 11
|
||||
TabOrder = 14
|
||||
end
|
||||
object HelpBtn: TButton
|
||||
Tag = 153
|
||||
AnchorSideRight.Control = ResetBtn
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 143
|
||||
Height = 25
|
||||
Top = 383
|
||||
Width = 51
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 12
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Bottom = 8
|
||||
Caption = 'Help'
|
||||
OnClick = HelpBtnClick
|
||||
TabOrder = 11
|
||||
end
|
||||
object Bevel1: TBevel
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = CloseBtn
|
||||
Left = 0
|
||||
Height = 8
|
||||
Top = 367
|
||||
Width = 415
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
Shape = bsBottomLine
|
||||
end
|
||||
object Bevel2: TBevel
|
||||
AnchorSideLeft.Control = DepIn
|
||||
AnchorSideTop.Control = ExpIn
|
||||
AnchorSideRight.Control = DepIn
|
||||
AnchorSideBottom.Control = VarList
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 189
|
||||
Height = 177
|
||||
Top = 101
|
||||
Width = 4
|
||||
Anchors = [akTop, akRight, akBottom]
|
||||
Shape = bsSpacer
|
||||
inherited ParamsSplitter: TSplitter
|
||||
Left = 327
|
||||
Height = 376
|
||||
end
|
||||
end
|
||||
|
@ -1,7 +1,7 @@
|
||||
// File for testing: "cansas.laz"
|
||||
// - dependent variable: jumpgs
|
||||
// - exolanatory variables: pulse, chins, situps
|
||||
// - instrumental variables: pulse, chins, situps, weight, waist
|
||||
// - InstrumentalList variables: pulse, chins, situps, weight, waist
|
||||
|
||||
unit TwoSLSUnit;
|
||||
|
||||
@ -10,28 +10,23 @@ unit TwoSLSUnit;
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
|
||||
StdCtrls, Buttons, ExtCtrls, math,
|
||||
Globals, MainUnit, MainDM, MatrixLib, DictionaryUnit, OutputUnit, ContextHelpUnit;
|
||||
Globals, MainUnit, MainDM, MatrixLib, DictionaryUnit, BasicStatsReportFormUnit;
|
||||
|
||||
type
|
||||
|
||||
{ TTwoSLSFrm }
|
||||
{ TTwoSLSForm }
|
||||
|
||||
TTwoSLSFrm = class(TForm)
|
||||
Bevel1: TBevel;
|
||||
TTwoSLSForm = class(TBasicStatsReportForm)
|
||||
Bevel2: TBevel;
|
||||
HelpBtn: TButton;
|
||||
ResetBtn: TButton;
|
||||
ComputeBtn: TButton;
|
||||
CloseBtn: TButton;
|
||||
ProxyRegShowChk: TCheckBox;
|
||||
SaveItChk: TCheckBox;
|
||||
DepIn: TBitBtn;
|
||||
DepOut: TBitBtn;
|
||||
ExpIn: TBitBtn;
|
||||
ExpOut: TBitBtn;
|
||||
GroupBox1: TGroupBox;
|
||||
OptionsGroup: TGroupBox;
|
||||
InstIn: TBitBtn;
|
||||
InstOut: TBitBtn;
|
||||
DepVarEdit: TEdit;
|
||||
@ -39,132 +34,70 @@ type
|
||||
Label2: TLabel;
|
||||
Label3: TLabel;
|
||||
Label4: TLabel;
|
||||
Explanatory: TListBox;
|
||||
Instrumental: TListBox;
|
||||
ExplanatoryList: TListBox;
|
||||
InstrumentalList: TListBox;
|
||||
VarList: TListBox;
|
||||
procedure ComputeBtnClick(Sender: TObject);
|
||||
procedure DepInClick(Sender: TObject);
|
||||
procedure DepOutClick(Sender: TObject);
|
||||
procedure ExpInClick(Sender: TObject);
|
||||
procedure ExplanatorySelectionChange(Sender: TObject; User: boolean);
|
||||
procedure ExplanatoryListDblClick(Sender: TObject);
|
||||
procedure ExplanatoryListSelectionChange(Sender: TObject; User: boolean);
|
||||
procedure ExpOutClick(Sender: TObject);
|
||||
procedure FormActivate(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
procedure HelpBtnClick(Sender: TObject);
|
||||
procedure InstInClick(Sender: TObject);
|
||||
procedure InstOutClick(Sender: TObject);
|
||||
procedure ResetBtnClick(Sender: TObject);
|
||||
procedure InstrumentalListDblClick(Sender: TObject);
|
||||
procedure PredictIt(const ColNoSelected: IntDyneVec; NoVars: integer;
|
||||
Means, StdDevs, BetaWeights : DblDyneVec;
|
||||
StdErrEst : double; NoIndepVars : integer);
|
||||
procedure VarListDblClick(Sender: TObject);
|
||||
|
||||
private
|
||||
{ private declarations }
|
||||
FAutoSized: boolean;
|
||||
procedure UpdateBtnStates;
|
||||
|
||||
protected
|
||||
procedure AdjustConstraints; override;
|
||||
procedure Compute; override;
|
||||
procedure UpdateBtnStates; override;
|
||||
|
||||
public
|
||||
{ public declarations }
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
procedure Reset; override;
|
||||
end;
|
||||
|
||||
var
|
||||
TwoSLSFrm: TTwoSLSFrm;
|
||||
TwoSLSForm: TTwoSLSForm;
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
uses
|
||||
StrUtils, Utils;
|
||||
|
||||
{ TTwoSLSFrm }
|
||||
{ TTwoSLSForm }
|
||||
|
||||
procedure TTwoSLSFrm.ResetBtnClick(Sender: TObject);
|
||||
var
|
||||
i: integer;
|
||||
constructor TTwoSLSForm.Create(AOwner: TComponent);
|
||||
begin
|
||||
VarList.Clear;
|
||||
Explanatory.Clear;
|
||||
Instrumental.Clear;
|
||||
DepVarEdit.Text := '';
|
||||
ProxyRegShowChk.Checked := false;
|
||||
for i := 1 to NoVariables do
|
||||
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
|
||||
UpdateBtnStates;
|
||||
inherited;
|
||||
if DictionaryFrm = nil then Application.CreateForm(TDictionaryFrm, DictionaryFrm);
|
||||
end;
|
||||
|
||||
procedure TTwoSLSFrm.FormActivate(Sender: TObject);
|
||||
var
|
||||
w: Integer;
|
||||
|
||||
procedure TTwoSLSForm.AdjustConstraints;
|
||||
begin
|
||||
if FAutoSized then
|
||||
exit;
|
||||
inherited;
|
||||
|
||||
w := MaxValue([HelpBtn.Width, ResetBtn.Width, ComputeBtn.Width, CloseBtn.Width]);
|
||||
HelpBtn.Constraints.MinWidth := w;
|
||||
ResetBtn.Constraints.MinWidth := w;
|
||||
ComputeBtn.Constraints.MinWidth := w;
|
||||
CloseBtn.Constraints.MinWidth := w;
|
||||
ParamsPanel.Constraints.MinWidth := Max(
|
||||
4*CloseBtn.Width + 3*CloseBtn.BorderSpacing.Left,
|
||||
OptionsGroup.Width);
|
||||
|
||||
Constraints.MinWidth := Width;
|
||||
Constraints.MinHeight := Height;
|
||||
|
||||
FAutoSized := True;
|
||||
ParamsPanel.Constraints.MinHeight := InstOut.Top + InstOut.Height +
|
||||
VarList.BorderSpacing.Bottom + OptionsGroup.Height + ButtonBevel.Height +
|
||||
CloseBtn.BorderSpacing.Top + CloseBtn.Height;
|
||||
end;
|
||||
|
||||
procedure TTwoSLSFrm.FormCreate(Sender: TObject);
|
||||
begin
|
||||
Assert(OS3MainFrm <> nil);
|
||||
if DictionaryFrm = nil then Application.CreateForm(TDictionaryFrm, DictionaryFrm);
|
||||
end;
|
||||
|
||||
procedure TTwoSLSFrm.FormShow(Sender: TObject);
|
||||
begin
|
||||
ResetBtnClick(self);
|
||||
end;
|
||||
|
||||
procedure TTwoSLSFrm.HelpBtnClick(Sender: TObject);
|
||||
begin
|
||||
if ContextHelpForm = nil then
|
||||
Application.CreateForm(TContextHelpForm, ContextHelpForm);
|
||||
ContextHelpForm.HelpMessage((Sender as TButton).tag);
|
||||
end;
|
||||
|
||||
procedure TTwoSLSFrm.InstInClick(Sender: TObject);
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
i := 0;
|
||||
while (i < VarList.Items.Count) do
|
||||
begin
|
||||
if VarList.Selected[i] and (Instrumental.Items.IndexOf(VarList.Items[i]) = -1) then
|
||||
Instrumental.Items.Add(VarList.Items[i])
|
||||
// DO NOT DELETE Items HERE.
|
||||
else
|
||||
i := i + 1;
|
||||
end;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TTwoSLSFrm.InstOutClick(Sender: TObject);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
i := 0;
|
||||
while (i < Instrumental.Items.Count) do
|
||||
begin
|
||||
if Instrumental.Selected[i] then
|
||||
begin
|
||||
if VarList.Items.IndexOf(Instrumental.Items[i]) = -1 then
|
||||
VarList.Items.Add(Instrumental.Items[i]);
|
||||
Instrumental.Items.Delete(i);
|
||||
i := 0;
|
||||
end else
|
||||
i := i + 1;
|
||||
end;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TTwoSLSFrm.ComputeBtnClick(Sender: TObject);
|
||||
procedure TTwoSLSForm.Compute;
|
||||
var
|
||||
i, j, k, DepCol, NoInst, NoExp, NoProx, Noindep : integer;
|
||||
IndepCols, ProxSrcCols, ExpCols, InstCols, ProxCols : IntDyneVec;
|
||||
@ -187,12 +120,12 @@ begin
|
||||
MessageDlg('Dependent variable not selected.', mtError, [mbOK], 0);
|
||||
exit;
|
||||
end;
|
||||
if Explanatory.Items.Count = 0 then
|
||||
if ExplanatoryList.Items.Count = 0 then
|
||||
begin
|
||||
MessageDlg('No explanatory variables selected.', mtError, [mbOK], 0);
|
||||
exit;
|
||||
end;
|
||||
if Instrumental.Items.Count = 0 then
|
||||
if InstrumentalList.Items.Count = 0 then
|
||||
begin
|
||||
MessageDlg('No instrumental variables selected.', mtError, [mbOK], 0);
|
||||
exit;
|
||||
@ -236,8 +169,8 @@ begin
|
||||
|
||||
// Get variables to analyze
|
||||
NCases := NoCases;
|
||||
NoInst := Instrumental.Items.Count;
|
||||
NoExp := Explanatory.Items.Count;
|
||||
NoInst := InstrumentalList.Items.Count;
|
||||
NoExp := ExplanatoryList.Items.Count;
|
||||
if (NoInst < NoExp) then
|
||||
begin
|
||||
MessageDlg('The no. of Instrumental must equal or exceed the Explanatory', mtError, [mbOK], 0);
|
||||
@ -254,22 +187,22 @@ begin
|
||||
end;
|
||||
for j := 0 to NoExp - 1 do
|
||||
begin
|
||||
if (OS3MainFrm.DataGrid.Cells[i+1,0] = Explanatory.Items.Strings[j]) then
|
||||
if (OS3MainFrm.DataGrid.Cells[i+1,0] = ExplanatoryList.Items.Strings[j]) then
|
||||
begin
|
||||
ExpCols[j] := i+1;
|
||||
// result := VarTypeChk(i+1,0);
|
||||
// if (result :=:= 1) goto cleanup;
|
||||
ExpLabels[j] := Explanatory.Items.Strings[j];
|
||||
ExpLabels[j] := ExplanatoryList.Items.Strings[j];
|
||||
end;
|
||||
end; // next j
|
||||
for j := 0 to NoInst - 1 do
|
||||
begin
|
||||
if (OS3MainFrm.DataGrid.Cells[i+1,0] = Instrumental.Items.Strings[j]) then
|
||||
if (OS3MainFrm.DataGrid.Cells[i+1,0] = InstrumentalList.Items.Strings[j]) then
|
||||
begin
|
||||
InstCols[j] := i+1;
|
||||
// result := VarTypeChk(i+1,0);
|
||||
// if (result :=:= 1) goto cleanup;
|
||||
InstLabels[j] := Instrumental.Items.Strings[j];
|
||||
InstLabels[j] := InstrumentalList.Items.Strings[j];
|
||||
end;
|
||||
end; // next j
|
||||
end; // next i
|
||||
@ -310,7 +243,7 @@ begin
|
||||
lReport.Add(' ' + ProxLabels[i]);
|
||||
lReport.Add('');
|
||||
|
||||
// Compute the prox regressions for the instrumental variables
|
||||
// Compute the prox regressions for the InstrumentalList variables
|
||||
for i := 0 to NoProx - 1 do
|
||||
begin
|
||||
DictionaryFrm.DictGrid.ColCount := 8;
|
||||
@ -382,7 +315,7 @@ begin
|
||||
lReport.Add('==================================================================');
|
||||
lReport.Add('');
|
||||
|
||||
// Compute the OLS using the Prox values and explanatory
|
||||
// Compute the OLS using the Prox values and ExplanatoryList
|
||||
Noindep := 0;
|
||||
counter := 0;
|
||||
for i := 0 to NoExp - 1 do
|
||||
@ -414,36 +347,18 @@ begin
|
||||
BWeights, BetaWeights, BStdErrs, Bttests, tprobs, R2, stderrest,
|
||||
NCases, errorcode, PrintDesc, lReport);
|
||||
|
||||
DisplayReport(lReport);
|
||||
FReportFrame.DisplayReport(lReport);
|
||||
|
||||
if SaveItChk.Checked then
|
||||
PredictIt(IndepCols, Noindep+1, Means, StdDevs, BetaWeights, stderrest, Noindep);
|
||||
|
||||
finally
|
||||
lReport.Free;
|
||||
// ProxVals := nil;
|
||||
ProxSrcLabels := nil;
|
||||
ProxSrcCols := nil;
|
||||
RowLabels := nil;
|
||||
IndepCols := nil;
|
||||
ProxLabels := nil;
|
||||
ProxCols := nil;
|
||||
InstCols := nil;
|
||||
InstLabels := nil;
|
||||
ExpCols := nil;
|
||||
ExpLabels := nil;
|
||||
tprobs := nil;
|
||||
Bttests := nil;
|
||||
BStdErrs := nil;
|
||||
BetaWeights := nil;
|
||||
BWeights := nil;
|
||||
StdDevs := nil;
|
||||
Variances := nil;
|
||||
Means := nil;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TTwoSLSFrm.DepInClick(Sender: TObject);
|
||||
|
||||
procedure TTwoSLSForm.DepInClick(Sender: TObject);
|
||||
var
|
||||
index: integer;
|
||||
begin
|
||||
@ -456,7 +371,8 @@ begin
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TTwoSLSFrm.DepOutClick(Sender: TObject);
|
||||
|
||||
procedure TTwoSLSForm.DepOutClick(Sender: TObject);
|
||||
begin
|
||||
if DepVarEdit.Text <> '' then
|
||||
begin
|
||||
@ -466,38 +382,55 @@ begin
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TTwoSLSFrm.ExpInClick(Sender: TObject);
|
||||
|
||||
procedure TTwoSLSForm.ExpInClick(Sender: TObject);
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
i := 0;
|
||||
while (i < VarList.Items.Count) do
|
||||
begin
|
||||
if VarList.Selected[i] and (Explanatory.Items.IndexOf(VarList.Items[i]) = -1) then
|
||||
Explanatory.Items.Add(VarList.Items[i]);
|
||||
if VarList.Selected[i] and (ExplanatoryList.Items.IndexOf(VarList.Items[i]) = -1) then
|
||||
ExplanatoryList.Items.Add(VarList.Items[i]);
|
||||
// DO NOT DELETE Items HERE.
|
||||
i := i + 1;
|
||||
end;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TTwoSLSFrm.ExplanatorySelectionChange(Sender: TObject; User: boolean);
|
||||
|
||||
procedure TTwoSLSForm.ExplanatoryListDblClick(Sender: TObject);
|
||||
var
|
||||
index: Integer;
|
||||
begin
|
||||
index := ExplanatoryList.ItemIndex;
|
||||
if index > -1 then
|
||||
begin
|
||||
VarList.Items.Add(ExplanatoryList.Items[index]);
|
||||
ExplanatoryList.Items.Delete(index);
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TTwoSLSForm.ExplanatoryListSelectionChange(Sender: TObject; User: boolean);
|
||||
begin
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TTwoSLSFrm.ExpOutClick(Sender: TObject);
|
||||
|
||||
procedure TTwoSLSForm.ExpOutClick(Sender: TObject);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
i := 0;
|
||||
while (i < Explanatory.Items.Count) do
|
||||
while (i < ExplanatoryList.Items.Count) do
|
||||
begin
|
||||
if Explanatory.Selected[i] then
|
||||
if ExplanatoryList.Selected[i] then
|
||||
begin
|
||||
if (VarList.Items.IndexOf(Explanatory.Items[i]) = -1) then
|
||||
VarList.Items.Add(Explanatory.Items[i]);
|
||||
Explanatory.Items.Delete(i);
|
||||
if (VarList.Items.IndexOf(ExplanatoryList.Items[i]) = -1) then
|
||||
VarList.Items.Add(ExplanatoryList.Items[i]);
|
||||
ExplanatoryList.Items.Delete(i);
|
||||
i := 0;
|
||||
end else
|
||||
i := i + 1;
|
||||
@ -505,7 +438,59 @@ begin
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TTwoSLSFrm.PredictIt(const ColNoSelected: IntDyneVec; NoVars: integer;
|
||||
|
||||
procedure TTwoSLSForm.InstInClick(Sender: TObject);
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
i := 0;
|
||||
while (i < VarList.Items.Count) do
|
||||
begin
|
||||
if VarList.Selected[i] and (InstrumentalList.Items.IndexOf(VarList.Items[i]) = -1) then
|
||||
InstrumentalList.Items.Add(VarList.Items[i])
|
||||
// DO NOT DELETE Items HERE.
|
||||
else
|
||||
i := i + 1;
|
||||
end;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
|
||||
procedure TTwoSLSForm.InstOutClick(Sender: TObject);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
i := 0;
|
||||
while (i < InstrumentalList.Items.Count) do
|
||||
begin
|
||||
if InstrumentalList.Selected[i] then
|
||||
begin
|
||||
if VarList.Items.IndexOf(InstrumentalList.Items[i]) = -1 then
|
||||
VarList.Items.Add(InstrumentalList.Items[i]);
|
||||
InstrumentalList.Items.Delete(i);
|
||||
i := 0;
|
||||
end else
|
||||
i := i + 1;
|
||||
end;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
|
||||
procedure TTwoSLSForm.InstrumentalListDblClick(Sender: TObject);
|
||||
var
|
||||
index: Integer;
|
||||
begin
|
||||
index := InstrumentalList.ItemIndex;
|
||||
if index > -1 then
|
||||
begin
|
||||
VarList.Items.Add(InstrumentalList.Items[index]);
|
||||
InstrumentalList.Items.Delete(index);
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TTwoSLSForm.PredictIt(const ColNoSelected: IntDyneVec; NoVars: integer;
|
||||
Means, StdDevs, BetaWeights: DblDyneVec;
|
||||
StdErrEst: double; NoIndepVars: integer);
|
||||
var
|
||||
@ -596,22 +581,57 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TTwoSLSFrm.UpdateBtnStates;
|
||||
|
||||
procedure TTwoSLSForm.Reset;
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
inherited;
|
||||
|
||||
DepVarEdit.Clear;
|
||||
InstrumentalList.Clear;
|
||||
ExplanatoryList.Clear;
|
||||
VarList.Clear;
|
||||
for i := 1 to NoVariables do
|
||||
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
|
||||
ProxyRegShowChk.Checked := false;
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
|
||||
procedure TTwoSLSForm.UpdateBtnStates;
|
||||
var
|
||||
lSelected: Boolean;
|
||||
begin
|
||||
inherited;
|
||||
|
||||
lSelected := AnySelected(VarList);
|
||||
DepIn.Enabled := lSelected and (DepVarEdit.Text = '');
|
||||
ExpIn.Enabled := lSelected;
|
||||
InstIn.Enabled := lSelected;
|
||||
|
||||
DepOut.Enabled := (DepVarEdit.Text <> '');
|
||||
ExpOut.Enabled := AnySelected(Explanatory);
|
||||
InstOut.Enabled := AnySelected(Instrumental);
|
||||
ExpOut.Enabled := AnySelected(ExplanatoryList);
|
||||
InstOut.Enabled := AnySelected(InstrumentalList);
|
||||
end;
|
||||
|
||||
|
||||
procedure TTwoSLSForm.VarListDblClick(Sender: TObject);
|
||||
var
|
||||
index: Integer;
|
||||
begin
|
||||
index := VarList.ItemIndex;
|
||||
if index > -1 then
|
||||
begin
|
||||
if DepVarEdit.Text = '' then
|
||||
DepVarEdit.Text := VarList.Items[index]
|
||||
else
|
||||
ExplanatoryList.Items.Add(VarList.Items[index]);
|
||||
VarList.Items.Delete(index);
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
end;
|
||||
|
||||
initialization
|
||||
{$I twoslsunit.lrs}
|
||||
|
||||
end.
|
||||
|
||||
|
@ -2,12 +2,12 @@ inherited WLSForm: TWLSForm
|
||||
Left = 288
|
||||
Height = 469
|
||||
Top = 171
|
||||
Width = 1024
|
||||
Width = 861
|
||||
HelpType = htKeyword
|
||||
HelpKeyword = 'html/WeightedLeast-SquaresRegression.htm'
|
||||
Caption = 'Weighted Least Squares Regression'
|
||||
ClientHeight = 469
|
||||
ClientWidth = 1024
|
||||
ClientWidth = 861
|
||||
inherited ParamsPanel: TPanel
|
||||
Height = 453
|
||||
Width = 280
|
||||
@ -345,7 +345,7 @@ inherited WLSForm: TWLSForm
|
||||
Left = 301
|
||||
Height = 453
|
||||
Top = 8
|
||||
Width = 715
|
||||
Width = 552
|
||||
ActivePage = ResidualsRegPage
|
||||
Align = alClient
|
||||
BorderSpacing.Left = 4
|
||||
@ -360,12 +360,12 @@ inherited WLSForm: TWLSForm
|
||||
object ResidualsRegPage: TTabSheet
|
||||
Caption = 'Squared Residuals Regression'
|
||||
ClientHeight = 425
|
||||
ClientWidth = 707
|
||||
ClientWidth = 544
|
||||
object ResRegPageControl: TPageControl
|
||||
Left = 8
|
||||
Height = 409
|
||||
Top = 8
|
||||
Width = 691
|
||||
Width = 528
|
||||
ActivePage = ResRegReportPage
|
||||
Align = alClient
|
||||
BorderSpacing.Around = 8
|
||||
|
@ -2044,32 +2044,33 @@ end;
|
||||
// Menu "Analysis" > "Multiple Regression" > "Best Combination"
|
||||
procedure TOS3MainFrm.mnuAnalysisMultReg_BestCombClick(Sender: TObject);
|
||||
begin
|
||||
if BestRegFrm = nil then
|
||||
Application.CreateForm(TBestRegFrm, BestRegFrm);
|
||||
BestRegFrm.ShowModal;
|
||||
if BestRegForm = nil then
|
||||
Application.CreateForm(TBestRegForm, BestRegForm);
|
||||
BestRegForm.Show;
|
||||
end;
|
||||
|
||||
// Menu "Analysis" > "Multiple Regression" > "Binary Logistic"
|
||||
procedure TOS3MainFrm.mnuAnalysisMultReg_BinLogisticClick(Sender: TObject);
|
||||
begin
|
||||
if LogRegFrm = nil then
|
||||
Application.CreateForm(TLogRegFrm, LogRegFrm);
|
||||
LogRegFrm.ShowModal;
|
||||
if LogRegForm = nil then
|
||||
Application.CreateForm(TLogRegForm, LogRegForm);
|
||||
LogRegForm.Show;
|
||||
end;
|
||||
|
||||
// Menu "Analysis" > "Multiple Regression" > "Block Entry"
|
||||
procedure TOS3MainFrm.mnuAnalysisMultReg_BlockEntryClick(Sender: TObject);
|
||||
begin
|
||||
if BlkMregFrm = nil then
|
||||
Application.CreateForm(TBlkMregFrm, BlkMregFrm);
|
||||
BlkMregFrm.ShowModal;
|
||||
if BlkMregForm = nil then
|
||||
Application.CreateForm(TBlkMregForm, BlkMregForm);
|
||||
BlkMregForm.Show;
|
||||
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;
|
||||
if CoxRegForm = nil then
|
||||
Application.CreateForm(TCoxRegForm, CoxRegForm);
|
||||
CoxRegForm.Show;
|
||||
end;
|
||||
|
||||
// Menu "Analysis" > "Multiple Regression" > "Forward Stepwise"
|
||||
@ -2083,9 +2084,9 @@ end;
|
||||
// Menu "Analysis" > "Multiple Regression" > "Linear Programming"
|
||||
procedure TOS3MainFrm.mnuAnalysisMultReg_LinProgClick(Sender: TObject);
|
||||
begin
|
||||
if LinProFrm = nil then
|
||||
Application.CreateForm(TLinProFrm, LinProFrm);
|
||||
LinProFrm.ShowModal;
|
||||
if LinProForm = nil then
|
||||
Application.CreateForm(TLinProForm, LinProForm);
|
||||
LinProForm.Show;
|
||||
end;
|
||||
|
||||
// Menu "Analysis" > "Multiple Regression" > "Least Squares Multiple Regression"
|
||||
@ -2099,17 +2100,17 @@ end;
|
||||
// Menu "Analysis" > "Multiple Regression" > "Simultaneous"
|
||||
procedure TOS3MainFrm.mnuAnalysisMultReg_SimultClick(Sender: TObject);
|
||||
begin
|
||||
if SimultFrm = nil then
|
||||
Application.CreateForm(TSimultFrm, SimultFrm);
|
||||
SimultFrm.ShowModal;
|
||||
if SimultForm = nil then
|
||||
Application.CreateForm(TSimultForm, SimultForm);
|
||||
SimultForm.Show;
|
||||
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;
|
||||
if TwoSLSForm = nil then
|
||||
Application.CreateForm(TTwoSLSForm, TwoSLSForm);
|
||||
TwoSLSForm.Show;
|
||||
end;
|
||||
|
||||
// Menu "Analysis" > "Multiple Regression" > "Weighted Least Squares Regression"
|
||||
|
@ -64,13 +64,12 @@ object ReportFrame: TReportFrame
|
||||
TabOrder = 1
|
||||
object ReportMemo: TMemo
|
||||
Left = 4
|
||||
Height = 194
|
||||
Height = 198
|
||||
Top = 4
|
||||
Width = 294
|
||||
Align = alClient
|
||||
BorderSpacing.Left = 4
|
||||
BorderSpacing.Top = 4
|
||||
BorderSpacing.Bottom = 4
|
||||
BorderStyle = bsNone
|
||||
Color = clWhite
|
||||
Font.Height = -11
|
||||
|
Reference in New Issue
Block a user