LazStats: Repeating to add original source (having connectivity problems)

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7880 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2020-11-16 11:01:57 +00:00
parent 3924ba854b
commit deadd25261
65 changed files with 28129 additions and 0 deletions

View File

@ -0,0 +1,574 @@
object ABCLogLinearFrm: TABCLogLinearFrm
Left = 122
Height = 434
Top = 170
Width = 699
Caption = 'Log Linear Analysis for AxBxC Classification Table'
ClientHeight = 434
ClientWidth = 699
OnShow = FormShow
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 343
Height = 14
Top = 40
Width = 64
Caption = 'No. of Rows:'
ParentColor = False
end
object Label2: TLabel
Left = 464
Height = 14
Top = 36
Width = 62
Caption = 'No. of Cols.:'
ParentColor = False
end
object Label3: TLabel
Left = 230
Height = 14
Top = 71
Width = 63
Caption = 'Row Variable'
ParentColor = False
end
object Label4: TLabel
Left = 230
Height = 14
Top = 151
Width = 77
Caption = 'Column Variable'
ParentColor = False
end
object Label5: TLabel
Left = 231
Height = 14
Top = 232
Width = 63
Caption = 'Slice Variable'
ParentColor = False
end
object Label6: TLabel
Left = 230
Height = 14
Top = 312
Width = 93
Caption = 'Frequency Variable'
ParentColor = False
end
object Label7: TLabel
Left = 584
Height = 14
Top = 30
Width = 64
Caption = 'No. of Slices:'
ParentColor = False
end
object FileFromGrp: TRadioGroup
Left = 6
Height = 57
Top = 5
Width = 176
AutoFill = True
Caption = 'Enter Data From:'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 39
ClientWidth = 172
Items.Strings = (
'File Data in the Main Grid'
'Data Entered on this Form'
)
OnClick = FileFromGrpClick
TabOrder = 0
end
object VarList: TListBox
Left = 8
Height = 309
Top = 66
Width = 173
ItemHeight = 0
TabOrder = 1
end
object RowInBtn: TBitBtn
Left = 192
Height = 28
Top = 72
Width = 31
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
}
NumGlyphs = 0
OnClick = RowInBtnClick
TabOrder = 2
end
object RowOutBtn: TBitBtn
Left = 192
Height = 28
Top = 104
Width = 31
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = RowOutBtnClick
TabOrder = 3
end
object ColInBtn: TBitBtn
Left = 192
Height = 28
Top = 152
Width = 31
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
}
NumGlyphs = 0
OnClick = ColInBtnClick
TabOrder = 4
end
object ColOutBtn: TBitBtn
Left = 192
Height = 28
Top = 184
Width = 31
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = ColOutBtnClick
TabOrder = 5
end
object SliceBtnIn: TBitBtn
Left = 192
Height = 28
Top = 232
Width = 31
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
}
NumGlyphs = 0
OnClick = SliceBtnInClick
TabOrder = 6
end
object SliceBtnOut: TBitBtn
Left = 191
Height = 28
Top = 264
Width = 31
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = SliceBtnOutClick
TabOrder = 7
end
object FreqInBtn: TBitBtn
Left = 192
Height = 28
Top = 312
Width = 31
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
}
NumGlyphs = 0
OnClick = FreqInBtnClick
TabOrder = 8
end
object FreqOutBtn: TBitBtn
Left = 192
Height = 28
Top = 344
Width = 31
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = FreqOutBtnClick
TabOrder = 9
end
object NRowsEdit: TEdit
Left = 409
Height = 21
Top = 26
Width = 43
OnKeyPress = NRowsEditKeyPress
TabOrder = 10
Text = 'NRowsEdit'
end
object NColsEdit: TEdit
Left = 528
Height = 21
Top = 26
Width = 47
OnKeyPress = NColsEditKeyPress
TabOrder = 11
Text = 'NColsEdit'
end
object Grid: TStringGrid
Left = 343
Height = 310
Top = 62
Width = 346
ColCount = 2
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing, goTabs, goSmoothScroll]
RowCount = 2
TabOrder = 12
end
object RowVarEdit: TEdit
Left = 230
Height = 21
Top = 87
Width = 107
TabOrder = 13
Text = 'RowVarEdit'
end
object ColVarEdit: TEdit
Left = 231
Height = 21
Top = 168
Width = 107
TabOrder = 14
Text = 'Edit3'
end
object SliceVarEdit: TEdit
Left = 230
Height = 21
Top = 248
Width = 107
TabOrder = 15
Text = 'Edit3'
end
object FreqVarEdit: TEdit
Left = 230
Height = 21
Top = 328
Width = 107
TabOrder = 16
Text = 'Edit3'
end
object ResetBtn: TButton
Left = 8
Height = 27
Top = 387
Width = 73
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 17
end
object CancelBtn: TButton
Left = 109
Height = 27
Top = 387
Width = 73
Caption = 'Cancel'
ModalResult = 2
TabOrder = 18
end
object ComputeBtn: TButton
Left = 343
Height = 27
Top = 387
Width = 73
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 19
end
object ReturnBtn: TButton
Left = 448
Height = 27
Top = 387
Width = 73
Caption = 'Return'
ModalResult = 1
TabOrder = 20
end
object NslicesEdit: TEdit
Left = 647
Height = 21
Top = 24
Width = 39
OnKeyPress = NslicesEditKeyPress
TabOrder = 21
Text = 'NslicesEdit'
end
object HelpBtn: TButton
Tag = 101
Left = 224
Height = 27
Top = 387
Width = 73
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 22
end
end

View File

@ -0,0 +1,472 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TABCLogLinearFrm','FORMDATA',[
'TPF0'#16'TABCLogLinearFrm'#15'ABCLogLinearFrm'#4'Left'#2'z'#6'Height'#3#178#1
+#3'Top'#3#170#0#5'Width'#3#187#2#7'Caption'#6'2Log Linear Analysis for AxBxC'
+' Classification Table'#12'ClientHeight'#3#178#1#11'ClientWidth'#3#187#2#6'O'
+'nShow'#7#8'FormShow'#10'LCLVersion'#6#8'0.9.28.2'#0#6'TLabel'#6'Label1'#4'L'
+'eft'#3'W'#1#6'Height'#2#14#3'Top'#2'('#5'Width'#2'@'#7'Caption'#6#12'No. of'
+' Rows:'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#3#208#1#6'Height'
+#2#14#3'Top'#2'$'#5'Width'#2'>'#7'Caption'#6#13'No. of Cols.:'#11'ParentColo'
+'r'#8#0#0#6'TLabel'#6'Label3'#4'Left'#3#230#0#6'Height'#2#14#3'Top'#2'G'#5'W'
+'idth'#2'?'#7'Caption'#6#12'Row Variable'#11'ParentColor'#8#0#0#6'TLabel'#6
+'Label4'#4'Left'#3#230#0#6'Height'#2#14#3'Top'#3#151#0#5'Width'#2'M'#7'Capti'
+'on'#6#15'Column Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'Label5'#4'Left'
+#3#231#0#6'Height'#2#14#3'Top'#3#232#0#5'Width'#2'?'#7'Caption'#6#14'Slice V'
+'ariable'#11'ParentColor'#8#0#0#6'TLabel'#6'Label6'#4'Left'#3#230#0#6'Height'
+#2#14#3'Top'#3'8'#1#5'Width'#2']'#7'Caption'#6#18'Frequency Variable'#11'Par'
+'entColor'#8#0#0#6'TLabel'#6'Label7'#4'Left'#3'H'#2#6'Height'#2#14#3'Top'#2
+#30#5'Width'#2'@'#7'Caption'#6#14'No. of Slices:'#11'ParentColor'#8#0#0#11'T'
+'RadioGroup'#11'FileFromGrp'#4'Left'#2#6#6'Height'#2'9'#3'Top'#2#5#5'Width'#3
+#176#0#8'AutoFill'#9#7'Caption'#6#16'Enter Data From:'#28'ChildSizing.LeftRi'
+'ghtSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing.Enlarge'
+'Horizontal'#7#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVertical'#7
+#24'crsHomogenousChildResize'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScale'
+'Childs'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSizing.'
+'Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.ControlsPerLine'
+#2#1#12'ClientHeight'#2''''#11'ClientWidth'#3#172#0#13'Items.Strings'#1#6#26
+'File Data in the Main Grid'#6#25'Data Entered on this Form'#0#7'OnClick'#7
+#16'FileFromGrpClick'#8'TabOrder'#2#0#0#0#8'TListBox'#7'VarList'#4'Left'#2#8
+#6'Height'#3'5'#1#3'Top'#2'B'#5'Width'#3#173#0#10'ItemHeight'#2#0#8'TabOrder'
+#2#1#0#0#7'TBitBtn'#8'RowInBtn'#4'Left'#3#192#0#6'Height'#2#28#3'Top'#2'H'#5
+'Width'#2#31#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0
+'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0
+#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'
+#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190
+'m'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255
+'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139
+'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160
+#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255
+#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128
+#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199
+'t'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255#150
+#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255
+#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255
+#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255
+'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163
+'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247
+';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187
+'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnCl'
+'ick'#7#13'RowInBtnClick'#8'TabOrder'#2#2#0#0#7'TBitBtn'#9'RowOutBtn'#4'Left'
+#3#192#0#6'Height'#2#28#3'Top'#2'h'#5'Width'#2#31#10'Glyph.Data'#10':'#4#0#0
+'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0
+#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'
+#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255
+';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255
+#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152
+#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255
+#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!'
+'c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138#255#162#216
+#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142
+#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255
+'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'
+#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255
+'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'
+#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199
+'t'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'
+#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#14'RowOutBtnClick'#8'TabO'
+'rder'#2#3#0#0#7'TBitBtn'#8'ColInBtn'#4'Left'#3#192#0#6'Height'#2#28#3'Top'#3
+#152#0#5'Width'#2#31#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0
+'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0
+#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'
+#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'
+#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195
+'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144
+#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255
+#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255
+#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255
+']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145
+'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#13'ColInBtnClick'#8'TabOrder'#2#4#0#0#7'TBitBtn'#9'Col'
+'OutBtn'#4'Left'#3#192#0#6'Height'#2#28#3'Top'#3#184#0#5'Width'#2#31#10'Glyp'
+'h.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0
+#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'
+#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'
+#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134
+#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203
+#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190
+'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127
+#204#138#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255
+#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135
+#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255
+#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177
+'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255
+'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#14
+'ColOutBtnClick'#8'TabOrder'#2#5#0#0#7'TBitBtn'#10'SliceBtnIn'#4'Left'#3#192
+#0#6'Height'#2#28#3'Top'#3#232#0#5'Width'#2#31#10'Glyph.Data'#10':'#4#0#0'6'
+#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0
+#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169
+'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255
,'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255
+#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161
+#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198
+#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196
+#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255
+#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149
+#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'
+#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195
+'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255
+'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#15'SliceBtnInClick'#8'TabOrder'
+#2#6#0#0#7'TBitBtn'#11'SliceBtnOut'#4'Left'#3#191#0#6'Height'#2#28#3'Top'#3#8
+#1#5'Width'#2#31#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0
+#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0
+#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153
+'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'
+#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255
+'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'
+#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195
+'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144
+#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255
+#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255
+#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135
+#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#16'SliceBtnOutClick'#8'TabOrder'#2#7#0#0#7'TBitBtn'#9
+'FreqInBtn'#4'Left'#3#192#0#6'Height'#2#28#3'Top'#3'8'#1#5'Width'#2#31#10'Gl'
+'yph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0
+#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'
+#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'
+#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'
+#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255
+#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165
+#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201
+#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140
+'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255
+#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154
+#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194
+#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'
+#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'
+#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/'
+'x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#14'FreqInBtnClick'
+#8'TabOrder'#2#8#0#0#7'TBitBtn'#10'FreqOutBtn'#4'Left'#3#192#0#6'Height'#2#28
+#3'Top'#3'X'#1#5'Width'#2#31#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0
+#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0
+'d'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'
+#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217
+'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193
+#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'
+#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255
+#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157
+#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195
+#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0
+#255#255#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255
+#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144
+#255#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255
+#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'
+#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153
+'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#15'FreqOutBtnClick'#8'TabOrder'#2#9#0#0
+#5'TEdit'#9'NRowsEdit'#4'Left'#3#153#1#6'Height'#2#21#3'Top'#2#26#5'Width'#2
+'+'#10'OnKeyPress'#7#17'NRowsEditKeyPress'#8'TabOrder'#2#10#4'Text'#6#9'NRow'
+'sEdit'#0#0#5'TEdit'#9'NColsEdit'#4'Left'#3#16#2#6'Height'#2#21#3'Top'#2#26#5
+'Width'#2'/'#10'OnKeyPress'#7#17'NColsEditKeyPress'#8'TabOrder'#2#11#4'Text'
+#6#9'NColsEdit'#0#0#11'TStringGrid'#4'Grid'#4'Left'#3'W'#1#6'Height'#3'6'#1#3
+'Top'#2'>'#5'Width'#3'Z'#1#8'ColCount'#2#2#7'Options'#11#15'goFixedVertLine'
+#15'goFixedHorzLine'#10'goVertLine'#10'goHorzLine'#13'goRangeSelect'#9'goEdi'
+'ting'#6'goTabs'#14'goSmoothScroll'#0#8'RowCount'#2#2#8'TabOrder'#2#12#0#0#5
,'TEdit'#10'RowVarEdit'#4'Left'#3#230#0#6'Height'#2#21#3'Top'#2'W'#5'Width'#2
+'k'#8'TabOrder'#2#13#4'Text'#6#10'RowVarEdit'#0#0#5'TEdit'#10'ColVarEdit'#4
+'Left'#3#231#0#6'Height'#2#21#3'Top'#3#168#0#5'Width'#2'k'#8'TabOrder'#2#14#4
+'Text'#6#5'Edit3'#0#0#5'TEdit'#12'SliceVarEdit'#4'Left'#3#230#0#6'Height'#2
+#21#3'Top'#3#248#0#5'Width'#2'k'#8'TabOrder'#2#15#4'Text'#6#5'Edit3'#0#0#5'T'
+'Edit'#11'FreqVarEdit'#4'Left'#3#230#0#6'Height'#2#21#3'Top'#3'H'#1#5'Width'
+#2'k'#8'TabOrder'#2#16#4'Text'#6#5'Edit3'#0#0#7'TButton'#8'ResetBtn'#4'Left'
+#2#8#6'Height'#2#27#3'Top'#3#131#1#5'Width'#2'I'#7'Caption'#6#5'Reset'#7'OnC'
+'lick'#7#13'ResetBtnClick'#8'TabOrder'#2#17#0#0#7'TButton'#9'CancelBtn'#4'Le'
+'ft'#2'm'#6'Height'#2#27#3'Top'#3#131#1#5'Width'#2'I'#7'Caption'#6#6'Cancel'
+#11'ModalResult'#2#2#8'TabOrder'#2#18#0#0#7'TButton'#10'ComputeBtn'#4'Left'#3
+'W'#1#6'Height'#2#27#3'Top'#3#131#1#5'Width'#2'I'#7'Caption'#6#7'Compute'#7
+'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#19#0#0#7'TButton'#9'ReturnBtn'
+#4'Left'#3#192#1#6'Height'#2#27#3'Top'#3#131#1#5'Width'#2'I'#7'Caption'#6#6
+'Return'#11'ModalResult'#2#1#8'TabOrder'#2#20#0#0#5'TEdit'#11'NslicesEdit'#4
+'Left'#3#135#2#6'Height'#2#21#3'Top'#2#24#5'Width'#2''''#10'OnKeyPress'#7#19
+'NslicesEditKeyPress'#8'TabOrder'#2#21#4'Text'#6#11'NslicesEdit'#0#0#7'TButt'
+'on'#7'HelpBtn'#3'Tag'#2'e'#4'Left'#3#224#0#6'Height'#2#27#3'Top'#3#131#1#5
+'Width'#2'I'#7'Caption'#6#4'Help'#7'OnClick'#7#12'HelpBtnClick'#8'TabOrder'#2
+#22#0#0#0
]);

View File

@ -0,0 +1,995 @@
unit ABCLogLinUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ExtCtrls, StdCtrls, Buttons, Grids, Math, OutPutUnit, MainUnit,
FunctionsLib, Globals, DataProcs, contexthelpunit;
type
{ TABCLogLinearFrm }
TABCLogLinearFrm = class(TForm)
HelpBtn: TButton;
RowInBtn: TBitBtn;
RowOutBtn: TBitBtn;
ColInBtn: TBitBtn;
ColOutBtn: TBitBtn;
SliceBtnIn: TBitBtn;
SliceBtnOut: TBitBtn;
FreqInBtn: TBitBtn;
FreqOutBtn: TBitBtn;
NslicesEdit: TEdit;
Label7: TLabel;
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
NRowsEdit: TEdit;
NColsEdit: TEdit;
RowVarEdit: TEdit;
ColVarEdit: TEdit;
SliceVarEdit: TEdit;
FreqVarEdit: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Grid: TStringGrid;
VarList: TListBox;
FileFromGrp: TRadioGroup;
procedure ColInBtnClick(Sender: TObject);
procedure ColOutBtnClick(Sender: TObject);
procedure ComputeBtnClick(Sender: TObject);
procedure FileFromGrpClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FreqInBtnClick(Sender: TObject);
procedure FreqOutBtnClick(Sender: TObject);
procedure NColsEditKeyPress(Sender: TObject; var Key: char);
procedure NRowsEditKeyPress(Sender: TObject; var Key: char);
procedure NslicesEditKeyPress(Sender: TObject; var Key: char);
procedure ResetBtnClick(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure RowInBtnClick(Sender: TObject);
procedure RowOutBtnClick(Sender: TObject);
procedure SliceBtnInClick(Sender: TObject);
procedure SliceBtnOutClick(Sender: TObject);
private
{ private declarations }
procedure ModelEffect(Nrows,Ncols,Nslices : integer;
VAR Data : DblDyneCube;
VAR RowMarg : DblDyneVec;
VAR ColMarg : DblDyneVec;
VAR SliceMarg : DblDyneVec;
VAR AB : DblDyneMat;
VAR AC : DblDyneMat;
VAR BC : DblDyneMat;
VAR Total : double;
Model : integer);
procedure Iterate(Nrows, Ncols, Nslices : integer;
VAR Data : DblDyneCube;
VAR RowMarg : DblDyneVec;
VAR ColMarg : DblDyneVec;
VAR SliceMarg : DblDyneVec;
VAR Total : double;
VAR Expected : DblDyneCube;
VAR NewRowMarg : DblDyneVec;
VAR NewColMarg : DblDyneVec;
VAR NewSliceMarg : DblDyneVec;
VAR NewTotal : double);
procedure PrintTable(Nrows, Ncols, Nslices : integer;
VAR Data : DblDyneCube;
VAR RowMarg : DblDyneVec;
VAR ColMarg : DblDyneVec;
VAR SliceMarg : DblDyneVec;
Total : double);
procedure PrintLamdas(Nrows,Ncols,Nslices : integer;
Var CellLambdas : DblDyneQuad;
mu : double);
procedure PrintMatrix(VAR X : DblDyneMat;
Nrows, Ncols: integer;
Title : string);
public
{ public declarations }
end;
var
ABCLogLinearFrm: TABCLogLinearFrm;
implementation
{ TABCLogLinearFrm }
procedure TABCLogLinearFrm.ResetBtnClick(Sender: TObject);
VAR i : integer;
begin
Grid.ColCount := 4;
Grid.RowCount := 2;
Grid.Cells[0,0] := 'ROW';
Grid.Cells[1,0] := 'COL';
Grid.Cells[2,0] := 'SLICE';
Grid.Cells[3,0] := 'FREQ.';
VarList.Clear;
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
RowVarEdit.Text := '';
ColVarEdit.Text := '';
SliceVarEdit.Text := '';
FreqVarEdit.Text := '';
NRowsEdit.Text := '';
NColsEdit.Text := '';
NSlicesEdit.Text := '';
VarList.Visible := false;
RowInBtn.Visible := false;
RowOutBtn.Visible := false;
ColInBtn.Visible := false;
ColOutBtn.Visible := false;
SliceBtnIn.Visible := false;
SliceBtnOut.Visible := false;
FreqInBtn.Visible := false;
FreqOutBtn.Visible := false;
Label1.Visible := false;
Label2.Visible := false;
Label3.Visible := false;
Label4.Visible := false;
Label5.Visible := false;
Label6.Visible := false;
Label7.Visible := false;
RowVarEdit.Visible := false;
ColVarEdit.Visible := false;
SliceVarEdit.Visible := false;
FreqVarEdit.Visible := false;
NRowsEdit.Visible := false;
NColsEdit.Visible := false;
NSlicesEdit.Visible := false;
Grid.Visible := false;
end;
procedure TABCLogLinearFrm.HelpBtnClick(Sender: TObject);
begin
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
procedure TABCLogLinearFrm.RowInBtnClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
RowVarEdit.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
RowOutBtn.Visible := true;
RowInBtn.Visible := false;
end;
procedure TABCLogLinearFrm.RowOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(RowVarEdit.Text);
RowInBtn.Visible := true;
RowOutBtn.Visible := false;
RowVarEdit.Text := '';
end;
procedure TABCLogLinearFrm.SliceBtnInClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
SliceVarEdit.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
SliceBtnOut.Visible := true;
SliceBtnIn.Visible := false;
end;
procedure TABCLogLinearFrm.SliceBtnOutClick(Sender: TObject);
begin
VarList.Items.Add(SliceVarEdit.Text);
SliceBtnIn.Visible := true;
SliceBtnOut.Visible := false;
FreqVarEdit.Text := '';
end;
procedure TABCLogLinearFrm.FileFromGrpClick(Sender: TObject);
begin
if FileFromGrp.ItemIndex = 0 then // file from main form
begin
VarList.Visible := true;
RowInBtn.Visible := true;
RowOutBtn.Visible := false;
ColInBtn.Visible := true;
ColOutBtn.Visible := false;
SliceBtnIn.Visible := true;
SliceBtnOut.Visible := false;
FreqInBtn.Visible := true;
FreqOutBtn.Visible := false;
Label4.Visible := true;
Label5.Visible := true;
Label6.Visible := true;
Label3.Visible := true;
RowVarEdit.Visible := true;
ColVarEdit.Visible := true;
SliceVarEdit.Visible := true;
FreqVarEdit.Visible := true;
Label1.Visible := false;
Label2.Visible := false;
Label7.Visible := false;
NRowsEdit.Visible := false;
NColsEdit.Visible := false;
NSlicesEdit.Visible := false;
Grid.Visible := false;
end;
if FileFromGrp.ItemIndex = 1 then // data from this form
begin
VarList.Visible := false;
RowInBtn.Visible := false;
RowOutBtn.Visible := false;
ColInBtn.Visible := false;
ColOutBtn.Visible := false;
SliceBtnIn.Visible := false;
SliceBtnOut.Visible := false;
FreqInBtn.Visible := false;
FreqOutBtn.Visible := false;
Label4.Visible := false;
Label5.Visible := false;
Label6.Visible := false;
Label3.Visible := false;
RowVarEdit.Visible := false;
ColVarEdit.Visible := false;
SliceVarEdit.Visible := false;
FreqVarEdit.Visible := false;
Label1.Visible := true;
Label2.Visible := true;
Label7.Visible := true;
NRowsEdit.Visible := true;
NColsEdit.Visible := true;
NSlicesEdit.Visible := true;
Grid.Visible := true;
end;
end;
procedure TABCLogLinearFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(Self);
end;
procedure TABCLogLinearFrm.FreqInBtnClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
FreqVarEdit.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
FreqOutBtn.Visible := true;
FreqInBtn.Visible := false;
end;
procedure TABCLogLinearFrm.FreqOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(FreqVarEdit.Text);
FreqInBtn.Visible := true;
FreqOutBtn.Visible := false;
FreqVarEdit.Text := '';
end;
procedure TABCLogLinearFrm.NColsEditKeyPress(Sender: TObject; var Key: char);
begin
if ord(Key) = 13 then NslicesEdit.SetFocus;
end;
procedure TABCLogLinearFrm.NRowsEditKeyPress(Sender: TObject; var Key: char);
begin
if ord(Key) = 13 then NcolsEdit.SetFocus;
end;
procedure TABCLogLinearFrm.NslicesEditKeyPress(Sender: TObject; var Key: char);
var
i, j, k, row : integer;
Nslices, Ncols, Nrows : integer;
begin
if ord(Key) = 13 then
begin
Nrows := StrToInt(NrowsEdit.Text);
Ncols := StrToInt(NcolsEdit.Text);
Nslices := StrToInt(NslicesEdit.Text);
Grid.RowCount := Nrows * Ncols * Nslices + 1;
row := 1;
for k := 1 to Nslices do
begin
for j := 1 to Ncols do
begin
for i := 1 to Nrows do
begin
Grid.Cells[0,row] := IntToStr(i);
Grid.Cells[1,row] := IntToStr(j);
Grid.Cells[2,row] := IntToStr(k);
row := row + 1;
end;
end;
end;
Grid.SetFocus;
end;
end;
procedure TABCLogLinearFrm.ColInBtnClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
ColVarEdit.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
ColOutBtn.Visible := true;
ColInBtn.Visible := false;
end;
procedure TABCLogLinearFrm.ColOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(ColVarEdit.Text);
ColInBtn.Visible := true;
ColOutBtn.Visible := false;
ColVarEdit.Text := '';
end;
procedure TABCLogLinearFrm.ComputeBtnClick(Sender: TObject);
var
i, j, k, row, col, slice, Nrows, Ncols, Nslices : integer;
Data : DblDyneCube;
AB, AC, BC : DblDyneMat;
RowMarg, ColMarg, SliceMarg : DblDyneVec;
Total : double;
arraysize : integer;
Model : integer;
astr, Title : string;
RowCol, ColCol, SliceCol, Fcol : integer;
GridPos : IntDyneVec;
value : integer;
Fx : double;
begin
Nrows := 0;
Ncols := 0;
Nslices := 0;
Total := 0.0;
if FileFromGrp.ItemIndex = 0 then // mainfrm input
begin
SetLength(GridPos,4);
for i := 1 to NoVariables do
begin
if RowVarEdit.Text = OS3MainFrm.DataGrid.Cells[i,0] then GridPos[0] := i;
if ColVarEdit.Text = OS3MainFrm.DataGrid.Cells[i,0] then GridPos[1] := i;
if SliceVarEdit.Text = OS3MainFrm.DataGrid.Cells[i,0] then GridPos[2] := i;
if FreqVarEdit.Text = OS3MainFrm.DataGrid.Cells[i,0] then GridPos[3] := i;
end;
// get no. of rows, columns and slices
for i := 1 to OS3MainFrm.DataGrid.RowCount - 1 do
begin
value := StrToInt(OS3MainFrm.DataGrid.Cells[GridPos[0],i]);
if value > Nrows then Nrows := value;
value := StrToInt(OS3MainFrm.DataGrid.Cells[GridPos[1],i]);
if value > Ncols then Ncols := value;
value := StrToInt(OS3MainFrm.DataGrid.Cells[GridPos[2],i]);
if value > Nslices then Nslices := value;
end;
SetLength(AB,Nrows+1,Ncols+1);
SetLength(AC,Nrows+1,Nslices+1);
SetLength(BC,Ncols+1,Nslices+1);
SetLength(Data,Nrows+1,Ncols+1,Nslices+1);
SetLength(RowMarg,Nrows+1);
SetLength(ColMarg,Ncols+1);
SetLength(SliceMarg,Nslices+1);
for i := 1 to Nrows do
for j := 1 to Ncols do
AB[i,j] := 0.0;
for i := 1 to Nrows do
for k := 1 to Nslices do
AC[i,k] := 0.0;
for j := 1 to Ncols do
for k := 1 to Nslices do
BC[j,k] := 0.0;
arraysize := Nrows * Ncols * Nslices;
// Get data
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
Data[i,j,k] := 0.0;
rowcol := GridPos[0];
colcol := GridPos[1];
slicecol := GridPos[2];
Fcol := GridPos[3];
for i := 1 to OS3MainFrm.DataGrid.RowCount - 1 do
begin
if Not GoodRecord(i, 4, GridPos) then continue;
row := StrToInt(OS3MainFrm.DataGrid.Cells[rowcol,i]);
col := StrToInt(OS3MainFrm.DataGrid.Cells[colcol,i]);
slice := StrToInt(OS3MainFrm.DataGrid.Cells[slicecol,i]);
Fx := StrToInt(OS3MainFrm.DataGrid.Cells[Fcol,i]);
Data[row,col,slice] := Data[row,col,slice] + Fx;
Total := Total + Fx;
RowMarg[row] := RowMarg[row] + Fx;
ColMarg[col] := ColMarg[col] + Fx;
SliceMarg[slice] := SliceMarg[slice] + Fx;
AB[row,col] := AB[row,col] + Fx;
AC[row,slice] := AC[row,slice] + Fx;
BC[col,slice] := BC[col,slice] + Fx;
end;
GridPos := nil;
end;
if FileFromGrp.ItemIndex = 1 then // form input
begin
Nrows := StrToInt(NrowsEdit.Text);
Ncols := StrToInt(NcolsEdit.Text);
Nslices := StrToInt(NslicesEdit.Text);
SetLength(AB,Nrows+1,Ncols+1);
SetLength(AC,Nrows+1,Nslices+1);
SetLength(BC,Ncols+1,Nslices+1);
SetLength(Data,Nrows+1,Ncols+1,Nslices+1);
SetLength(RowMarg,Nrows+1);
SetLength(ColMarg,Ncols+1);
SetLength(SliceMarg,Nslices+1);
for i := 1 to Nrows do
for j := 1 to Ncols do
AB[i,j] := 0.0;
for i := 1 to Nrows do
for k := 1 to Nslices do
AC[i,k] := 0.0;
for j := 1 to Ncols do
for k := 1 to Nslices do
BC[j,k] := 0.0;
arraysize := Nrows * Ncols * Nslices;
// get data
for i := 1 to arraysize do
begin
row := StrToInt(Grid.Cells[0,i]);
col := StrToInt(Grid.Cells[1,i]);
slice := StrToInt(Grid.Cells[2,i]);
Data[row,col,slice] := StrToInt(Grid.Cells[3,i]);
AB[row,col] := AB[row,col] + Data[row,col,slice];
AC[row,slice] := AC[row,slice] + Data[row,col,slice];
BC[col,slice] := BC[col,slice] + Data[row,col,slice];
Total := Total + Data[row,col,slice];
RowMarg[row] := RowMarg[row] + Data[row,col,slice];
ColMarg[col] := ColMarg[col] + Data[row,col,slice];
SliceMarg[slice] := SliceMarg[slice] + Data[row,col,slice];
end;
end;
// print heading of output
OutPutFrm.RichEdit.Clear;
OutPutFrm.RichEdit.Lines.Add('Log-Linear Analysis of a Three Dimension Table');
OutPutFrm.RichEdit.Lines.Add('');
// print observed matrix
astr := 'Observed Frequencies';
OutPutFrm.RichEdit.Lines.Add(astr);
PrintTable(Nrows,Ncols,Nslices,Data,RowMarg,ColMarg,SliceMarg,Total);
OutPutFrm.RichEdit.Lines.Add('');
// Print sub-matrices
Title := 'Sub-matrix AB';
PrintMatrix(AB,Nrows,Ncols,Title);
Title := 'Sub-matrix AC';
PrintMatrix(AC,Nrows,Nslices,Title);
Title := 'Sub-matrix BC';
PrintMatrix(BC,Ncols,Nslices,Title);
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
for Model := 1 to 9 do
ModelEffect(Nrows,Ncols,Nslices,Data,RowMarg,ColMarg,
SliceMarg,AB,AC,BC,Total,Model);
SliceMarg := nil;
ColMarg := nil;
RowMarg := nil;
Data := nil;
BC := nil;
AC := nil;
AB := nil;
end;
procedure TABCLogLinearFrm.ModelEffect(Nrows,Ncols,Nslices : integer;
VAR Data : DblDyneCube;
VAR RowMarg : DblDyneVec;
VAR ColMarg : DblDyneVec;
VAR SliceMarg : DblDyneVec;
VAR AB : DblDyneMat;
VAR AC : DblDyneMat;
VAR BC : DblDyneMat;
VAR Total : double;
Model : integer);
var
i, j, k, l : integer;
CellLambdas : DblDyneQuad;
LogData, Expected : DblDyneCube;
Title, astr : string;
NewRowMarg,NewColMarg,NewSliceMarg : DblDyneVec;
LogRowMarg, LogColMarg, LogSliceMarg : DblDyneVec;
NewTotal : double;
ABLogs, ACLogs, BCLogs : DblDyneMat;
LogTotal, mu, ModelTotal, Ysqr : double;
DF : integer;
begin
// Get expected values for chosen model
SetLength(Expected,Nrows+1,Ncols+1,Nslices+1);
SetLength(NewRowMarg,Nrows+1);
SetLength(NewColMarg,Ncols+1);
SetLength(NewSliceMarg,Nslices+1);
SetLength(LogRowMarg,Nrows+1);
SetLength(LogColMarg,Ncols+1);
SetLength(LogSliceMarg,Nslices+1);
SetLength(ABLogs,Nrows+1,Ncols+1);
SetLength(ACLogs,Nrows+1,Nslices+1);
SetLength(BCLogs,Ncols+1,Nslices+1);
SetLength(LogData,Nrows+1,Ncols+1,Nslices+1);
SetLength(CellLambdas,Nrows+1,Ncols+1,Nslices+1,8);
if Model = 1 then // Saturated model
begin
Title := 'Saturated Model';
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
Expected[i,j,k] := Data[i,j,k];
end;
if Model = 2 then // independence
begin
Title := 'Model of Independence';
Iterate(Nrows,Ncols,Nslices,Data,RowMarg,ColMarg,SliceMarg,Total,
Expected,NewRowMarg,NewColMarg,NewSliceMarg,NewTotal);
end;
if Model = 3 then // no AB effect
begin
Title := 'No AB Effect';
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
Expected[i,j,k] := AC[i,k] * BC[j,k] / SliceMarg[k];
end;
if Model = 4 then // no AC effect
begin
Title := 'No AC Effect';
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
Expected[i,j,k] := AB[i,j] * BC[j,k] / ColMarg[j];
end;
if Model = 5 then // no BC effect
begin
Title := 'No BC Effect';
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
Expected[i,j,k] := AB[i,j] * AC[i,k] / RowMarg[i];
end;
if Model = 6 then // no C effect
begin
Title := 'Model of No Slice (C) effect';
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
Expected[i,j,k] := (RowMarg[i] / Total) *
(ColMarg[j] / Total) * (Total / Nslices);
end;
if Model = 7 then // no B effect
begin
Title := 'Model of no Column (B) effect';
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
Expected[i,j,k] := (RowMarg[i] / Total) *
(SliceMarg[k] / Total) * (Total / Ncols);
end;
if Model = 8 then // no A effect
begin
Title := 'Model of no Row (A) effect';
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
Expected[i,j,k] := (ColMarg[j] / Total) *
(SliceMarg[k] / Total) * (Total / Nrows);
end;
if Model = 9 then // Equiprobability Model
begin
Title := 'Equi-probability Model';
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
Expected[i,j,k] := Total /
(Nrows * NCols * Nslices);
end;
LogTotal := 0.0;
for i := 1 to Nrows do
begin
NewRowMarg[i] := 0.0;
LogRowMarg[i] := 0.0;
end;
for j := 1 to Ncols do
begin
NewColMarg[j] := 0.0;
LogColMarg[j] := 0.0;
end;
for k := 1 to Nslices do
begin
NewSliceMarg[k] := 0.0;
LogSliceMarg[k] := 0.0;
end;
for i := 1 to Nrows do
for j := 1 to Ncols do
ABLogs[i,j] := 0.0;
for i := 1 to Nrows do
for k := 1 to Nslices do
ACLogs[i,k] := 0.0;
for j := 1 to Ncols do
for k := 1 to Nslices do
BCLogs[j,k] := 0.0;
for i := 1 to Nrows do
begin
for j := 1 to Ncols do
begin
for k := 1 to Nslices do
begin
NewRowMarg[i] := NewRowMarg[i] + Expected[i,j,k];
NewColMarg[j] := NewColMarg[j] + Expected[i,j,k];
NewSliceMarg[k] := NewSliceMarg[k] + Expected[i,j,k];
end;
end;
end;
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
LogData[i,j,k] := ln(Expected[i,j,k]);
for i := 1 to Nrows do
begin
for j := 1 to Ncols do
begin
for k := 1 to Nslices do
begin
LogRowMarg[i] := LogRowMarg[i] + LogData[i,j,k];
LogColMarg[j] := LogColMarg[j] + LogData[i,j,k];
LogSliceMarg[k] := LogSliceMarg[k] + LogData[i,j,k];
ABLogs[i,j] := ABLogs[i,j] + LogData[i,j,k];
ACLogs[i,k] := ACLogs[i,k] + LogData[i,j,k];
BCLogs[j,k] := BCLogs[j,k] + LogData[i,j,k];
LogTotal := LogTotal + LogData[i,j,k];
end;
end;
end;
for i := 1 to Nrows do LogRowMarg[i] := LogRowMarg[i] / (Ncols * Nslices);
for j := 1 to Ncols do LogColMarg[j] := LogColMarg[j] / (Nrows * Nslices);
for k := 1 to Nslices do LogSliceMarg[k] := LogSliceMarg[k] / (Ncols * Nrows);
LogTotal := LogTotal / (Ncols * Nrows * Nslices);
for i := 1 to Nrows do
for j := 1 to Ncols do
ABLogs[i,j] := ABLogs[i,j] / Nslices;
for i := 1 to Nrows do
for k := 1 to Nslices do
ACLogs[i,k] := ACLogs[i,k] / Ncols;
for j := 1 to Ncols do
for k := 1 to Nslices do
BCLogs[j,k] := BCLogs[j,k] / Nrows;
for i := 1 to Nrows do
begin
for j := 1 to Ncols do
begin
for k := 1 to Nslices do
begin
CellLambdas[i,j,k,1] := LogRowMarg[i] - LogTotal;
CellLambdas[i,j,k,2] := LogColMarg[j] - LogTotal;
CellLambdas[i,j,k,3] := LogSliceMarg[k] - LogTotal;
CellLambdas[i,j,k,4] := ABLogs[i,j] - LogRowMarg[i]
- LogColMarg[j] + LogTotal;
CellLambdas[i,j,k,5] := ACLogs[i,k] - LogRowMarg[i]
- LogSliceMarg[k] + LogTotal;
CellLambdas[i,j,k,6] := BCLogs[j,k] - LogColMarg[j]
- LogSliceMarg[k] + LogTotal;
CellLambdas[i,j,k,7] := LogData[i,j,k] + LogRowMarg[i]
+ LogColMarg[j] + LogSliceMarg[k]
- ABLogs[i,j] - ACLogs[i,k]
- BCLogs[j,k] - LogTotal;
end;
end;
end;
mu := LogTotal;
// Get Y square for model
Ysqr := 0.0;
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
Ysqr := Ysqr + (Data[i,j,k] * ln(Data[i,j,k] / Expected[i,j,k]));
Ysqr := 2.0 * Ysqr;
OutPutFrm.RichEdit.Lines.Add(Title);
OutPutFrm.RichEdit.Lines.Add('');
astr := 'Expected Frequencies';
OutPutFrm.RichEdit.Lines.Add(astr);
PrintTable(Nrows,Ncols,Nslices,Expected,NewRowMarg,NewColMarg,
NewSliceMarg,NewTotal);
OutPutFrm.RichEdit.Lines.Add('');
astr := 'Log Frequencies';
OutPutFrm.RichEdit.Lines.Add(astr);
PrintTable(Nrows,Ncols,Nslices,LogData,LogRowMarg,LogColMarg,LogSliceMarg,LogTotal);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
astr := 'Cell Parameters';
OutPutFrm.RichEdit.Lines.Add(astr);
PrintLamdas(Nrows,Ncols,Nslices,CellLambdas, mu);
OutPutFrm.RichEdit.Lines.Add('');
astr := 'G squared statistic for model fit = ' + format('%6.3f',[Ysqr]);
case Model of
1 : DF := 0; // saturated
2 : DF := Nrows * Ncols * Nslices - Nrows - Ncols - Nslices + 2; // independence
3 : DF := Nslices * (Nrows - 1) * (Ncols - 1); //no AB effect
4 : DF := Ncols * (Nrows - 1) * (Nslices - 1); // no AC effect
5 : DF := Nrows * (Ncols - 1) * (Nslices - 1); // no BC effect
6 : DF := Nrows * Ncols * Nslices - Nrows - Ncols + 1; // no C effect
7 : DF := Nrows * Ncols * Nslices - Nrows - Nslices + 1; // no B effect
8 : DF := Nrows * Ncols * Nslices - Ncols - Nslices + 1; // no A effect
9 : DF := Nrows * Ncols * Nslices - 1; // Equiprobability
end;
astr := astr + ' D.F. = ' + IntToStr(DF);
OutPutFrm.RichEdit.Lines.Add(astr);
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
CellLambdas := nil;
LogData := nil;
BCLogs := nil;
ACLogs := nil;
ABLogs := nil;
LogSliceMarg := nil;
LogColMarg := nil;
LogRowMarg := nil;
NewSliceMarg := nil;
NewColMarg := nil;
NewRowMarg := nil;
Expected := nil;
end;
//-------------------------------------------------------------------
procedure TABCLogLinearFrm.Iterate(Nrows, Ncols, Nslices : integer;
VAR Data : DblDyneCube;
VAR RowMarg : DblDyneVec;
VAR ColMarg : DblDyneVec;
VAR SliceMarg : DblDyneVec;
VAR Total : double;
VAR Expected : DblDyneCube;
VAR NewRowMarg : DblDyneVec;
VAR NewColMarg : DblDyneVec;
VAR NewSliceMarg : DblDyneVec;
VAR NewTotal : double);
Label Step;
var
Aprevious : DblDyneCube;
i, j, k : integer;
delta : double;
difference : double;
begin
SetLength(Aprevious,Nrows+1,Ncols+1,Nslices+1);
delta := 0.1;
difference := 0.0;
for i := 1 to Nrows do newrowmarg[i] := 0.0;
for j := 1 to Ncols do newcolmarg[j] := 0.0;
for k := 1 to Nslices do newslicemarg[k] := 0.0;
// initialize expected values
for i := 1 to Nrows do
begin
for j := 1 to Ncols do
begin
for k := 1 to Nslices do
begin
expected[i,j,k] := 1.0;
Aprevious[i,j,k] := 1.0;
end;
end;
end;
Step:
// step 1: initialize new row margins and calculate expected value
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
newrowmarg[i] := newrowmarg[i] + expected[i,j,k];
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
expected[i,j,k] := (RowMarg[i] / newrowmarg[i]) * expected[i,j,k];
// step 2: initialize new col margins and calculate expected values
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
newcolmarg[j] := newcolmarg[j] + expected[i,j,k];
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
expected[i,j,k] := (ColMarg[j] / newcolmarg[j]) * expected[i,j,k];
// step 3: initialize new slice margins and calculate expected values
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
newslicemarg[k] := newslicemarg[k] + expected[i,j,k];
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
expected[i,j,k] := (SliceMarg[k] / newslicemarg[k]) * expected[i,j,k];
// step 4: check for change and quit if smaller than delta
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
if abs(APrevious[i,j,k]-expected[i,j,k]) > difference then
difference := abs(APrevious[i,j,k]-expected[i,j,k]);
if difference < delta then
begin
newtotal := 0.0;
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
newtotal := newtotal + expected[i,j,k];
exit;
end
else begin
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
APrevious[i,j,k] := expected[i,j,k];
for i := 1 to Nrows do newrowmarg[i] := 0.0;
for j := 1 to Ncols do newcolmarg[j] := 0.0;
for k := 1 to Nslices do newslicemarg[k] := 0.0;
difference := 0.0;
goto step;
end;
Aprevious := nil;
end;
//-------------------------------------------------------------------
procedure TABCLogLinearFrm.PrintTable(Nrows, Ncols, Nslices : integer;
VAR Data : DblDyneCube;
VAR RowMarg : DblDyneVec;
VAR ColMarg : DblDyneVec;
VAR SliceMarg : DblDyneVec;
Total : double);
var
astr : string;
i, j,k : integer;
begin
astr := ' A B C VALUE ';
for i := 1 to Nrows do
begin
for j := 1 to Ncols do
begin
for k := 1 to Nslices do
begin
astr := format('%3d %3d %3d %8.3f',[i,j,k,Data[i,j,k]]);
OutPutFrm.RichEdit.Lines.Add(astr);
end;
end;
end;
astr := 'Totals for Dimension A';
OutPutFrm.RichEdit.Lines.Add(astr);
for i := 1 to Nrows do
begin
astr := format('Row %d %8.3f',[i,RowMarg[i]]);
OutPutFrm.RichEdit.Lines.Add(astr);
end;
astr := 'Totals for Dimension B';
OutPutFrm.RichEdit.Lines.Add(astr);
for j := 1 to Ncols do
begin
astr := format('Col %d %8.3f',[j,ColMarg[j]]);
OutPutFrm.RichEdit.Lines.Add(astr);
end;
astr := 'Totals for Dimension C';
OutPutFrm.RichEdit.Lines.Add(astr);
for k := 1 to Nslices do
begin
astr := format('Slice %d %8.3f',[k,SliceMarg[k]]);
OutPutFrm.RichEdit.Lines.Add(astr);
end;
end;
//-------------------------------------------------------------------
procedure TABCLogLinearFrm.PrintLamdas(Nrows,Ncols,Nslices : integer;
Var CellLambdas : DblDyneQuad;
mu : double);
var
i, j, k, l : integer;
astr : string;
begin
astr := 'ROW COL SLICE MU LAMBDA A LAMBDA B LAMBDA C';
OutPutFrm.RichEdit.Lines.Add(astr);
astr := ' LAMBDA AB LAMBDA AC LAMBDA BC LAMBDA ABC';
OutPutFrm.RichEdit.Lines.Add(astr);
OutPutFrm.RichEdit.Lines.Add('');
for i := 1 to Nrows do
begin
for j := 1 to Ncols do
begin
for k := 1 to Nslices do
begin
astr := format('%3d %3d %3d ',[i,j,k]);
astr := astr + format(' %8.3f ',[mu]);
for l := 1 to 3 do
astr := astr + format(' %8.3f ',[CellLambdas[i,j,k,l]]);
OutPutFrm.RichEdit.Lines.Add(astr);
astr := ' ';
for l := 4 to 7 do
astr := astr + format(' %8.3f ',[CellLambdas[i,j,k,l]]);
OutPutFrm.RichEdit.Lines.Add(astr);
OutPutFrm.RichEdit.Lines.Add('');
end;
end;
end;
end;
//-------------------------------------------------------------------
procedure TABCLogLinearFrm.PrintMatrix(VAR X : DblDyneMat;
Nrows, Ncols: integer;
Title : string);
Label loop;
var
i, j : integer;
first, last : integer;
astr : string;
begin
OutPutFrm.RichEdit.Lines.Add(Title);
OutPutFrm.RichEdit.Lines.Add('');
first := 1;
last := Ncols;
if last > 6 then last := 6;
loop:
astr := 'ROW/COL';
for j := first to last do astr := astr + format(' %3d ',[j]);
OutPutFrm.RichEdit.Lines.Add(astr);
for i := 1 to Nrows do
begin
astr := format(' %3d ',[i]);
for j := first to last do astr := astr + format(' %8.3f ',[X[i,j]]);
OutPutFrm.RichEdit.Lines.Add(astr);
end;
if last < Ncols then
begin
first := last + 1;
last := Ncols;
if last > 6 then last := 6;
goto loop;
end;
OutPutFrm.RichEdit.Lines.Add('');
end;
initialization
{$I abcloglinunit.lrs}
end.

View File

@ -0,0 +1,956 @@
unit ABRAnovaUnit;
{$mode objfpc}{$H+}
interface
uses
contexthelpunit,Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons, MainUnit, OutPutUnit, FunctionsLib, GraphLib, Globals,
DataProcs, MatrixLib;
type
{ TABRAnovaFrm }
TABRAnovaFrm = class(TForm)
AInBtn: TBitBtn;
AOutBtn: TBitBtn;
BInBtn: TBitBtn;
BOutBtn: TBitBtn;
CInBtn: TBitBtn;
COutBtn: TBitBtn;
ACodes: TEdit;
BCodes: TEdit;
HelpBtn: TButton;
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
TestChk: TCheckBox;
PlotChk: TCheckBox;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
CList: TListBox;
VarList: TListBox;
procedure AInBtnClick(Sender: TObject);
procedure AOutBtnClick(Sender: TObject);
procedure BInBtnClick(Sender: TObject);
procedure BOutBtnClick(Sender: TObject);
procedure CInBtnClick(Sender: TObject);
procedure ComputeBtnClick(Sender: TObject);
procedure COutBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
private
{ private declarations }
ColNoSelected : IntDyneVec;
ACol, BCol, NoSelected, MinA, MaxA, MinB, MaxB, NoAGrps, NoBGrps : integer;
group, MaxRows, MaxCols, TotalN, NinGrp : integer;
SubjTot, GrandTotal, SumXSqr : double;
DFA, DFB, DFC, DFAB, DFAC, DFBC, DFABC, DFBetween : double;
DFerrorBetween, DFWithin, DFerrorWithin : double;
SSA, SSB, SSC, SSAB, SSAC, SSBC, SSABC, SSBetweenSubjects : double;
SSerrorBetween, SSWithinSubjects, SSerrorWithin : double;
MSA, MSB, MSC, MSAB, MSAC, MSBC, MSABC, MSerrorBetween, MSerrorWithin : double;
FA, FB, FC, FAB, FAC, FBC, FABC : double;
ProbA, ProbB, ProbC, ProbAB, ProbAC, ProbBC, ProbABC : double;
Acnt, Bcnt, Ccnt : IntDyneVec;
ASums, BSums, CSums, SumPSqr : DblDyneVec;
ABSums, ACSums, BCSums, AMatrix, PooledMat : DblDyneMat;
ABCSums : DblDyneCube;
ABCNcnt : IntDyneCube;
RowLabels, ColLabels : StrDyneVec;
selected : integer;
procedure InitData(Sender: TObject);
procedure GetData(Sender: TObject);
procedure Calculate(Sender: TObject);
procedure Summarize(Sender: TObject);
procedure MeansReport(Sender: TObject);
procedure BoxTests(Sender: TObject);
procedure GraphMeans(Sender: TObject);
procedure CleanUp(Sender: TObject);
public
{ public declarations }
end;
var
ABRAnovaFrm: TABRAnovaFrm;
implementation
{ TABRAnovaFrm }
procedure TABRAnovaFrm.ResetBtnClick(Sender: TObject);
VAR i : integer;
begin
VarList.Items.Clear;
CList.Items.Clear;
ACodes.Text := '';
BCodes.Text := '';
AinBtn.Visible := true;
AOutBtn.Visible := false;
BInBtn.Visible := true;
BOutBtn.Visible := false;
CInBtn.Visible := true;
COutBtn.Visible := false;
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
PlotChk.Checked := false;
TestChk.Checked := false;
end;
procedure TABRAnovaFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TABRAnovaFrm.HelpBtnClick(Sender: TObject);
begin
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
procedure TABRAnovaFrm.AInBtnClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
ACodes.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
AinBtn.Visible := false;
AOutBtn.Visible := true;
end;
procedure TABRAnovaFrm.AOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(ACodes.Text);
ACodes.Text := '';
AinBtn.Visible := true;
AOutBtn.Visible := false;
end;
procedure TABRAnovaFrm.BInBtnClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
BCodes.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
BInBtn.Visible := false;
BOutBtn.Visible := true;
end;
procedure TABRAnovaFrm.BOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(BCodes.Text);
BCodes.Text := '';
BInBtn.Visible := true;
BOutBtn.Visible := false;
end;
procedure TABRAnovaFrm.CInBtnClick(Sender: TObject);
VAR i, index : integer;
begin
index := VarList.Items.Count;
i := 0;
while i < index do
begin
if (VarList.Selected[i]) then
begin
CList.Items.Add(VarList.Items.Strings[i]);
VarList.Items.Delete(i);
index := index - 1;
i := 0;
end
else i := i + 1;
end;
COutBtn.Visible := true;
end;
procedure TABRAnovaFrm.ComputeBtnClick(Sender: TObject);
begin
InitData(self);
GetData(self);
Calculate(self);
Summarize(self);
MeansReport(self);
if TestChk.Checked then BoxTests(self);
if PlotChk.Checked then GraphMeans(self);
CleanUp(self);
end;
procedure TABRAnovaFrm.COutBtnClick(Sender: TObject);
VAR index : integer;
begin
index := CList.ItemIndex;
if index < 0 then
begin
COutBtn.Visible := false;
exit;
end;
VarList.Items.Add(CList.Items.Strings[index]);
CList.Items.Delete(index);
end;
procedure TABRAnovaFrm.InitData(Sender: TObject);
var
cellstring : string;
i, j, k : integer;
begin
SetLength(ColNoSelected,NoVariables);
ACol := 0;
BCol := 0;
for i := 1 to NoVariables do
begin
cellstring := OS3MainFrm.DataGrid.Cells[i,0];
if (cellstring = ACodes.Text) then ACol := i;
if (cellstring = BCodes.Text) then BCol := i;
end;
if ( (ACol = 0) or (BCol = 0)) then
begin
ShowMessage('ERROR! Select a variable for the A and B Variable Codes.');
exit;
end;
NoSelected := CList.Items.Count;
MinA := 10000;
MaxA := -10000;
MinB := 10000;
MaxB := -10000;
for i := 1 to NoCases do
begin
if NOT ValidValue(i,ACol) then continue;
cellstring := Trim(OS3MainFrm.DataGrid.Cells[ACol,i]);
group := round(StrToFloat(cellstring));
if (group > MaxA) then MaxA := group;
if (group < MinA) then MinA := group;
cellstring := Trim(OS3MainFrm.DataGrid.Cells[BCol,i]);
if Not ValidValue(i,BCol) then continue;
group := round(StrToFLoat(cellstring));
if (group > MaxB) then MaxB := group;
if (group < MinB) then MinB := group;
end;
NoAGrps := MaxA - MinA + 1;
NoBGrps := MaxB - MinB + 1;
MaxRows := NoAGrps * NoBGrps;
MaxCols := NoSelected;
if (NoBGrps > NoSelected) then MaxCols := NoBGrps;
if (MaxCols > MaxRows) then MaxRows := MaxCols;
// allocate storage for arrays
SetLength(ASums,NoAGrps);
SetLength(Bsums,NoBGrps);
SetLength(Csums,NoCases);
SetLength(ABSums,NoAGrps,NoBGrps);
SetLength(ACSums,NoAGrps,NoSelected);
SetLength(BCSums,NoBGrps,NoSelected);
SetLength(AMatrix,MaxRows,MaxRows);
SetLength(SumPSqr,NoCases);
SetLength(Acnt,NoAGrps);
SetLength(Bcnt,NoBGrps);
SetLength(Ccnt,MaxRows);
SetLength(RowLabels,NoSelected);
SetLength(ColLabels,NoSelected);
SetLength(ABCSums,NoAGrps,NoBGrps,NoSelected);
SetLength(ABCNcnt,NoAGrps,NoBGrps,NoSelected);
// initialize arrays
for i := 0 to NoAGrps-1 do
begin
ASums[i] := 0.0;
Acnt[i] := 0;
for j := 0 to NoBGrps-1 do
begin
ABSums[i,j] := 0.0;
for k := 0 to NoSelected-1 do
begin
ABCSums[i,j,k] := 0.0;
ABCNcnt[i,j,k] := 0;
end;
end;
for j := 0 to NoSelected-1 do
begin
ACSums[i,j] := 0.0;
end;
end;
for i := 0 to NoBGrps-1 do
begin
BSums[i] := 0.0;
Bcnt[i] := 0;
for j := 0 to NoSelected-1 do
begin
BCSums[i,j] := 0.0;
end;
end;
for i := 0 to NoSelected-1 do
begin
CSums[i] := 0.0;
Ccnt[i] := 0;
end;
for i := 0 to NoCases-1 do SumPSqr[i] := 0.0;
GrandTotal := 0.0;
TotalN := 0;
SumXSqr := 0.0;
end;
procedure TABRAnovaFrm.GetData(Sender: TObject);
var
i, j, SubjA, SubjB : integer;
cellstring : string;
X : double;
begin
for i := 0 to NoSelected - 1 do
begin
cellstring := CList.Items.Strings[i];
for j := 1 to NoVariables do
begin
if (OS3MainFrm.DataGrid.Cells[j,0] = cellstring) then ColNoSelected[i] := j;
end;
end;
ColNoSelected[NoSelected] := ACol;
ColNoSelected[NoSelected+1] := BCol;
selected := NoSelected + 2;
// read data and store sums
for i := 1 to NoCases do
begin
if not GoodRecord(i,selected,ColNoSelected) then continue;
SubjA := round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[ACol,i])));
SubjA := SubjA - MinA + 1;
SubjB := round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[BCol,i])));
SubjB := SubjB - MinB + 1;
SubjTot := 0.0;
for j := 1 to NoSelected do
begin
X := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[ColNoSelected[j-1],i]));
SubjTot := SubjTot + X;
SumXSqr := SumXSqr + (X * X);
ABCSums[SubjA-1,SubjB-1,j-1] := ABCSums[SubjA-1,SubjB-1,j-1] + X;
ABCNcnt[SubjA-1,SubjB-1,j-1] := ABCNcnt[SubjA-1,SubjB-1,j-1] + 1;
Acnt[SubjA-1] := Acnt[SubjA-1] + 1;
Bcnt[SubjB-1] := Bcnt[SubjB-1] + 1;
Ccnt[j-1] := Ccnt[j-1] + 1;
TotalN := TotalN + 1;
end;
SumPSqr[i-1] := SumPSqr[i-1] + (SubjTot * SubjTot);
GrandTotal := GrandTotal + SubjTot;
NinGrp := ABCNcnt[0,0,0];
end;
end;
procedure TABRAnovaFrm.Calculate(Sender: TObject);
var
SumA, SumB, SumC, SumAB, SumAC, SumBC, SumABC : double;
Term1, Term2, Term3, Term4, Term5, Term6, Term7, Term8, Term9, Term10 : double;
i, j, k, CountA, CountB, CountC, CountAB, CountAC, CountBC : integer;
begin
Term1 := (GrandTotal * GrandTotal) / TotalN;
Term2 := SumXSqr;
Term3 := 0.0;
for i := 1 to NoAGrps do
begin
SumA := 0.0;
countA := countA + Acnt[i-1];
for j := 1 to NoBGrps do
for k := 1 to NoSelected do SumA := SumA + ABCSums[i-1,j-1,k-1];
ASums[i-1] := ASums[i-1] + SumA;
Term3 := Term3 + (SumA * SumA);
end;
Term3 := Term3 / (NinGrp * NoBGrps * NoSelected);
Term4 := 0;
for j := 1 to NoBGrps do
begin
SumB := 0.0;
CountB := CountB + Bcnt[j-1];
for i := 1 to NoAGrps do
for k := 1 to NoSelected do SumB := SumB + ABCSums[i-1,j-1,k-1];
BSums[j-1] := BSums[j-1] + SumB;
Term4 := Term4 + (SumB * SumB);
end;
Term4 := Term4 / (NinGrp * NoAGrps * NoSelected);
Term5 := 0.0;
for k := 1 to NoSelected do
begin
SumC := 0.0;
CountC := CountC + Ccnt[k-1];
for i := 1 to NoAGrps do
for j := 1 to NoBGrps do SumC := SumC + ABCSums[i-1,j-1,k-1];
CSums[k-1] := CSums[k-1] + SumC;
Term5 := Term5 + (SumC * SumC);
end;
Term5 := Term5 / (NinGrp * NoAGrps * NoBGrps);
Term6 := 0.0;
for i := 1 to NoAGrps do
begin
for j := 1 to NoBGrps do
begin
SumAB := 0.0;
//CountAB := CountAB + ABcnt^[i,j];
for k := 1 to NoSelected do SumAB := SumAB + ABCSums[i-1,j-1,k-1];
ABSums[i-1,j-1] := ABSums[i-1,j-1] + SumAB;
Term6 := Term6 + (SumAB * SumAB);
end;
end;
Term6 := Term6 / (NinGrp * NoSelected);
Term7 := 0.0;
for i := 1 to NoAGrps do
begin
for k := 1 to NoSelected do
begin
SumAC := 0.0;
for j := 1 to NoBGrps do SumAC := SumAC + ABCSums[i-1,j-1,k-1];
ACSums[i-1,k-1] := ACSums[i-1,k-1] + SumAC;
Term7 := Term7 + (SumAC * SumAC);
end;
end;
Term7 := Term7 / (NinGrp * NoBGrps);
Term8 := 0.0;
for j := 1 to NoBGrps do
begin
for k := 1 to NoSelected do
begin
SumBC := 0.0;
for i := 1 to NoAGrps do SumBC := SumBC + ABCSums[i-1,j-1,k-1];
BCSums[j-1,k-1] := BCSums[j-1,k-1] + SumBC;
Term8 := Term8 + (SumBC * SumBC);
end;
end;
Term8 := Term8 / (NinGrp * NoAGrps);
Term9 := 0.0;
for i := 1 to NoAGrps do
begin
for j := 1 to NoBGrps do
begin
for k := 1 to NoSelected do
begin
SumABC := ABCSums[i-1,j-1,k-1];
//CountABC := CountABC + ABCNcnt[i,j,k];
Term9 := Term9 + (SumABC * SumABC);
end;
end;
end;
Term9 := Term9 / NinGrp;
Term10 := 0.0;
for i := 1 to NoCases do Term10 := Term10 + SumPSqr[i-1];
Term10 := Term10 / NoSelected;
//Get DF, SS, MS, F and Probabilities
DFBetween := (NinGrp * NoAGrps * NoBGrps) - 1.0;
DFA := NoAGrps - 1.0;
DFB := NoBGrps - 1.0;
DFAB := (NoAGrps - 1.0) * (NoBGrps - 1.0);
DFerrorBetween := (NoAGrps * NoBGrps) * (NinGrp - 1.0);
DFWithin := (NinGrp * NoAGrps * NoBGrps) * (NoSelected - 1.0);
DFC := NoSelected - 1.0;
DFAC := (NoAGrps - 1.0) * (NoSelected - 1.0);
DFBC := (NoBGrps - 1.0) * (NoSelected - 1.0);
DFABC := (NoAGrps - 1.0) * (NoBGrps - 1.0) * (NoSelected - 1.0);
DFerrorWithin := NoAGrps * NoBGrps * (NinGrp - 1.0) * (NoSelected - 1.0);
SSBetweenSubjects := Term10 - Term1;
SSA := Term3 - Term1;
SSB := Term4 - Term1;
SSAB := Term6 - Term3 - Term4 + Term1;
SSerrorBetween := Term10 - Term6;
SSWithinSubjects := Term2 - Term10;
SSC := Term5 - Term1;
SSAC := Term7 - Term3 - Term5 + Term1;
SSBC := Term8 - Term4 - Term5 + Term1;
SSABC := Term9 - Term6 - Term7 - Term8 + Term3 + Term4 + Term5 - Term1;
SSerrorWithin := Term2 - Term9 - Term10 + Term6;
MSA := SSA / DFA;
MSB := SSB / DFB;
MSAB := SSAB / DFAB;
MSerrorBetween := SSerrorBetween / DFerrorBetween;
MSC := SSC / DFC;
MSAC := SSAC / DFAC;
MSBC := SSBC / DFBC;
MSABC := SSABC / DFABC;
MSerrorWithin := SSerrorWithin / DFerrorWithin;
FA := MSA / MSerrorBetween;
FB := MSB / MSerrorBetween;
FAB := MSAB / MSerrorBetween;
FC := MSC / MSerrorWithin;
FAC := MSAC / MSerrorWithin;
FBC := MSBC / MSerrorWithin;
FABC := MSABC / MSerrorWithin;
ProbA := probf(FA,DFA,DFerrorBetween);
ProbB := probf(FB,DFB,DFerrorBetween);
ProbAB := probf(FAB,DFAB,DFerrorBetween);
ProbC := probf(FC,DFC,DFerrorWithin);
ProbAC := probf(FAC,DFAC,DFerrorWithin);
ProbBC := probf(FBC,DFBC,DFerrorWithin);
ProbABC := probf(FABC,DFABC,DFerrorWithin);
end;
procedure TABRAnovaFrm.Summarize(Sender: TObject);
var
outline : string;
begin
OutPutFrm.RichEdit.Clear;
OutPutFrm.RichEdit.Lines.Add('SOURCE DF SS MS F PROB.');
OutPutFrm.RichEdit.Lines.Add('');
outline := format('Between Subjects %5.0f%10.3f',[DFBetween,SSBetweenSubjects]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format(' A Effects %5.0f%10.3f%10.3f%10.3f%10.3f',
[DFA, SSA, MSA, FA, ProbA]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format(' B Effects %5.0f%10.3f%10.3f%10.3f%10.3f',
[DFB, SSB, MSB, FB, ProbB]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format(' AB Effects %5.0f%10.3f%10.3f%10.3f%10.3f',
[DFAB, SSAB, MSAB, FAB, ProbAB]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format(' Error Between %5.0f%10.3f%10.3f',
[DFerrorBetween,SSerrorBetween,MSerrorBetween]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
outline := format('Within Subjects %5.0f%10.3f',
[DFWithin,SSWithinSubjects]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format(' C Replications %5.0f%10.3f%10.3f%10.3f%10.3f',
[DFC, SSC, MSC, FC, ProbC]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format(' AC Effects %5.0f%10.3f%10.3f%10.3f%10.3f',
[DFAC, SSAC, MSAC, FAC, ProbAC]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format(' BC Effects %5.0f%10.3f%10.3f%10.3f%10.3f',
[DFBC, SSBC, MSBC, FBC, ProbBC]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format(' ABC Effects %5.0f%10.3f%10.3f%10.3f%10.3f',
[DFABC, SSABC, MSABC, FABC, ProbABC]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format(' Error Within %5.0f%10.3f%10.3f',
[DFerrorWithin, SSerrorWithin, MSerrorWithin]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
outline := format('Total %5.0f%10.3f',
[DFBetween + DFWithin, SSBetweenSubjects + SSWithinSubjects]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.ShowModal;
end;
procedure TABRAnovaFrm.MeansReport(Sender: TObject);
var
ColHeader, LabelStr : string;
Title : string;
i, j, k, row : integer;
begin
row := 1;
OutPutFrm.RichEdit.Clear;
Title := 'ABR Means Table';
ColHeader := 'Repeated Measures';
for i := 1 to NoAGrps do
begin
for j := 1 to NoBGrps do
begin
LabelStr := format('A%d B%d',[i,j]);
RowLabels[row-1] := LabelStr;
for k := 1 to NoSelected do
begin
AMatrix[row-1,k-1] := ABCSums[i-1,j-1,k-1] / NinGrp;
ColLabels[k-1] := OS3MainFrm.DataGrid.Cells[ColNoSelected[k-1],0];
end;
row := row + 1;
end;
end;
MAT_PRINT(AMatrix,MaxRows,NoSelected,Title,RowLabels,ColLabels,NinGrp);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('');
Title := 'AB Means Table';
ColHeader := 'B Levels';
for i := 1 to NoAGrps do
begin
LabelStr := format('A%d',[i]);
RowLabels[i-1] := LabelStr;
for j := 1 to NoBGrps do
begin
AMatrix[i-1,j-1] := ABSums[i-1,j-1] / (NinGrp * NoSelected);
end;
end;
for j := 1 to NoBGrps do
begin
LabelStr := format('B %d',[j]);
ColLabels[j-1] := LabelStr;
end;
MAT_PRINT(AMatrix,NoAgrps,NoBgrps,Title,RowLabels,ColLabels,NinGrp*NoSelected);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('');
Title := 'AC Means Table';
ColHeader := 'C Levels';
for i := 1 to NoAGrps do
begin
LabelStr := format('A%d',[i-1]);
RowLabels[i-1] := LabelStr;
for j := 1 to NoSelected do
AMatrix[i-1,j-1] := ACSums[i-1,j-1] / (NinGrp * NoBGrps);
end;
for j := 1 to NoSelected do
begin
LabelStr := format('C %d',[j-1]);
ColLabels[j-1] := LabelStr;
end;
MAT_PRINT(AMatrix,NoAGrps,NoSelected,Title,RowLabels,ColLabels,NinGrp*NoBGrps);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('');
Title := 'BC Means Table';
ColHeader := 'C Levels';
for i := 1 to NoBGrps do
begin
LabelStr := format('B%d',[i]);
RowLabels[i-1] := LabelStr;
for j := 1 to NoSelected do
begin
AMatrix[i-1,j-1] := BCSums[i-1,j-1] / (NinGrp * NoAGrps);
end;
end;
for j := 1 to NoSelected do
begin
LabelStr := format('C %d',[j]);
ColLabels[j-1] := LabelStr;
end;
MAT_PRINT(AMatrix,NoBGrps,NoSelected,Title,RowLabels,ColLabels,NinGrp*NoAGrps);
OutPutFrm.ShowModal;
end;
procedure TABRAnovaFrm.BoxTests(Sender: TObject);
var
XVector, XSums : DblDyneVec;
DetMat, MeanCovMat : DblDyneMat;
Det, M1, M2, Sum1, C1, C2, f1, f2, chi, ProbChi, X, avgvar,avgcov : double;
ColHeader, LabelStr : string;
Title : string;
i, j, k, l, row, SubjA, SubjB, N, p, quad : integer;
errorcode : boolean;
begin
SetLength(XVector,NoSelected);
SetLength(XSums,NoSelected);
SetLength(DetMat,NoSelected+1,NoSelected+1);
SetLength(MeanCovMat,NoSelected+1,NoSelected+1);
SetLength(PooledMat,NoSelected+1,NoSelected+1);
for i := 1 to NoSelected do
begin
LabelStr := format('C%d',[i]);
RowLabels[i-1] := LabelStr;
ColLabels[i-1] := LabelStr;
for j := 1 to NoSelected do PooledMat[i-1,j-1] := 0.0;
end;
// get variance-covariance AMatrix for the repeated measures within
// each combination of A and B levels. Pool them for the pooled
// covariance AMatrix. Get Determinants of each AMatrix.
OutPutFrm.RichEdit.Clear;
Sum1 := 0.0;
for i := 1 to NoAGrps do
begin
for j := 1 to NoBGrps do
begin
LabelStr := format('Variance-Covariance AMatrix for A%d B%d',
[i,j]);
Title := LabelStr;
ColHeader := 'C Levels';
// initialize AMatrix for this combination
for k := 1 to NoSelected do
begin
for l := 1 to NoSelected do AMatrix[k-1,0] := 0.0;
XSums[k-1] := 0.0;
end;
// read data and add to covariances
for row := 1 to NoCases do
begin
if Not GoodRecord(row,selected,ColNoSelected) then continue;
SubjA := round(StrToFLoat(Trim(OS3MainFrm.DataGrid.Cells[ACol,row])));
SubjA := SubjA - MinA + 1;
SubjB := round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[BCol,row])));
SubjB := SubjB - MinB + 1;
if ((SubjA <> i)or(SubjB <> j)) then continue;
for k := 1 to NoSelected do
begin
X := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[ColNoSelected[k-1],row]));
XVector[k-1] := X;
XSums[k-1] := XSums[k-1] + X;
end;
for k := 1 to NoSelected do
begin
for l := 1 to NoSelected do
begin
AMatrix[k-1,l-1] := AMatrix[k-1,l-1] + (XVector[k-1] * XVector[l-1]);
end;
end;
end; // next case
// convert sums of cross-products to variance-covariance
for k := 1 to NoSelected do
begin
for l := 1 to NoSelected do
begin
AMatrix[k-1,l-1] := AMatrix[k-1,l-1] - (XSums[k-1]*XSums[l-1] /
NinGrp);
AMatrix[k-1,l-1] := AMatrix[k-1,l-1] / (NinGrp - 1);
PooledMat[k-1,l-1] := PooledMat[k-1,l-1] + AMatrix[k-1,l-1];
end;
end;
MAT_PRINT(AMatrix,NoSelected,NoSelected,Title,RowLabels,ColLabels,NoCases);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('');
for k := 1 to NoSelected do
for l := 1 to NoSelected do
DetMat[k-1,l-1] := AMatrix[k-1,l-1];
Determ(DetMat,NoSelected, NoSelected,Det,errorcode);
if (Det > 0.0e35) then Sum1 := sum1 + (NinGrp * ln(Det))
else ShowMessage('WARNING! Determinant of a covariance AMatrix near 0.');
end;// next B level
end; // next A level
// get pooled variance-covariance
for i := 1 to NoSelected do
for j := 1 to NoSelected do
PooledMat[i-1,j-1] := PooledMat[i-1,j-1] / (NoAGrps * NoBGrps);
Title := 'Pooled Variance-Covariance AMatrix';
MAT_PRINT(PooledMat,NoSelected,NoSelected,Title,RowLabels,ColLabels,NoCases);
// calculate F-Max for variance homogeneity
// calculate Box test for covariance homogeneity
for i := 1 to NoSelected do
for j := 1 to NoSelected do
DetMat[i-1,j-1] := PooledMat[i-1,j-1];
Determ(DetMat,NoSelected,NoSelected,Det,errorcode);
if (Det > 0.0e35) then
begin
M1 := (NinGrp*NoAGrps*NoBGrps * ln(Det)) - Sum1;
C1 := (2.0 * NoSelected * NoSelected + 3.0 * NoSelected - 1.0) /
(6.0 * (NoSelected+1) * (NoAGrps * NoBGrps - 1.0));
C1 := C1 * ( (NoAGrps * NoBGrps * (1.0 / NinGrp)) - (1.0 / (NinGrp * NoAGrps * NoBGrps)));
f1 := (NoSelected * (NoSelected + 1.0) * (NoAGrps * NoBGrps - 1.0))/2.0;
chi := (1.0 - C1) * M1;
ProbChi := 1.0 - chisquaredprob(chi,round(f1));
OutPutFrm.RichEdit.Lines.Add('');
LabelStr := 'Test that sample covariances are from same population:';
OutPutFrm.RichEdit.Lines.Add(LabelStr);
LabelStr := format('Chi-Squared := %10.3f with %d degrees of freedom.',
[chi,round(f1)]);
OutPutFrm.RichEdit.Lines.Add(LabelStr);
LabelStr := format('Probability of > Chi-Squared := %10.3f',[ProbChi]);
OutPutFrm.RichEdit.Lines.Add(LabelStr);
OutPutFrm.RichEdit.Lines.Add('');
end
else ShowMessage('WARNING! Determinant of a pooled covariance AMatrix near 0.');
// test that pooled covariance has form of equal variances and equal covariances
if (Det > 0.0e35) then // determinant of pooled covariance > 0
begin
M2 := Det;
avgvar := 0.0;
for i := 1 to NoSelected do avgvar := avgvar + PooledMat[i-1,i-1];
avgvar := avgvar / NoSelected;
avgcov := 0.0;
for i := 1 to NoSelected-1 do
for j := i+1 to NoSelected do
avgcov := avgcov + PooledMat[i-1,j-1];
avgcov := avgcov / (NoSelected * (NoSelected - 1) / 2);
for i := 1 to NoSelected do DetMat[i-1,i-1] := avgvar;
for i := 1 to NoSelected-1 do
begin
for j := i+1 to NoSelected do
begin
DetMat[i-1,j-1] := avgcov;
DetMat[j-1,i-1] := avgcov;
end;
end;
Determ(DetMat,NoSelected,NoSelected,Det,errorcode);
if (Det > 0.0e35) then
begin
N := NoAGrps * NoBGrps * NinGrp;
p := NoAGrps * NoBGrps;
quad := NoSelected * NoSelected + NoSelected - 4;
M2 := ln(M2 / Det);
M2 := -(N - p) * M2;
C2 := NoSelected * (NoSelected + 1) * (NoSelected + 1) *
(2 * NoSelected - 3);
C2 := C2 / (6 * (N - p) * (NoSelected - 1) * quad);
f2 := quad / 2;
chi := (1.0 - C2) * M2;
ProbChi := 1.0 - chisquaredprob(chi,round(f2));
OutPutFrm.RichEdit.Lines.Add('');
LabelStr := 'Test that variance-covariances AMatrix has equal variances and equal covariances:';
OutPutFrm.RichEdit.Lines.Add(LabelStr);
LabelStr := format('Chi-Squared := %10.3f with %d degrees of freedom.',
[chi,round(f2)]);
OutPutFrm.RichEdit.Lines.Add(LabelStr);
LabelStr := format('Probability of > Chi-Squared := %10.3f',[ProbChi]);
OutPutFrm.RichEdit.Lines.Add(LabelStr);
OutPutFrm.RichEdit.Lines.Add('');
end
else ShowMessage('WARNING! Determinant of theoretical covariance AMatrix near zero.');
end;
OutPutFrm.ShowModal;
// cleanup
PooledMat := nil;
MeanCovMat := nil;
DetMat := nil;
XSums := nil;
XVector := nil;
end;
procedure TABRAnovaFrm.GraphMeans(Sender: TObject);
var
MaxMean : double;
outline : string;
i, j : integer;
begin
// Do AB interaction
// Get maximum cell mean
MaxMean := ABSums[0,0] / (NinGrp*NoSelected);
SetLength(GraphFrm.Ypoints,NoAGrps,NoBGrps);
SetLength(GraphFrm.Xpoints,1,NoBGrps);
for i := 1 to NoAGrps do
begin
outline := 'A ' + IntToStr(i);
GraphFrm.SetLabels[i] := outline;
for j := 1 to NoBGrps do
begin
GraphFrm.Ypoints[i-1,j-1] := ABSums[i-1,j-1] / (NinGrp * NoSelected);
if GraphFrm.Ypoints[i-1,j-1] > MaxMean then MaxMean := GraphFrm.Ypoints[i-1,j-1];
end;
end;
for j := 1 to NoBGrps do
begin
GraphFrm.Xpoints[0,j-1] := j;
end;
GraphFrm.nosets := NoAGrps;
GraphFrm.nbars := NoBGrps;
GraphFrm.Heading := 'AxBxR ANOVA';
GraphFrm.XTitle := 'B TREATMENT GROUP';
GraphFrm.YTitle := 'Mean';
GraphFrm.barwideprop := 0.5;
GraphFrm.AutoScale := false;
GraphFrm.GraphType := 2; // 3d Vertical Bar Chart
GraphFrm.miny := 0.0;
GraphFrm.maxy := maxmean;
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.FloorColor := clLtGray;
GraphFrm.ShowBackWall := true;
GraphFrm.ShowModal;
// Do AC interaction
MaxMean := ACSums[0,0] / (NinGrp*NoBGrps);
SetLength(GraphFrm.Ypoints,NoAGrps,NoSelected);
SetLength(GraphFrm.Xpoints,1,NoSelected);
for i := 1 to NoAGrps do
begin
outline := 'A ' + IntToStr(i);
GraphFrm.SetLabels[i] := outline;
for j := 1 to NoSelected do
begin
GraphFrm.Ypoints[i-1,j-1] := ACSums[i-1,j-1] / (NinGrp * NoBGrps);
if GraphFrm.Ypoints[i-1,j-1] > MaxMean then MaxMean := GraphFrm.Ypoints[i-1,j-1];
end;
end;
for j := 1 to NoSelected do
begin
GraphFrm.Xpoints[0,j-1] := j;
end;
GraphFrm.nosets := NoAGrps;
GraphFrm.nbars := NoSelected;
GraphFrm.Heading := 'AxBxR ANOVA';
GraphFrm.XTitle := 'C TREATMENT (WITHIN SUBJECTS) GROUP';
GraphFrm.YTitle := 'Mean';
GraphFrm.barwideprop := 0.5;
GraphFrm.AutoScale := false;
GraphFrm.GraphType := 2; // 3d Vertical Bar Chart
GraphFrm.miny := 0.0;
GraphFrm.maxy := maxmean;
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.FloorColor := clLtGray;
GraphFrm.ShowBackWall := true;
GraphFrm.ShowModal;
// Do BC interaction
SetLength(GraphFrm.Ypoints,NoBGrps,NoSelected);
SetLength(GraphFrm.Xpoints,NoSelected);
MaxMean := BCSums[0,0] / (NinGrp*NoAGrps);
for i := 1 to NoBGrps do
for j := 1 to NoSelected do
if ((BCSums[i-1,j-1] / (NinGrp*NoAGrps)) > MaxMean) then
MaxMean := BCSums[i-1,j-1] / (NinGrp*NoAGrps);
for i := 1 to NoBGrps do
begin
outline := 'B ' + IntToStr(i);
GraphFrm.SetLabels[i] := outline;
for j := 1 to NoSelected do
begin
GraphFrm.Ypoints[i-1,j-1] := BCSums[i-1,j-1] / (NinGrp * NoAGrps);
if GraphFrm.Ypoints[i-1,j-1] > MaxMean then MaxMean := GraphFrm.Ypoints[i-1,j-1];
end;
end;
for j := 1 to NoSelected do
begin
GraphFrm.Xpoints[0,j-1] := j;
end;
GraphFrm.nosets := NoBGrps;
GraphFrm.nbars := NoSelected;
GraphFrm.Heading := 'AxBxR ANOVA';
GraphFrm.XTitle := 'C TREATMENT (WITHIN SUBJECTS) GROUP';
GraphFrm.YTitle := 'Mean';
GraphFrm.barwideprop := 0.5;
GraphFrm.AutoScale := false;
GraphFrm.GraphType := 2; // 3d Vertical Bar Chart
GraphFrm.miny := 0.0;
GraphFrm.maxy := maxmean;
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.FloorColor := clLtGray;
GraphFrm.ShowBackWall := true;
GraphFrm.ShowModal;
// cleanup the heap
GraphFrm.Xpoints := nil;
GraphFrm.Ypoints := nil;
end;
procedure TABRAnovaFrm.CleanUp(Sender: TObject);
begin
ABCNcnt := nil;
ABCSums := nil;
ColLabels := nil;
RowLabels := nil;
Ccnt := nil;
Bcnt := nil;
Acnt := nil;
SumPSqr := nil;
AMatrix := nil;
BCSums := nil;
ACSums := nil;
ABSums := nil;
CSums := nil;
BSums := nil;
ASums := nil;
ColNoSelected := nil;
end;
initialization
{$I abranovaunit.lrs}
end.

View File

@ -0,0 +1,418 @@
object ABRAnovaFrm: TABRAnovaFrm
Left = 228
Height = 355
Top = 104
Width = 534
Caption = 'AxBxR ANOVA (two between and repeated measures)'
ClientHeight = 355
ClientWidth = 534
OnShow = FormShow
LCLVersion = '0.9.29'
object Label1: TLabel
Left = 16
Height = 14
Top = 8
Width = 94
Caption = 'Available Variables:'
ParentColor = False
end
object Label2: TLabel
Left = 255
Height = 14
Top = 24
Width = 83
Caption = 'Factor A Variable'
ParentColor = False
end
object Label3: TLabel
Left = 255
Height = 14
Top = 96
Width = 82
Caption = 'Factor B Variable'
ParentColor = False
end
object Label4: TLabel
Left = 255
Height = 14
Top = 168
Width = 97
Caption = 'Repeated Measures'
ParentColor = False
end
object VarList: TListBox
Left = 16
Height = 239
Top = 24
Width = 181
ItemHeight = 0
MultiSelect = True
TabOrder = 0
end
object AInBtn: TBitBtn
Left = 211
Height = 26
Top = 24
Width = 30
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
}
NumGlyphs = 0
OnClick = AInBtnClick
TabOrder = 1
end
object AOutBtn: TBitBtn
Left = 211
Height = 26
Top = 56
Width = 30
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = AOutBtnClick
TabOrder = 2
end
object BInBtn: TBitBtn
Left = 210
Height = 26
Top = 96
Width = 30
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
}
NumGlyphs = 0
OnClick = BInBtnClick
TabOrder = 3
end
object BOutBtn: TBitBtn
Left = 210
Height = 26
Top = 128
Width = 30
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = BOutBtnClick
TabOrder = 4
end
object CInBtn: TBitBtn
Left = 211
Height = 26
Top = 168
Width = 30
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
}
NumGlyphs = 0
OnClick = CInBtnClick
TabOrder = 5
end
object COutBtn: TBitBtn
Left = 210
Height = 26
Top = 200
Width = 30
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = COutBtnClick
TabOrder = 6
end
object ACodes: TEdit
Left = 255
Height = 21
Top = 40
Width = 139
TabOrder = 7
Text = 'ACodes'
end
object BCodes: TEdit
Left = 255
Height = 21
Top = 112
Width = 138
TabOrder = 8
Text = 'BCodes'
end
object CList: TListBox
Left = 256
Height = 155
Top = 184
Width = 143
ItemHeight = 0
TabOrder = 9
end
object GroupBox1: TGroupBox
Left = 16
Height = 69
Top = 272
Width = 225
Caption = 'Options:'
ClientHeight = 51
ClientWidth = 221
TabOrder = 10
object PlotChk: TCheckBox
Left = 7
Height = 17
Top = 1
Width = 72
Caption = 'Plot Means'
TabOrder = 0
end
object TestChk: TCheckBox
Left = 9
Height = 17
Top = 24
Width = 177
Caption = 'Test Homogeneity of Covariance'
TabOrder = 1
end
end
object ResetBtn: TButton
Left = 440
Height = 27
Top = 24
Width = 89
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 11
end
object CancelBtn: TButton
Left = 440
Height = 27
Top = 72
Width = 89
Caption = 'Cancel'
ModalResult = 2
TabOrder = 12
end
object ComputeBtn: TButton
Left = 440
Height = 27
Top = 168
Width = 89
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 13
end
object ReturnBtn: TButton
Left = 440
Height = 27
Top = 216
Width = 89
Caption = 'Return'
ModalResult = 1
TabOrder = 14
end
object HelpBtn: TButton
Tag = 102
Left = 440
Height = 27
Top = 120
Width = 89
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 15
end
end

View File

@ -0,0 +1,347 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TABRAnovaFrm','FORMDATA',[
'TPF0'#12'TABRAnovaFrm'#11'ABRAnovaFrm'#4'Left'#3#228#0#6'Height'#3'c'#1#3'To'
+'p'#2'h'#5'Width'#3#22#2#7'Caption'#6'/AxBxR ANOVA (two between and repeated'
+' measures)'#12'ClientHeight'#3'c'#1#11'ClientWidth'#3#22#2#6'OnShow'#7#8'Fo'
+'rmShow'#10'LCLVersion'#6#8'0.9.30.4'#0#6'TLabel'#6'Label1'#4'Left'#2#16#6'H'
+'eight'#2#16#3'Top'#2#8#5'Width'#2'f'#7'Caption'#6#20'Available Variables:'
+#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#3#255#0#6'Height'#2#16#3
+'Top'#2#24#5'Width'#2'Z'#7'Caption'#6#17'Factor A Variable'#11'ParentColor'#8
+#0#0#6'TLabel'#6'Label3'#4'Left'#3#255#0#6'Height'#2#16#3'Top'#2'`'#5'Width'
+#2'Y'#7'Caption'#6#17'Factor B Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'L'
+'abel4'#4'Left'#3#255#0#6'Height'#2#16#3'Top'#3#168#0#5'Width'#2'g'#7'Captio'
+'n'#6#17'Repeated Measures'#11'ParentColor'#8#0#0#8'TListBox'#7'VarList'#4'L'
+'eft'#2#16#6'Height'#3#239#0#3'Top'#2#24#5'Width'#3#181#0#10'ItemHeight'#2#0
+#11'MultiSelect'#9#8'TabOrder'#2#0#0#0#7'TBitBtn'#6'AInBtn'#4'Left'#3#211#0#6
+'Height'#2#26#3'Top'#2#24#5'Width'#2#30#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0
+'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4
+#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'
+#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'
+#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0
+#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255
+#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137
+#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255
+#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158
+#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255
+#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255
+'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'
+#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'
+#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'AInBtnClick'#8'TabOrder'#2#1
,#0#0#7'TBitBtn'#7'AOutBtn'#4'Left'#3#211#0#6'Height'#2#26#3'Top'#2'8'#5'Widt'
+'h'#2#30#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0
+#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0
+#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247
+'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['
+#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255
+'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'
+#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206
+#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'
+#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0
+'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154#212#163
+#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199
+#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0
+#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135#255']'
+#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'
+#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7
+'OnClick'#7#12'AOutBtnClick'#8'TabOrder'#2#2#0#0#7'TBitBtn'#6'BInBtn'#4'Left'
+#3#210#0#6'Height'#2#26#3'Top'#2'`'#5'Width'#2#30#10'Glyph.Data'#10':'#4#0#0
+'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0
+#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'
+#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'
+#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255
+#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211
+#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130
+#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'
+#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171
+#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204
+#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'
+#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255
+'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161
+'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'BInBtnClick'#8'TabOrde'
+'r'#2#3#0#0#7'TBitBtn'#7'BOutBtn'#4'Left'#3#210#0#6'Height'#2#26#3'Top'#3#128
+#0#5'Width'#2#30#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0
+#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0
+#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153
+'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'
+#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255
+'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'
+#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195
+'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144
,#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255
+#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255
+#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135
+#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#12'BOutBtnClick'#8'TabOrder'#2#4#0#0#7'TBitBtn'#6'CInB'
+'tn'#4'Left'#3#211#0#6'Height'#2#26#3'Top'#3#168#0#5'Width'#2#30#10'Glyph.Da'
+'ta'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0
+#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184
+#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177
+'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255
+'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255
+#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255
+#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142
+#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'
+#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162
+#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255
+#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130
+#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199
+'t'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255
+'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'
+#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
,#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'CInBtnClick'#8
+'TabOrder'#2#5#0#0#7'TBitBtn'#7'COutBtn'#4'Left'#3#210#0#6'Height'#2#26#3'To'
+'p'#3#200#0#5'Width'#2#30#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0
+#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'
+#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'
+#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161
+'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131
+#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/'
+'x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'
+#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255
+#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132
+#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255
+#255#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154
+#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255
+#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201
+#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'
+#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'Num'
+'Glyphs'#2#0#7'OnClick'#7#12'COutBtnClick'#8'TabOrder'#2#6#0#0#5'TEdit'#6'AC'
+'odes'#4'Left'#3#255#0#6'Height'#2#23#3'Top'#2'('#5'Width'#3#139#0#8'TabOrde'
+'r'#2#7#4'Text'#6#6'ACodes'#0#0#5'TEdit'#6'BCodes'#4'Left'#3#255#0#6'Height'
+#2#23#3'Top'#2'p'#5'Width'#3#138#0#8'TabOrder'#2#8#4'Text'#6#6'BCodes'#0#0#8
+'TListBox'#5'CList'#4'Left'#3#0#1#6'Height'#3#155#0#3'Top'#3#184#0#5'Width'#3
+#143#0#10'ItemHeight'#2#0#8'TabOrder'#2#9#0#0#9'TGroupBox'#9'GroupBox1'#4'Le'
+'ft'#2#16#6'Height'#2'E'#3'Top'#3#16#1#5'Width'#3#225#0#7'Caption'#6#8'Optio'
+'ns:'#12'ClientHeight'#2'3'#11'ClientWidth'#3#221#0#8'TabOrder'#2#10#0#9'TCh'
+'eckBox'#7'PlotChk'#4'Left'#2#7#6'Height'#2#19#3'Top'#2#1#5'Width'#2'O'#7'Ca'
+'ption'#6#10'Plot Means'#8'TabOrder'#2#0#0#0#9'TCheckBox'#7'TestChk'#4'Left'
+#2#9#6'Height'#2#19#3'Top'#2#24#5'Width'#3#194#0#7'Caption'#6#30'Test Homoge'
+'neity of Covariance'#8'TabOrder'#2#1#0#0#0#7'TButton'#8'ResetBtn'#4'Left'#3
+#184#1#6'Height'#2#27#3'Top'#2#24#5'Width'#2'Y'#7'Caption'#6#5'Reset'#7'OnCl'
+'ick'#7#13'ResetBtnClick'#8'TabOrder'#2#11#0#0#7'TButton'#9'CancelBtn'#4'Lef'
+'t'#3#184#1#6'Height'#2#27#3'Top'#2'H'#5'Width'#2'Y'#7'Caption'#6#6'Cancel'
+#11'ModalResult'#2#2#8'TabOrder'#2#12#0#0#7'TButton'#10'ComputeBtn'#4'Left'#3
+#184#1#6'Height'#2#27#3'Top'#3#168#0#5'Width'#2'Y'#7'Caption'#6#7'Compute'#7
+'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#13#0#0#7'TButton'#9'ReturnBtn'
+#4'Left'#3#184#1#6'Height'#2#27#3'Top'#3#216#0#5'Width'#2'Y'#7'Caption'#6#6
+'Return'#11'ModalResult'#2#1#8'TabOrder'#2#14#0#0#7'TButton'#7'HelpBtn'#3'Ta'
+'g'#2'f'#4'Left'#3#184#1#6'Height'#2#27#3'Top'#2'x'#5'Width'#2'Y'#7'Caption'
+#6#4'Help'#7'OnClick'#7#12'HelpBtnClick'#8'TabOrder'#2#15#0#0#0
]);

View File

@ -0,0 +1,980 @@
unit AJKLogLinUnit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, Math, OutPutUnit, Buttons, ExtCtrls, MainUnit, FunctionsUnit,
GlobalDefs, DataProcs;
type cube = array[1..10,1..10,1..10] of double;
type matrix = array[1..10,1..10] of double;
type vector = array[1..10] of double;
type quad = array[1..10,1..10,1..10,1..7] of double;
type
TAJKLogLinearFrm = class(TForm)
Memo1: TMemo;
Label1: TLabel;
NrowsEdit: TEdit;
Label2: TLabel;
NcolsEdit: TEdit;
Label3: TLabel;
NslicesEdit: TEdit;
Grid: TStringGrid;
ComputeBtn: TButton;
ExitBtn: TButton;
FileFromGrp: TRadioGroup;
VarList: TListBox;
RowInBtn: TBitBtn;
RowOutBtn: TBitBtn;
Label4: TLabel;
RowVarEdit: TEdit;
ColInBtn: TBitBtn;
ColOutBtn: TBitBtn;
Label5: TLabel;
ColVarEdit: TEdit;
FreqInBtn: TBitBtn;
FreqOutBtn: TBitBtn;
Label6: TLabel;
FreqVarEdit: TEdit;
CancelBtn: TButton;
ResetBtn: TButton;
SliceBtnIn: TBitBtn;
SliceBtnOut: TBitBtn;
Label7: TLabel;
SliceVarEdit: TEdit;
procedure FormShow(Sender: TObject);
procedure ExitBtnClick(Sender: TObject);
procedure NrowsEditKeyPress(Sender: TObject; var Key: Char);
procedure NcolsEditKeyPress(Sender: TObject; var Key: Char);
procedure NslicesEditKeyPress(Sender: TObject; var Key: Char);
procedure ComputeBtnClick(Sender: TObject);
procedure ModelEffect(Nrows,Ncols,Nslices : integer;
VAR Data : cube;
VAR RowMarg : vector;
VAR ColMarg : vector;
VAR SliceMarg : vector;
VAR AB : matrix;
VAR AC : matrix;
VAR BC : matrix;
VAR Total : double;
Model : integer);
procedure Iterate(Nrows, Ncols, Nslices : integer;
VAR Data : cube;
VAR RowMarg : vector;
VAR ColMarg : vector;
VAR SliceMarg : vector;
VAR Total : double;
VAR Expected : cube;
VAR NewRowMarg : vector;
VAR NewColMarg : vector;
VAR NewSliceMarg : vector;
VAR NewTotal : double);
procedure PrintTable(Nrows, Ncols, Nslices : integer;
VAR Data : cube;
VAR RowMarg : vector;
VAR ColMarg : vector;
VAR SliceMarg : vector;
Total : double);
procedure PrintLamdas(Nrows,Ncols,Nslices : integer;
Var CellLambdas : Quad;
mu : double);
procedure PrintMatrix(VAR X : matrix;
Nrows, Ncols: integer;
Title : string);
procedure CancelBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
procedure FileFromGrpClick(Sender: TObject);
procedure RowInBtnClick(Sender: TObject);
procedure RowOutBtnClick(Sender: TObject);
procedure ColInBtnClick(Sender: TObject);
procedure ColOutBtnClick(Sender: TObject);
procedure SliceBtnInClick(Sender: TObject);
procedure SliceBtnOutClick(Sender: TObject);
procedure FreqInBtnClick(Sender: TObject);
procedure FreqOutBtnClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
AJKLogLinearFrm: TAJKLogLinearFrm;
implementation
{$R *.DFM}
procedure TAJKLogLinearFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(Self);
end;
//-------------------------------------------------------------------
procedure TAJKLogLinearFrm.ExitBtnClick(Sender: TObject);
begin
Close;
end;
//-------------------------------------------------------------------
procedure TAJKLogLinearFrm.NrowsEditKeyPress(Sender: TObject;
var Key: Char);
begin
if ord(Key) = 13 then NcolsEdit.SetFocus;
end;
//-------------------------------------------------------------------
procedure TAJKLogLinearFrm.NcolsEditKeyPress(Sender: TObject;
var Key: Char);
begin
if ord(Key) = 13 then NslicesEdit.SetFocus;
end;
//-------------------------------------------------------------------
procedure TAJKLogLinearFrm.NslicesEditKeyPress(Sender: TObject;
var Key: Char);
var
i, j, k, row : integer;
Nslices, Ncols, Nrows : integer;
begin
if ord(Key) = 13 then
begin
Nrows := StrToInt(NrowsEdit.Text);
Ncols := StrToInt(NcolsEdit.Text);
Nslices := StrToInt(NslicesEdit.Text);
Grid.RowCount := Nrows * Ncols * Nslices + 1;
row := 1;
for k := 1 to Nslices do
begin
for j := 1 to Ncols do
begin
for i := 1 to Nrows do
begin
Grid.Cells[0,row] := IntToStr(i);
Grid.Cells[1,row] := IntToStr(j);
Grid.Cells[2,row] := IntToStr(k);
row := row + 1;
end;
end;
end;
Grid.SetFocus;
end;
end;
//-------------------------------------------------------------------
procedure TAJKLogLinearFrm.ComputeBtnClick(Sender: TObject);
var
i, j, k, row, col, slice, Nrows, Ncols, Nslices : integer;
Data : cube;
AB, AC, BC : matrix;
RowMarg, ColMarg, SliceMarg : vector;
Total : double;
arraysize : integer;
Model : integer;
astr, Title : string;
RowCol, ColCol, SliceCol, Fcol : integer;
GridPos : IntDyneVec;
value : integer;
Fx : double;
begin
Nrows := 0;
Ncols := 0;
Nslices := 0;
Total := 0.0;
if FileFromGrp.ItemIndex = 0 then // mainfrm input
begin
SetLength(GridPos,4);
for i := 1 to NoVariables do
begin
if RowVarEdit.Text = MainFrm.Grid.Cells[i,0] then GridPos[0] := i;
if ColVarEdit.Text = MainFrm.Grid.Cells[i,0] then GridPos[1] := i;
if SliceVarEdit.Text = MainFrm.Grid.Cells[i,0] then GridPos[2] := i;
if FreqVarEdit.Text = MainFrm.Grid.Cells[i,0] then GridPos[3] := i;
end;
// get no. of rows, columns and slices
for i := 1 to MainFrm.Grid.RowCount - 1 do
begin
value := StrToInt(MainFrm.Grid.Cells[GridPos[0],i]);
if value > Nrows then Nrows := value;
value := StrToInt(MainFrm.Grid.Cells[GridPos[1],i]);
if value > Ncols then Ncols := value;
value := StrToInt(MainFrm.Grid.Cells[GridPos[2],i]);
if value > Nslices then Nslices := value;
end;
for i := 1 to Nrows do
for j := 1 to Ncols do
AB[i,j] := 0.0;
for i := 1 to Nrows do
for k := 1 to Nslices do
AC[i,k] := 0.0;
for j := 1 to Ncols do
for k := 1 to Nslices do
BC[j,k] := 0.0;
arraysize := Nrows * Ncols * Nslices;
// Get data
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
Data[i,j,k] := 0.0;
rowcol := GridPos[0];
colcol := GridPos[1];
slicecol := GridPos[2];
Fcol := GridPos[3];
for i := 1 to MainFrm.Grid.RowCount - 1 do
begin
if Not GoodRecord(i, 4, GridPos) then continue;
row := StrToInt(MainFrm.Grid.Cells[rowcol,i]);
col := StrToInt(MainFrm.Grid.Cells[colcol,i]);
slice := StrToInt(MainFrm.Grid.Cells[slicecol,i]);
Fx := StrToInt(MainFrm.Grid.Cells[Fcol,i]);
Data[row,col,slice] := Data[row,col,slice] + Fx;
Total := Total + Fx;
RowMarg[row] := RowMarg[row] + Fx;
ColMarg[col] := ColMarg[col] + Fx;
SliceMarg[slice] := SliceMarg[slice] + Fx;
AB[row,col] := AB[row,col] + Fx;
AC[row,slice] := AC[row,slice] + Fx;
BC[col,slice] := BC[col,slice] + Fx;
end;
GridPos := nil;
end;
if FileFromGrp.ItemIndex = 1 then // form input
begin
Nrows := StrToInt(NrowsEdit.Text);
Ncols := StrToInt(NcolsEdit.Text);
Nslices := StrToInt(NslicesEdit.Text);
for i := 1 to Nrows do
for j := 1 to Ncols do
AB[i,j] := 0.0;
for i := 1 to Nrows do
for k := 1 to Nslices do
AC[i,k] := 0.0;
for j := 1 to Ncols do
for k := 1 to Nslices do
BC[j,k] := 0.0;
arraysize := Nrows * Ncols * Nslices;
// get data
for i := 1 to arraysize do
begin
row := StrToInt(Grid.Cells[0,i]);
col := StrToInt(Grid.Cells[1,i]);
slice := StrToInt(Grid.Cells[2,i]);
Data[row,col,slice] := StrToInt(Grid.Cells[3,i]);
AB[row,col] := AB[row,col] + Data[row,col,slice];
AC[row,slice] := AC[row,slice] + Data[row,col,slice];
BC[col,slice] := BC[col,slice] + Data[row,col,slice];
Total := Total + Data[row,col,slice];
RowMarg[row] := RowMarg[row] + Data[row,col,slice];
ColMarg[col] := ColMarg[col] + Data[row,col,slice];
SliceMarg[slice] := SliceMarg[slice] + Data[row,col,slice];
end;
end;
// print heading of output
OutPutFrm.RichEdit.Clear;
OutPutFrm.RichEdit.Lines.Add('Log-Linear Analysis of a Three Dimension Table');
OutPutFrm.RichEdit.Lines.Add('');
// print observed matrix
astr := 'Observed Frequencies';
OutPutFrm.RichEdit.Lines.Add(astr);
PrintTable(Nrows,Ncols,Nslices,Data,RowMarg,ColMarg,SliceMarg,Total);
OutPutFrm.RichEdit.Lines.Add('');
// Print sub-matrices
Title := 'Sub-matrix AB';
PrintMatrix(AB,Nrows,Ncols,Title);
Title := 'Sub-matrix AC';
PrintMatrix(AC,Nrows,Nslices,Title);
Title := 'Sub-matrix BC';
PrintMatrix(BC,Ncols,Nslices,Title);
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
for Model := 1 to 9 do
ModelEffect(Nrows,Ncols,Nslices,Data,RowMarg,ColMarg,
SliceMarg,AB,AC,BC,Total,Model);
end;
//-------------------------------------------------------------------
procedure TAJKLogLinearFrm.ModelEffect(Nrows,Ncols,Nslices : integer;
VAR Data : cube;
VAR RowMarg : vector;
VAR ColMarg : vector;
VAR SliceMarg : vector;
VAR AB : matrix;
VAR AC : matrix;
VAR BC : matrix;
VAR Total : double;
Model : integer);
var
i, j, k, l : integer;
CellLambdas : Quad;
LogData, Expected : cube;
Title, astr : string;
NewRowMarg,NewColMarg,NewSliceMarg : vector;
LogRowMarg, LogColMarg, LogSliceMarg : vector;
NewTotal : double;
ABLogs, ACLogs, BCLogs : matrix;
LogTotal, mu, ModelTotal, Ysqr : double;
DF : integer;
begin
// Get expected values for chosen model
if Model = 1 then // Saturated model
begin
Title := 'Saturated Model';
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
Expected[i,j,k] := Data[i,j,k];
end;
if Model = 2 then // independence
begin
Title := 'Model of Independence';
Iterate(Nrows,Ncols,Nslices,Data,RowMarg,ColMarg,SliceMarg,Total,
Expected,NewRowMarg,NewColMarg,NewSliceMarg,NewTotal);
end;
if Model = 3 then // no AB effect
begin
Title := 'No AB Effect';
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
Expected[i,j,k] := AC[i,k] * BC[j,k] / SliceMarg[k];
end;
if Model = 4 then // no AC effect
begin
Title := 'No AC Effect';
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
Expected[i,j,k] := AB[i,j] * BC[j,k] / ColMarg[j];
end;
if Model = 5 then // no BC effect
begin
Title := 'No BC Effect';
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
Expected[i,j,k] := AB[i,j] * AC[i,k] / RowMarg[i];
end;
if Model = 6 then // no C effect
begin
Title := 'Model of No Slice (C) effect';
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
Expected[i,j,k] := (RowMarg[i] / Total) *
(ColMarg[j] / Total) * (Total / Nslices);
end;
if Model = 7 then // no B effect
begin
Title := 'Model of no Column (B) effect';
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
Expected[i,j,k] := (RowMarg[i] / Total) *
(SliceMarg[k] / Total) * (Total / Ncols);
end;
if Model = 8 then // no A effect
begin
Title := 'Model of no Row (A) effect';
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
Expected[i,j,k] := (ColMarg[j] / Total) *
(SliceMarg[k] / Total) * (Total / Nrows);
end;
if Model = 9 then // Equiprobability Model
begin
Title := 'Equi-probability Model';
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
Expected[i,j,k] := Total /
(Nrows * NCols * Nslices);
end;
LogTotal := 0.0;
for i := 1 to Nrows do
begin
NewRowMarg[i] := 0.0;
LogRowMarg[i] := 0.0;
end;
for j := 1 to Ncols do
begin
NewColMarg[j] := 0.0;
LogColMarg[j] := 0.0;
end;
for k := 1 to Nslices do
begin
NewSliceMarg[k] := 0.0;
LogSliceMarg[k] := 0.0;
end;
for i := 1 to Nrows do
for j := 1 to Ncols do
ABLogs[i,j] := 0.0;
for i := 1 to Nrows do
for k := 1 to Nslices do
ACLogs[i,k] := 0.0;
for j := 1 to Ncols do
for k := 1 to Nslices do
BCLogs[j,k] := 0.0;
for i := 1 to Nrows do
begin
for j := 1 to Ncols do
begin
for k := 1 to Nslices do
begin
NewRowMarg[i] := NewRowMarg[i] + Expected[i,j,k];
NewColMarg[j] := NewColMarg[j] + Expected[i,j,k];
NewSliceMarg[k] := NewSliceMarg[k] + Expected[i,j,k];
end;
end;
end;
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
LogData[i,j,k] := ln(Expected[i,j,k]);
for i := 1 to Nrows do
begin
for j := 1 to Ncols do
begin
for k := 1 to Nslices do
begin
LogRowMarg[i] := LogRowMarg[i] + LogData[i,j,k];
LogColMarg[j] := LogColMarg[j] + LogData[i,j,k];
LogSliceMarg[k] := LogSliceMarg[k] + LogData[i,j,k];
ABLogs[i,j] := ABLogs[i,j] + LogData[i,j,k];
ACLogs[i,k] := ACLogs[i,k] + LogData[i,j,k];
BCLogs[j,k] := BCLogs[j,k] + LogData[i,j,k];
LogTotal := LogTotal + LogData[i,j,k];
end;
end;
end;
for i := 1 to Nrows do LogRowMarg[i] := LogRowMarg[i] / (Ncols * Nslices);
for j := 1 to Ncols do LogColMarg[j] := LogColMarg[j] / (Nrows * Nslices);
for k := 1 to Nslices do LogSliceMarg[k] := LogSliceMarg[k] / (Ncols * Nrows);
LogTotal := LogTotal / (Ncols * Nrows * Nslices);
for i := 1 to Nrows do
for j := 1 to Ncols do
ABLogs[i,j] := ABLogs[i,j] / Nslices;
for i := 1 to Nrows do
for k := 1 to Nslices do
ACLogs[i,k] := ACLogs[i,k] / Ncols;
for j := 1 to Ncols do
for k := 1 to Nslices do
BCLogs[j,k] := BCLogs[j,k] / Nrows;
for i := 1 to Nrows do
begin
for j := 1 to Ncols do
begin
for k := 1 to Nslices do
begin
CellLambdas[i,j,k,1] := LogRowMarg[i] - LogTotal;
CellLambdas[i,j,k,2] := LogColMarg[j] - LogTotal;
CellLambdas[i,j,k,3] := LogSliceMarg[k] - LogTotal;
CellLambdas[i,j,k,4] := ABLogs[i,j] - LogRowMarg[i]
- LogColMarg[j] + LogTotal;
CellLambdas[i,j,k,5] := ACLogs[i,k] - LogRowMarg[i]
- LogSliceMarg[k] + LogTotal;
CellLambdas[i,j,k,6] := BCLogs[j,k] - LogColMarg[j]
- LogSliceMarg[k] + LogTotal;
CellLambdas[i,j,k,7] := LogData[i,j,k] + LogRowMarg[i]
+ LogColMarg[j] + LogSliceMarg[k]
- ABLogs[i,j] - ACLogs[i,k]
- BCLogs[j,k] - LogTotal;
end;
end;
end;
mu := LogTotal;
// Get Y square for model
Ysqr := 0.0;
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
Ysqr := Ysqr + (Data[i,j,k] * ln(Data[i,j,k] / Expected[i,j,k]));
Ysqr := 2.0 * Ysqr;
OutPutFrm.RichEdit.Lines.Add(Title);
OutPutFrm.RichEdit.Lines.Add('');
astr := 'Expected Frequencies';
OutPutFrm.RichEdit.Lines.Add(astr);
PrintTable(Nrows,Ncols,Nslices,Expected,NewRowMarg,NewColMarg,
NewSliceMarg,NewTotal);
OutPutFrm.RichEdit.Lines.Add('');
astr := 'Log Frequencies';
OutPutFrm.RichEdit.Lines.Add(astr);
PrintTable(Nrows,Ncols,Nslices,LogData,LogRowMarg,LogColMarg,LogSliceMarg,LogTotal);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
astr := 'Cell Parameters';
OutPutFrm.RichEdit.Lines.Add(astr);
PrintLamdas(Nrows,Ncols,Nslices,CellLambdas, mu);
OutPutFrm.RichEdit.Lines.Add('');
astr := 'G squared statistic for model fit = ' + format('%6.3f',[Ysqr]);
case Model of
1 : DF := 0; // saturated
2 : DF := Nrows * Ncols * Nslices - Nrows - Ncols - Nslices + 2; // independence
3 : DF := Nslices * (Nrows - 1) * (Ncols - 1); //no AB effect
4 : DF := Ncols * (Nrows - 1) * (Nslices - 1); // no AC effect
5 : DF := Nrows * (Ncols - 1) * (Nslices - 1); // no BC effect
6 : DF := Nrows * Ncols * Nslices - Nrows - Ncols + 1; // no C effect
7 : DF := Nrows * Ncols * Nslices - Nrows - Nslices + 1; // no B effect
8 : DF := Nrows * Ncols * Nslices - Ncols - Nslices + 1; // no A effect
9 : DF := Nrows * Ncols * Nslices - 1; // Equiprobability
end;
astr := astr + ' D.F. = ' + IntToStr(DF);
OutPutFrm.RichEdit.Lines.Add(astr);
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
end;
//-------------------------------------------------------------------
procedure TAJKLogLinearFrm.Iterate(Nrows, Ncols, Nslices : integer;
VAR Data : cube;
VAR RowMarg : vector;
VAR ColMarg : vector;
VAR SliceMarg : vector;
VAR Total : double;
VAR Expected : cube;
VAR NewRowMarg : vector;
VAR NewColMarg : vector;
VAR NewSliceMarg : vector;
VAR NewTotal : double);
Label Step;
var
previous : cube;
i, j, k : integer;
delta : double;
difference : double;
begin
delta := 0.1;
difference := 0.0;
for i := 1 to Nrows do newrowmarg[i] := 0.0;
for j := 1 to Ncols do newcolmarg[j] := 0.0;
for k := 1 to Nslices do newslicemarg[k] := 0.0;
// initialize expected values
for i := 1 to Nrows do
begin
for j := 1 to Ncols do
begin
for k := 1 to Nslices do
begin
expected[i,j,k] := 1.0;
previous[i,j,k] := 1.0;
end;
end;
end;
Step:
// step 1: initialize new row margins and calculate expected value
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
newrowmarg[i] := newrowmarg[i] + expected[i,j,k];
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
expected[i,j,k] := (RowMarg[i] / newrowmarg[i]) * expected[i,j,k];
// step 2: initialize new col margins and calculate expected values
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
newcolmarg[j] := newcolmarg[j] + expected[i,j,k];
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
expected[i,j,k] := (ColMarg[j] / newcolmarg[j]) * expected[i,j,k];
// step 3: initialize new slice margins and calculate expected values
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
newslicemarg[k] := newslicemarg[k] + expected[i,j,k];
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
expected[i,j,k] := (SliceMarg[k] / newslicemarg[k]) * expected[i,j,k];
// step 4: check for change and quit if smaller than delta
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
if abs(Previous[i,j,k]-expected[i,j,k]) > difference then
difference := abs(Previous[i,j,k]-expected[i,j,k]);
if difference < delta then
begin
newtotal := 0.0;
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
newtotal := newtotal + expected[i,j,k];
exit;
end
else begin
for i := 1 to Nrows do
for j := 1 to Ncols do
for k := 1 to Nslices do
Previous[i,j,k] := expected[i,j,k];
for i := 1 to Nrows do newrowmarg[i] := 0.0;
for j := 1 to Ncols do newcolmarg[j] := 0.0;
for k := 1 to Nslices do newslicemarg[k] := 0.0;
difference := 0.0;
goto step;
end;
end;
//-------------------------------------------------------------------
procedure TAJKLogLinearFrm.PrintTable(Nrows, Ncols, Nslices : integer;
VAR Data : cube;
VAR RowMarg : vector;
VAR ColMarg : vector;
VAR SliceMarg : vector;
Total : double);
var
astr : string;
i, j,k : integer;
begin
astr := ' A B C VALUE ';
for i := 1 to Nrows do
begin
for j := 1 to Ncols do
begin
for k := 1 to Nslices do
begin
astr := format('%3d %3d %3d %8.3f',[i,j,k,Data[i,j,k]]);
OutPutFrm.RichEdit.Lines.Add(astr);
end;
end;
end;
astr := 'Totals for Dimension A';
OutPutFrm.RichEdit.Lines.Add(astr);
for i := 1 to Nrows do
begin
astr := format('Row %d %8.3f',[i,RowMarg[i]]);
OutPutFrm.RichEdit.Lines.Add(astr);
end;
astr := 'Totals for Dimension B';
OutPutFrm.RichEdit.Lines.Add(astr);
for j := 1 to Ncols do
begin
astr := format('Col %d %8.3f',[j,ColMarg[j]]);
OutPutFrm.RichEdit.Lines.Add(astr);
end;
astr := 'Totals for Dimension C';
OutPutFrm.RichEdit.Lines.Add(astr);
for k := 1 to Nslices do
begin
astr := format('Slice %d %8.3f',[k,SliceMarg[k]]);
OutPutFrm.RichEdit.Lines.Add(astr);
end;
end;
//-------------------------------------------------------------------
procedure TAJKLogLinearFrm.PrintLamdas(Nrows,Ncols,Nslices : integer;
Var CellLambdas : Quad;
mu : double);
var
i, j, k, l : integer;
astr : string;
begin
astr := 'ROW COL SLICE MU LAMBDA A LAMBDA B LAMBDA C';
OutPutFrm.RichEdit.Lines.Add(astr);
astr := ' LAMBDA AB LAMBDA AC LAMBDA BC LAMBDA ABC';
OutPutFrm.RichEdit.Lines.Add(astr);
OutPutFrm.RichEdit.Lines.Add('');
for i := 1 to Nrows do
begin
for j := 1 to Ncols do
begin
for k := 1 to Nslices do
begin
astr := format('%3d %3d %3d ',[i,j,k]);
astr := astr + format(' %8.3f ',[mu]);
for l := 1 to 3 do
astr := astr + format(' %8.3f ',[CellLambdas[i,j,k,l]]);
OutPutFrm.RichEdit.Lines.Add(astr);
astr := ' ';
for l := 4 to 7 do
astr := astr + format(' %8.3f ',[CellLambdas[i,j,k,l]]);
OutPutFrm.RichEdit.Lines.Add(astr);
OutPutFrm.RichEdit.Lines.Add('');
end;
end;
end;
end;
//-------------------------------------------------------------------
procedure TAJKLogLinearFrm.PrintMatrix(VAR X : matrix;
Nrows, Ncols: integer;
Title : string);
Label loop;
var
i, j : integer;
first, last : integer;
astr : string;
begin
OutPutFrm.RichEdit.Lines.Add(Title);
OutPutFrm.RichEdit.Lines.Add('');
first := 1;
last := Ncols;
if last > 6 then last := 6;
loop:
astr := 'ROW/COL';
for j := first to last do astr := astr + format(' %3d ',[j]);
OutPutFrm.RichEdit.Lines.Add(astr);
for i := 1 to Nrows do
begin
astr := format(' %3d ',[i]);
for j := first to last do astr := astr + format(' %8.3f ',[X[i,j]]);
OutPutFrm.RichEdit.Lines.Add(astr);
end;
if last < Ncols then
begin
first := last + 1;
last := Ncols;
if last > 6 then last := 6;
goto loop;
end;
OutPutFrm.RichEdit.Lines.Add('');
end;
//-------------------------------------------------------------------
procedure TAJKLogLinearFrm.CancelBtnClick(Sender: TObject);
begin
AJKLogLinearFrm.Hide;
end;
//-------------------------------------------------------------------
procedure TAJKLogLinearFrm.ResetBtnClick(Sender: TObject);
var
i, j : integer;
begin
// for i := 0 to Grid.RowCount - 1 do
// for j := 0 to Grid.ColCount - 1 do
// Grid.Cells[j,i] := '';
Grid.ColCount := 4;
Grid.RowCount := 2;
Grid.Cells[0,0] := 'ROW';
Grid.Cells[1,0] := 'COL';
Grid.Cells[2,0] := 'SLICE';
Grid.Cells[3,0] := 'FREQ.';
VarList.Clear;
for i := 1 to NoVariables do
VarList.Items.Add(MainFrm.Grid.Cells[i,0]);
RowVarEdit.Text := '';
ColVarEdit.Text := '';
FreqVarEdit.Text := '';
NRowsEdit.Text := '';
NColsEdit.Text := '';
NSlicesEdit.Text := '';
VarList.Visible := false;
RowInBtn.Visible := false;
RowOutBtn.Visible := false;
ColInBtn.Visible := false;
ColOutBtn.Visible := false;
FreqInBtn.Visible := false;
FreqOutBtn.Visible := false;
Label4.Visible := false;
Label5.Visible := false;
Label6.Visible := false;
Label7.Visible := false;
RowVarEdit.Visible := false;
ColVarEdit.Visible := false;
SliceVarEdit.Visible := false;
FreqVarEdit.Visible := false;
Memo1.Visible := false;
Label1.Visible := false;
Label2.Visible := false;
Label3.Visible := false;
NRowsEdit.Visible := false;
NColsEdit.Visible := false;
NSlicesEdit.Visible := false;
Grid.Visible := false;
end;
//-------------------------------------------------------------------
procedure TAJKLogLinearFrm.FileFromGrpClick(Sender: TObject);
begin
if FileFromGrp.ItemIndex = 0 then // file from main form
begin
VarList.Visible := true;
RowInBtn.Visible := true;
RowOutBtn.Visible := false;
ColInBtn.Visible := true;
ColOutBtn.Visible := false;
SliceBtnIn.Visible := true;
SliceBtnOut.Visible := false;
FreqInBtn.Visible := true;
FreqOutBtn.Visible := false;
Label4.Visible := true;
Label5.Visible := true;
Label6.Visible := true;
Label7.Visible := true;
RowVarEdit.Visible := true;
ColVarEdit.Visible := true;
SliceVarEdit.Visible := true;
FreqVarEdit.Visible := true;
Memo1.Visible := false;
Label1.Visible := false;
Label2.Visible := false;
Label3.Visible := false;
NRowsEdit.Visible := false;
NColsEdit.Visible := false;
NSlicesEdit.Visible := false;
Grid.Visible := false;
end;
if FileFromGrp.ItemIndex = 1 then // data from this form
begin
VarList.Visible := false;
RowInBtn.Visible := false;
RowOutBtn.Visible := false;
ColInBtn.Visible := false;
ColOutBtn.Visible := false;
SliceBtnIn.Visible := false;
SliceBtnOut.Visible := false;
FreqInBtn.Visible := false;
FreqOutBtn.Visible := false;
Label4.Visible := false;
Label5.Visible := false;
Label6.Visible := false;
Label7.Visible := false;
RowVarEdit.Visible := false;
ColVarEdit.Visible := false;
SliceVarEdit.Visible := false;
FreqVarEdit.Visible := false;
Memo1.Visible := true;
Label1.Visible := true;
Label2.Visible := true;
Label3.Visible := true;
NRowsEdit.Visible := true;
NColsEdit.Visible := true;
NSlicesEdit.Visible := true;
Grid.Visible := true;
end;
end;
//-------------------------------------------------------------------
procedure TAJKLogLinearFrm.RowInBtnClick(Sender: TObject);
var
index : integer;
begin
index := VarList.ItemIndex;
RowVarEdit.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
RowOutBtn.Visible := true;
RowInBtn.Visible := false;
end;
//-------------------------------------------------------------------
procedure TAJKLogLinearFrm.RowOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(RowVarEdit.Text);
RowInBtn.Visible := true;
RowOutBtn.Visible := false;
RowVarEdit.Text := '';
end;
//-------------------------------------------------------------------
procedure TAJKLogLinearFrm.ColInBtnClick(Sender: TObject);
var
index : integer;
begin
index := VarList.ItemIndex;
ColVarEdit.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
ColOutBtn.Visible := true;
ColInBtn.Visible := false;
end;
//-------------------------------------------------------------------
procedure TAJKLogLinearFrm.ColOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(ColVarEdit.Text);
ColInBtn.Visible := true;
ColOutBtn.Visible := false;
ColVarEdit.Text := '';
end;
//-------------------------------------------------------------------
procedure TAJKLogLinearFrm.SliceBtnInClick(Sender: TObject);
var
index : integer;
begin
index := VarList.ItemIndex;
SliceVarEdit.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
SliceBtnOut.Visible := true;
SliceBtnIn.Visible := false;
end;
//-------------------------------------------------------------------
procedure TAJKLogLinearFrm.SliceBtnOutClick(Sender: TObject);
begin
VarList.Items.Add(SliceVarEdit.Text);
SliceBtnIn.Visible := true;
SliceBtnOut.Visible := false;
FreqVarEdit.Text := '';
end;
//-------------------------------------------------------------------
procedure TAJKLogLinearFrm.FreqInBtnClick(Sender: TObject);
var
index : integer;
begin
index := VarList.ItemIndex;
FreqVarEdit.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
FreqOutBtn.Visible := true;
FreqInBtn.Visible := false;
end;
//-------------------------------------------------------------------
procedure TAJKLogLinearFrm.FreqOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(FreqVarEdit.Text);
FreqInBtn.Visible := true;
FreqOutBtn.Visible := false;
FreqVarEdit.Text := '';
end;
//-------------------------------------------------------------------
end.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,445 @@
object ANCOVAfrm: TANCOVAfrm
Left = 204
Height = 412
Top = 192
Width = 747
Caption = 'Analysis of Covariance Using Multiple Regression Methods'
ClientHeight = 412
ClientWidth = 747
OnShow = FormShow
Position = poScreenCenter
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 8
Height = 14
Top = 9
Width = 94
Caption = 'Available Variables:'
ParentColor = False
end
object Label2: TLabel
Left = 265
Height = 14
Top = 31
Width = 95
Caption = 'Dependent Variable'
ParentColor = False
end
object Label3: TLabel
Left = 265
Height = 14
Top = 111
Width = 66
Caption = 'Fixed Factors'
ParentColor = False
end
object Label4: TLabel
Left = 265
Height = 14
Top = 256
Width = 53
Caption = 'Covariates'
ParentColor = False
end
object VarList: TListBox
Left = 8
Height = 383
Top = 24
Width = 210
ItemHeight = 0
MultiSelect = True
TabOrder = 0
end
object DepIn: TBitBtn
Left = 224
Height = 26
Top = 31
Width = 34
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
}
NumGlyphs = 0
OnClick = DepInClick
TabOrder = 1
end
object DepOut: TBitBtn
Left = 224
Height = 26
Top = 64
Width = 34
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = DepOutClick
TabOrder = 2
end
object FixedIn: TBitBtn
Left = 224
Height = 26
Top = 144
Width = 34
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
}
NumGlyphs = 0
OnClick = FixedInClick
TabOrder = 3
end
object FixedOut: TBitBtn
Left = 224
Height = 26
Top = 176
Width = 34
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = FixedOutClick
TabOrder = 4
end
object CovIn: TBitBtn
Left = 224
Height = 26
Top = 280
Width = 34
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
}
NumGlyphs = 0
OnClick = CovInClick
TabOrder = 5
end
object CovOut: TBitBtn
Left = 224
Height = 26
Top = 312
Width = 34
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = CovOutClick
TabOrder = 6
end
object DepVar: TEdit
Left = 263
Height = 21
Top = 48
Width = 139
TabOrder = 7
Text = 'DepVar'
end
object FixedList: TListBox
Left = 264
Height = 111
Top = 129
Width = 136
ItemHeight = 0
MultiSelect = True
TabOrder = 8
end
object CovList: TListBox
Left = 263
Height = 123
Top = 272
Width = 134
ItemHeight = 0
MultiSelect = True
TabOrder = 9
end
object GroupBox1: TGroupBox
Left = 416
Height = 176
Top = 136
Width = 191
Caption = 'Output Options:'
ClientHeight = 158
ClientWidth = 187
TabOrder = 10
object Describe: TCheckBox
Left = 9
Height = 17
Top = 9
Width = 119
Caption = 'Descriptive Statistics'
TabOrder = 0
end
object RMats: TCheckBox
Left = 8
Height = 17
Top = 39
Width = 116
Caption = 'Correlation Matrices'
TabOrder = 1
end
object Inverses: TCheckBox
Left = 8
Height = 17
Top = 72
Width = 113
Caption = 'Inverse of Matrices'
TabOrder = 2
end
object PlotMeans: TCheckBox
Left = 7
Height = 17
Top = 106
Width = 106
Caption = 'Plot Factor Means'
TabOrder = 3
end
object MultCompChk: TCheckBox
Left = 7
Height = 17
Top = 134
Width = 149
Caption = 'Show Multiple Comparisons'
TabOrder = 4
end
end
object ResetBtn: TButton
Left = 635
Height = 27
Top = 151
Width = 76
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 11
end
object CancelBtn: TButton
Left = 635
Height = 27
Top = 208
Width = 76
Caption = 'Cancel'
ModalResult = 2
TabOrder = 12
end
object ComputeBtn: TButton
Left = 635
Height = 27
Top = 304
Width = 76
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 13
end
object ReturnBtn: TButton
Left = 635
Height = 27
Top = 352
Width = 76
Caption = 'Return'
ModalResult = 1
TabOrder = 14
end
object HelpBtn: TButton
Tag = 103
Left = 638
Height = 27
Top = 256
Width = 73
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 15
end
end

View File

@ -0,0 +1,353 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TANCOVAfrm','FORMDATA',[
'TPF0'#10'TANCOVAfrm'#9'ANCOVAfrm'#4'Left'#3#204#0#6'Height'#3#156#1#3'Top'#3
+#192#0#5'Width'#3#235#2#7'Caption'#6'8Analysis of Covariance Using Multiple '
+'Regression Methods'#12'ClientHeight'#3#156#1#11'ClientWidth'#3#235#2#6'OnSh'
+'ow'#7#8'FormShow'#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#8'0.9.2'
+'8.2'#0#6'TLabel'#6'Label1'#4'Left'#2#8#6'Height'#2#14#3'Top'#2#9#5'Width'#2
+'^'#7'Caption'#6#20'Available Variables:'#11'ParentColor'#8#0#0#6'TLabel'#6
+'Label2'#4'Left'#3#9#1#6'Height'#2#14#3'Top'#2#31#5'Width'#2'_'#7'Caption'#6
+#18'Dependent Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#3#9
+#1#6'Height'#2#14#3'Top'#2'o'#5'Width'#2'B'#7'Caption'#6#13'Fixed Factors'#11
+'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#3#9#1#6'Height'#2#14#3'Top'#3
+#0#1#5'Width'#2'5'#7'Caption'#6#10'Covariates'#11'ParentColor'#8#0#0#8'TList'
+'Box'#7'VarList'#4'Left'#2#8#6'Height'#3#127#1#3'Top'#2#24#5'Width'#3#210#0
+#10'ItemHeight'#2#0#11'MultiSelect'#9#8'TabOrder'#2#0#0#0#7'TBitBtn'#5'DepIn'
+#4'Left'#3#224#0#6'Height'#2#26#3'Top'#2#31#5'Width'#2'"'#10'Glyph.Data'#10
+':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0
+' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'
+#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'
+#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0
+#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255
+#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142
+#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'
+#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162
+#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255
+#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130
+#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199
+'t'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255
+'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'
+#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#10'DepInClick'#8
,'TabOrder'#2#1#0#0#7'TBitBtn'#6'DepOut'#4'Left'#3#224#0#6'Height'#2#26#3'Top'
+#2'@'#5'Width'#2'"'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'
+#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0
+#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153
+'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'
+#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255
+'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'
+#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195
+'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144
+#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255
+#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255
+#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135
+#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#11'DepOutClick'#8'TabOrder'#2#2#0#0#7'TBitBtn'#7'Fixed'
+'In'#4'Left'#3#224#0#6'Height'#2#26#3'Top'#3#144#0#5'Width'#2'"'#10'Glyph.Da'
+'ta'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0
+#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184
+#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177
+'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255
+'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255
+#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255
+#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142
+#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'
+#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162
+#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255
+#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130
+#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199
+'t'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255
+'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'
+#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#12'FixedInClick'#8
+'TabOrder'#2#3#0#0#7'TBitBtn'#8'FixedOut'#4'Left'#3#224#0#6'Height'#2#26#3'T'
+'op'#3#176#0#5'Width'#2'"'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0
+#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'
+#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'
+#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161
+'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131
+#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/'
+'x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'
+#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255
,#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132
+#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255
+#255#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154
+#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255
+#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201
+#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'
+#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'Num'
+'Glyphs'#2#0#7'OnClick'#7#13'FixedOutClick'#8'TabOrder'#2#4#0#0#7'TBitBtn'#5
+'CovIn'#4'Left'#3#224#0#6'Height'#2#26#3'Top'#3#24#1#5'Width'#2'"'#10'Glyph.'
+'Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16
+#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184
+#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177
+'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255
+'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255
+#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255
+#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142
+#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'
+#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162
+#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255
+#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130
+#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199
+'t'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255
+'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'
+#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
,#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#10'CovInClick'#8
+'TabOrder'#2#5#0#0#7'TBitBtn'#6'CovOut'#4'Left'#3#224#0#6'Height'#2#26#3'Top'
+#3'8'#1#5'Width'#2'"'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0
+'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0
+#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'
+#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161
+'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131
+#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/'
+'x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'
+#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255
+#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132
+#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255
+#255#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154
+#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255
+#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201
+#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'
+#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'Num'
+'Glyphs'#2#0#7'OnClick'#7#11'CovOutClick'#8'TabOrder'#2#6#0#0#5'TEdit'#6'Dep'
+'Var'#4'Left'#3#7#1#6'Height'#2#21#3'Top'#2'0'#5'Width'#3#139#0#8'TabOrder'#2
+#7#4'Text'#6#6'DepVar'#0#0#8'TListBox'#9'FixedList'#4'Left'#3#8#1#6'Height'#2
+'o'#3'Top'#3#129#0#5'Width'#3#136#0#10'ItemHeight'#2#0#11'MultiSelect'#9#8'T'
+'abOrder'#2#8#0#0#8'TListBox'#7'CovList'#4'Left'#3#7#1#6'Height'#2'{'#3'Top'
+#3#16#1#5'Width'#3#134#0#10'ItemHeight'#2#0#11'MultiSelect'#9#8'TabOrder'#2#9
+#0#0#9'TGroupBox'#9'GroupBox1'#4'Left'#3#160#1#6'Height'#3#176#0#3'Top'#3#136
+#0#5'Width'#3#191#0#7'Caption'#6#15'Output Options:'#12'ClientHeight'#3#158#0
+#11'ClientWidth'#3#187#0#8'TabOrder'#2#10#0#9'TCheckBox'#8'Describe'#4'Left'
+#2#9#6'Height'#2#17#3'Top'#2#9#5'Width'#2'w'#7'Caption'#6#22'Descriptive Sta'
+'tistics'#8'TabOrder'#2#0#0#0#9'TCheckBox'#5'RMats'#4'Left'#2#8#6'Height'#2
+#17#3'Top'#2''''#5'Width'#2't'#7'Caption'#6#20'Correlation Matrices'#8'TabOr'
+'der'#2#1#0#0#9'TCheckBox'#8'Inverses'#4'Left'#2#8#6'Height'#2#17#3'Top'#2'H'
+#5'Width'#2'q'#7'Caption'#6#19'Inverse of Matrices'#8'TabOrder'#2#2#0#0#9'TC'
+'heckBox'#9'PlotMeans'#4'Left'#2#7#6'Height'#2#17#3'Top'#2'j'#5'Width'#2'j'#7
+'Caption'#6#17'Plot Factor Means'#8'TabOrder'#2#3#0#0#9'TCheckBox'#11'MultCo'
+'mpChk'#4'Left'#2#7#6'Height'#2#17#3'Top'#3#134#0#5'Width'#3#149#0#7'Caption'
+#6#25'Show Multiple Comparisons'#8'TabOrder'#2#4#0#0#0#7'TButton'#8'ResetBtn'
+#4'Left'#3'{'#2#6'Height'#2#27#3'Top'#3#151#0#5'Width'#2'L'#7'Caption'#6#5'R'
+'eset'#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#11#0#0#7'TButton'#9'Canc'
+'elBtn'#4'Left'#3'{'#2#6'Height'#2#27#3'Top'#3#208#0#5'Width'#2'L'#7'Caption'
+#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#12#0#0#7'TButton'#10'ComputeB'
+'tn'#4'Left'#3'{'#2#6'Height'#2#27#3'Top'#3'0'#1#5'Width'#2'L'#7'Caption'#6#7
+'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#13#0#0#7'TButton'#9
+'ReturnBtn'#4'Left'#3'{'#2#6'Height'#2#27#3'Top'#3'`'#1#5'Width'#2'L'#7'Capt'
+'ion'#6#6'Return'#11'ModalResult'#2#1#8'TabOrder'#2#14#0#0#7'TButton'#7'Help'
+'Btn'#3'Tag'#2'g'#4'Left'#3'~'#2#6'Height'#2#27#3'Top'#3#0#1#5'Width'#2'I'#7
+'Caption'#6#4'Help'#7'OnClick'#7#12'HelpBtnClick'#8'TabOrder'#2#15#0#0#0
]);

View File

@ -0,0 +1,545 @@
unit ANOVATESTS;
{$MODE Delphi}
Interface
uses LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
FUNCTIONSLIB, OUTPUTUNIT, GLOBALS;
procedure TUKEY(error_ms : double; { mean squared for residual }
error_df : double; { deg. freedom for residual }
value : double; { size of smallest group }
group_total : DblDyneVec; { sum of scores in a group }
group_count : DblDyneVec; { no. of cases in a group }
min_grp : integer; { minimum group code }
max_grp : integer); { maximum group code }
procedure SCHEFFETEST(error_ms : double; { mean squared residual }
group_total : DblDyneVec; { sum of scores in a group }
group_count : DblDyneVec; { count of cases in a group }
min_grp : integer; { code of first group }
max_grp : integer; { code of last group }
total_n : double); { total number of cases }
procedure Newman_Keuls(error_ms : double; { residual mean squared }
error_df : double; { deg. freedom for error }
value : double; { number in smallest group }
group_total : DblDyneVec; { sum of scores in a group }
group_count : DblDyneVec; { count of cases in a group }
min_grp : integer; { lowest group code }
max_grp : integer); { largest group code }
procedure TUKEY_KRAMER(error_ms : double; { residual mean squared }
error_df : double; { deg. freedom for error }
value : double; { number in smallest group }
group_total : DblDyneVec; { sum of scores in group }
group_count : DblDyneVec; { number of caes in group }
min_grp : integer; { code of lowest group }
max_grp : integer); { code of highst group }
procedure CONTRASTS(error_ms : double; { residual ms }
error_df : double; { residual df }
group_total : DblDyneVec; { group sums }
group_count : DblDyneVec; { group cases }
min_grp : integer; { lowest code }
max_grp : integer; { highest code }
overall_probf : double); { prob of overall test }
procedure Bonferroni( group_total : DblDyneVec; { sum of scores in group }
group_count : DblDyneVec; { number of caes in group }
group_var : DblDyneVec; { group variances }
min_grp : integer; { code of lowest group }
max_grp : integer); { code of highst group }
procedure TUKEYBTEST(ErrorMS : double; // within groups error
ErrorDF : double; // degrees of freedom within
group_total : DblDyneVec; // vector of group sums
group_count : DblDyneVec; // vector of group n's
min_grp : integer; // smallest group code
max_grp : integer; // largest group code
groupsize : double); // size of groups (all equal)
{ --------------------------------------------------------------------- }
Implementation
Uses BLKANOVAUNIT;
procedure TUKEY(error_ms : double; { mean squared for residual }
error_df : double; { deg. freedom for residual }
value : double; { size of smallest group }
group_total : DblDyneVec; { sum of scores in a group }
group_count : DblDyneVec; { no. of cases in a group }
min_grp : integer; { minimum group code }
max_grp : integer); { maximum group code }
var
sig : boolean;
divisor : double;
df1 : integer;
alpha : double;
contrast, mean1, mean2 : double;
q_stat : double;
i,j : integer;
outline : string;
begin
alpha := StrToFloat(BlksAnovaFrm.PostAlpha.Text);
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add(' Tukey HSD Test for Differences Between Means');
outline := format(' alpha selected = %4.2f',[alpha]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('Groups Difference Statistic Probability Significant?');
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
divisor := sqrt(error_ms / value );
for i := min_grp to max_grp - 1 do
for j := i + 1 to max_grp do
begin
outline := format('%2d - %2d ',[i,j]);
mean1 := group_total[i-1] / group_count[i-1];
mean2 := group_total[j-1] / group_count[j-1];
contrast := mean1 - mean2;
outline := outline + format('%7.3f q = ',[contrast]);
contrast := abs(contrast / divisor) ;
outline := outline + format('%6.3f ',[contrast]);
df1 := max_grp - min_grp + 1;
q_stat := STUDENT(contrast,error_df,df1);
outline := outline + format(' %6.4f',[q_stat]);
if alpha >= q_stat then sig := TRUE else sig := FALSE;
if sig = TRUE then outline := outline + ' YES '
else outline := outline + ' NO';
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
end;
{ ------------------------------------------------------------------------ }
procedure SCHEFFETEST(error_ms : double; { mean squared residual }
group_total : DblDyneVec; { sum of scores in a group }
group_count : DblDyneVec; { count of cases in a group }
min_grp : integer; { code of first group }
max_grp : integer; { code of last group }
total_n : double); { total number of cases }
var
statistic, stat_var, stat_sd : double;
mean1, mean2, alpha, difference, prob_scheffe, f_prob, df1, df2 : double;
outline : string;
i, j : integer;
begin
alpha := StrToFloat(BlksAnovaFrm.PostAlpha.Text);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('----------------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add(' Scheffe contrasts among pairs of means.');
outline := format(' alpha selected = %4.2f',[alpha]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('Group vs Group Difference Scheffe Critical Significant?');
OutPutFrm.RichEdit.Lines.Add(' Statistic Value');
OutPutFrm.RichEdit.Lines.Add('----------------------------------------------------------------');
alpha := 1.0 - alpha ;
for i:= min_grp to max_grp - 1 do
for j := i + 1 to max_grp do
begin
outline := format('%2d %2d ',[i,j]);
mean1 := group_total[i-1] / group_count[i-1];
mean2 := group_total[j-1] / group_count[j-1];
difference := mean1 - mean2;
outline := outline + format('%8.2f ',[difference]);
stat_var := error_ms *
( 1.0 / group_count[i-1] + 1.0 / group_count[j-1]);
stat_sd := sqrt(stat_var);
statistic := abs(difference / stat_sd);
outline := outline + format('%8.2f ',[statistic]);
df1 := max_grp - min_grp;
df2 := total_n - df1 + 1;
f_prob := fpercentpoint(alpha,round(df1),round(df2) );
prob_scheffe := sqrt(df1 * f_prob);
outline := outline + format('%8.3f ',[prob_scheffe]);
if statistic > prob_scheffe then outline := outline + 'YES'
else outline := outline + 'NO';
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('----------------------------------------------------------------');
end;
{ ----------------------------------------------------------------------- }
procedure Newman_Keuls(error_ms : double; { residual mean squared }
error_df : double; { deg. freedom for error }
value : double; { number in smallest group }
group_total : DblDyneVec; { sum of scores in a group }
group_count : DblDyneVec; { count of cases in a group }
min_grp : integer; { lowest group code }
max_grp : integer); { largest group code }
var
i, j : integer;
temp1, temp2 : double;
groupno : IntDyneVec;
alpha : double;
contrast, mean1, mean2 : double;
q_stat : double;
divisor : double;
tempno : integer;
df1 : integer;
sig : boolean;
outline : string;
begin
SetLength(groupno,max_grp-min_grp+1);
for i := min_grp to max_grp do groupno[i-1] := i;
for i := min_grp to max_grp - 1 do
begin
for j := i + 1 to max_grp do
begin
if group_total[i-1] / group_count[i-1] >
group_total[j-1] / group_count[j-1] then
begin
temp1 := group_total[i-1];
temp2 := group_count[i-1];
tempno := groupno[i-1];
group_total[i-1] := group_total[j-1];
group_count[i-1] := group_count[j-1];
groupno[i-1] := groupno[j-1];
group_total[j-1] := temp1;
group_count[j-1] := temp2;
groupno[j-1] := tempno;
end;
end;
end;
alpha := StrToFloat(BlksAnovaFrm.PostAlpha.Text);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('----------------------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add(' Neuman-Keuls Test for Contrasts on Ordered Means');
outline := format(' alpha selected = %4.2f',[alpha]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Group Mean');
for i := 1 to max_grp do
begin
outline := format('%3d %10.3f',[groupno[i-1],group_total[i-1] / group_count[i-1]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Groups Difference Statistic d.f. Probability Significant?');
OutPutFrm.RichEdit.Lines.Add('----------------------------------------------------------------------');
divisor := sqrt(error_ms / value);
for i := min_grp to max_grp - 1 do
begin
for j := i + 1 to max_grp do
begin
outline := format('%2d - %2d ',[groupno[i-1],groupno[j-1]]);
mean1 := group_total[i-1] / group_count[i-1];
mean2 := group_total[j-1] / group_count[j-1];
contrast := mean1 - mean2;
outline := outline + format('%7.3f q = ',[contrast]);
contrast := abs(contrast / divisor );
df1 := j - i + 1;
outline := outline + format('%6.3f %2d %3.0f ',[contrast,df1,error_df]);
q_stat := STUDENT(contrast,error_df,df1);
outline := outline + format(' %6.4f',[q_stat]);
if alpha > q_stat then sig := TRUE else sig := FALSE;
if sig = TRUE then outline := outline + ' YES'
else outline := outline + ' NO';
OutPutFrm.RichEdit.Lines.Add(outline);
end;
end;
OutPutFrm.RichEdit.Lines.Add('----------------------------------------------------------------------');
groupno := nil;
end;
{ ----------------------------------------------------------------------- }
procedure TUKEY_KRAMER(error_ms : double; { residual mean squared }
error_df : double; { deg. freedom for error }
value : double; { number in smallest group }
group_total : DblDyneVec; { sum of scores in group }
group_count : DblDyneVec; { number of caes in group }
min_grp : integer; { code of lowest group }
max_grp : integer); { code of highst group }
var
sig : boolean;
divisor : double;
df1 : integer;
alpha : double;
contrast, mean1, mean2 : double;
q_stat : double;
outline : string;
i, j : integer;
begin
alpha := StrToFloat(BlksAnovaFrm.PostAlpha.Text);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add(' Tukey-Kramer Test for Differences Between Means');
outline := format(' alpha selected = %4.2f',[alpha]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('Groups Difference Statistic Probability Significant?');
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
for i := min_grp to max_grp - 1 do
for j := i + 1 to max_grp do
begin
outline := format('%2d - %2d ',[i,j]);
mean1 := group_total[i-1] / group_count[i-1];
mean2 := group_total[j-1] / group_count[j-1];
contrast := mean1 - mean2;
outline := outline + format('%7.3f q = ',[contrast]);
divisor := sqrt(error_ms *
( ( 1.0/group_count[i-1] + 1.0/group_count[j-1] ) / 2 ) );
contrast := abs(contrast / divisor) ;
outline := outline + format('%6.3f ',[contrast]);
df1 := max_grp - min_grp + 1;
q_stat := STUDENT(contrast,error_df,df1);
outline := outline + format(' %6.4f',[q_stat]);
if alpha >= q_stat then sig := TRUE else sig := FALSE;
if sig = TRUE then outline := outline + ' YES '
else outline := outline + ' NO';
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
end;
{ ------------------------------------------------------------------------ }
procedure CONTRASTS(error_ms : double; { residual ms }
error_df : double; { residual df }
group_total : DblDyneVec; { group sums }
group_count : DblDyneVec; { group cases }
min_grp : integer; { lowest code }
max_grp : integer; { highest code }
overall_probf : double); { prob of overall test }
var
nocontrasts, i, j, k : integer;
df1, df2, probstat, statistic, alpha : double;
coefficients : array[1..20,1..20] of double;
nonorthog : boolean;
weight, sumcross : double;
response : string[5];
outline : string;
prompt : string;
begin
outline := format('Enter the number of contrasts (less than %2d or 0:',[max_grp-min_grp+1]);
response := InputBox('ORTHOGONAL CONTRASTS',outline,'0');
nocontrasts := StrToInt(response);
if nocontrasts > 0 then
begin
for i := 1 to nocontrasts do
begin
outline := format('Contrast number %2d',[i]);
for j := 1 to (max_grp - min_grp+1) do
begin
prompt := format('Group %2d coefficient = ',[j]);
response := InputBox(outline,prompt,'1');
coefficients[i,j] := StrToFloat(response);
end;
end;
{ Check for orthogonality }
nonorthog := FALSE;
for i := 1 to nocontrasts - 1 do
begin
for j := i + 1 to nocontrasts do
begin
sumcross := 0;
for k := 1 to (max_grp - min_grp + 1) do
begin
sumcross := sumcross +
coefficients[i,k]*coefficients[j,k];
end;
if sumcross <> 0 then nonorthog := TRUE;
if sumcross <> 0 then
begin
outline := format('contrasts %2d and %2d not orthogonal.',[i,j]);
ShowMessage('ERROR!' + outline);
end;
end;
end;
if NOT nonorthog then
begin
alpha := StrToFloat(BlksAnovaFrm.PostAlpha.Text);
if overall_probf > alpha then
begin
OutPutFrm.RichEdit.Lines.Add('No contrasts significant.');
exit;
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add(' ORTHOGONAL CONTRASTS');
OutPutFrm.RichEdit.Lines.Add('Contrast Statistic Probability Critical Value Significant?');
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
for i := 1 to nocontrasts do
begin
statistic := 0.0;
weight := 0.0;
for j := 1 to (max_grp - min_grp + 1) do
begin
statistic := statistic + (coefficients[i,j] *
(group_total[j-1] / group_count[j-1]));
weight := weight + (sqr(coefficients[i,j]) /
group_count[j-1]);
end;
statistic := sqr(statistic);
statistic := statistic / (error_ms * weight);
outline := format('%3d %9.4f ',[i,statistic]);
df1 := 1;
df2 := error_df;
probstat := probf(statistic,round(df1),round(df2)) / 2;
outline := outline + format('%8.3f %5.2f ',[probstat,alpha]);
if probstat < alpha then outline := outline + 'YES'
else outline := outline + 'NO';
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Contrast Coefficients Used:');
for i := 1 to nocontrasts do
begin
outline := format('Contrast %2d ',[i]);
for j := 1 to (max_grp - min_grp + 1) do
outline := outline + format('%4.1f ',[coefficients[i,j]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
end; { if orthogonal }
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
end; { if nocontrasts > 0 }
end; { of procedure CONTRASTS }
{ ----------------------------------------------------------------------- }
procedure Bonferroni( group_total : DblDyneVec; { sum of scores in group }
group_count : DblDyneVec; { number of cases in group }
group_var : DblDyneVec; { group variances }
min_grp : integer; { code of lowest group }
max_grp : integer); { code of highst group }
var
i, j : integer;
alpha : double;
contrast, mean1, mean2 : double;
divisor : double;
df2 : integer;
outline : string;
testalpha : double;
NoGrps : integer;
tprob : double;
sig : string[6];
SS1, SS2 : double;
begin
alpha := StrToFloat(BlksAnovaFrm.PostAlpha.Text);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add(' Bonferroni Test for Differences Between Means');
outline := format(' Overall alpha selected = %4.2f',[alpha]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
NoGrps := max_grp - min_grp + 1;
testalpha := alpha / ( (NoGrps * (NoGrps-1)) / 2.0 );
outline := format('Comparisons made at alpha / no. comparisons = %5.3f',[testalpha]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Groups Difference Statistic Prob > Value Significant?');
for i := 1 to NoGrps - 1 do
begin
for j := i+1 to NoGrps do
begin
mean1 := group_total[i-1] / group_count[i-1];
mean2 := group_total[j-1] / group_count[j-1];
SS1 := group_var[i-1] * (group_count[i-1] - 1.0);
SS2 := group_var[j-1] * (group_count[j-1] - 1.0);
divisor := (SS1 + SS2) / (group_count[i-1] + group_count[j-1] - 2.0);
divisor := sqrt(divisor * ( 1.0 / group_count[i-1] + 1.0 / group_count[j-1]));
contrast := abs(mean1-mean2) / divisor;
df2 := round(group_count[i-1] + group_count[j-1] - 2.0);
tprob := probt(contrast,df2);
if testalpha >= tprob then sig := 'YES' else sig := 'NO';
outline := format('%3d - %3d %10.3f %10.3f %10.3f %s',
[min_grp+i-1,min_grp+j-1,mean1-mean2,contrast,tprob,sig]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
end;
end;
//-------------------------------------------------------------------
procedure TUKEYBTEST(ErrorMS : double; // within groups error
ErrorDF : double; // degrees of freedom within
group_total : DblDyneVec; // vector of group sums
group_count : DblDyneVec; // vector of group n's
min_grp : integer; // smallest group code
max_grp : integer; // largest group code
groupsize : double); // size of groups (all equal)
var
alpha : double;
outline : string;
i, j : integer;
df1 : double;
qstat : double;
tstat : double;
groupno : IntDyneVec;
temp1, temp2 : double;
tempno : integer;
NoGrps : integer;
contrast : double;
mean1, mean2 : double;
sig : string[6];
groups : double;
response : string[5];
divisor : double;
begin
SetLength(groupno,max_grp-min_grp+1);
alpha := StrToFloat(BlksAnovaFrm.PostAlpha.Text);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add(' Tukey B Test for Contrasts on Ordered Means');
outline := format(' alpha selected = %4.2f',[alpha]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Groups Difference Statistic d.f. Prob.>value Significant?');
divisor := sqrt(ErrorMS / groupsize);
NoGrps := max_grp - min_grp + 1;
for i := min_grp to max_grp do groupno[i-1] := i;
for i := 1 to NoGrps - 1 do
begin
for j := i + 1 to NoGrps do
begin
if group_total[i-1] / group_count[i-1] >
group_total[j-1] / group_count[j-1] then
begin
temp1 := group_total[i-1];
temp2 := group_count[i-1];
tempno := groupno[i-1];
group_total[i-1] := group_total[j-1];
group_count[i-1] := group_count[j-1];
groupno[i-1] := groupno[j-1];
group_total[j-1] := temp1;
group_count[j-1] := temp2;
groupno[j-1] := tempno;
end;
end;
end;
for i := 1 to NoGrps-1 do
begin
for j := i+1 to NoGrps do
begin
mean1 := group_total[i-1] / group_count[i-1];
mean2 := group_total[j-1] / group_count[j-1];
contrast := abs((mean1 - mean2) / divisor);
df1 := j - i + 1.0;
qstat := STUDENT(contrast,ErrorDF,df1);
groups := NoGrps;
tstat := STUDENT(contrast,ErrorDF,groups);
qstat := (qstat + tstat) / 2.0;
if alpha >= qstat then sig := 'YES' else sig := 'NO';
outline := format('%3d - %3d %10.3f %10.3f %4.0f,%4.0f %5.3f %s',
[groupno[i-1],groupno[j-1],
mean1-mean2,contrast,df1,ErrorDF,qstat,sig]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
end;
groupno := nil;
end;
//-------------------------------------------------------------------
end.


File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,448 @@
object AutocorrFrm: TAutocorrFrm
Left = 176
Height = 432
Top = 90
Width = 503
Caption = 'Autocorrelation'
ClientHeight = 432
ClientWidth = 503
OnShow = FormShow
LCLVersion = '0.9.30'
object Label3: TLabel
Left = 6
Height = 16
Top = 72
Width = 102
Caption = 'Available Variables:'
ParentColor = False
end
object Label4: TLabel
Left = 193
Height = 16
Top = 88
Width = 90
Caption = 'Selected Variable'
ParentColor = False
end
object Label5: TLabel
Left = 152
Height = 16
Top = 168
Width = 68
Caption = 'Alpha Level: '
ParentColor = False
end
object Label6: TLabel
Left = 149
Height = 16
Top = 191
Width = 83
Caption = 'Maximum Lag: '
ParentColor = False
end
object GroupBox1: TGroupBox
Left = 7
Height = 41
Top = 16
Width = 283
Caption = 'The series is code in:'
ClientHeight = 23
ClientWidth = 279
TabOrder = 0
object ColBtn: TRadioButton
Left = 9
Height = 19
Top = 1
Width = 99
Caption = 'A Grid Column'
OnClick = ColBtnClick
TabOrder = 0
end
object RowBtn: TRadioButton
Left = 153
Height = 19
Top = 1
Width = 109
Caption = 'A row of the grid'
OnClick = RowBtnClick
TabOrder = 1
end
end
object GroupBox2: TGroupBox
Left = 296
Height = 121
Top = 24
Width = 195
Caption = 'Include Cases:'
ClientHeight = 103
ClientWidth = 191
TabOrder = 1
object Label1: TLabel
Left = 57
Height = 16
Top = 84
Width = 15
Caption = 'To'
ParentColor = False
end
object AllCasesBtn: TRadioButton
Left = 8
Height = 19
Top = 2
Width = 67
Caption = 'All Cases'
TabOrder = 0
end
object OnlyCasesBtn: TRadioButton
Left = 7
Height = 19
Top = 26
Width = 112
Caption = 'Only Cases From:'
TabOrder = 1
end
object FromCaseEdit: TEdit
Left = 88
Height = 23
Top = 48
Width = 57
TabOrder = 2
Text = 'FromCaseEdit'
end
object ToCaseEdit: TEdit
Left = 87
Height = 23
Top = 79
Width = 58
TabOrder = 3
Text = 'ToCaseEdit'
end
end
object GroupBox3: TGroupBox
Left = 296
Height = 44
Top = 161
Width = 195
Caption = 'Projection Option:'
ClientHeight = 26
ClientWidth = 191
TabOrder = 2
object Label2: TLabel
Left = 128
Height = 16
Top = 5
Width = 34
Caption = 'Points'
ParentColor = False
end
object ProjectChk: TCheckBox
Left = 8
Height = 19
Top = 2
Width = 57
Caption = 'Project'
TabOrder = 0
end
object ProjPtsEdit: TEdit
Left = 72
Height = 23
Top = 1
Width = 42
TabOrder = 1
end
end
object GroupBox4: TGroupBox
Left = 297
Height = 149
Top = 216
Width = 194
Caption = 'Data Smoothing:'
ClientHeight = 131
ClientWidth = 190
TabOrder = 3
object MeanChk: TCheckBox
Left = 9
Height = 19
Top = 2
Width = 105
Caption = 'Center on Mean'
TabOrder = 0
end
object DifferenceChk: TCheckBox
Left = 8
Height = 19
Top = 18
Width = 136
Caption = 'Difference Smoothing'
TabOrder = 1
end
object MoveAvgChk: TCheckBox
Left = 8
Height = 19
Top = 37
Width = 152
Caption = 'Moving Average Smooth'
TabOrder = 2
end
object ExpSmoothChk: TCheckBox
Left = 8
Height = 19
Top = 55
Width = 135
Caption = 'Exponentially Smooth'
TabOrder = 3
end
object FourierSmoothChk: TCheckBox
Left = 8
Height = 19
Top = 74
Width = 131
Caption = 'Fourier Filter Smooth'
TabOrder = 4
end
object PolyChk: TCheckBox
Left = 8
Height = 19
Top = 90
Width = 185
Caption = 'Polynomial Regression Smooth'
TabOrder = 5
end
object MRegSmoothChk: TCheckBox
Left = 9
Height = 19
Top = 108
Width = 169
Caption = 'Multiple Regression Smooth'
TabOrder = 6
end
end
object VarList: TListBox
Left = 6
Height = 274
Top = 88
Width = 138
ItemHeight = 0
TabOrder = 4
end
object InBtn: TBitBtn
Left = 153
Height = 27
Top = 95
Width = 31
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
}
NumGlyphs = 0
OnClick = InBtnClick
TabOrder = 5
end
object OutBtn: TBitBtn
Left = 153
Height = 27
Top = 125
Width = 31
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = OutBtnClick
TabOrder = 6
end
object DepVarEdit: TEdit
Left = 185
Height = 23
Top = 112
Width = 105
TabOrder = 7
Text = 'DepVarEdit'
end
object AlphaEdit: TEdit
Left = 223
Height = 23
Top = 161
Width = 41
TabOrder = 8
Text = 'AlphaEdit'
end
object MaxLagEdit: TEdit
Left = 221
Height = 23
Top = 184
Width = 43
TabOrder = 9
Text = 'MaxLagEdit'
end
object GroupBox5: TGroupBox
Left = 153
Height = 149
Top = 216
Width = 137
Caption = 'Analysis / Output Options'
ClientHeight = 131
ClientWidth = 133
TabOrder = 10
object PlotChk: TCheckBox
Left = 7
Height = 19
Top = 2
Width = 87
Caption = 'Correlogram'
TabOrder = 0
end
object StatsChk: TCheckBox
Left = 7
Height = 19
Top = 16
Width = 66
Caption = 'Statistics'
TabOrder = 1
end
object RMatChk: TCheckBox
Left = 7
Height = 19
Top = 32
Width = 132
Caption = 'Print correlation Mat.'
TabOrder = 2
end
object PartialsChk: TCheckBox
Left = 6
Height = 19
Top = 48
Width = 142
Caption = 'Partial autocorrelations'
TabOrder = 3
end
object YuleWalkerChk: TCheckBox
Left = 6
Height = 19
Top = 64
Width = 120
Caption = 'Yule-Walker Coef.s'
TabOrder = 4
end
object ResidChk: TCheckBox
Left = 5
Height = 19
Top = 80
Width = 88
Caption = 'Residual Plot'
TabOrder = 5
end
end
object ResetBtn: TButton
Left = 6
Height = 26
Top = 385
Width = 76
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 11
end
object CancelBtn: TButton
Left = 104
Height = 26
Top = 385
Width = 76
Caption = 'Cancel'
ModalResult = 2
TabOrder = 12
end
object ComputeBtn: TButton
Left = 320
Height = 26
Top = 385
Width = 76
Caption = 'Compute'
ModalResult = 1
OnClick = ComputeBtnClick
TabOrder = 13
end
object ReturnBtn: TButton
Left = 415
Height = 26
Top = 385
Width = 76
Caption = 'Return'
ModalResult = 1
OnClick = ReturnBtnClick
TabOrder = 14
end
object HelpBtn: TButton
Tag = 104
Left = 208
Height = 27
Top = 384
Width = 73
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 15
end
end

View File

@ -0,0 +1,189 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TAutocorrFrm','FORMDATA',[
'TPF0'#12'TAutocorrFrm'#11'AutocorrFrm'#4'Left'#3#176#0#6'Height'#3#176#1#3'T'
+'op'#2'Z'#5'Width'#3#247#1#7'Caption'#6#15'Autocorrelation'#12'ClientHeight'
+#3#176#1#11'ClientWidth'#3#247#1#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#6
+'0.9.30'#0#6'TLabel'#6'Label3'#4'Left'#2#6#6'Height'#2#16#3'Top'#2'H'#5'Widt'
+'h'#2'f'#7'Caption'#6#20'Available Variables:'#11'ParentColor'#8#0#0#6'TLabe'
+'l'#6'Label4'#4'Left'#3#193#0#6'Height'#2#16#3'Top'#2'X'#5'Width'#2'Z'#7'Cap'
+'tion'#6#17'Selected Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'Label5'#4'L'
+'eft'#3#152#0#6'Height'#2#16#3'Top'#3#168#0#5'Width'#2'D'#7'Caption'#6#13'Al'
+'pha Level: '#11'ParentColor'#8#0#0#6'TLabel'#6'Label6'#4'Left'#3#149#0#6'He'
+'ight'#2#16#3'Top'#3#191#0#5'Width'#2'S'#7'Caption'#6#13'Maximum Lag: '#11'P'
+'arentColor'#8#0#0#9'TGroupBox'#9'GroupBox1'#4'Left'#2#7#6'Height'#2')'#3'To'
+'p'#2#16#5'Width'#3#27#1#7'Caption'#6#22'The series is code in:'#12'ClientHe'
+'ight'#2#23#11'ClientWidth'#3#23#1#8'TabOrder'#2#0#0#12'TRadioButton'#6'ColB'
+'tn'#4'Left'#2#9#6'Height'#2#19#3'Top'#2#1#5'Width'#2'c'#7'Caption'#6#13'A G'
+'rid Column'#7'OnClick'#7#11'ColBtnClick'#8'TabOrder'#2#0#0#0#12'TRadioButto'
+'n'#6'RowBtn'#4'Left'#3#153#0#6'Height'#2#19#3'Top'#2#1#5'Width'#2'm'#7'Capt'
+'ion'#6#17'A row of the grid'#7'OnClick'#7#11'RowBtnClick'#8'TabOrder'#2#1#0
+#0#0#9'TGroupBox'#9'GroupBox2'#4'Left'#3'('#1#6'Height'#2'y'#3'Top'#2#24#5'W'
+'idth'#3#195#0#7'Caption'#6#14'Include Cases:'#12'ClientHeight'#2'g'#11'Clie'
+'ntWidth'#3#191#0#8'TabOrder'#2#1#0#6'TLabel'#6'Label1'#4'Left'#2'9'#6'Heigh'
+'t'#2#16#3'Top'#2'T'#5'Width'#2#15#7'Caption'#6#2'To'#11'ParentColor'#8#0#0
+#12'TRadioButton'#11'AllCasesBtn'#4'Left'#2#8#6'Height'#2#19#3'Top'#2#2#5'Wi'
+'dth'#2'C'#7'Caption'#6#9'All Cases'#8'TabOrder'#2#0#0#0#12'TRadioButton'#12
+'OnlyCasesBtn'#4'Left'#2#7#6'Height'#2#19#3'Top'#2#26#5'Width'#2'p'#7'Captio'
+'n'#6#16'Only Cases From:'#8'TabOrder'#2#1#0#0#5'TEdit'#12'FromCaseEdit'#4'L'
+'eft'#2'X'#6'Height'#2#23#3'Top'#2'0'#5'Width'#2'9'#8'TabOrder'#2#2#4'Text'#6
+#12'FromCaseEdit'#0#0#5'TEdit'#10'ToCaseEdit'#4'Left'#2'W'#6'Height'#2#23#3
+'Top'#2'O'#5'Width'#2':'#8'TabOrder'#2#3#4'Text'#6#10'ToCaseEdit'#0#0#0#9'TG'
+'roupBox'#9'GroupBox3'#4'Left'#3'('#1#6'Height'#2','#3'Top'#3#161#0#5'Width'
+#3#195#0#7'Caption'#6#18'Projection Option:'#12'ClientHeight'#2#26#11'Client'
+'Width'#3#191#0#8'TabOrder'#2#2#0#6'TLabel'#6'Label2'#4'Left'#3#128#0#6'Heig'
+'ht'#2#16#3'Top'#2#5#5'Width'#2'"'#7'Caption'#6#6'Points'#11'ParentColor'#8#0
+#0#9'TCheckBox'#10'ProjectChk'#4'Left'#2#8#6'Height'#2#19#3'Top'#2#2#5'Width'
+#2'9'#7'Caption'#6#7'Project'#8'TabOrder'#2#0#0#0#5'TEdit'#11'ProjPtsEdit'#4
+'Left'#2'H'#6'Height'#2#23#3'Top'#2#1#5'Width'#2'*'#8'TabOrder'#2#1#0#0#0#9
+'TGroupBox'#9'GroupBox4'#4'Left'#3')'#1#6'Height'#3#149#0#3'Top'#3#216#0#5'W'
+'idth'#3#194#0#7'Caption'#6#15'Data Smoothing:'#12'ClientHeight'#3#131#0#11
+'ClientWidth'#3#190#0#8'TabOrder'#2#3#0#9'TCheckBox'#7'MeanChk'#4'Left'#2#9#6
+'Height'#2#19#3'Top'#2#2#5'Width'#2'i'#7'Caption'#6#14'Center on Mean'#8'Tab'
+'Order'#2#0#0#0#9'TCheckBox'#13'DifferenceChk'#4'Left'#2#8#6'Height'#2#19#3
+'Top'#2#18#5'Width'#3#136#0#7'Caption'#6#20'Difference Smoothing'#8'TabOrder'
+#2#1#0#0#9'TCheckBox'#10'MoveAvgChk'#4'Left'#2#8#6'Height'#2#19#3'Top'#2'%'#5
+'Width'#3#152#0#7'Caption'#6#21'Moving Average Smooth'#8'TabOrder'#2#2#0#0#9
+'TCheckBox'#12'ExpSmoothChk'#4'Left'#2#8#6'Height'#2#19#3'Top'#2'7'#5'Width'
+#3#135#0#7'Caption'#6#20'Exponentially Smooth'#8'TabOrder'#2#3#0#0#9'TCheckB'
+'ox'#16'FourierSmoothChk'#4'Left'#2#8#6'Height'#2#19#3'Top'#2'J'#5'Width'#3
+#131#0#7'Caption'#6#21'Fourier Filter Smooth'#8'TabOrder'#2#4#0#0#9'TCheckBo'
+'x'#7'PolyChk'#4'Left'#2#8#6'Height'#2#19#3'Top'#2'Z'#5'Width'#3#185#0#7'Cap'
+'tion'#6#28'Polynomial Regression Smooth'#8'TabOrder'#2#5#0#0#9'TCheckBox'#13
+'MRegSmoothChk'#4'Left'#2#9#6'Height'#2#19#3'Top'#2'l'#5'Width'#3#169#0#7'Ca'
+'ption'#6#26'Multiple Regression Smooth'#8'TabOrder'#2#6#0#0#0#8'TListBox'#7
+'VarList'#4'Left'#2#6#6'Height'#3#18#1#3'Top'#2'X'#5'Width'#3#138#0#10'ItemH'
+'eight'#2#0#8'TabOrder'#2#4#0#0#7'TBitBtn'#5'InBtn'#4'Left'#3#153#0#6'Height'
+#2#27#3'Top'#2'_'#5'Width'#2#31#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0
+#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0
+#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161
+'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255
+'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255
+#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157
+#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195
+#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0
+#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255
+#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144
+#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201
+#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190
+'m'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255
+'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#9'NumGlyphs'#2#0#7'OnClick'#7#10'InBtnClick'#8'TabOrder'#2#5#0#0#7'TBitBtn'
+#6'OutBtn'#4'Left'#3#153#0#6'Height'#2#27#3'Top'#2'}'#5'Width'#2#31#10'Glyph'
+'.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16
+#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255
+'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'
+#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156
,#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255
+#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255
+'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138
+#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207
+#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'
+#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0
+'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'
+#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'
+#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'OutBtnClick'#8
+'TabOrder'#2#6#0#0#5'TEdit'#10'DepVarEdit'#4'Left'#3#185#0#6'Height'#2#23#3
+'Top'#2'p'#5'Width'#2'i'#8'TabOrder'#2#7#4'Text'#6#10'DepVarEdit'#0#0#5'TEdi'
+'t'#9'AlphaEdit'#4'Left'#3#223#0#6'Height'#2#23#3'Top'#3#161#0#5'Width'#2')'
+#8'TabOrder'#2#8#4'Text'#6#9'AlphaEdit'#0#0#5'TEdit'#10'MaxLagEdit'#4'Left'#3
+#221#0#6'Height'#2#23#3'Top'#3#184#0#5'Width'#2'+'#8'TabOrder'#2#9#4'Text'#6
+#10'MaxLagEdit'#0#0#9'TGroupBox'#9'GroupBox5'#4'Left'#3#153#0#6'Height'#3#149
+#0#3'Top'#3#216#0#5'Width'#3#137#0#7'Caption'#6#25'Analysis / Output Options'
+#12'ClientHeight'#3#131#0#11'ClientWidth'#3#133#0#8'TabOrder'#2#10#0#9'TChec'
+'kBox'#7'PlotChk'#4'Left'#2#7#6'Height'#2#19#3'Top'#2#2#5'Width'#2'W'#7'Capt'
+'ion'#6#11'Correlogram'#8'TabOrder'#2#0#0#0#9'TCheckBox'#8'StatsChk'#4'Left'
+#2#7#6'Height'#2#19#3'Top'#2#16#5'Width'#2'B'#7'Caption'#6#10'Statistics'#8
+'TabOrder'#2#1#0#0#9'TCheckBox'#7'RMatChk'#4'Left'#2#7#6'Height'#2#19#3'Top'
+#2' '#5'Width'#3#132#0#7'Caption'#6#22'Print correlation Mat.'#8'TabOrder'#2
+#2#0#0#9'TCheckBox'#11'PartialsChk'#4'Left'#2#6#6'Height'#2#19#3'Top'#2'0'#5
+'Width'#3#142#0#7'Caption'#6#24'Partial autocorrelations'#8'TabOrder'#2#3#0#0
+#9'TCheckBox'#13'YuleWalkerChk'#4'Left'#2#6#6'Height'#2#19#3'Top'#2'@'#5'Wid'
+'th'#2'x'#7'Caption'#6#18'Yule-Walker Coef.s'#8'TabOrder'#2#4#0#0#9'TCheckBo'
+'x'#8'ResidChk'#4'Left'#2#5#6'Height'#2#19#3'Top'#2'P'#5'Width'#2'X'#7'Capti'
+'on'#6#13'Residual Plot'#8'TabOrder'#2#5#0#0#0#7'TButton'#8'ResetBtn'#4'Left'
+#2#6#6'Height'#2#26#3'Top'#3#129#1#5'Width'#2'L'#7'Caption'#6#5'Reset'#7'OnC'
+'lick'#7#13'ResetBtnClick'#8'TabOrder'#2#11#0#0#7'TButton'#9'CancelBtn'#4'Le'
+'ft'#2'h'#6'Height'#2#26#3'Top'#3#129#1#5'Width'#2'L'#7'Caption'#6#6'Cancel'
+#11'ModalResult'#2#2#8'TabOrder'#2#12#0#0#7'TButton'#10'ComputeBtn'#4'Left'#3
+'@'#1#6'Height'#2#26#3'Top'#3#129#1#5'Width'#2'L'#7'Caption'#6#7'Compute'#11
+'ModalResult'#2#1#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#13#0#0#7'TB'
+'utton'#9'ReturnBtn'#4'Left'#3#159#1#6'Height'#2#26#3'Top'#3#129#1#5'Width'#2
+'L'#7'Caption'#6#6'Return'#11'ModalResult'#2#1#7'OnClick'#7#14'ReturnBtnClic'
+'k'#8'TabOrder'#2#14#0#0#7'TButton'#7'HelpBtn'#3'Tag'#2'h'#4'Left'#3#208#0#6
+'Height'#2#27#3'Top'#3#128#1#5'Width'#2'I'#7'Caption'#6#4'Help'#7'OnClick'#7
+#12'HelpBtnClick'#8'TabOrder'#2#15#0#0#0
]);

View File

@ -0,0 +1,214 @@
unit AutoPlotUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ExtCtrls, StdCtrls, Printers, Globals;
type
{ TAutoPlotFrm }
TAutoPlotFrm = class(TForm)
Image1: TImage;
PrintBtn: TButton;
ReturnBtn: TButton;
Panel1: TPanel;
procedure FormShow(Sender: TObject);
procedure PrintBtnClick(Sender: TObject);
procedure AutoPlot(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
correlations, partcors : DblDyneVec;
uplimit, lowlimit : double;
npoints : integer;
DepVarEdit : string;
PlotPartCors : boolean; // true to plot partial correlations
PlotLimits : boolean; // true to show upper and lower limits
end;
var
AutoPlotFrm: TAutoPlotFrm;
implementation
{ TAutoPlotFrm }
procedure TAutoPlotFrm.FormShow(Sender: TObject);
begin
AutoPlotFrm.Image1.Canvas.Clear;
AutoPlot(self);
end;
procedure TAutoPlotFrm.PrintBtnClick(Sender: TObject);
var r : Trect;
begin
with Printer do
begin
Printer.Orientation := poPortrait;
r := Rect(20,20,printer.pagewidth-20,printer.pageheight div 2 + 20);
BeginDoc;
Canvas.StretchDraw(r,Image1.Picture.BitMap);
EndDoc;
end;
end;
procedure TAutoPlotFrm.AutoPlot(Sender: TObject);
var
topmarg, botmarg, leftmarg, rightmarg, verthi, horizlong : integer;
i, X, Y, middle, yincrement, xincrement, labelheight : integer;
labelstring : string;
labelstr : string;
corstep, yprop, scaley : double;
begin
height := AutoPlotFrm.Image1.Canvas.Height;
width := AutoPlotFrm.Image1.Canvas.Width;
middle := height div 2;
topmarg := height div 10;
verthi := height - (2 * topmarg);
botmarg := topmarg + verthi;
leftmarg := width div 10;
horizlong := width - 2 * leftmarg;
rightmarg := leftmarg + horizlong;
yincrement := verthi div 20;
xincrement := horizlong div npoints;
// AutoPlotFrm.Show;
AutoPlotFrm.Image1.Canvas.Pen.Color := clBlack;
// print title at top, centered
labelstring := 'Autocorrelations analysis for :';
labelstring := labelstring + DepVarEdit;
X := (leftmarg + horizlong div 2) - (AutoPlotFrm.Image1.Canvas.TextWidth(labelstring) div 2);
Y := 1;
AutoPlotFrm.Image1.Canvas.TextOut(X,Y,labelstring);
// draw middle (zero correlation) axis
Y := middle;
AutoPlotFrm.Image1.Canvas.MoveTo(leftmarg,Y);
X := rightmarg;
AutoPlotFrm.Image1.Canvas.LineTo(X,Y);
// draw right axis
X := leftmarg;
Y := botmarg;
AutoPlotFrm.Image1.Canvas.MoveTo(X,Y);
Y := topmarg;
AutoPlotFrm.Image1.Canvas.LineTo(X,Y);
// correlation scale to left of vertical axis
corstep := 1.0;
for i := 0 to 20 do
begin
Y := topmarg + (i * yincrement);
labelstr := format('%4.2f -',[corstep]);
labelstring := labelstr;
X := leftmarg - AutoPlotFrm.Image1.Canvas.TextWidth(labelstring);
AutoPlotFrm.Image1.Canvas.TextOut(X,Y,labelstring);
corstep := corstep - 0.1;
end;
// Make legend axis on bottom
X := leftmarg;
Y := botmarg;
AutoPlotFrm.Image1.Canvas.MoveTo(X,Y);
X := rightmarg;
AutoPlotFrm.Image1.Canvas.LineTo(X,Y);
for i := 0 to npoints do
begin
X := leftmarg + (xincrement * i);
labelstring := '|';
AutoPlotFrm.Image1.Canvas.TextOut(X,Y,labelstring);
labelstring := IntToStr(i);
Y := Y + 5;
if (i mod 2) = 1 then AutoPlotFrm.Image1.Canvas.TextOut(X,Y,labelstring);
Y := botmarg;
end;
labelstring := 'LAG VALUE';
X := (leftmarg + horizlong div 2) - (AutoPlotFrm.Image1.Canvas.TextWidth(labelstring) div 2);
Y := botmarg + AutoPlotFrm.Image1.Canvas.TextHeight(labelstring);
AutoPlotFrm.Image1.Canvas.TextOut(X,Y,labelstring);
// Plot lines from correlation to correlation
AutoPlotFrm.Image1.Canvas.Pen.Color := clRed;
for i := 0 to npoints - 1 do
begin
yprop := (1.0 - correlations[i]) / 2.0;
scaley := yprop * verthi;
X := leftmarg + round(xincrement * i);
Y := topmarg + round(scaley);
if (i = 0)then AutoPlotFrm.Image1.Canvas.MoveTo(X,Y)
else AutoPlotFrm.Canvas.LineTo(X,Y);
AutoPlotFrm.Image1.Canvas.Ellipse(X-3,Y-3,X+3,Y+3);
end;
// Plot partial correlations
if PlotPartCors then
begin
AutoPlotFrm.Image1.Canvas.Pen.Color := clBlue;
for i := 0 to npoints - 1 do
begin
yprop := (1.0 - partcors[i]) / 2.0;
scaley := yprop * verthi;
X := leftmarg + round(xincrement * i);
Y := topmarg + round(scaley);
if (i = 0) then AutoPlotFrm.Image1.Canvas.MoveTo(X,Y)
else AutoPlotFrm.Image1.Canvas.LineTo(X,Y);
AutoPlotFrm.Image1.Canvas.Ellipse(X-3,Y-3,X+3,Y+3);
end;
end;
// Plot lines for upper and lower 95% confidence levels
if PlotLimits then
begin
AutoPlotFrm.Image1.Canvas.Pen.Color := clGreen;
yprop := (1.0 - uplimit) / 2.0;
scaley := yprop * verthi;
Y := topmarg + round(scaley);
AutoPlotFrm.Image1.Canvas.MoveTo(leftmarg,Y);
X := rightmarg;
AutoPlotFrm.Image1.Canvas.LineTo(X,Y);
yprop := (1.0 - lowlimit) / 2.0;
scaley := yprop * verthi;
Y := topmarg + round(scaley);
AutoPlotFrm.Image1.Canvas.MoveTo(leftmarg,Y);
X := rightmarg;
AutoPlotFrm.Image1.Canvas.LineTo(X,Y);
end;
// Show legend at right
X := rightmarg;
labelstring := 'Correlations';
labelheight := AutoPlotFrm.Image1.Canvas.TextHeight(labelstring);
Y := 5 * labelheight;
AutoPlotFrm.Image1.Canvas.Font.Color := clRed;
AutoPlotFrm.Image1.Canvas.TextOut(X,Y,labelstring);
if PlotPartCors then
begin
labelstring := 'Partials';
Y := 6 * labelheight;
AutoPlotFrm.Image1.Canvas.Font.Color := clBlue;
AutoPlotFrm.Image1.Canvas.TextOut(X,Y,labelstring);
end;
if PlotLimits then
begin
Y := 7 * labelheight;
labelstring := '95% C.I.';
AutoPlotFrm.Image1.Canvas.Font.Color := clGreen;
AutoPlotFrm.Image1.Canvas.TextOut(X,Y,labelstring);
end;
end;
initialization
{$I autoplotunit.lrs}
end.

View File

@ -0,0 +1,46 @@
object AutoPlotFrm: TAutoPlotFrm
Left = 82
Height = 517
Top = 99
Width = 743
Caption = 'Autocorrelation and partial autocorrelation'
ClientHeight = 517
ClientWidth = 743
OnShow = FormShow
LCLVersion = '0.9.30'
object Image1: TImage
Left = 0
Height = 468
Top = 0
Width = 743
Align = alClient
end
object Panel1: TPanel
Left = 0
Height = 49
Top = 468
Width = 743
Align = alBottom
ClientHeight = 49
ClientWidth = 743
TabOrder = 0
object PrintBtn: TButton
Left = 408
Height = 27
Top = 9
Width = 83
Caption = 'Print'
OnClick = PrintBtnClick
TabOrder = 0
end
object ReturnBtn: TButton
Left = 522
Height = 27
Top = 9
Width = 79
Caption = 'Return'
ModalResult = 1
TabOrder = 1
end
end
end

View File

@ -0,0 +1,15 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TAutoPlotFrm','FORMDATA',[
'TPF0'#12'TAutoPlotFrm'#11'AutoPlotFrm'#4'Left'#2'R'#6'Height'#3#5#2#3'Top'#2
+'c'#5'Width'#3#231#2#7'Caption'#6'+Autocorrelation and partial autocorrelati'
+'on'#12'ClientHeight'#3#5#2#11'ClientWidth'#3#231#2#6'OnShow'#7#8'FormShow'
+#10'LCLVersion'#6#6'0.9.30'#0#6'TImage'#6'Image1'#4'Left'#2#0#6'Height'#3#212
+#1#3'Top'#2#0#5'Width'#3#231#2#5'Align'#7#8'alClient'#0#0#6'TPanel'#6'Panel1'
+#4'Left'#2#0#6'Height'#2'1'#3'Top'#3#212#1#5'Width'#3#231#2#5'Align'#7#8'alB'
+'ottom'#12'ClientHeight'#2'1'#11'ClientWidth'#3#231#2#8'TabOrder'#2#0#0#7'TB'
+'utton'#8'PrintBtn'#4'Left'#3#152#1#6'Height'#2#27#3'Top'#2#9#5'Width'#2'S'#7
+'Caption'#6#5'Print'#7'OnClick'#7#13'PrintBtnClick'#8'TabOrder'#2#0#0#0#7'TB'
+'utton'#9'ReturnBtn'#4'Left'#3#10#2#6'Height'#2#27#3'Top'#2#9#5'Width'#2'O'#7
+'Caption'#6#6'Return'#11'ModalResult'#2#1#8'TabOrder'#2#1#0#0#0#0
]);

View File

@ -0,0 +1,902 @@
unit AxSAnovaUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons, MainUnit, OutPutUnit, FunctionsLib, GraphLib, Globals,
DataProcs, contexthelpunit;
type
{ TAxSAnovaFrm }
TAxSAnovaFrm = class(TForm)
PosthocChk: TCheckBox;
DepInBtn: TBitBtn;
DepOutBtn: TBitBtn;
HelpBtn: TButton;
RepInBtn: TBitBtn;
RepOutBtn: TBitBtn;
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
PlotChk: TCheckBox;
GrpVar: TEdit;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
RepList: TListBox;
VarList: TListBox;
procedure ComputeBtnClick(Sender: TObject);
procedure DepInBtnClick(Sender: TObject);
procedure DepOutBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure RepInBtnClick(Sender: TObject);
procedure RepOutBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
procedure PostHocTests(NoSelected : integer; MSerr : double; dferr : integer;
count : integer; ColMeans : DblDyneVec; Sender: TObject);
procedure TUKEY(error_ms : double; { mean squared for residual }
error_df : double; { deg. freedom for residual }
value : double; { size of smallest group }
group_total : DblDyneVec; { sum of scores in a group }
group_count : DblDyneVec; { no. of cases in a group }
min_grp : integer; { minimum group code }
max_grp : integer); { maximum group code }
procedure SCHEFFETEST(error_ms : double; { mean squared residual }
group_total : DblDyneVec; { sum of scores in a group }
group_count : DblDyneVec; { count of cases in a group }
min_grp : integer; { code of first group }
max_grp : integer; { code of last group }
total_n : double); { total number of cases }
procedure Newman_Keuls(error_ms : double; { residual mean squared }
error_df : double; { deg. freedom for error }
value : double; { number in smallest group }
group_total : DblDyneVec; { sum of scores in a group }
group_count : DblDyneVec; { count of cases in a group }
min_grp : integer; { lowest group code }
max_grp : integer); { largest group code }
procedure TUKEY_KRAMER(error_ms : double; { residual mean squared }
error_df : double; { deg. freedom for error }
value : double; { number in smallest group }
group_total : DblDyneVec; { sum of scores in group }
group_count : DblDyneVec; { number of caes in group }
min_grp : integer; { code of lowest group }
max_grp : integer); { code of highst group }
procedure TUKEYBTEST(ErrorMS : double; // within groups error
ErrorDF : double; // degrees of freedom within
group_total : DblDyneVec; // vector of group sums
group_count : DblDyneVec; // vector of group n's
min_grp : integer; // smallest group code
max_grp : integer; // largest group code
groupsize : double); // size of groups (all equal)
private
{ private declarations }
public
{ public declarations }
end;
var
AxSAnovaFrm: TAxSAnovaFrm;
implementation
{ TAxSAnovaFrm }
procedure TAxSAnovaFrm.ResetBtnClick(Sender: TObject);
VAR i : integer;
begin
VarList.Items.Clear;
RepList.Items.Clear;
GrpVar.Text := '';
DepInBtn.Visible := true;
DepOutBtn.Visible := false;
RepInBtn.Visible := true;
RepOutBtn.Visible := false;
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
PlotChk.Checked := false;
end;
procedure TAxSAnovaFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TAxSAnovaFrm.HelpBtnClick(Sender: TObject);
begin
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
procedure TAxSAnovaFrm.RepInBtnClick(Sender: TObject);
VAR i, index : integer;
begin
index := VarList.Items.Count;
i := 0;
while i < index do
begin
if (VarList.Selected[i]) then
begin
RepList.Items.Add(VarList.Items.Strings[i]);
VarList.Items.Delete(i);
index := index - 1;
i := 0;
end
else i := i + 1;
end;
RepOutBtn.Visible := true;
end;
procedure TAxSAnovaFrm.RepOutBtnClick(Sender: TObject);
VAR index : integer;
begin
index := RepList.ItemIndex;
if index < 0 then
begin
RepOutBtn.Visible := false;
exit;
end;
VarList.Items.Add(RepList.Items.Strings[index]);
RepList.Items.Delete(index);
end;
procedure TAxSAnovaFrm.DepInBtnClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
GrpVar.Text := VarList.Items.Strings[index];
DepInBtn.Visible := false;
DepOutBtn.Visible := true;
end;
procedure TAxSAnovaFrm.ComputeBtnClick(Sender: TObject);
var
a1, a2, agrp, i, j, k, v1, totaln, NoSelected, range : integer;
group, col : integer;
p, X, f1, f2, f3, probf1, probf2, probf3, fd1, fd2, TotMean : double;
TotStdDev, den, maxmean, alpha : double;
C, StdDev : DblDyneMat;
squaredsumx, sumxsquared, coltot, sumsum : DblDyneVec;
degfree : array[1..8] of integer;
ColNoSelected : IntDyneVec;
ss :array[1..8] of double;
ms : array[1..8] of double;
coeff : array[1..6] of double;
N : IntDyneVec;
value, outline : string;
// parray : array[1..10] of pvector;
begin
SetLength(ColNoSelected,NoVariables+1);
if GrpVar.Text = '' then
Begin
ShowMessage('ERROR! Select a variable for between groups treatment groups');
exit;
end;
NoSelected := 1;
// Get between subjects group variable
for j := 1 to NoVariables do
if GrpVar.Text = OS3MainFrm.DataGrid.Cells[j,0] then ColNoSelected[0] := j;
v1 := ColNoSelected[0]; //A treatment (group) variable
//get minimum and maximum group codes for Treatment A
a1 := 1000; //atoi(MainForm.Grid.Cells[v1][1].c_str());
a2 := 0; //a1;
for i := 1 to NoCases do
Begin
if not GoodRecord(i,NoSelected,ColNoSelected) then continue;
group := round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[v1,i])));
if group < a1 then a1 := group;
if group > a2 then a2 := group;
end;
range := a2 - a1 + 1;
NoSelected := RepList.Items.Count + 1;
k := NoSelected - 1; //Number of B (within subject) treatment levels
// allocate heap
SetLength(C,range+1,NoSelected+1);
SetLength(N,range+1);
SetLength(squaredsumx,range+1);
SetLength(coltot,NoSelected+1);
SetLength(sumxsquared,range+1);
SetLength(sumsum,range+1);
SetLength(StdDev,range+1,NoSelected+1);
// initialize arrays
for i := 0 to range-1 do
Begin
N[i] := 0;
squaredsumx[i] := 0.0;
sumxsquared[i] := 0.0;
sumsum[i] := 0.0;
for j := 0 to k-1 do C[i,j] := 0.0;
end;
for j := 0 to k-1 do coltot[j] := 0.0;
for i := 0 to range do
for j := 0 to k do
StdDev[i,j] := 0.0;
for i := 1 to 6 do coeff[i] := 0.0;
for i := 1 to 8 do degfree[i] := 0;
TotStdDev := 0.0;
TotMean := 0.0;
totaln := 0;
// Get items selected for repeated measures (B treatments)
for i := 0 to RepList.Items.Count - 1 do
Begin
for j := 1 to NoVariables do
Begin
if RepList.Items.Strings[i] = OS3MainFrm.DataGrid.Cells[j,0] then
ColNoSelected[i+1] := j;
end;
end;
//Read data values and get sums and sums of squared values
for i := 1 to NoCases do
Begin
if not GoodRecord(i,NoSelected,ColNoSelected) then continue;
agrp := round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[v1,i])));
agrp := agrp - a1 + 1; // offset to one
p := 0.0;
//Now read the B treatment scores
for j := 1 to k do
Begin
col := ColNoSelected[j];
if not GoodRecord(i,NoSelected,ColNoSelected) then continue;
X := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[col,i]));
C[agrp-1,j-1] := C[agrp-1,j-1] + X;
StdDev[agrp-1,j-1] := StdDev[agrp-1,j-1] + (X * X);
coeff[1]:= coeff[1] + X;
p := p + X;
sumxsquared[agrp-1] := sumxsquared[agrp-1] + (X * X);
TotMean := TotMean + X;
TotStdDev := TotStdDev + (X * X);
end;
N[agrp-1] := N[agrp-1] + 1;
squaredsumx[agrp-1] := squaredsumx[agrp-1] + (p * p);
sumsum[agrp-1] := sumsum[agrp-1] + p;
end; // next case
// Obtain sums of squares for std. dev.s of B treatments
for i := 1 to k do // column (B treatments)
for j := 1 to range do // group of A treatments
StdDev[range,i-1] := StdDev[range,i-1] + StdDev[j-1,i-1];
// Obtain sums of squares for std. dev.s of A treatments
for i := 1 to range do
for j := 1 to k do
StdDev[i-1,k] := StdDev[i-1,k] + StdDev[i-1,j-1];
// Obtain cell standard deviations
for i := 1 to range do // rows
Begin
for j := 1 to k do // columns
Begin
StdDev[i-1,j-1] := StdDev[i-1,j-1] - ((C[i-1,j-1] * C[i-1,j-1]) / (N[i-1]));
StdDev[i-1,j-1] := StdDev[i-1,j-1] / (N[i-1]-1);
StdDev[i-1,j-1] := sqrt(StdDev[i-1,j-1]);
end;
end;
// Obtain A treatment group standard deviations
for i := 1 to range do
Begin
StdDev[i-1,k] := StdDev[i-1,k] - ((sumsum[i-1] * sumsum[i-1]) / (k * N[i-1]));
StdDev[i-1,k] := StdDev[i-1,k] / (k * N[i-1] - 1);
StdDev[i-1,k] := sqrt(StdDev[i-1,k]);
end;
// Obtain coefficients for the sums of squares
for i := 1 to range do
Begin
coeff[2] := coeff[2] + sumxsquared[i-1];
coeff[3] := coeff[3] + ((sumsum[i-1] * (sumsum[i-1]) / ((N[i-1] * k))));
coeff[6] := coeff[6] + squaredsumx[i-1];
totaln := totaln + N[i-1];
end;
coeff[1] := (coeff[1] * coeff[1]) / (totaln * k);
den := k;
coeff[6] := coeff[6] / den;
for j := 1 to k do
Begin
coltot[j-1] := 0.0;
for i := 1 to range do
Begin
coltot[j-1] := coltot[j-1] + C[i-1,j-1];
coeff[5] := coeff[5] + ((C[i-1,j-1] * C[i-1,j-1]) / N[i-1]);
end;
coeff[4] := coeff[4] + (coltot[j-1] * coltot[j-1]);
end;
den := totaln;
coeff[4] := coeff[4] / den;
// Obtain B treatment group standard deviations
for j := 1 to k do
Begin
StdDev[range,j-1] := StdDev[range,j-1] - ((coltot[j-1] * coltot[j-1]) / totaln);
StdDev[range,j-1] := StdDev[range,j-1] / (totaln-1);
StdDev[range,j-1] := sqrt(StdDev[range,j-1]);
end;
// Calculate degrees of freedom for the mean squares
degfree[1] := totaln - 1; // Between subjects degrees freedom
degfree[2] := a2 - a1; // between groups degrees of freedom
degfree[3] := totaln - (a2 - a1 + 1);// subjects within groups deg. frd.
degfree[4] := totaln * (k - 1); // within subjects degrees of freedom
degfree[5] := k - 1; // B treatments degrees of freedom
degfree[6] := degfree[2] * degfree[5]; // A x B interaction degrees of frd.
degfree[7] := degfree[3] * degfree[5]; // B x Subjects within groups d.f.
degfree[8] := k * totaln - 1; // total degrees of freedom
// Calculate the sums of squares
ss[1] := coeff[6] - coeff[1];
ss[2] := coeff[3] - coeff[1];
ss[3] := coeff[6] - coeff[3];
ss[4] := coeff[2] - coeff[6];
ss[5] := coeff[4] - coeff[1];
ss[6] := coeff[5] - coeff[3] - coeff[4] + coeff[1];
ss[7] := coeff[2] - coeff[5] - coeff[6] + coeff[3];
ss[8] := coeff[2] - coeff[1];
// Calculate the mean squares
for i := 1 to 8 do
Begin
den := degfree[i];
ms[i] := ss[i] / den;
end;
// Calculate the f-tests for effects A, B and interaction
if (ms[3] > 0.0) then f1 := ms[2] / ms[3] else f1 := 1000.0;
if (ms[7] > 0.0) then
Begin
f2 := ms[5] / ms[7];
f3 := ms[6] / ms[7];
end
else
Begin
f2 := 1000.0;
f3 := 1000.0;
end;
//Now, report results
OutPutFrm.RichEdit.Clear;
OutPutFrm.RichEdit.Lines.Add('ANOVA With One Between Subjects and One Within Subjects Treatments');
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('------------------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add('Source df SS MS F Prob.');
OutPutFrm.RichEdit.Lines.Add('------------------------------------------------------------------');
fd1 := degfree[2];
fd2 := degfree[3];
probf1 := probf(f1, fd1, fd2);
fd1 := degfree[5];
fd2 := degfree[7];
probf2 := probf(f2, fd1, fd2);
fd1 := degfree[6];
fd2 := degfree[7];
probf3 := probf(f3, fd1, fd2);
outline := format('Between %5d %10.3f',[degfree[1],ss[1]]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format(' Groups (A) %5d %10.3f %10.3f %10.3f %6.4f',
[degfree[2], ss[2], ms[2], f1, probf1]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format(' Subjects w.g.%5d %10.3f %10.3f',
[degfree[3],ss[3],ms[3]]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
outline := format('Within Subjects %5d %10.3f',[degfree[4], ss[4]]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format(' B Treatments %5d %10.3f %10.3f %10.3f %6.4f',
[degfree[5], ss[5], ms[5], f2, probf2]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format(' A X B inter. %5d %10.3f %10.3f %10.3f %6.4f',
[degfree[6], ss[6], ms[6], f3, probf3]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format(' B X S w.g. %5d %10.3f %10.3f',
[degfree[7], ss[7], ms[7]]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
outline := format('TOTAL %5d %10.3f',[degfree[8], ss[8]]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('------------------------------------------------------------------');
//Calculate and print means
OutPutFrm.RichEdit.Lines.Add('Means');
outline := 'TRT. ';
for i := 1 to k do
Begin
value := format('B%3d ',[i]);
outline := outline + value;
end;
outline := outline + 'TOTAL';
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add(' A ');
for i := 1 to range do
Begin
for j := 1 to k do
C[i-1,j-1] := C[i-1,j-1] / N[i-1]; //mean of each B treatment within A treatment
sumsum[i-1] := sumsum[i-1] / (N[i-1] * k); //means in A treatment accross B treatments
end;
for j := 1 to k do coltot[j-1] := coltot[j-1] / totaln;
TotStdDev := TotStdDev - ((TotMean * TotMean) / (k * totaln));
TotStdDev := TotStdDev / (k * totaln - 1);
TotStdDev := sqrt(TotStdDev);
TotMean := TotMean / (k * totaln);
for i := 1 to range do
Begin
outline := format('%3d ',[i+a1-1]);
for j := 1 to k do
Begin
value := format('%7.3f',[C[i-1,j-1]]);
outline := outline + value;
end;
value := format('%7.3f',[sumsum[i-1]]);
outline := outline + value;
OutPutFrm.RichEdit.Lines.Add(outline);
end;
outline := 'TOTAL';
for j := 1 to k do
Begin
value := format('%7.3f',[coltot[j-1]]);
outline := outline + value;
end;
value := format('%7.3f',[TotMean]);
outline := outline + value;
OutPutFrm.RichEdit.Lines.Add(outline);
// Print standard deviations
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Standard Deviations');
outline := 'TRT. ';
for i := 1 to k do
Begin
value := format('B%3d ',[i]);
outline := outline + value;
end;
outline := outline + 'TOTAL';
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add(' A ');
for i := 1 to range do
Begin
outline := format('%3d ',[i+a1-1]);
for j := 1 to k do
Begin
value := format('%7.3f',[StdDev[i-1,j-1]]);
outline := outline + value;
end;
value := format('%7.3f',[StdDev[i-1,k]]);
outline := outline + value;
OutPutFrm.RichEdit.Lines.Add(outline);
end;
outline := 'TOTAL';
for j := 1 to k do
Begin
value := format('%7.3f',[StdDev[range,j-1]]);
outline := outline + value;
end;
value := format('%7.3f',[TotStdDev]);
outline := outline + value;
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.ShowModal;
if PlotChk.Checked = true then // PlotMeans(C,range,k,this)
begin
maxmean := 0.0;
SetLength(GraphFrm.Ypoints,range,k);
SetLength(GraphFrm.Xpoints,1,k);
for i := 1 to range do
begin
outline := 'A ' + IntToStr(i);
GraphFrm.SetLabels[i] := outline;
for j := 1 to k do
begin
GraphFrm.Ypoints[i-1,j-1] := C[i-1,j-1];
if C[i-1,j-1] > maxmean then maxmean := C[i-1,j-1];
end;
end;
for j := 1 to k do
begin
coltot[j-1] := j;
GraphFrm.Xpoints[0,j-1] := j;
end;
GraphFrm.nosets := range;
GraphFrm.nbars := k;
GraphFrm.Heading := 'TREATMENTS X SUBJECT REPLICATIONS ANOVA';
GraphFrm.XTitle := 'WITHIN (B) TREATMENT GROUP';
GraphFrm.YTitle := 'Mean';
GraphFrm.barwideprop := 0.5;
GraphFrm.AutoScale := false;
GraphFrm.GraphType := 2; // 3d Vertical Bar Chart
GraphFrm.miny := 0.0;
GraphFrm.maxy := maxmean;
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.FloorColor := clLtGray;
GraphFrm.ShowBackWall := true;
GraphFrm.ShowModal;
end;
if PosthocChk.Checked = true then
begin
OutPutFrm.RichEdit.Clear;
// Do tests for the A (between groups)
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Comparisons for the Between Group Means');
PostHocTests(range, MS[1], degfree[1], range, sumsum, self);
OutPutFrm.ShowModal;
// Do tests for the B (repeated measures)
OutPutFrm.RichEdit.Clear;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Comparisons for the Repeated Measures Means');
PostHocTests(k, ms[4], degfree[4], NoCases, coltot, self);
end;
OutPutFrm.ShowModal;
// cleanup the heap
GraphFrm.Xpoints := nil;
GraphFrm.Ypoints := nil;
StdDev := nil;
sumsum := nil;
sumxsquared := nil;
coltot := nil;
squaredsumx := nil;
N := nil;
C := nil;
ColNoSelected := nil;
end;
procedure TAxSAnovaFrm.DepOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(GrpVar.Text);
GrpVar.Text := '';
DepInBtn.Visible := true;
DepOutBtn.Visible := false;
end;
procedure TAxSAnovaFrm.PostHocTests(NoSelected : integer; MSerr : double; dferr : integer;
count : integer; ColMeans : DblDyneVec; Sender: TObject);
VAR
group_total : DblDyneVec;
group_count : DblDyneVec;
i, mingrp : integer;
begin
SetLength(group_total,NoSelected);
SetLength(group_count,NoSelected);
for i := 0 to NoSelected - 1 do
begin
group_count[i] := double(count);
group_total[i] := double(count) * ColMeans[i];
end;
mingrp := 1;
TUKEY(MSerr, dferr, count, group_total, group_count, mingrp, NoSelected);
TUKEY_KRAMER(MSerr, dferr, count, group_total, group_count, mingrp, NoSelected);
TUKEYBTEST(MSerr, dferr, group_total, group_count, mingrp,NoSelected, count);
SCHEFFETEST(MSerr, group_total, group_count, mingrp, NoSelected, count*NoSelected);
Newman_Keuls(MSerr, dferr, count, group_total, group_count, mingrp, NoSelected);
end;
procedure TAxSAnovaFrm.TUKEY(error_ms : double; { mean squared for residual }
error_df : double; { deg. freedom for residual }
value : double; { size of smallest group }
group_total : DblDyneVec; { sum of scores in a group }
group_count : DblDyneVec; { no. of cases in a group }
min_grp : integer; { minimum group code }
max_grp : integer); { maximum group code }
var
sig : boolean;
divisor : double;
df1 : integer;
alpha : double;
contrast, mean1, mean2 : double;
q_stat : double;
i,j : integer;
outline : string;
begin
// alpha := StrToFloat(BlksAnovaFrm.PostAlpha.Text);
alpha := 0.05;
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add(' Tukey HSD Test for Differences Between Means');
outline := format(' alpha selected = %4.2f',[alpha]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('Groups Difference Statistic Probability Significant?');
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
divisor := sqrt(error_ms / value );
for i := min_grp to max_grp - 1 do
for j := i + 1 to max_grp do
begin
outline := format('%2d - %2d ',[i,j]);
mean1 := group_total[i-1] / group_count[i-1];
mean2 := group_total[j-1] / group_count[j-1];
contrast := mean1 - mean2;
outline := outline + format('%7.3f q = ',[contrast]);
contrast := abs(contrast / divisor) ;
outline := outline + format('%6.3f ',[contrast]);
df1 := max_grp - min_grp + 1;
q_stat := STUDENT(contrast,error_df,df1);
outline := outline + format(' %6.4f',[q_stat]);
if alpha >= q_stat then sig := TRUE else sig := FALSE;
if sig = TRUE then outline := outline + ' YES '
else outline := outline + ' NO';
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
end;
procedure TAxSAnovaFrm.SCHEFFETEST(error_ms : double; { mean squared residual }
group_total : DblDyneVec; { sum of scores in a group }
group_count : DblDyneVec; { count of cases in a group }
min_grp : integer; { code of first group }
max_grp : integer; { code of last group }
total_n : double); { total number of cases }
var
statistic, stat_var, stat_sd : double;
mean1, mean2, alpha, difference, prob_scheffe, f_prob, df1, df2 : double;
outline : string;
i, j : integer;
begin
// alpha := StrToFloat(BlksAnovaFrm.PostAlpha.Text);
alpha := 0.05;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('----------------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add(' Scheffe contrasts among pairs of means.');
outline := format(' alpha selected = %4.2f',[alpha]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('Group vs Group Difference Scheffe Critical Significant?');
OutPutFrm.RichEdit.Lines.Add(' Statistic Value');
OutPutFrm.RichEdit.Lines.Add('----------------------------------------------------------------');
alpha := 1.0 - alpha ;
for i:= min_grp to max_grp - 1 do
for j := i + 1 to max_grp do
begin
outline := format('%2d %2d ',[i,j]);
mean1 := group_total[i-1] / group_count[i-1];
mean2 := group_total[j-1] / group_count[j-1];
difference := mean1 - mean2;
outline := outline + format('%8.2f ',[difference]);
stat_var := error_ms *
( 1.0 / group_count[i-1] + 1.0 / group_count[j-1]);
stat_sd := sqrt(stat_var);
statistic := abs(difference / stat_sd);
outline := outline + format('%8.2f ',[statistic]);
df1 := max_grp - min_grp;
df2 := total_n - df1 + 1;
f_prob := fpercentpoint(alpha,round(df1),round(df2) );
prob_scheffe := sqrt(df1 * f_prob);
outline := outline + format('%8.3f ',[prob_scheffe]);
if statistic > prob_scheffe then outline := outline + 'YES'
else outline := outline + 'NO';
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('----------------------------------------------------------------');
end;
procedure TAxSAnovaFrm.Newman_Keuls(error_ms : double; { residual mean squared }
error_df : double; { deg. freedom for error }
value : double; { number in smallest group }
group_total : DblDyneVec; { sum of scores in a group }
group_count : DblDyneVec; { count of cases in a group }
min_grp : integer; { lowest group code }
max_grp : integer); { largest group code }
var
i, j : integer;
temp1, temp2 : double;
groupno : IntDyneVec;
alpha : double;
contrast, mean1, mean2 : double;
q_stat : double;
divisor : double;
tempno : integer;
df1 : integer;
sig : boolean;
outline : string;
begin
SetLength(groupno,max_grp-min_grp+1);
for i := min_grp to max_grp do groupno[i-1] := i;
for i := min_grp to max_grp - 1 do
begin
for j := i + 1 to max_grp do
begin
if group_total[i-1] / group_count[i-1] >
group_total[j-1] / group_count[j-1] then
begin
temp1 := group_total[i-1];
temp2 := group_count[i-1];
tempno := groupno[i-1];
group_total[i-1] := group_total[j-1];
group_count[i-1] := group_count[j-1];
groupno[i-1] := groupno[j-1];
group_total[j-1] := temp1;
group_count[j-1] := temp2;
groupno[j-1] := tempno;
end;
end;
end;
// alpha := StrToFloat(BlksAnovaFrm.PostAlpha.Text);
alpha := 0.05;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('----------------------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add(' Neuman-Keuls Test for Contrasts on Ordered Means');
outline := format(' alpha selected = %4.2f',[alpha]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Group Mean');
for i := 1 to max_grp do
begin
outline := format('%3d %10.3f',[groupno[i-1],group_total[i-1] / group_count[i-1]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Groups Difference Statistic d.f. Probability Significant?');
OutPutFrm.RichEdit.Lines.Add('----------------------------------------------------------------------');
divisor := sqrt(error_ms / value);
for i := min_grp to max_grp - 1 do
begin
for j := i + 1 to max_grp do
begin
outline := format('%2d - %2d ',[groupno[i-1],groupno[j-1]]);
mean1 := group_total[i-1] / group_count[i-1];
mean2 := group_total[j-1] / group_count[j-1];
contrast := mean1 - mean2;
outline := outline + format('%7.3f q = ',[contrast]);
contrast := abs(contrast / divisor );
df1 := j - i + 1;
outline := outline + format('%6.3f %2d %3.0f ',[contrast,df1,error_df]);
q_stat := STUDENT(contrast,error_df,df1);
outline := outline + format(' %6.4f',[q_stat]);
if alpha > q_stat then sig := TRUE else sig := FALSE;
if sig = TRUE then outline := outline + ' YES'
else outline := outline + ' NO';
OutPutFrm.RichEdit.Lines.Add(outline);
end;
end;
OutPutFrm.RichEdit.Lines.Add('----------------------------------------------------------------------');
groupno := nil;
end;
procedure TAxSAnovaFrm.TUKEY_KRAMER(error_ms : double; { residual mean squared }
error_df : double; { deg. freedom for error }
value : double; { number in smallest group }
group_total : DblDyneVec; { sum of scores in group }
group_count : DblDyneVec; { number of caes in group }
min_grp : integer; { code of lowest group }
max_grp : integer); { code of highst group }
var
sig : boolean;
divisor : double;
df1 : integer;
alpha : double;
contrast, mean1, mean2 : double;
q_stat : double;
outline : string;
i, j : integer;
begin
// alpha := StrToFloat(BlksAnovaFrm.PostAlpha.Text);
alpha := 0.05;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add(' Tukey-Kramer Test for Differences Between Means');
outline := format(' alpha selected = %4.2f',[alpha]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('Groups Difference Statistic Probability Significant?');
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
for i := min_grp to max_grp - 1 do
for j := i + 1 to max_grp do
begin
outline := format('%2d - %2d ',[i,j]);
mean1 := group_total[i-1] / group_count[i-1];
mean2 := group_total[j-1] / group_count[j-1];
contrast := mean1 - mean2;
outline := outline + format('%7.3f q = ',[contrast]);
divisor := sqrt(error_ms *
( ( 1.0/group_count[i-1] + 1.0/group_count[j-1] ) / 2 ) );
contrast := abs(contrast / divisor) ;
outline := outline + format('%6.3f ',[contrast]);
df1 := max_grp - min_grp + 1;
q_stat := STUDENT(contrast,error_df,df1);
outline := outline + format(' %6.4f',[q_stat]);
if alpha >= q_stat then sig := TRUE else sig := FALSE;
if sig = TRUE then outline := outline + ' YES '
else outline := outline + ' NO';
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
end;
procedure TAxSAnovaFrm.TUKEYBTEST(ErrorMS : double; // within groups error
ErrorDF : double; // degrees of freedom within
group_total : DblDyneVec; // vector of group sums
group_count : DblDyneVec; // vector of group n's
min_grp : integer; // smallest group code
max_grp : integer; // largest group code
groupsize : double); // size of groups (all equal)
var
alpha : double;
outline : string;
i, j : integer;
df1 : double;
qstat : double;
tstat : double;
groupno : IntDyneVec;
temp1, temp2 : double;
tempno : integer;
NoGrps : integer;
contrast : double;
mean1, mean2 : double;
sig : string[6];
groups : double;
response : string[5];
divisor : double;
begin
SetLength(groupno,max_grp-min_grp+1);
// alpha := StrToFloat(BlksAnovaFrm.PostAlpha.Text);
alpha := 0.05;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add(' Tukey B Test for Contrasts on Ordered Means');
outline := format(' alpha selected = %4.2f',[alpha]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Groups Difference Statistic d.f. Prob.>value Significant?');
divisor := sqrt(ErrorMS / groupsize);
NoGrps := max_grp - min_grp + 1;
for i := min_grp to max_grp do groupno[i-1] := i;
for i := 1 to NoGrps - 1 do
begin
for j := i + 1 to NoGrps do
begin
if group_total[i-1] / group_count[i-1] >
group_total[j-1] / group_count[j-1] then
begin
temp1 := group_total[i-1];
temp2 := group_count[i-1];
tempno := groupno[i-1];
group_total[i-1] := group_total[j-1];
group_count[i-1] := group_count[j-1];
groupno[i-1] := groupno[j-1];
group_total[j-1] := temp1;
group_count[j-1] := temp2;
groupno[j-1] := tempno;
end;
end;
end;
for i := 1 to NoGrps-1 do
begin
for j := i+1 to NoGrps do
begin
mean1 := group_total[i-1] / group_count[i-1];
mean2 := group_total[j-1] / group_count[j-1];
contrast := abs((mean1 - mean2) / divisor);
df1 := j - i + 1.0;
qstat := STUDENT(contrast,ErrorDF,df1);
groups := NoGrps;
tstat := STUDENT(contrast,ErrorDF,groups);
qstat := (qstat + tstat) / 2.0;
if alpha >= qstat then sig := 'YES' else sig := 'NO';
outline := format('%3d - %3d %10.3f %10.3f %4.0f,%4.0f %5.3f %s',
[groupno[i-1],groupno[j-1],
mean1-mean2,contrast,df1,ErrorDF,qstat,sig]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
end;
groupno := nil;
end;
initialization
{$I axsanovaunit.lrs}
end.

View File

@ -0,0 +1,312 @@
object AxSAnovaFrm: TAxSAnovaFrm
Left = 240
Height = 305
Top = 121
Width = 558
Caption = 'Treatments by Subjects ANOVA (AxS)'
ClientHeight = 305
ClientWidth = 558
OnShow = FormShow
LCLVersion = '0.9.30.4'
object Label1: TLabel
Left = 9
Height = 16
Top = 8
Width = 102
Caption = 'Available Variables:'
ParentColor = False
end
object Label2: TLabel
Left = 232
Height = 16
Top = 25
Width = 79
Caption = 'Group Variable'
ParentColor = False
end
object Label3: TLabel
Left = 232
Height = 16
Top = 104
Width = 103
Caption = 'Repeated Measures'
ParentColor = False
end
object VarList: TListBox
Left = 9
Height = 257
Top = 25
Width = 172
ItemHeight = 0
MultiSelect = True
TabOrder = 0
end
object DepInBtn: TBitBtn
Left = 192
Height = 26
Top = 25
Width = 31
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
}
NumGlyphs = 0
OnClick = DepInBtnClick
TabOrder = 1
end
object DepOutBtn: TBitBtn
Left = 192
Height = 26
Top = 64
Width = 31
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = DepOutBtnClick
TabOrder = 2
end
object RepInBtn: TBitBtn
Left = 192
Height = 26
Top = 104
Width = 31
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
}
NumGlyphs = 0
OnClick = RepInBtnClick
TabOrder = 3
end
object RepOutBtn: TBitBtn
Left = 192
Height = 26
Top = 144
Width = 31
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = RepOutBtnClick
TabOrder = 4
end
object GrpVar: TEdit
Left = 232
Height = 23
Top = 40
Width = 143
TabOrder = 5
Text = 'GrpVar'
end
object RepList: TListBox
Left = 231
Height = 153
Top = 128
Width = 144
ItemHeight = 0
TabOrder = 6
end
object GroupBox1: TGroupBox
Left = 384
Height = 64
Top = 8
Width = 156
Caption = 'Option'
ClientHeight = 46
ClientWidth = 152
TabOrder = 7
object PlotChk: TCheckBox
Left = 9
Height = 19
Top = 4
Width = 102
Caption = 'Plot Cell Means'
TabOrder = 0
end
object PosthocChk: TCheckBox
Left = 9
Height = 19
Top = 24
Width = 136
Caption = 'Posthoc Comparisons'
TabOrder = 1
end
end
object ResetBtn: TButton
Left = 432
Height = 30
Top = 160
Width = 80
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 8
end
object CancelBtn: TButton
Left = 432
Height = 30
Top = 120
Width = 80
Caption = 'Cancel'
ModalResult = 2
TabOrder = 9
end
object ComputeBtn: TButton
Left = 432
Height = 30
Top = 240
Width = 80
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 10
end
object ReturnBtn: TButton
Left = 432
Height = 30
Top = 200
Width = 80
Caption = 'Return'
ModalResult = 1
TabOrder = 11
end
object HelpBtn: TButton
Tag = 106
Left = 432
Height = 32
Top = 80
Width = 78
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 12
end
end

View File

@ -0,0 +1,241 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TAxSAnovaFrm','FORMDATA',[
'TPF0'#12'TAxSAnovaFrm'#11'AxSAnovaFrm'#4'Left'#3#240#0#6'Height'#3'1'#1#3'To'
+'p'#2'y'#5'Width'#3'.'#2#7'Caption'#6'"Treatments by Subjects ANOVA (AxS)'#12
+'ClientHeight'#3'1'#1#11'ClientWidth'#3'.'#2#6'OnShow'#7#8'FormShow'#10'LCLV'
+'ersion'#6#8'0.9.30.4'#0#6'TLabel'#6'Label1'#4'Left'#2#9#6'Height'#2#16#3'To'
+'p'#2#8#5'Width'#2'f'#7'Caption'#6#20'Available Variables:'#11'ParentColor'#8
+#0#0#6'TLabel'#6'Label2'#4'Left'#3#232#0#6'Height'#2#16#3'Top'#2#25#5'Width'
+#2'O'#7'Caption'#6#14'Group Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'Labe'
+'l3'#4'Left'#3#232#0#6'Height'#2#16#3'Top'#2'h'#5'Width'#2'g'#7'Caption'#6#17
+'Repeated Measures'#11'ParentColor'#8#0#0#8'TListBox'#7'VarList'#4'Left'#2#9
+#6'Height'#3#1#1#3'Top'#2#25#5'Width'#3#172#0#10'ItemHeight'#2#0#11'MultiSel'
+'ect'#9#8'TabOrder'#2#0#0#0#7'TBitBtn'#8'DepInBtn'#4'Left'#3#192#0#6'Height'
+#2#26#3'Top'#2#25#5'Width'#2#31#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0
+#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0
+#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161
+'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255
+'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255
+#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157
+#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195
+#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0
+#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255
+#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144
+#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201
+#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190
+'m'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255
+'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#9'NumGlyphs'#2#0#7'OnClick'#7#13'DepInBtnClick'#8'TabOrder'#2#1#0#0#7'TBitB'
+'tn'#9'DepOutBtn'#4'Left'#3#192#0#6'Height'#2#26#3'Top'#2'@'#5'Width'#2#31#10
+'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0
,#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'
+#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'
+#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134
+#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203
+#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190
+'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127
+#204#138#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255
+#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135
+#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255
+#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177
+'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255
+'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#14
+'DepOutBtnClick'#8'TabOrder'#2#2#0#0#7'TBitBtn'#8'RepInBtn'#4'Left'#3#192#0#6
+'Height'#2#26#3'Top'#2'h'#5'Width'#2#31#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0
+'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4
+#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'
+#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'
+#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0
+#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255
+#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137
+#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255
+#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158
+#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255
+#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255
+'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'
+#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'
+#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#13'RepInBtnClick'#8'TabOrder'#2
+#3#0#0#7'TBitBtn'#9'RepOutBtn'#4'Left'#3#192#0#6'Height'#2#26#3'Top'#3#144#0
+#5'Width'#2#31#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0
+#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0
+#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'
+#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'
+#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255
+'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'
+#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195
+'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144
+#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255
,#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255
+#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135
+#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#14'RepOutBtnClick'#8'TabOrder'#2#4#0#0#5'TEdit'#6'GrpV'
+'ar'#4'Left'#3#232#0#6'Height'#2#23#3'Top'#2'('#5'Width'#3#143#0#8'TabOrder'
+#2#5#4'Text'#6#6'GrpVar'#0#0#8'TListBox'#7'RepList'#4'Left'#3#231#0#6'Height'
+#3#153#0#3'Top'#3#128#0#5'Width'#3#144#0#10'ItemHeight'#2#0#8'TabOrder'#2#6#0
+#0#9'TGroupBox'#9'GroupBox1'#4'Left'#3#128#1#6'Height'#2'@'#3'Top'#2#8#5'Wid'
+'th'#3#156#0#7'Caption'#6#6'Option'#12'ClientHeight'#2'.'#11'ClientWidth'#3
+#152#0#8'TabOrder'#2#7#0#9'TCheckBox'#7'PlotChk'#4'Left'#2#9#6'Height'#2#19#3
+'Top'#2#4#5'Width'#2'f'#7'Caption'#6#15'Plot Cell Means'#8'TabOrder'#2#0#0#0
+#9'TCheckBox'#10'PosthocChk'#4'Left'#2#9#6'Height'#2#19#3'Top'#2#24#5'Width'
+#3#136#0#7'Caption'#6#19'Posthoc Comparisons'#8'TabOrder'#2#1#0#0#0#7'TButto'
+'n'#8'ResetBtn'#4'Left'#3#176#1#6'Height'#2#30#3'Top'#3#160#0#5'Width'#2'P'#7
+'Caption'#6#5'Reset'#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#8#0#0#7'TB'
+'utton'#9'CancelBtn'#4'Left'#3#176#1#6'Height'#2#30#3'Top'#2'x'#5'Width'#2'P'
+#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#9#0#0#7'TButton'#10
+'ComputeBtn'#4'Left'#3#176#1#6'Height'#2#30#3'Top'#3#240#0#5'Width'#2'P'#7'C'
+'aption'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#10#0#0#7
+'TButton'#9'ReturnBtn'#4'Left'#3#176#1#6'Height'#2#30#3'Top'#3#200#0#5'Width'
+#2'P'#7'Caption'#6#6'Return'#11'ModalResult'#2#1#8'TabOrder'#2#11#0#0#7'TBut'
+'ton'#7'HelpBtn'#3'Tag'#2'j'#4'Left'#3#176#1#6'Height'#2' '#3'Top'#2'P'#5'Wi'
+'dth'#2'N'#7'Caption'#6#4'Help'#7'OnClick'#7#12'HelpBtnClick'#8'TabOrder'#2
+#12#0#0#0
]);

View File

@ -0,0 +1,84 @@
object AboutBox: TAboutBox
Left = 202
Height = 206
Top = 145
Width = 298
BorderStyle = bsDialog
Caption = 'About LazStats'
ClientHeight = 206
ClientWidth = 298
Color = clBtnFace
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Position = poScreenCenter
LCLVersion = '0.9.30.4'
object OKButton: TButton
Left = 111
Height = 25
Top = 160
Width = 75
Caption = 'OK'
Default = True
ModalResult = 1
OnClick = OKButtonClick
TabOrder = 0
end
object Panel1: TPanel
Left = 16
Height = 136
Top = 16
Width = 276
ClientHeight = 136
ClientWidth = 276
TabOrder = 1
object Label1: TLabel
Left = 80
Height = 30
Top = 0
Width = 100
Caption = 'LazStats'
Font.CharSet = ANSI_CHARSET
Font.Color = clWindowText
Font.Height = -24
Font.Name = 'MS Sans Serif'
Font.Pitch = fpVariable
Font.Quality = fqDraft
Font.Style = [fsBold]
ParentColor = False
ParentFont = False
end
object Label2: TLabel
Left = 64
Height = 21
Top = 40
Width = 129
Caption = 'William G. Miller'
Font.CharSet = ANSI_CHARSET
Font.Color = clWindowText
Font.Height = -16
Font.Name = 'MS Sans Serif'
Font.Pitch = fpVariable
Font.Quality = fqDraft
Font.Style = [fsBold]
ParentColor = False
ParentFont = False
end
object Label3: TLabel
Left = 64
Height = 21
Top = 75
Width = 123
Caption = 'Copyright 2013'
Font.CharSet = ANSI_CHARSET
Font.Color = clWindowText
Font.Height = -16
Font.Name = 'MS Sans Serif'
Font.Pitch = fpVariable
Font.Quality = fqDraft
Font.Style = [fsBold]
ParentColor = False
ParentFont = False
end
end
end

View File

@ -0,0 +1,28 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TAboutBox','FORMDATA',[
'TPF0'#9'TAboutBox'#8'AboutBox'#4'Left'#3#202#0#6'Height'#3#206#0#3'Top'#3#145
+#0#5'Width'#3'*'#1#11'BorderStyle'#7#8'bsDialog'#7'Caption'#6#14'About LazSt'
+'ats'#12'ClientHeight'#3#206#0#11'ClientWidth'#3'*'#1#5'Color'#7#9'clBtnFace'
+#10'Font.Color'#7#12'clWindowText'#11'Font.Height'#2#245#9'Font.Name'#6#13'M'
+'S Sans Serif'#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#8'0.9.30.4'
+#0#7'TButton'#8'OKButton'#4'Left'#2'o'#6'Height'#2#25#3'Top'#3#160#0#5'Width'
+#2'K'#7'Caption'#6#2'OK'#7'Default'#9#11'ModalResult'#2#1#7'OnClick'#7#13'OK'
+'ButtonClick'#8'TabOrder'#2#0#0#0#6'TPanel'#6'Panel1'#4'Left'#2#16#6'Height'
+#3#136#0#3'Top'#2#16#5'Width'#3#20#1#12'ClientHeight'#3#136#0#11'ClientWidth'
+#3#20#1#8'TabOrder'#2#1#0#6'TLabel'#6'Label1'#4'Left'#2'P'#6'Height'#2#30#3
+'Top'#2#0#5'Width'#2'd'#7'Caption'#6#8'LazStats'#12'Font.CharSet'#7#12'ANSI_'
+'CHARSET'#10'Font.Color'#7#12'clWindowText'#11'Font.Height'#2#232#9'Font.Nam'
+'e'#6#13'MS Sans Serif'#10'Font.Pitch'#7#10'fpVariable'#12'Font.Quality'#7#7
+'fqDraft'#10'Font.Style'#11#6'fsBold'#0#11'ParentColor'#8#10'ParentFont'#8#0
+#0#6'TLabel'#6'Label2'#4'Left'#2'@'#6'Height'#2#21#3'Top'#2'('#5'Width'#3#129
+#0#7'Caption'#6#17'William G. Miller'#12'Font.CharSet'#7#12'ANSI_CHARSET'#10
+'Font.Color'#7#12'clWindowText'#11'Font.Height'#2#240#9'Font.Name'#6#13'MS S'
+'ans Serif'#10'Font.Pitch'#7#10'fpVariable'#12'Font.Quality'#7#7'fqDraft'#10
+'Font.Style'#11#6'fsBold'#0#11'ParentColor'#8#10'ParentFont'#8#0#0#6'TLabel'
+#6'Label3'#4'Left'#2'@'#6'Height'#2#21#3'Top'#2'K'#5'Width'#2'{'#7'Caption'#6
+#14'Copyright 2013'#12'Font.CharSet'#7#12'ANSI_CHARSET'#10'Font.Color'#7#12
+'clWindowText'#11'Font.Height'#2#240#9'Font.Name'#6#13'MS Sans Serif'#10'Fon'
+'t.Pitch'#7#10'fpVariable'#12'Font.Quality'#7#7'fqDraft'#10'Font.Style'#11#6
+'fsBold'#0#11'ParentColor'#8#10'ParentFont'#8#0#0#0#0
]);

View File

@ -0,0 +1,43 @@
unit AboutUnit;
{$mode objfpc}{$H+}
interface
uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls;
type
{ TAboutBox }
TAboutBox = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
OKButton: TButton;
Panel1: TPanel;
procedure OKButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
AboutBox: TAboutBox;
implementation
procedure TAboutBox.OKButtonClick(Sender: TObject);
begin
AboutBox.Hide;
end;
initialization
{$I AboutUnit.lrs}
end.

View File

@ -0,0 +1,409 @@
unit BackRegUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons, Globals, MainUnit, MatrixLib, OutPutUnit,
FunctionsLib, DataProcs;
type
{ TBackRegFrm }
TBackRegFrm = class(TForm)
OpenDialog1: TOpenDialog;
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
InBtn: TBitBtn;
OutBtn: TBitBtn;
AllBtn: TBitBtn;
DepInBtn: TBitBtn;
DepOutBtn: TBitBtn;
MatInChkBox: TCheckBox;
MatSaveChkBox: TCheckBox;
CPChkBox: TCheckBox;
CovChkBox: TCheckBox;
CorrsChkBox: TCheckBox;
MeansChkBox: TCheckBox;
SaveDialog1: TSaveDialog;
VarChkBox: TCheckBox;
SDChkBox: TCheckBox;
PartialsChkBox: TCheckBox;
DepVar: TEdit;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
ListBox1: TListBox;
VarList: TListBox;
procedure AllBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure ComputeBtnClick(Sender: TObject);
procedure DepInBtnClick(Sender: TObject);
procedure DepOutBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure InBtnClick(Sender: TObject);
procedure OutBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
procedure ReturnBtnClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
BackRegFrm: TBackRegFrm;
implementation
{ TBackRegFrm }
procedure TBackRegFrm.ResetBtnClick(Sender: TObject);
VAR i : integer;
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;
PartialsChkBox.Checked := false;
DepVar.Text := '';
DepInBtn.Enabled := true;
DepOutBtn.Enabled := false;
end;
procedure TBackRegFrm.ReturnBtnClick(Sender: TObject);
begin
BackRegFrm.Hide;
end;
procedure TBackRegFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TBackRegFrm.AllBtnClick(Sender: TObject);
VAR count, index : integer;
begin
count := VarList.Items.Count;
for index := 0 to count-1 do
begin
ListBox1.Items.Add(VarList.Items.Strings[index]);
end;
VarList.Clear;
end;
procedure TBackRegFrm.CancelBtnClick(Sender: TObject);
begin
BackRegFrm.Hide;
end;
procedure TBackRegFrm.ComputeBtnClick(Sender: TObject);
Label CleanUp;
VAR
NoVars, NoIndepVars, i, j, NCases, mattype, StepNo : integer;
Index, IndexX, IndexY : integer;
R2, StdErr, df1, df2, x, determinant, stderrest, POut, LowestPartial : double;
errorcode : integer;
errcode : boolean;
filename : string;
cellstring, outline, valstring : string;
Corrs : DblDyneMat;
Means : DblDyneVec;
Variances : DblDyneVec;
StdDevs : DblDyneVec;
ColNoSelected : IntDyneVec;
title : string;
RowLabels : StrDyneVec;
ColLabels : StrDyneVec;
InverseMat : DblDyneMat;
ProdMat : DblDyneMat;
CorrMat : DblDyneMat;
BetaWeights : DblDyneVec;
IndepIndex : IntDyneVec;
constant : double;
begin
if NoVariables = 0 then NoVariables := 200;
SetLength(Corrs,NoVariables+1,NoVariables+1);
SetLength(Means,NoVariables);
SetLength(Variances,NoVariables);
SetLength(StdDevs,NoVariables);
SetLength(RowLabels,NoVariables);
SetLength(ColLabels,NoVariables);
SetLength(InverseMat,NoVariables+1,NoVariables+1);
SetLength(ProdMat,NoVariables+1,NoVariables+1);
SetLength(CorrMat,NoVariables+1,NoVariables+1);
SetLength(BetaWeights,NoVariables);
SetLength(IndepIndex,NoVariables);
SetLength(ColNoSelected,NoVariables);
OutPutFrm.RichEdit.Clear;
// OutPutFrm.RichEdit.ParaGraph.Alignment := taLeftJustify;
OutPutFrm.RichEdit.Lines.Add('Step Backward Multiple Regression by Bill Miller');
errcode := false;
errorcode := 0;
if MatInChkBox.Checked = true then
begin
OpenDialog1.Filter := 'FreeStat matrix files (*.MAT)|*.MAT|All files (*.*)|*.*';
OpenDialog1.FilterIndex := 1;
if OpenDialog1.Execute then
begin
filename := OpenDialog1.FileName;
MATREAD(Corrs,NoVars,NoVars,Means,StdDevs,NCases,RowLabels,ColLabels,filename);
for i := 0 to NoVars-1 do
begin
Variances[i] := sqr(StdDevs[i]);
ColNoSelected[i] := i+1;
end;
DepVar.Text := RowLabels[NoVars-1];
for i := 0 to NoVars-2 do ListBox1.Items.Add(RowLabels[i]);
CPChkBox.Checked := false;
CovChkBox.Checked := false;
MatSaveChkBox.Checked := false;
ShowMessage('NOTICE! Last variable in matrix is the dependent variable');
end;
end;
if MatInChkBox.Checked = false then
begin
{ get variable columns }
NoVars := ListBox1.Items.Count;
if NoVars < 1 then
begin
ShowMessage('ERROR! No variables selected.');
goto CleanUp;
end;
for i := 1 to NoVars do
begin
cellstring := ListBox1.Items.Strings[i-1];
for j := 1 to NoVariables do
begin
if cellstring = OS3MainFrm.DataGrid.Cells[j,0] then
begin
ColNoSelected[i-1] := j;
RowLabels[i-1] := cellstring;
ColLabels[i-1] := cellstring;
end;
end;
end;
{ get dependendent variable column }
if DepVar.Text = '' then
begin
ShowMessage('ERROR! No Dependent variable selected.');
goto CleanUp;
end;
NoVars := NoVars + 1;
for j := 1 to NoVariables do
begin
if DepVar.Text = OS3MainFrm.DataGrid.Cells[j,0] then
begin
ColNoSelected[NoVars-1] := j;
RowLabels[NoVars-1] := DepVar.Text;
ColLabels[NoVars-1] := DepVar.Text;
end;
end;
end;
POut := 1.0;
StepNo := 1;
while NoVars > 1 do
begin
OutPutFrm.RichEdit.Lines.Add('');
outline := format('----------------- STEP %3d ------------------',[StepNo]);
OutPutFrm.RichEdit.Lines.Add(outline);
if CPChkBox.Checked = true then
begin
title := 'Cross-Products Matrix';
GridXProd(NoVars,ColNoSelected,Corrs,errcode,NCases);
MAT_PRINT(Corrs,NoVars,NoVars,title,RowLabels,ColLabels,NCases);
end;
if CovChkBox.Checked = true then
begin
title := 'Variance-Covariance Matrix';
GridCovar(NoVars,ColNoSelected,Corrs,Means,Variances,
StdDevs,errcode,NCases);
MAT_PRINT(Corrs,NoVars,NoVars,title,RowLabels,ColLabels,NCases);
end;
if MatInChkBox.Checked = false then
Correlations(NoVars,ColNoSelected,Corrs,Means,Variances,
StdDevs,errcode,NCases);
if CorrsChkBox.Checked = true then
begin
title := 'Product-Moment Correlations Matrix';
MAT_PRINT(Corrs,NoVars,NoVars,title,RowLabels,ColLabels,NCases);
end;
if MatSaveChkBox.Checked = true then
begin
SaveDialog1.Filter := 'FreeStat matrix files (*.MAT)|*.MAT|All files (*.*)|*.*';
SaveDialog1.FilterIndex := 1;
if SaveDialog1.Execute then
begin
filename := SaveDialog1.FileName;
MATSAVE(Corrs,NoVars,NoVars,Means,StdDevs,NCases,RowLabels,ColLabels,filename);
end;
MatSaveChkBox.Checked := false; // only save first one
end;
title := 'Means';
if MeansChkBox.Checked = true then
DynVectorPrint(Means,NoVars,title,ColLabels,NCases);
title := 'Variances';
if VarChkBox.Checked = true then
DynVectorPrint(Variances,NoVars,title,ColLabels,NCases);
title := 'Standard Deviations';
if SDChkBox.Checked = true then
DynVectorPrint(StdDevs,NoVars,title,ColLabels,NCases);
if errorcode > 0 then
begin
ShowMessage('ERROR! A selected variable has no variability-run aborted.');
goto CleanUp;
end;
{ get determinant of the correlation matrix }
determinant := 0.0;
for i := 1 to NoVars do
for j := 1 to NoVars do
CorrMat[i-1,j-1] := Corrs[i-1,j-1];
Determ(CorrMat,NoVars,NoVars,determinant,errcode);
if (determinant < 0.000001) then
begin
ShowMessage('ERROR! Matrix is singular!');
// goto cleanup;
end;
outline := format('Determinant of correlation matrix = %8.4f',[determinant]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
NoIndepVars := NoVars-1;
for i := 1 to NoIndepVars do IndepIndex[i-1] := i;
MReg2(NCases,NoVars,NoIndepVars,IndepIndex,corrs,InverseMat,
RowLabels,R2,BetaWeights,
Means,Variances,errorcode,StdErrEst,constant,POut,true, false,false);
// Get partial correlation matrix
for i := 1 to NoVars do
for j := 1 to NoVars do
InverseMat[i-1,j-1] := Corrs[i-1,j-1];
SVDinverse(InverseMat,NoVars);
for i := 1 to NoVars do
begin
for j := 1 to NoVars do
begin
ProdMat[i-1,j-1] := -(1.0 / sqrt(InverseMat[i-1,i-1])) *
InverseMat[i-1,j-1] * (1.0 / sqrt(InverseMat[j-1,j-1]));
end;
end;
LowestPartial := 1.0;
Index := NoIndepVars;
for i := 1 to NoIndepVars do
begin
BetaWeights[i-1] := ProdMat[i-1,NoVars-1];
if abs(BetaWeights[i-1]) < LowestPartial then
begin
LowestPartial := abs(BetaWeights[i-1]);
Index := i;
end;
end;
if PartialsChkBox.Checked = true then
begin
title := 'Partial Correlations';
DynVectorPrint(BetaWeights,NoIndepVars,title,ColLabels,NCases);
end;
OutPutFrm.ShowModal;
{ eliminate variable with lowest partial }
if NoVars > 2 then
begin
outline := format('Variable %d (%s) eliminated',[Index,ColLabels[Index-1]]);
OutPutFrm.RichEdit.Lines.Add(outline);
for i := Index to NoVars-1 do
begin
ColNoSelected[i-1] := ColNoSelected[i];
ColLabels[i-1] := ColLabels[i];
RowLabels[i-1] := RowLabels[i];
end;
NoVars := NoVars - 1;
StepNo := StepNo + 1;
end
else NoVars := 0;
end;
OutPutFrm.ShowModal;
CleanUp:
ColNoSelected := nil;
IndepIndex := nil;
BetaWeights := nil;
CorrMat := nil;
ProdMat := nil;
InverseMat := nil;
ColLabels := nil;
RowLabels := nil;
StdDevs := nil;
Variances := nil;
Means := nil;
Corrs := nil;
BackRegFrm.Hide;
end;
procedure TBackRegFrm.DepInBtnClick(Sender: TObject);
VAR index : integer;
begin
index := ListBox1.ItemIndex;
DepVar.Text := ListBox1.Items.Strings[index];
ListBox1.Items.Delete(index);
DepOutBtn.Enabled := true;
DepInBtn.Enabled := false;
end;
procedure TBackRegFrm.DepOutBtnClick(Sender: TObject);
begin
ListBox1.Items.Add(DepVar.Text);
DepVar.Text := '';
DepInBtn.Enabled := true;
end;
procedure TBackRegFrm.InBtnClick(Sender: TObject);
VAR i, index : integer;
begin
index := VarList.Items.Count;
i := 0;
while i < index do
begin
if (VarList.Selected[i]) then
begin
ListBox1.Items.Add(VarList.Items.Strings[i]);
VarList.Items.Delete(i);
index := index - 1;
i := 0;
end
else i := i + 1;
end;
OutBtn.Enabled := true;
end;
procedure TBackRegFrm.OutBtnClick(Sender: TObject);
VAR index : integer;
begin
index := ListBox1.ItemIndex;
VarList.Items.Add(ListBox1.Items.Strings[index]);
ListBox1.Items.Delete(index);
InBtn.Enabled := true;
end;
initialization
{$I backregunit.lrs}
end.

View File

@ -0,0 +1,376 @@
object BackRegFrm: TBackRegFrm
Left = 161
Height = 341
Top = 97
Width = 642
Caption = 'Stepwise Backward Multiple Regression'
ClientHeight = 341
ClientWidth = 642
OnShow = FormShow
LCLVersion = '0.9.26.2'
object Label1: TLabel
Left = 6
Height = 14
Top = 7
Width = 90
Caption = 'Available Variables'
ParentColor = False
end
object Label2: TLabel
Left = 228
Height = 14
Top = 8
Width = 119
Caption = 'Variables to be Analyzed'
ParentColor = False
end
object Label3: TLabel
Left = 454
Height = 14
Top = 11
Width = 95
Caption = 'Dependent Variable'
ParentColor = False
end
object VarList: TListBox
Left = 6
Height = 306
Top = 22
Width = 169
MultiSelect = True
TabOrder = 0
end
object InBtn: TBitBtn
Left = 185
Height = 30
Top = 26
Width = 34
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
}
NumGlyphs = 0
OnClick = InBtnClick
TabOrder = 1
end
object OutBtn: TBitBtn
Left = 185
Height = 30
Top = 56
Width = 34
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = OutBtnClick
TabOrder = 2
end
object AllBtn: TBitBtn
Left = 185
Height = 30
Top = 120
Width = 34
Caption = 'ALL'
NumGlyphs = 0
OnClick = AllBtnClick
TabOrder = 3
end
object ListBox1: TListBox
Left = 229
Height = 303
Top = 25
Width = 172
TabOrder = 4
end
object DepInBtn: TBitBtn
Left = 416
Height = 30
Top = 26
Width = 34
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
}
NumGlyphs = 0
OnClick = DepInBtnClick
TabOrder = 5
end
object DepOutBtn: TBitBtn
Left = 416
Height = 30
Top = 56
Width = 34
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = DepOutBtnClick
TabOrder = 6
end
object DepVar: TEdit
Left = 455
Height = 22
Top = 37
Width = 147
TabOrder = 7
Text = 'DepVar'
end
object GroupBox1: TGroupBox
Left = 416
Height = 168
Top = 96
Width = 219
Caption = 'Options'
ClientHeight = 150
ClientWidth = 215
TabOrder = 8
object MatInChkBox: TCheckBox
Left = 8
Height = 17
Top = 2
Width = 196
Caption = 'Get Data from a matrix file (max.=200)'
TabOrder = 0
end
object MatSaveChkBox: TCheckBox
Left = 8
Height = 17
Top = 16
Width = 145
Caption = 'Save the correlation matrix'
TabOrder = 1
end
object CPChkBox: TCheckBox
Left = 8
Height = 17
Top = 32
Width = 152
Caption = 'Show Cross-Products Matrix'
TabOrder = 2
end
object CovChkBox: TCheckBox
Left = 8
Height = 17
Top = 48
Width = 180
Caption = 'Show Variance-Covariance Matrix'
TabOrder = 3
end
object CorrsChkBox: TCheckBox
Left = 8
Height = 17
Top = 64
Width = 151
Caption = 'Show Intercorrelation Matrix'
TabOrder = 4
end
object MeansChkBox: TCheckBox
Left = 8
Height = 17
Top = 80
Width = 82
Caption = 'Show Means'
TabOrder = 5
end
object VarChkBox: TCheckBox
Left = 8
Height = 17
Top = 96
Width = 97
Caption = 'Show Variances'
TabOrder = 6
end
object SDChkBox: TCheckBox
Left = 8
Height = 17
Top = 112
Width = 146
Caption = 'Show Standard Deviations'
TabOrder = 7
end
object PartialsChkBox: TCheckBox
Left = 8
Height = 17
Top = 128
Width = 137
Caption = 'Show Partial Correlations'
TabOrder = 8
end
end
object ResetBtn: TButton
Left = 416
Height = 26
Top = 270
Width = 72
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 9
end
object CancelBtn: TButton
Left = 552
Height = 26
Top = 270
Width = 72
Caption = 'Cancel'
ModalResult = 2
OnClick = CancelBtnClick
TabOrder = 10
end
object ComputeBtn: TButton
Left = 416
Height = 26
Top = 304
Width = 72
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 11
end
object ReturnBtn: TButton
Left = 552
Height = 26
Top = 304
Width = 72
Caption = 'Return'
ModalResult = 1
OnClick = ReturnBtnClick
TabOrder = 12
end
object OpenDialog1: TOpenDialog
left = 183
top = 168
end
object SaveDialog1: TSaveDialog
left = 184
top = 208
end
end

View File

@ -0,0 +1,256 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TBackRegFrm','FORMDATA',[
'TPF0'#11'TBackRegFrm'#10'BackRegFrm'#4'Left'#3#161#0#6'Height'#3'U'#1#3'Top'
+#2'a'#5'Width'#3#130#2#7'Caption'#6'%Stepwise Backward Multiple Regression'
+#12'ClientHeight'#3'U'#1#11'ClientWidth'#3#130#2#6'OnShow'#7#8'FormShow'#10
+'LCLVersion'#6#8'0.9.26.2'#0#6'TLabel'#6'Label1'#4'Left'#2#6#6'Height'#2#14#3
+'Top'#2#7#5'Width'#2'Z'#7'Caption'#6#19'Available Variables'#11'ParentColor'
+#8#0#0#6'TLabel'#6'Label2'#4'Left'#3#228#0#6'Height'#2#14#3'Top'#2#8#5'Width'
+#2'w'#7'Caption'#6#24'Variables to be Analyzed'#11'ParentColor'#8#0#0#6'TLab'
+'el'#6'Label3'#4'Left'#3#198#1#6'Height'#2#14#3'Top'#2#11#5'Width'#2'_'#7'Ca'
+'ption'#6#18'Dependent Variable'#11'ParentColor'#8#0#0#8'TListBox'#7'VarList'
+#4'Left'#2#6#6'Height'#3'2'#1#3'Top'#2#22#5'Width'#3#169#0#11'MultiSelect'#9
+#8'TabOrder'#2#0#0#0#7'TBitBtn'#5'InBtn'#4'Left'#3#185#0#6'Height'#2#30#3'To'
+'p'#2#26#5'Width'#2'"'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0
+'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0
+#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'
+#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'
+#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195
+'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144
+#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255
+#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255
+#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255
+']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145
+'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#10'InBtnClick'#8'TabOrder'#2#1#0#0#7'TBitBtn'#6'OutBtn'
+#4'Left'#3#185#0#6'Height'#2#30#3'Top'#2'8'#5'Width'#2'"'#10'Glyph.Data'#10
+':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0
,' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255
+#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213
+#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135
+#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'
+#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201''#204#138#255
+#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154
+#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194
+#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'
+#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169
+'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255
+'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'
+#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199
+'t'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'OutBtnClick'#8'Tab'
+'Order'#2#2#0#0#7'TBitBtn'#6'AllBtn'#4'Left'#3#185#0#6'Height'#2#30#3'Top'#2
+'x'#5'Width'#2'"'#7'Caption'#6#3'ALL'#9'NumGlyphs'#2#0#7'OnClick'#7#11'AllBt'
+'nClick'#8'TabOrder'#2#3#0#0#8'TListBox'#8'ListBox1'#4'Left'#3#229#0#6'Heigh'
+'t'#3'/'#1#3'Top'#2#25#5'Width'#3#172#0#8'TabOrder'#2#4#0#0#7'TBitBtn'#8'Dep'
+'InBtn'#4'Left'#3#160#1#6'Height'#2#30#3'Top'#2#26#5'Width'#2'"'#10'Glyph.Da'
+'ta'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0
+#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184
+#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177
+'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255
+'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255
+#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255
+#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142
+#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'
+#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162
+#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255
+#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130
+#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199
+'t'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255
+'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'
+#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#13'DepInBtnClick'
+#8'TabOrder'#2#5#0#0#7'TBitBtn'#9'DepOutBtn'#4'Left'#3#160#1#6'Height'#2#30#3
+'Top'#2'8'#5'Width'#2'"'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0
+#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0
+#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'
+#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161
+'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131
+#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/'
+'x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'
,#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255
+#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132
+#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255
+#255#255#0'h'#199't'#201''#204#138#255#162#216#171#255#158#214#167#255#154
+#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255
+#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201
+#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'
+#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'Num'
+'Glyphs'#2#0#7'OnClick'#7#14'DepOutBtnClick'#8'TabOrder'#2#6#0#0#5'TEdit'#6
+'DepVar'#4'Left'#3#199#1#6'Height'#2#22#3'Top'#2'%'#5'Width'#3#147#0#8'TabOr'
+'der'#2#7#4'Text'#6#6'DepVar'#0#0#9'TGroupBox'#9'GroupBox1'#4'Left'#3#160#1#6
+'Height'#3#168#0#3'Top'#2'`'#5'Width'#3#219#0#7'Caption'#6#7'Options'#12'Cli'
+'entHeight'#3#150#0#11'ClientWidth'#3#215#0#8'TabOrder'#2#8#0#9'TCheckBox'#11
+'MatInChkBox'#4'Left'#2#8#6'Height'#2#17#3'Top'#2#2#5'Width'#3#196#0#7'Capti'
+'on'#6'&Get Data from a matrix file (max.=200)'#8'TabOrder'#2#0#0#0#9'TCheck'
+'Box'#13'MatSaveChkBox'#4'Left'#2#8#6'Height'#2#17#3'Top'#2#16#5'Width'#3#145
+#0#7'Caption'#6#27'Save the correlation matrix'#8'TabOrder'#2#1#0#0#9'TCheck'
+'Box'#8'CPChkBox'#4'Left'#2#8#6'Height'#2#17#3'Top'#2' '#5'Width'#3#152#0#7
+'Caption'#6#26'Show Cross-Products Matrix'#8'TabOrder'#2#2#0#0#9'TCheckBox'#9
+'CovChkBox'#4'Left'#2#8#6'Height'#2#17#3'Top'#2'0'#5'Width'#3#180#0#7'Captio'
+'n'#6#31'Show Variance-Covariance Matrix'#8'TabOrder'#2#3#0#0#9'TCheckBox'#11
+'CorrsChkBox'#4'Left'#2#8#6'Height'#2#17#3'Top'#2'@'#5'Width'#3#151#0#7'Capt'
+'ion'#6#28'Show Intercorrelation Matrix'#8'TabOrder'#2#4#0#0#9'TCheckBox'#11
+'MeansChkBox'#4'Left'#2#8#6'Height'#2#17#3'Top'#2'P'#5'Width'#2'R'#7'Caption'
+#6#10'Show Means'#8'TabOrder'#2#5#0#0#9'TCheckBox'#9'VarChkBox'#4'Left'#2#8#6
+'Height'#2#17#3'Top'#2'`'#5'Width'#2'a'#7'Caption'#6#14'Show Variances'#8'Ta'
+'bOrder'#2#6#0#0#9'TCheckBox'#8'SDChkBox'#4'Left'#2#8#6'Height'#2#17#3'Top'#2
+'p'#5'Width'#3#146#0#7'Caption'#6#24'Show Standard Deviations'#8'TabOrder'#2
+#7#0#0#9'TCheckBox'#14'PartialsChkBox'#4'Left'#2#8#6'Height'#2#17#3'Top'#3
+#128#0#5'Width'#3#137#0#7'Caption'#6#25'Show Partial Correlations'#8'TabOrde'
+'r'#2#8#0#0#0#7'TButton'#8'ResetBtn'#4'Left'#3#160#1#6'Height'#2#26#3'Top'#3
+#14#1#5'Width'#2'H'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'ResetBtnClick'#8'T'
+'abOrder'#2#9#0#0#7'TButton'#9'CancelBtn'#4'Left'#3'('#2#6'Height'#2#26#3'To'
+'p'#3#14#1#5'Width'#2'H'#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#7'OnClic'
+'k'#7#14'CancelBtnClick'#8'TabOrder'#2#10#0#0#7'TButton'#10'ComputeBtn'#4'Le'
+'ft'#3#160#1#6'Height'#2#26#3'Top'#3'0'#1#5'Width'#2'H'#7'Caption'#6#7'Compu'
+'te'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#11#0#0#7'TButton'#9'Retu'
+'rnBtn'#4'Left'#3'('#2#6'Height'#2#26#3'Top'#3'0'#1#5'Width'#2'H'#7'Caption'
+#6#6'Return'#11'ModalResult'#2#1#7'OnClick'#7#14'ReturnBtnClick'#8'TabOrder'
+#2#12#0#0#11'TOpenDialog'#11'OpenDialog1'#4'left'#3#183#0#3'top'#3#168#0#0#0
+#11'TSaveDialog'#11'SaveDialog1'#4'left'#3#184#0#3'top'#3#208#0#0#0#0
]);

View File

@ -0,0 +1,710 @@
unit BestRegUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons, Globals, MainUnit, MatrixLib, OutPutUnit,
FunctionsLib, DataProcs;
type
{ TBestRegFrm }
TBestRegFrm = class(TForm)
CPChkBox: TCheckBox;
ComboShowChkBox: TCheckBox;
CovChkBox: TCheckBox;
CorrsChkBox: TCheckBox;
MeansChkBox: TCheckBox;
VarChkBox: TCheckBox;
SDChkBox: TCheckBox;
MatSaveChkBox: TCheckBox;
PredictChkBox: TCheckBox;
MatInChkBox: TCheckBox;
InBtn: TBitBtn;
OutBtn: TBitBtn;
AllBtn: TBitBtn;
DepInBtn: TBitBtn;
DepOutBtn: TBitBtn;
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
DepVar: TEdit;
InProb: TEdit;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
BlockList: TListBox;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
VarList: TListBox;
procedure ComputeBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
procedure INIT(Sender: TObject);
procedure REGRESS(Sender: TObject);
procedure BEST_SET_STATS(Sender: TObject);
procedure bump_one(Sender: TObject);
procedure start_set(Sender: TObject);
procedure re_set(Sender: TObject);
procedure InBtnClick(Sender: TObject);
procedure OutBtnClick(Sender: TObject);
procedure AllBtnClick(Sender: TObject);
procedure DepInBtnClick(Sender: TObject);
procedure DepOutBtnClick(Sender: TObject);
private
{ private declarations }
pred_labels : StrDyneVec;
y_ptr, v : integer;
ii : integer;
jj : integer;
pointer : integer;
sets : integer;
selected : IntDyneVec;
max_set : IntDyneVec;
cross_prod : DblDyneMat;
ind_mat : DblDyneMat;
end_of_set : boolean;
all_done : boolean;
more_to_do : boolean;
no_predictors: integer;
last_set : integer;
first_pt : integer;
testval : integer;
sumx : DblDyneVec;
mean : DblDyneVec;
stddev : DblDyneVec;
variance : DblDyneVec;
xycross : DblDyneVec;
raw_b : DblDyneVec;
count : double;
b_zero : double;
stop_prob : double;
mult_R2 : double;
biggest_R2 : double;
last_R2 : double;
f_test : double;
t, beta : double;
ss_res : double;
ms_res : double;
ss_reg : double;
ms_reg : double;
df_reg : integer;
df_res : integer;
df1 : integer;
df_tot : integer;
prob_f : double;
ss_total : double;
seb : double;
R2_diff : double;
prout : double;
errorcode : integer;
errcode : boolean;
DepVarCol : integer;
RowLabels : StrDyneVec;
ColLabels : StrDyneVec;
ColNoSelected : IntDyneVec;
NCases : integer;
NoVars : integer;
public
{ public declarations }
end;
var
BestRegFrm: TBestRegFrm;
implementation
{ TBestRegFrm }
procedure TBestRegFrm.ResetBtnClick(Sender: TObject);
VAR i : integer;
begin
BlockList.Clear;
VarList.Clear;
for i := 1 to NoVariables do
begin
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
end;
InBtn.Enabled := true;
OutBtn.Enabled := false;
DepInBtn.Enabled := true;
DepOutBtn.Enabled := false;
CPChkBox.Checked := false;
CovChkBox.Checked := false;
CorrsChkBox.Checked := true;
MeansChkBox.Checked := true;
VarChkBox.Checked := false;
SDChkBox.Checked := true;
MatSaveChkBox.Checked := false;
PredictChkBox.Checked := false;
DepVar.Text := '';
InProb.Text := '';
end;
procedure TBestRegFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TBestRegFrm.ComputeBtnClick(Sender: TObject);
Label CleanUp;
var
i, j : integer;
title : string;
cellstring : string;
filename : string;
R2 : double;
StdErrEst : double;
IndepIndex : IntDyneVec;
constant : double;
begin
if MatInChkBox.Checked = true then NoVariables := 200;
SetLength(cross_prod,NoVariables+1,NoVariables+1);
SetLength(ind_mat,NoVariables+1,NoVariables+1);
SetLength(sumx,NoVariables);
SetLength(mean,NoVariables);
SetLength(stddev,NoVariables);
SetLength(variance,NoVariables);
SetLength(xycross,NoVariables);
SetLength(raw_b,NoVariables);
SetLength(RowLabels,NoVariables);
SetLength(ColLabels,NoVariables);
SetLength(IndepIndex,NoVariables);
SetLength(ColNoSelected,NoVariables);
SetLength(Selected,NoVariables);
SetLength(Max_Set,NoVariables);
SetLength(pred_labels,NoVariables);
stop_prob := StrToFloat(InProb.Text); // probability to include a block
prout := 1.0;
OutPutFrm.RichEdit.Clear;
// OutPutFrm.RichEdit.ParaGraph.Alignment := taLeftJustify;
OutPutFrm.RichEdit.Lines.Add('Best Combination Multiple Regression by Bill Miller');
errorcode := 0;
last_R2 := 0.0;
last_set := 0 ;
more_to_do := TRUE;
{ get data }
if MatInChkBox.Checked = true then
begin
PredictChkBox.Checked := false;
MatSaveChkBox.Checked := false;
CPChkBox.Checked := false;
OpenDialog1.Filter := 'FreeStat matrix files (*.MAT)|*.MAT|All files (*.*)|*.*';
OpenDialog1.FilterIndex := 1;
if OpenDialog1.Execute then
begin
filename := OpenDialog1.FileName;
MATREAD(cross_prod,NoVars,NoVars,Mean,stddev,NCases,RowLabels,ColLabels,filename);
for i := 1 to NoVars do variance[i-1] := sqr(stddev[i-1]);
ShowMessage('NOTICE! Last variable in matrix is the dependent variable');
end;
if CorrsChkBox.Checked = true then
begin
title := 'Product-Moment Correlations Matrix';
MAT_PRINT(cross_prod,NoVars,NoVars,title,RowLabels,ColLabels,NCases);
end;
title := 'Means';
if MeansChkBox.Checked = true then
DynVectorPrint(mean,NoVars,title,ColLabels,NCases);
title := 'Variances';
if VarChkBox.Checked = true then
DynVectorPrint(variance,NoVars,title,ColLabels,NCases);
title := 'Standard Deviations';
if SDChkBox.Checked = true then
DynVectorPrint(stddev,NoVars,title,ColLabels,NCases);
DepVarCol := NoVars;
y_ptr := NoVars;
DepVar.Text := RowLabels[NoVars];
{ convert correlations to deviation cross-products }
for i := 1 to NoVars do
for j := 1 to NoVars do
cross_prod[i-1,j-1] := cross_prod[i-1,j-1] * stddev[i-1] * stddev[j-1]
* (NCases - 1);
end;
if MatInChkBox.Checked = false then
begin
{ get independent item columns }
NoVars := BlockList.Items.Count;
if NoVars < 1 then
begin
ShowMessage('ERROR! No independent variables selected.');
goto CleanUp;
end;
for i := 1 to NoVars do
begin
cellstring := BlockList.Items.Strings[i-1];
for j := 1 to NoVariables do
begin
if cellstring = OS3MainFrm.DataGrid.Cells[j,0] then
begin
ColNoSelected[i-1] := j;
RowLabels[i-1] := cellstring;
ColLabels[i-1] := cellstring;
end;
end;
end;
{ get dependendent variable column }
if DepVar.Text = '' then
begin
ShowMessage('ERROR! No Dependent variable selected.');
goto CleanUp;
end;
DepVarCol := 0;
NoVars := NoVars + 1;
y_ptr := NoVars;
for j := 1 to NoVariables do
begin
if DepVar.Text = OS3MainFrm.DataGrid.Cells[j,0] then
begin
DepVarCol := j;
ColNoSelected[NoVars-1] := j;
RowLabels[NoVars-1] := OS3MainFrm.DataGrid.Cells[j,0];
ColLabels[NoVars-1] := RowLabels[NoVars-1];
end;
end;
INIT(self);
title := 'Cross-Products Matrix';
GridXProd(NoVars,ColNoSelected,cross_prod,true,NCases);
for i := 1 to NoVars do
begin
sumx[i-1] := cross_prod[i-1,NoVars];
mean[i-1] := sumx[i-1] / NCases;
variance[i-1] := cross_prod[i-1,i-1] - (sumx[i-1] * sumx[i-1] / NCases);
variance[i-1] := variance[i-1] / (NCases-1);
if variance[i-1] > 0 then stddev[i-1] := sqrt(variance[i-1])
else begin
ShowMessage('ERROR! No variance for a variable!');
goto cleanup;
end;
end;
if CPChkBox.Checked = true then
begin
MAT_PRINT(cross_prod,NoVars,NoVars,title,RowLabels,ColLabels,NCases);
end;
{get deviation cross-products matrix}
for i := 1 to NoVars do
for j := 1 to NoVars do
cross_prod[i-1,j-1] := cross_prod[i-1,j-1] - (mean[i-1] * mean[j-1] * NCases);
end;
title := 'Deviation Cross-Products Matrix';
if CovChkBox.Checked = true then
MAT_PRINT(cross_prod,NoVars,NoVars,title,RowLabels,ColLabels,NCases);
v := NoVars;
no_predictors := v - 1;
ss_total := cross_prod[y_ptr-1,y_ptr-1];
biggest_R2 := 0.0;
{ Find best single predictor }
sets := 1;
for j := 1 to no_predictors do
begin
selected[0] := j;
regress(self);
end;
BEST_SET_STATS(self);
{ Find best combinations of 2 to no_predictors - 1 }
sets := 2;
while sets < no_predictors do
begin
end_of_set := FALSE;
start_set(self);
while NOT end_of_set do
begin
regress(self);
bump_one(self);
end;
regress(self);
BEST_SET_STATS(self);
sets := sets + 1;
end;
sets := sets - 1; // no. of predictors
{ Find regression with all of the predictors }
if more_to_do then
begin
sets := no_predictors;
for i := 1 to sets do selected[i-1] := i;
REGRESS(self);
BEST_SET_STATS(self);
end
else begin
OutputFrm.RichEdit.Lines.Add('');
OutputFrm.RichEdit.Lines.Add('Last variable added failed entry test. Job ended.');
end;
if MatInChkBox.Checked = false then
begin
{ get correlation matrix and save if elected }
Correlations(NoVars,ColNoSelected,cross_prod,mean,variance,
stddev,errcode,NCases);
if (CorrsChkBox.Checked = true) then
begin
title := 'Product-Moment Correlations Matrix';
MAT_PRINT(cross_prod,NoVars,NoVars,title,RowLabels,ColLabels,NCases);
end;
title := 'Means';
if (MeansChkBox.Checked = true) then
DynVectorPrint(mean,NoVars,title,ColLabels,NCases);
title := 'Variances';
if (VarChkBox.Checked = true) then
DynVectorPrint(variance,NoVars,title,ColLabels,NCases);
title := 'Standard Deviations';
if (SDChkBox.Checked = true) then
DynVectorPrint(stddev,NoVars,title,ColLabels,NCases);
if MatSaveChkBox.Checked = true then
begin
SaveDialog1.Filter := 'FreeStat matrix files (*.MAT)|*.MAT|All files (*.*)|*.*';
SaveDialog1.FilterIndex := 1;
if SaveDialog1.Execute then
begin
filename := SaveDialog1.FileName;
MATSAVE(cross_prod,NoVars,NoVars,mean,stddev,NCases,RowLabels,ColLabels,filename);
end;
end;
{ add [predicted scores, residual scores, etc. to grid if options elected }
if PredictChkBox.Checked = true then
begin
for i := 1 to sets do
begin
ii := selected[i-1];
IndepIndex[i-1] := ii; //ColNoSelected[ii];
end;
prout := 1.0;
MReg2(NCases,NoVars, sets, IndepIndex, cross_prod, ind_mat,
RowLabels, R2, raw_b, mean, variance,
errorcode, StdErrEst, constant,prout, true, false,false);
Predict(ColNoSelected, NoVars, ind_mat, mean, stddev,
raw_b, StdErrEst, IndepIndex, sets);
end;
end;
OutPutFrm.ShowModal;
cleanup:
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;
procedure TBestRegFrm.INIT(Sender: TObject);
var
i,j : integer;
begin
count := 0.0;
for i := 1 to NoVariables do
begin
sumx[i-1] := 0.0;
mean[i-1] := 0.0;
variance[i-1] := 0.0;
stddev[i-1] := 0.0;
for j := 1 to v do cross_prod[i-1,j-1] := 0.0;
end;
end;
procedure TBestRegFrm.REGRESS(Sender: TObject);
var
i, j : integer;
outline : string;
begin
b_zero := 0.0 ;
ss_reg := 0.0 ;
for i := 1 to sets do
raw_b[i-1] := 0.0 ;
{ Set up matrices of deviation cross_products to use }
for i := 1 to sets do
begin
ii := selected[i-1];
xycross[i-1] := cross_prod[y_ptr-1,ii-1];
for j := 1 to sets do
begin
jj := selected[j-1];
ind_mat[i-1,j-1] := cross_prod[ii-1,jj-1];
end;
end;
SVDinverse(ind_mat,sets);
for i := 1 to sets do
begin
ii := selected[i-1];
for j := 1 to sets do
raw_b[i-1] := raw_b[i-1] + (ind_mat[i-1,j-1] * xycross[j-1]) ;
b_zero := b_zero + raw_b[i-1] * mean[ii-1];
end;
b_zero := mean[y_ptr-1] - b_zero;
{ Get sum of squares for regression and multiple R }
for i := 1 to sets do
ss_reg := ss_reg + raw_b[i-1] * xycross[i-1];
mult_R2 := ss_reg / ss_total;
{ Now, check to see if this R2 is largest. If so, save set }
if mult_R2 > biggest_R2 then
begin
biggest_R2 := mult_R2;
for i := 1 to sets do
max_set[i-1] := selected[i-1];
end;
{ print out this combination for testing purposes }
if ComboShowChkBox.Checked = true then
begin
outline := format(' Set %2d includes variables:',[sets]);
OutPutFrm.RichEdit.Lines.Add(outline);
for i := 1 to sets do
begin
outline := format('variable %d (%s)',[selected[i-1],ColLabels[selected[i-1]-1]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('');
outline := format('Squared R = %6.4f',[mult_R2]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
end;
end;
procedure TBestRegFrm.BEST_SET_STATS(Sender: TObject);
var
i, j : integer;
outline : string;
begin
OutPutFrm.RichEdit.Lines.Add('');
outline := format('Variables entered in step %2d',[sets]);
OutPutFrm.RichEdit.Lines.Add(outline);
for i := 1 to sets do
begin
ii := max_set[i-1];
selected[i-1] := max_set[i-1];
outline := format('%2d %s',[max_set[i-1],ColLabels[ii-1]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('');
REGRESS(self);
outline := format('Squared Multiple Correlation = %5.4f',[mult_r2]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Dependent variable = %s',[ColLabels[y_ptr-1]]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('ANOVA for Regression Effects : ');
OutPutFrm.RichEdit.Lines.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 }
outline := format('Regression %3d %14.4f %14.4f %14.4f %14.4f',
[df_reg,ss_reg,ms_reg,f_test,prob_f]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Residual %3d %14.4f %14.4f',[df_res,ss_res,ms_res]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Total %3d %14.4f',[df_tot,ss_total]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Variables in the equation');
OutPutFrm.RichEdit.Lines.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]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
outline := format('(Intercept) %10.5f',[b_zero]);
OutPutFrm.RichEdit.Lines.Add(outline);
{ 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 ;
OutPutFrm.RichEdit.Lines.Add('');
outline := format('Increase in squared R for this step = %8.6f',[R2_diff]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('F = %8.4f with D.F. %d and %d with Probability = %6.4f',
[f_test,df1,df_res,prob_f]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('----------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add('');
last_set := sets;
last_R2 := mult_R2;
end;
procedure TBestRegFrm.bump_one(Sender: TObject);
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
re_set(self);
first_pt := pointer;
all_done := TRUE;
end
else selected[first_pt-1] := selected[first_pt-1] - 1;
end;
end;
end;
end;
procedure TBestRegFrm.start_set(Sender: TObject);
var
i : integer;
begin
end_of_set := FALSE;
for i := 1 to sets do
selected[i-1] := i;
first_pt := sets;
pointer := sets;
end;
procedure TBestRegFrm.re_set(Sender: TObject);
var
i : integer;
begin
testval := no_predictors - sets + 1 ;
if (first_pt = 1) AND (selected[first_pt-1] = testval) then
end_of_set := TRUE else
begin
for i := first_pt + 1 to sets do
selected[i-1] := selected[i-2] + 1;
end;
end;
procedure TBestRegFrm.InBtnClick(Sender: TObject);
VAR i, index : integer;
begin
index := VarList.Items.Count;
i := 0;
while i < index do
begin
if (VarList.Selected[i]) then
begin
BlockList.Items.Add(VarList.Items.Strings[i]);
VarList.Items.Delete(i);
index := index - 1;
i := 0;
end
else i := i + 1;
end;
OutBtn.Enabled := true;
end;
procedure TBestRegFrm.OutBtnClick(Sender: TObject);
VAR index : integer;
begin
index := BlockList.ItemIndex;
VarList.Items.Add(BlockList.Items.Strings[index]);
BlockList.Items.Delete(index);
InBtn.Enabled := true;
if BlockList.Items.Count = 0 then OutBtn.Enabled := false;
end;
procedure TBestRegFrm.AllBtnClick(Sender: TObject);
VAR counts, index : integer;
begin
counts := VarList.Items.Count;
for index := 0 to counts-1 do
begin
BlockList.Items.Add(VarList.Items.Strings[index]);
end;
VarList.Clear;
end;
procedure TBestRegFrm.DepInBtnClick(Sender: TObject);
VAR index : integer;
begin
index := BlockList.ItemIndex;
DepVar.Text := BlockList.Items.Strings[index];
BlockList.Items.Delete(index);
DepOutBtn.Enabled := true;
DepInBtn.Enabled := false;
end;
procedure TBestRegFrm.DepOutBtnClick(Sender: TObject);
begin
BlockList.Items.Add(DepVar.Text);
DepVar.Text := '';
DepInBtn.Enabled := true;
end;
initialization
{$I bestregunit.lrs}
end.

View File

@ -0,0 +1,398 @@
object BestRegFrm: TBestRegFrm
Left = 159
Height = 394
Top = 94
Width = 673
Caption = 'Best Combination Multiple Regression'
ClientHeight = 394
ClientWidth = 673
OnShow = FormShow
LCLVersion = '0.9.26.2'
object Label1: TLabel
Left = 8
Height = 14
Top = 7
Width = 90
Caption = 'Available Variables'
ParentColor = False
end
object Label2: TLabel
Left = 224
Height = 14
Top = 8
Width = 88
Caption = 'Selected Variables'
ParentColor = False
end
object Label3: TLabel
Left = 441
Height = 14
Top = 15
Width = 95
Caption = 'Dependent Variable'
ParentColor = False
end
object Label4: TLabel
Left = 8
Height = 14
Top = 313
Width = 160
Caption = 'Minimum Probability for Inclusion:'
ParentColor = False
end
object VarList: TListBox
Left = 9
Height = 274
Top = 23
Width = 168
MultiSelect = True
TabOrder = 0
end
object InBtn: TBitBtn
Left = 184
Height = 29
Top = 24
Width = 32
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
}
NumGlyphs = 0
OnClick = InBtnClick
TabOrder = 1
end
object OutBtn: TBitBtn
Left = 184
Height = 29
Top = 56
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = OutBtnClick
TabOrder = 2
end
object AllBtn: TBitBtn
Left = 184
Height = 29
Top = 104
Width = 32
Caption = 'ALL'
NumGlyphs = 0
OnClick = AllBtnClick
TabOrder = 3
end
object BlockList: TListBox
Left = 223
Height = 274
Top = 28
Width = 166
TabOrder = 4
end
object DepInBtn: TBitBtn
Left = 400
Height = 29
Top = 32
Width = 32
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
}
NumGlyphs = 0
OnClick = DepInBtnClick
TabOrder = 5
end
object DepOutBtn: TBitBtn
Left = 400
Height = 29
Top = 64
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = DepOutBtnClick
TabOrder = 6
end
object DepVar: TEdit
Left = 440
Height = 19
Top = 41
Width = 148
TabOrder = 7
Text = 'DepVar'
end
object GroupBox1: TGroupBox
Left = 400
Height = 278
Top = 104
Width = 265
Caption = 'Options'
ClientHeight = 260
ClientWidth = 261
TabOrder = 8
object CPChkBox: TCheckBox
Left = 9
Height = 17
Top = 1
Width = 152
Caption = 'Show Cross-Products Matrix'
TabOrder = 0
end
object CovChkBox: TCheckBox
Left = 9
Height = 17
Top = 23
Width = 200
Caption = 'Show Deviation Cross-Products Matrix'
TabOrder = 1
end
object CorrsChkBox: TCheckBox
Left = 9
Height = 17
Top = 46
Width = 156
Caption = 'Show Intercorrelations Matrix'
TabOrder = 2
end
object MeansChkBox: TCheckBox
Left = 9
Height = 17
Top = 70
Width = 82
Caption = 'Show Means'
TabOrder = 3
end
object VarChkBox: TCheckBox
Left = 9
Height = 17
Top = 95
Width = 97
Caption = 'Show Variances'
TabOrder = 4
end
object SDChkBox: TCheckBox
Left = 9
Height = 17
Top = 120
Width = 146
Caption = 'Show Standard Deviations'
TabOrder = 5
end
object MatSaveChkBox: TCheckBox
Left = 9
Height = 17
Top = 144
Width = 129
Caption = 'Save Correlation Matrix'
TabOrder = 6
end
object PredictChkBox: TCheckBox
Left = 9
Height = 17
Top = 168
Width = 171
Caption = 'Predictions,residuals,C.I''s to grid'
TabOrder = 7
end
object MatInChkBox: TCheckBox
Left = 9
Height = 17
Top = 192
Width = 134
Caption = 'Enter Data from a Matrix'
TabOrder = 8
end
object ComboShowChkBox: TCheckBox
Left = 9
Height = 17
Top = 216
Width = 188
Caption = 'Show Results for each Combination'
TabOrder = 9
end
end
object InProb: TEdit
Left = 176
Height = 19
Top = 306
Width = 40
TabOrder = 9
Text = 'InProb'
end
object ResetBtn: TButton
Left = 7
Height = 32
Top = 350
Width = 74
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 10
end
object CancelBtn: TButton
Left = 103
Height = 32
Top = 350
Width = 74
Caption = 'Cancel'
ModalResult = 2
TabOrder = 11
end
object ComputeBtn: TButton
Left = 224
Height = 32
Top = 350
Width = 74
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 12
end
object ReturnBtn: TButton
Left = 320
Height = 32
Top = 350
Width = 74
Caption = 'Return'
ModalResult = 1
TabOrder = 13
end
object OpenDialog1: TOpenDialog
left = 236
top = 317
end
object SaveDialog1: TSaveDialog
left = 290
top = 315
end
end

View File

@ -0,0 +1,261 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TBestRegFrm','FORMDATA',[
'TPF0'#11'TBestRegFrm'#10'BestRegFrm'#4'Left'#3#159#0#6'Height'#3#138#1#3'Top'
+#2'^'#5'Width'#3#161#2#7'Caption'#6'$Best Combination Multiple Regression'#12
+'ClientHeight'#3#138#1#11'ClientWidth'#3#161#2#6'OnShow'#7#8'FormShow'#10'LC'
+'LVersion'#6#8'0.9.26.2'#0#6'TLabel'#6'Label1'#4'Left'#2#8#6'Height'#2#14#3
+'Top'#2#7#5'Width'#2'Z'#7'Caption'#6#19'Available Variables'#11'ParentColor'
+#8#0#0#6'TLabel'#6'Label2'#4'Left'#3#224#0#6'Height'#2#14#3'Top'#2#8#5'Width'
+#2'X'#7'Caption'#6#18'Selected Variables'#11'ParentColor'#8#0#0#6'TLabel'#6
+'Label3'#4'Left'#3#185#1#6'Height'#2#14#3'Top'#2#15#5'Width'#2'_'#7'Caption'
+#6#18'Dependent Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#2
+#8#6'Height'#2#14#3'Top'#3'9'#1#5'Width'#3#160#0#7'Caption'#6'"Minimum Proba'
+'bility for Inclusion:'#11'ParentColor'#8#0#0#8'TListBox'#7'VarList'#4'Left'
+#2#9#6'Height'#3#18#1#3'Top'#2#23#5'Width'#3#168#0#11'MultiSelect'#9#8'TabOr'
+'der'#2#0#0#0#7'TBitBtn'#5'InBtn'#4'Left'#3#184#0#6'Height'#2#29#3'Top'#2#24
+#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0
+#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0
+#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'
+#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190
+'m'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255
+'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139
+'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160
+#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255
+#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128
+#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199
+'t'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255#150
+#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255
+#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255
+#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255
+'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163
+'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247
+';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187
+'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnCl'
+'ick'#7#10'InBtnClick'#8'TabOrder'#2#1#0#0#7'TBitBtn'#6'OutBtn'#4'Left'#3#184
,#0#6'Height'#2#29#3'Top'#2'8'#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0
+#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0
+#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207
+'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'
+#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255
+#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152#211
+#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130
+#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'
+#255#255#255#255#0#255#255#255#0'h'#199't'#201''#204#138#255#162#216#171#255
+#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149
+#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'
+#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205
+#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'
+#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'
+#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'
+#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199
+'t'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'OutBtnClick'#8'TabOrder'#2#2#0#0
+#7'TBitBtn'#6'AllBtn'#4'Left'#3#184#0#6'Height'#2#29#3'Top'#2'h'#5'Width'#2
+' '#7'Caption'#6#3'ALL'#9'NumGlyphs'#2#0#7'OnClick'#7#11'AllBtnClick'#8'TabO'
+'rder'#2#3#0#0#8'TListBox'#9'BlockList'#4'Left'#3#223#0#6'Height'#3#18#1#3'T'
+'op'#2#28#5'Width'#3#166#0#8'TabOrder'#2#4#0#0#7'TBitBtn'#8'DepInBtn'#4'Left'
+#3#144#1#6'Height'#2#29#3'Top'#2' '#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0
+'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0
+#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'
+#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'
+#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255
+#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211
+#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130
+#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'
+#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171
+#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204
+#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'
+#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255
+'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161
+'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#13'DepInBtnClick'#8'TabOr'
+'der'#2#5#0#0#7'TBitBtn'#9'DepOutBtn'#4'Left'#3#144#1#6'Height'#2#29#3'Top'#2
+'@'#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0
+#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0
+#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153
+'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'
+#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255
,'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'
+#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195
+'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144
+#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255
+#255#0'h'#199't'#201''#204#138#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255
+#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135
+#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#14'DepOutBtnClick'#8'TabOrder'#2#6#0#0#5'TEdit'#6'DepV'
+'ar'#4'Left'#3#184#1#6'Height'#2#19#3'Top'#2')'#5'Width'#3#148#0#8'TabOrder'
+#2#7#4'Text'#6#6'DepVar'#0#0#9'TGroupBox'#9'GroupBox1'#4'Left'#3#144#1#6'Hei'
+'ght'#3#22#1#3'Top'#2'h'#5'Width'#3#9#1#7'Caption'#6#7'Options'#12'ClientHei'
+'ght'#3#4#1#11'ClientWidth'#3#5#1#8'TabOrder'#2#8#0#9'TCheckBox'#8'CPChkBox'
+#4'Left'#2#9#6'Height'#2#17#3'Top'#2#1#5'Width'#3#152#0#7'Caption'#6#26'Show'
+' Cross-Products Matrix'#8'TabOrder'#2#0#0#0#9'TCheckBox'#9'CovChkBox'#4'Lef'
+'t'#2#9#6'Height'#2#17#3'Top'#2#23#5'Width'#3#200#0#7'Caption'#6'$Show Devia'
+'tion Cross-Products Matrix'#8'TabOrder'#2#1#0#0#9'TCheckBox'#11'CorrsChkBox'
+#4'Left'#2#9#6'Height'#2#17#3'Top'#2'.'#5'Width'#3#156#0#7'Caption'#6#29'Sho'
+'w Intercorrelations Matrix'#8'TabOrder'#2#2#0#0#9'TCheckBox'#11'MeansChkBox'
+#4'Left'#2#9#6'Height'#2#17#3'Top'#2'F'#5'Width'#2'R'#7'Caption'#6#10'Show M'
+'eans'#8'TabOrder'#2#3#0#0#9'TCheckBox'#9'VarChkBox'#4'Left'#2#9#6'Height'#2
+#17#3'Top'#2'_'#5'Width'#2'a'#7'Caption'#6#14'Show Variances'#8'TabOrder'#2#4
+#0#0#9'TCheckBox'#8'SDChkBox'#4'Left'#2#9#6'Height'#2#17#3'Top'#2'x'#5'Width'
+#3#146#0#7'Caption'#6#24'Show Standard Deviations'#8'TabOrder'#2#5#0#0#9'TCh'
+'eckBox'#13'MatSaveChkBox'#4'Left'#2#9#6'Height'#2#17#3'Top'#3#144#0#5'Width'
+#3#129#0#7'Caption'#6#23'Save Correlation Matrix'#8'TabOrder'#2#6#0#0#9'TChe'
+'ckBox'#13'PredictChkBox'#4'Left'#2#9#6'Height'#2#17#3'Top'#3#168#0#5'Width'
+#3#171#0#7'Caption'#6'#Predictions,residuals,C.I''s to grid'#8'TabOrder'#2#7
+#0#0#9'TCheckBox'#11'MatInChkBox'#4'Left'#2#9#6'Height'#2#17#3'Top'#3#192#0#5
+'Width'#3#134#0#7'Caption'#6#24'Enter Data from a Matrix'#8'TabOrder'#2#8#0#0
+#9'TCheckBox'#15'ComboShowChkBox'#4'Left'#2#9#6'Height'#2#17#3'Top'#3#216#0#5
+'Width'#3#188#0#7'Caption'#6'!Show Results for each Combination'#8'TabOrder'
+#2#9#0#0#0#5'TEdit'#6'InProb'#4'Left'#3#176#0#6'Height'#2#19#3'Top'#3'2'#1#5
+'Width'#2'('#8'TabOrder'#2#9#4'Text'#6#6'InProb'#0#0#7'TButton'#8'ResetBtn'#4
+'Left'#2#7#6'Height'#2' '#3'Top'#3'^'#1#5'Width'#2'J'#7'Caption'#6#5'Reset'#7
+'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#10#0#0#7'TButton'#9'CancelBtn'#4
+'Left'#2'g'#6'Height'#2' '#3'Top'#3'^'#1#5'Width'#2'J'#7'Caption'#6#6'Cancel'
+#11'ModalResult'#2#2#8'TabOrder'#2#11#0#0#7'TButton'#10'ComputeBtn'#4'Left'#3
+#224#0#6'Height'#2' '#3'Top'#3'^'#1#5'Width'#2'J'#7'Caption'#6#7'Compute'#7
+'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#12#0#0#7'TButton'#9'ReturnBtn'
+#4'Left'#3'@'#1#6'Height'#2' '#3'Top'#3'^'#1#5'Width'#2'J'#7'Caption'#6#6'Re'
+'turn'#11'ModalResult'#2#1#8'TabOrder'#2#13#0#0#11'TOpenDialog'#11'OpenDialo'
+'g1'#4'left'#3#236#0#3'top'#3'='#1#0#0#11'TSaveDialog'#11'SaveDialog1'#4'lef'
,'t'#3'"'#1#3'top'#3';'#1#0#0#0
]);

View File

@ -0,0 +1,166 @@
unit BinomialUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, OutPutUnit, Math, FunctionsLib, GraphLib;
type
{ TBinomialFrm }
TBinomialFrm = class(TForm)
PlotChk: TCheckBox;
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
FreqAEdit: TEdit;
FreqBEdit: TEdit;
PropAEdit: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure ComputeBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FreqAEditKeyPress(Sender: TObject; var Key: char);
procedure FreqBEditKeyPress(Sender: TObject; var Key: char);
procedure PropAEditKeyPress(Sender: TObject; var Key: char);
procedure ResetBtnClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
BinomialFrm: TBinomialFrm;
implementation
{ TBinomialFrm }
procedure TBinomialFrm.ResetBtnClick(Sender: TObject);
begin
FreqAEdit.Text := '';
FreqBEdit.Text := '';
PropAEdit.Text := '';
FreqAEdit.SetFocus;
end;
procedure TBinomialFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TBinomialFrm.ComputeBtnClick(Sender: TObject);
var
p, Q, Probability, z, CorrectedA, SumProb : double;
A, b, N, X, i, j : integer;
outline : string;
begin
SumProb := 0.0;
A := round(StrToFloat(FreqAEdit.Text));
b := round(StrToFloat(FreqBEdit.Text));
p := StrToFloat(PropAEdit.Text);
N := A + b;
Q := 1.0 - p;
OutPutFrm.RichEdit.Clear;
OutPutFrm.RichEdit.Lines.Add('Binomial Probability Test');
OutPutFrm.RichEdit.Lines.Add('');
outline := format('Frequency of %d out of %d observed',[A, N]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('The theoretical proportion expected in category A is %5.3f',
[p]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := 'The test is for the probability of a value in category A as small or smaller';
OutPutFrm.RichEdit.Lines.Add(outline);
outline := 'than that observed given the expected proportion.';
OutPutFrm.RichEdit.Lines.Add(outline);
if (N > 35) then //Use normal distribution approximation
begin
CorrectedA := A;
if A < (N * p) then CorrectedA := A + 0.5;
if A > (N * p) then CorrectedA := A - 0.5;
z := (CorrectedA - N * p) / sqrt(N * p * Q);
outline := format('Z value for Normal Distribution approximation := %5.3f',
[z]);
OutPutFrm.RichEdit.Lines.Add(outline);
Probability := probz(z);
outline := format('Probability := %6.4f',[Probability]);
OutPutFrm.RichEdit.Lines.Add(outline);
end
else //Use binomial fomula
begin
for X := 0 to A do
begin
Probability := combos(X, N) * Power(p,X) * Power(Q,(N - X));
outline := format('Probability of %d = %6.4f',[X,Probability]);
OutPutFrm.RichEdit.Lines.Add(outline);
SumProb := SumProb + Probability;
end;
outline := format('Binomial Probability of %d or less out of %d = %6.4f',
[A,N,SumProb]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
if PlotChk.Checked then
begin
if N <= 35 then
begin
SetLength(GraphFrm.Xpoints,1,N+1);
SetLength(GraphFrm.Ypoints,1,N+1);
for i := 0 to N do GraphFrm.Xpoints[0,i] := i;
for i := 0 to N do
begin
Probability := combos(i,N) * power(p,i) * power(Q,(N-i));
GraphFrm.Ypoints[0,i] := Probability;
end;
GraphFrm.GraphType := 2;
GraphFrm.nosets := 1;
GraphFrm.nbars := N;
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlue;
GraphFrm.FloorColor := clGray;
GraphFrm.Heading := 'Binomial Distribution';
GraphFrm.XTitle := 'Values';
GraphFrm.YTitle := 'Probability';
GraphFrm.barwideprop := 0.5;
GraphFrm.AutoScale := true;
GraphFrm.ShowLeftWall := true;
GraphFrm.ShowRightWall := true;
GraphFrm.ShowBottomWall := true;
GraphFrm.ShowModal;
end
else ShowMessage('Cannot plot for N > 35');
end;
GraphFrm.Xpoints := nil;
GraphFrm.Ypoints := nil;
end;
procedure TBinomialFrm.FreqAEditKeyPress(Sender: TObject; var Key: char);
begin
if Ord(Key) = 13 then FreqBEdit.SetFocus;
end;
procedure TBinomialFrm.FreqBEditKeyPress(Sender: TObject; var Key: char);
begin
if Ord(Key) = 13 then PropAEdit.SetFocus;
end;
procedure TBinomialFrm.PropAEditKeyPress(Sender: TObject; var Key: char);
begin
if Ord(Key) = 13 then ComputeBtn.SetFocus;
end;
initialization
{$I binomialunit.lrs}
end.

View File

@ -0,0 +1,106 @@
object BinomialFrm: TBinomialFrm
Left = 154
Height = 181
Top = 103
Width = 355
Caption = 'Binomial Probability Calculator'
ClientHeight = 181
ClientWidth = 355
OnShow = FormShow
LCLVersion = '0.9.30'
object Label1: TLabel
Left = 9
Height = 16
Top = 17
Width = 240
Caption = 'Frequency of events observed in category ''A'':'
ParentColor = False
end
object Label2: TLabel
Left = 8
Height = 16
Top = 49
Width = 239
Caption = 'Frequency of events observed in category ''B'':'
ParentColor = False
end
object Label3: TLabel
Left = 8
Height = 16
Top = 80
Width = 241
Caption = 'Proportion of events expected in category ''A'':'
ParentColor = False
end
object ResetBtn: TButton
Left = 8
Height = 26
Top = 136
Width = 58
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 0
end
object CancelBtn: TButton
Left = 80
Height = 26
Top = 136
Width = 58
Caption = 'Cancel'
ModalResult = 2
TabOrder = 1
end
object ComputeBtn: TButton
Left = 176
Height = 26
Top = 136
Width = 58
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 2
end
object ReturnBtn: TButton
Left = 256
Height = 26
Top = 136
Width = 58
Caption = 'Return'
ModalResult = 1
TabOrder = 3
end
object FreqAEdit: TEdit
Left = 272
Height = 23
Top = 8
Width = 43
OnKeyPress = FreqAEditKeyPress
TabOrder = 4
Text = 'FreqAEdit'
end
object FreqBEdit: TEdit
Left = 272
Height = 23
Top = 40
Width = 43
OnKeyPress = FreqBEditKeyPress
TabOrder = 5
Text = 'Edit1'
end
object PropAEdit: TEdit
Left = 272
Height = 23
Top = 72
Width = 43
OnKeyPress = PropAEditKeyPress
TabOrder = 6
Text = 'Edit1'
end
object PlotChk: TCheckBox
Left = 8
Height = 19
Top = 107
Width = 125
Caption = 'Plot the distribution'
TabOrder = 7
end
end

View File

@ -0,0 +1,30 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TBinomialFrm','FORMDATA',[
'TPF0'#12'TBinomialFrm'#11'BinomialFrm'#4'Left'#3#154#0#6'Height'#3#181#0#3'T'
+'op'#2'g'#5'Width'#3'c'#1#7'Caption'#6#31'Binomial Probability Calculator'#12
+'ClientHeight'#3#181#0#11'ClientWidth'#3'c'#1#6'OnShow'#7#8'FormShow'#10'LCL'
+'Version'#6#6'0.9.30'#0#6'TLabel'#6'Label1'#4'Left'#2#9#6'Height'#2#16#3'Top'
+#2#17#5'Width'#3#240#0#7'Caption'#6'-Frequency of events observed in categor'
+'y ''A'':'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#8#6'Height'#2
+#16#3'Top'#2'1'#5'Width'#3#239#0#7'Caption'#6'-Frequency of events observed '
+'in category ''B'':'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#2#8#6
+'Height'#2#16#3'Top'#2'P'#5'Width'#3#241#0#7'Caption'#6'.Proportion of event'
+'s expected in category ''A'':'#11'ParentColor'#8#0#0#7'TButton'#8'ResetBtn'
+#4'Left'#2#8#6'Height'#2#26#3'Top'#3#136#0#5'Width'#2':'#7'Caption'#6#5'Rese'
+'t'#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#0#0#0#7'TButton'#9'CancelBt'
+'n'#4'Left'#2'P'#6'Height'#2#26#3'Top'#3#136#0#5'Width'#2':'#7'Caption'#6#6
+'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#1#0#0#7'TButton'#10'ComputeBtn'#4
+'Left'#3#176#0#6'Height'#2#26#3'Top'#3#136#0#5'Width'#2':'#7'Caption'#6#7'Co'
+'mpute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#2#0#0#7'TButton'#9'Re'
+'turnBtn'#4'Left'#3#0#1#6'Height'#2#26#3'Top'#3#136#0#5'Width'#2':'#7'Captio'
+'n'#6#6'Return'#11'ModalResult'#2#1#8'TabOrder'#2#3#0#0#5'TEdit'#9'FreqAEdit'
+#4'Left'#3#16#1#6'Height'#2#23#3'Top'#2#8#5'Width'#2'+'#10'OnKeyPress'#7#17
+'FreqAEditKeyPress'#8'TabOrder'#2#4#4'Text'#6#9'FreqAEdit'#0#0#5'TEdit'#9'Fr'
+'eqBEdit'#4'Left'#3#16#1#6'Height'#2#23#3'Top'#2'('#5'Width'#2'+'#10'OnKeyPr'
+'ess'#7#17'FreqBEditKeyPress'#8'TabOrder'#2#5#4'Text'#6#5'Edit1'#0#0#5'TEdit'
+#9'PropAEdit'#4'Left'#3#16#1#6'Height'#2#23#3'Top'#2'H'#5'Width'#2'+'#10'OnK'
+'eyPress'#7#17'PropAEditKeyPress'#8'TabOrder'#2#6#4'Text'#6#5'Edit1'#0#0#9'T'
+'CheckBox'#7'PlotChk'#4'Left'#2#8#6'Height'#2#19#3'Top'#2'k'#5'Width'#2'}'#7
+'Caption'#6#21'Plot the distribution'#8'TabOrder'#2#7#0#0#0
]);

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,730 @@
object BlksAnovaFrm: TBlksAnovaFrm
Left = 143
Height = 490
Top = 110
Width = 731
Caption = 'One, Two or Three Way Analysis of Variance'
ClientHeight = 490
ClientWidth = 731
OnShow = FormShow
LCLVersion = '0.9.30.4'
object Label1: TLabel
Left = 8
Height = 16
Top = 11
Width = 51
Caption = 'Variables:'
ParentColor = False
end
object Label2: TLabel
Left = 408
Height = 16
Top = 104
Width = 72
Caption = 'Variable Type'
ParentColor = False
end
object Label3: TLabel
Left = 7
Height = 16
Top = 415
Width = 150
Caption = 'Alpha Level for Overall Tests'
ParentColor = False
end
object Label4: TLabel
Left = 223
Height = 16
Top = 415
Width = 166
Caption = 'Alpha Level for Post-Hoc Tests:'
ParentColor = False
end
object VarList: TListBox
Left = 8
Height = 368
Top = 29
Width = 185
ItemHeight = 0
TabOrder = 0
end
object DepIn: TBitBtn
Left = 208
Height = 29
Top = 25
Width = 32
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
}
NumGlyphs = 0
OnClick = DepInClick
TabOrder = 1
end
object DepOut: TBitBtn
Left = 208
Height = 29
Top = 64
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = DepOutClick
TabOrder = 2
end
object Fact1In: TBitBtn
Left = 208
Height = 29
Top = 120
Width = 32
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
}
NumGlyphs = 0
OnClick = Fact1InClick
TabOrder = 3
end
object Fact1Out: TBitBtn
Left = 208
Height = 29
Top = 160
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = Fact1OutClick
TabOrder = 4
end
object Fact2In: TBitBtn
Left = 208
Height = 29
Top = 216
Width = 32
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
}
NumGlyphs = 0
OnClick = Fact2InClick
TabOrder = 5
end
object Fact2Out: TBitBtn
Left = 208
Height = 29
Top = 256
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = Fact2OutClick
TabOrder = 6
end
object Fact3In: TBitBtn
Left = 208
Height = 29
Top = 312
Width = 32
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
}
NumGlyphs = 0
OnClick = Fact3InClick
TabOrder = 7
end
object Fact3Out: TBitBtn
Left = 208
Height = 29
Top = 352
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = Fact3OutClick
TabOrder = 8
end
object StaticText1: TStaticText
Left = 256
Height = 15
Top = 21
Width = 73
Caption = 'Dependent Variable'
TabOrder = 9
end
object StaticText2: TStaticText
Left = 256
Height = 17
Top = 112
Width = 83
Caption = 'Factor 1 Variable'
TabOrder = 10
end
object StaticText3: TStaticText
Left = 256
Height = 13
Top = 216
Width = 95
Caption = 'Factor 2 Variable'
TabOrder = 11
end
object StaticText4: TStaticText
Left = 256
Height = 12
Top = 312
Width = 88
Caption = 'Factor 3 Clark'
TabOrder = 12
end
object DepVar: TEdit
Left = 257
Height = 23
Top = 41
Width = 135
TabOrder = 13
Text = 'DepVar'
end
object Factor1: TEdit
Left = 256
Height = 23
Top = 136
Width = 135
TabOrder = 14
Text = 'Edit1'
end
object Factor2: TEdit
Left = 256
Height = 23
Top = 240
Width = 135
TabOrder = 15
Text = 'Edit1'
end
object Factor3: TEdit
Left = 256
Height = 23
Top = 336
Width = 135
TabOrder = 16
Text = 'Edit1'
end
object Fact1Grp: TRadioGroup
Left = 408
Height = 64
Top = 128
Width = 122
AutoFill = True
Caption = 'Factor 1'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 46
ClientWidth = 118
Items.Strings = (
'Fixed Levels'
'Random Levels'
)
TabOrder = 17
end
object Fact2Grp: TRadioGroup
Left = 408
Height = 64
Top = 232
Width = 124
AutoFill = True
Caption = 'Factor 2'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 46
ClientWidth = 120
Items.Strings = (
'Fixed Levels'
'Random Levels'
)
TabOrder = 18
end
object Fact3Grp: TRadioGroup
Left = 408
Height = 61
Top = 319
Width = 124
AutoFill = True
Caption = 'Factor 3'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 43
ClientWidth = 120
Items.Strings = (
'Fixed Levels'
'Random Levels'
)
TabOrder = 19
end
object GroupBox1: TGroupBox
Left = 542
Height = 201
Top = 21
Width = 171
Caption = 'Post-Hoc Comparisons:'
ClientHeight = 183
ClientWidth = 167
TabOrder = 20
object Scheffe: TCheckBox
Left = 8
Height = 19
Top = 8
Width = 59
Caption = 'Scheffe'
TabOrder = 0
end
end
object TukeyHSD: TCheckBox
Left = 552
Height = 19
Top = 64
Width = 115
Caption = 'Tukey HSD (= n''s)'
TabOrder = 21
end
object TukeyB: TCheckBox
Left = 552
Height = 19
Top = 88
Width = 99
Caption = 'Tukey B (= n''s)'
TabOrder = 22
end
object TukeyKramer: TCheckBox
Left = 552
Height = 19
Top = 112
Width = 95
Caption = 'Tukey-Kramer'
TabOrder = 23
end
object NewmanKeuls: TCheckBox
Left = 552
Height = 19
Top = 136
Width = 138
Caption = 'Newman-Keuls (= n''s)'
TabOrder = 24
end
object Bonferoni: TCheckBox
Left = 552
Height = 19
Top = 160
Width = 76
Caption = 'Bonferroni'
TabOrder = 25
end
object OrthoContrasts: TCheckBox
Left = 552
Height = 19
Top = 184
Width = 134
Caption = 'Orthogonal Contrasts'
TabOrder = 26
end
object GroupBox2: TGroupBox
Left = 544
Height = 168
Top = 240
Width = 169
Caption = 'Options'
ClientHeight = 150
ClientWidth = 165
TabOrder = 27
object PlotMeans: TCheckBox
Left = 8
Height = 19
Top = 6
Width = 154
Caption = 'Plot Means Using 3D bars'
TabOrder = 0
end
object Plot2DLines: TCheckBox
Left = 6
Height = 19
Top = 29
Width = 159
Caption = 'Plot Means Using 2D Lines'
TabOrder = 1
end
object Plot3DLines: TCheckBox
Left = 7
Height = 19
Top = 53
Width = 159
Caption = 'Plot Means Using 3D Lines'
TabOrder = 2
end
object BrownForsythe: TCheckBox
Left = 8
Height = 19
Top = 104
Width = 157
Caption = 'Brown-Forsythe for 1-way'
TabOrder = 3
end
object Welch: TCheckBox
Left = 7
Height = 19
Top = 128
Width = 106
Caption = 'Welch for 1-way'
TabOrder = 4
end
object Label5: TLabel
Left = 8
Height = 16
Top = 80
Width = 149
Caption = 'Corrections for unequal Var.'
ParentColor = False
end
end
object OverallAlpha: TEdit
Left = 158
Height = 23
Top = 408
Width = 45
TabOrder = 28
Text = 'OverallAlpha'
end
object PostAlpha: TEdit
Left = 384
Height = 23
Top = 408
Width = 51
TabOrder = 29
Text = 'PostAlpha'
end
object ResetBtn: TButton
Left = 207
Height = 32
Top = 448
Width = 77
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 30
end
object CancelBtn: TButton
Left = 320
Height = 32
Top = 448
Width = 77
Caption = 'Cancel'
ModalResult = 2
TabOrder = 31
end
object ComputeBtn: TButton
Left = 432
Height = 31
Top = 448
Width = 77
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 32
end
object ReturnBtn: TButton
Left = 544
Height = 31
Top = 448
Width = 77
Caption = 'Return'
ModalResult = 1
TabOrder = 33
end
object HelpBtn: TButton
Tag = 107
Left = 96
Height = 32
Top = 447
Width = 78
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 34
end
end

View File

@ -0,0 +1,512 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TBlksAnovaFrm','FORMDATA',[
'TPF0'#13'TBlksAnovaFrm'#12'BlksAnovaFrm'#4'Left'#3#143#0#6'Height'#3#234#1#3
+'Top'#2'n'#5'Width'#3#219#2#7'Caption'#6'*One, Two or Three Way Analysis of '
+'Variance'#12'ClientHeight'#3#234#1#11'ClientWidth'#3#219#2#6'OnShow'#7#8'Fo'
+'rmShow'#10'LCLVersion'#6#8'0.9.30.4'#0#6'TLabel'#6'Label1'#4'Left'#2#8#6'He'
+'ight'#2#16#3'Top'#2#11#5'Width'#2'3'#7'Caption'#6#10'Variables:'#11'ParentC'
+'olor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#3#152#1#6'Height'#2#16#3'Top'#2'h'#5
+'Width'#2'H'#7'Caption'#6#13'Variable Type'#11'ParentColor'#8#0#0#6'TLabel'#6
+'Label3'#4'Left'#2#7#6'Height'#2#16#3'Top'#3#159#1#5'Width'#3#150#0#7'Captio'
+'n'#6#29'Alpha Level for Overall Tests'#11'ParentColor'#8#0#0#6'TLabel'#6'La'
+'bel4'#4'Left'#3#223#0#6'Height'#2#16#3'Top'#3#159#1#5'Width'#3#166#0#7'Capt'
+'ion'#6#31'Alpha Level for Post-Hoc Tests:'#11'ParentColor'#8#0#0#8'TListBox'
+#7'VarList'#4'Left'#2#8#6'Height'#3'p'#1#3'Top'#2#29#5'Width'#3#185#0#10'Ite'
+'mHeight'#2#0#8'TabOrder'#2#0#0#0#7'TBitBtn'#5'DepIn'#4'Left'#3#208#0#6'Heig'
+'ht'#2#29#3'Top'#2#25#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'
+#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0
+'d'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'
+#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'
+#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255
+#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208
+#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'
+#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255
+#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167
+#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202
+#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'
+#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'
+#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'
+#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#9'NumGlyphs'#2#0#7'OnClick'#7#10'DepInClick'#8'TabOrder'#2#1#0#0#7'TBitBtn'
,#6'DepOut'#4'Left'#3#208#0#6'Height'#2#29#3'Top'#2'@'#5'Width'#2' '#10'Glyph'
+'.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16
+#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255
+'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'
+#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156
+#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255
+#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255
+'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138
+#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207
+#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'
+#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0
+'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'
+#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'
+#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'DepOutClick'#8
+'TabOrder'#2#2#0#0#7'TBitBtn'#7'Fact1In'#4'Left'#3#208#0#6'Height'#2#29#3'To'
+'p'#2'x'#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0
+'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0
+#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'
+#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'
+#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195
+'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144
+#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255
+#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255
+#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255
+']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145
+'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#12'Fact1InClick'#8'TabOrder'#2#3#0#0#7'TBitBtn'#8'Fact'
+'1Out'#4'Left'#3#208#0#6'Height'#2#29#3'Top'#3#160#0#5'Width'#2' '#10'Glyph.'
+'Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16
+#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255
+'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'
+#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156
+#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255
,#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255
+'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138
+#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207
+#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'
+#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0
+'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'
+#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'
+#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#13'Fact1OutClick'
+#8'TabOrder'#2#4#0#0#7'TBitBtn'#7'Fact2In'#4'Left'#3#208#0#6'Height'#2#29#3
+'Top'#3#216#0#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0
+#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0
+'d'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'
+#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'
+#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0
+'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157
+#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195
+#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0
+#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255
+#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144
+#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201
+#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190
+'m'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255
+'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
,#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#9'NumGlyphs'#2#0#7'OnClick'#7#12'Fact2InClick'#8'TabOrder'#2#5#0#0#7'TBitBt'
+'n'#8'Fact2Out'#4'Left'#3#208#0#6'Height'#2#29#3'Top'#3#0#1#5'Width'#2' '#10
+'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0
+#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'
+#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'
+#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134
+#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203
+#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190
+'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127
+#204#138#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255
+#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135
+#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255
+#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177
+'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255
+'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#13
+'Fact2OutClick'#8'TabOrder'#2#6#0#0#7'TBitBtn'#7'Fact3In'#4'Left'#3#208#0#6
+'Height'#2#29#3'Top'#3'8'#1#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0
+'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4
+#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'
+#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'
+#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0
+#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255
+#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137
+#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255
+#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158
+#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255
+#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255
+'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'
+#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'
+#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#12'Fact3InClick'#8'TabOrder'#2#7
+#0#0#7'TBitBtn'#8'Fact3Out'#4'Left'#3#208#0#6'Height'#2#29#3'Top'#3'`'#1#5'W'
+'idth'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0
+'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0
+#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'
+#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'
+#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255
+'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'
+#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195
+'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144
+#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255
+#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255
+#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135
+#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#13'Fact3OutClick'#8'TabOrder'#2#8#0#0#11'TStaticText'
+#11'StaticText1'#4'Left'#3#0#1#6'Height'#2#15#3'Top'#2#21#5'Width'#2'I'#7'Ca'
+'ption'#6#18'Dependent Variable'#8'TabOrder'#2#9#0#0#11'TStaticText'#11'Stat'
+'icText2'#4'Left'#3#0#1#6'Height'#2#17#3'Top'#2'p'#5'Width'#2'S'#7'Caption'#6
+#17'Factor 1 Variable'#8'TabOrder'#2#10#0#0#11'TStaticText'#11'StaticText3'#4
+'Left'#3#0#1#6'Height'#2#13#3'Top'#3#216#0#5'Width'#2'_'#7'Caption'#6#17'Fac'
+'tor 2 Variable'#8'TabOrder'#2#11#0#0#11'TStaticText'#11'StaticText4'#4'Left'
+#3#0#1#6'Height'#2#12#3'Top'#3'8'#1#5'Width'#2'X'#7'Caption'#6#14'Factor 3 C'
+'lark'#8'TabOrder'#2#12#0#0#5'TEdit'#6'DepVar'#4'Left'#3#1#1#6'Height'#2#23#3
+'Top'#2')'#5'Width'#3#135#0#8'TabOrder'#2#13#4'Text'#6#6'DepVar'#0#0#5'TEdit'
+#7'Factor1'#4'Left'#3#0#1#6'Height'#2#23#3'Top'#3#136#0#5'Width'#3#135#0#8'T'
+'abOrder'#2#14#4'Text'#6#5'Edit1'#0#0#5'TEdit'#7'Factor2'#4'Left'#3#0#1#6'He'
+'ight'#2#23#3'Top'#3#240#0#5'Width'#3#135#0#8'TabOrder'#2#15#4'Text'#6#5'Edi'
+'t1'#0#0#5'TEdit'#7'Factor3'#4'Left'#3#0#1#6'Height'#2#23#3'Top'#3'P'#1#5'Wi'
+'dth'#3#135#0#8'TabOrder'#2#16#4'Text'#6#5'Edit1'#0#0#11'TRadioGroup'#8'Fact'
+'1Grp'#4'Left'#3#152#1#6'Height'#2'@'#3'Top'#3#128#0#5'Width'#2'z'#8'AutoFil'
+'l'#9#7'Caption'#6#8'Factor 1'#28'ChildSizing.LeftRightSpacing'#2#6#28'Child'
+'Sizing.TopBottomSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomo'
+'genousChildResize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomogenousChildR'
+'esize'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing'
+'.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29'cclLeftTo'
+'RightThenTopToBottom'#27'ChildSizing.ControlsPerLine'#2#1#12'ClientHeight'#2
+'.'#11'ClientWidth'#2'v'#13'Items.Strings'#1#6#12'Fixed Levels'#6#13'Random '
+'Levels'#0#8'TabOrder'#2#17#0#0#11'TRadioGroup'#8'Fact2Grp'#4'Left'#3#152#1#6
,'Height'#2'@'#3'Top'#3#232#0#5'Width'#2'|'#8'AutoFill'#9#7'Caption'#6#8'Fact'
+'or 2'#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'
+#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChildResize'#27'Chi'
+'ldSizing.EnlargeVertical'#7#24'crsHomogenousChildResize'#28'ChildSizing.Shr'
+'inkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crs'
+'ScaleChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27
+'ChildSizing.ControlsPerLine'#2#1#12'ClientHeight'#2'.'#11'ClientWidth'#2'x'
+#13'Items.Strings'#1#6#12'Fixed Levels'#6#13'Random Levels'#0#8'TabOrder'#2
+#18#0#0#11'TRadioGroup'#8'Fact3Grp'#4'Left'#3#152#1#6'Height'#2'='#3'Top'#3
+'?'#1#5'Width'#2'|'#8'AutoFill'#9#7'Caption'#6#8'Factor 3'#28'ChildSizing.Le'
+'ftRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing.Enl'
+'argeHorizontal'#7#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVertic'
+'al'#7#24'crsHomogenousChildResize'#28'ChildSizing.ShrinkHorizontal'#7#14'cr'
+'sScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildS'
+'izing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.ControlsPe'
+'rLine'#2#1#12'ClientHeight'#2'+'#11'ClientWidth'#2'x'#13'Items.Strings'#1#6
+#12'Fixed Levels'#6#13'Random Levels'#0#8'TabOrder'#2#19#0#0#9'TGroupBox'#9
+'GroupBox1'#4'Left'#3#30#2#6'Height'#3#201#0#3'Top'#2#21#5'Width'#3#171#0#7
+'Caption'#6#21'Post-Hoc Comparisons:'#12'ClientHeight'#3#183#0#11'ClientWidt'
+'h'#3#167#0#8'TabOrder'#2#20#0#9'TCheckBox'#7'Scheffe'#4'Left'#2#8#6'Height'
+#2#19#3'Top'#2#8#5'Width'#2';'#7'Caption'#6#7'Scheffe'#8'TabOrder'#2#0#0#0#0
+#9'TCheckBox'#8'TukeyHSD'#4'Left'#3'('#2#6'Height'#2#19#3'Top'#2'@'#5'Width'
+#2's'#7'Caption'#6#17'Tukey HSD (= n''s)'#8'TabOrder'#2#21#0#0#9'TCheckBox'#6
+'TukeyB'#4'Left'#3'('#2#6'Height'#2#19#3'Top'#2'X'#5'Width'#2'c'#7'Caption'#6
+#15'Tukey B (= n''s)'#8'TabOrder'#2#22#0#0#9'TCheckBox'#11'TukeyKramer'#4'Le'
+'ft'#3'('#2#6'Height'#2#19#3'Top'#2'p'#5'Width'#2'_'#7'Caption'#6#12'Tukey-K'
+'ramer'#8'TabOrder'#2#23#0#0#9'TCheckBox'#11'NewmanKeuls'#4'Left'#3'('#2#6'H'
+'eight'#2#19#3'Top'#3#136#0#5'Width'#3#138#0#7'Caption'#6#20'Newman-Keuls (='
+' n''s)'#8'TabOrder'#2#24#0#0#9'TCheckBox'#9'Bonferoni'#4'Left'#3'('#2#6'Hei'
+'ght'#2#19#3'Top'#3#160#0#5'Width'#2'L'#7'Caption'#6#10'Bonferroni'#8'TabOrd'
+'er'#2#25#0#0#9'TCheckBox'#14'OrthoContrasts'#4'Left'#3'('#2#6'Height'#2#19#3
+'Top'#3#184#0#5'Width'#3#134#0#7'Caption'#6#20'Orthogonal Contrasts'#8'TabOr'
+'der'#2#26#0#0#9'TGroupBox'#9'GroupBox2'#4'Left'#3' '#2#6'Height'#3#168#0#3
+'Top'#3#240#0#5'Width'#3#169#0#7'Caption'#6#7'Options'#12'ClientHeight'#3#150
+#0#11'ClientWidth'#3#165#0#8'TabOrder'#2#27#0#9'TCheckBox'#9'PlotMeans'#4'Le'
+'ft'#2#8#6'Height'#2#19#3'Top'#2#6#5'Width'#3#154#0#7'Caption'#6#24'Plot Mea'
+'ns Using 3D bars'#8'TabOrder'#2#0#0#0#9'TCheckBox'#11'Plot2DLines'#4'Left'#2
+#6#6'Height'#2#19#3'Top'#2#29#5'Width'#3#159#0#7'Caption'#6#25'Plot Means Us'
+'ing 2D Lines'#8'TabOrder'#2#1#0#0#9'TCheckBox'#11'Plot3DLines'#4'Left'#2#7#6
+'Height'#2#19#3'Top'#2'5'#5'Width'#3#159#0#7'Caption'#6#25'Plot Means Using '
+'3D Lines'#8'TabOrder'#2#2#0#0#9'TCheckBox'#13'BrownForsythe'#4'Left'#2#8#6
+'Height'#2#19#3'Top'#2'h'#5'Width'#3#157#0#7'Caption'#6#24'Brown-Forsythe fo'
+'r 1-way'#8'TabOrder'#2#3#0#0#9'TCheckBox'#5'Welch'#4'Left'#2#7#6'Height'#2
+#19#3'Top'#3#128#0#5'Width'#2'j'#7'Caption'#6#15'Welch for 1-way'#8'TabOrder'
+#2#4#0#0#6'TLabel'#6'Label5'#4'Left'#2#8#6'Height'#2#16#3'Top'#2'P'#5'Width'
+#3#149#0#7'Caption'#6#28'Corrections for unequal Var.'#11'ParentColor'#8#0#0
+#0#5'TEdit'#12'OverallAlpha'#4'Left'#3#158#0#6'Height'#2#23#3'Top'#3#152#1#5
+'Width'#2'-'#8'TabOrder'#2#28#4'Text'#6#12'OverallAlpha'#0#0#5'TEdit'#9'Post'
+'Alpha'#4'Left'#3#128#1#6'Height'#2#23#3'Top'#3#152#1#5'Width'#2'3'#8'TabOrd'
+'er'#2#29#4'Text'#6#9'PostAlpha'#0#0#7'TButton'#8'ResetBtn'#4'Left'#3#207#0#6
+'Height'#2' '#3'Top'#3#192#1#5'Width'#2'M'#7'Caption'#6#5'Reset'#7'OnClick'#7
+#13'ResetBtnClick'#8'TabOrder'#2#30#0#0#7'TButton'#9'CancelBtn'#4'Left'#3'@'
+#1#6'Height'#2' '#3'Top'#3#192#1#5'Width'#2'M'#7'Caption'#6#6'Cancel'#11'Mod'
+'alResult'#2#2#8'TabOrder'#2#31#0#0#7'TButton'#10'ComputeBtn'#4'Left'#3#176#1
+#6'Height'#2#31#3'Top'#3#192#1#5'Width'#2'M'#7'Caption'#6#7'Compute'#7'OnCli'
+'ck'#7#15'ComputeBtnClick'#8'TabOrder'#2' '#0#0#7'TButton'#9'ReturnBtn'#4'Le'
+'ft'#3' '#2#6'Height'#2#31#3'Top'#3#192#1#5'Width'#2'M'#7'Caption'#6#6'Retur'
+'n'#11'ModalResult'#2#1#8'TabOrder'#2'!'#0#0#7'TButton'#7'HelpBtn'#3'Tag'#2
+'k'#4'Left'#2'`'#6'Height'#2' '#3'Top'#3#191#1#5'Width'#2'N'#7'Caption'#6#4
+'Help'#7'OnClick'#7#12'HelpBtnClick'#8'TabOrder'#2'"'#0#0#0
]);

View File

@ -0,0 +1,478 @@
unit BlkMRegUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons, Globals, MainUnit, MatrixLib, OutPutUnit,
FunctionsLib, DataProcs, DictionaryUnit;
type
{ TBlkMregFrm }
TBlkMregFrm = class(TForm)
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
CPChkBox: TCheckBox;
CovChkBox: TCheckBox;
CorrsChkBox: TCheckBox;
MeansChkBox: TCheckBox;
SaveDialog1: TSaveDialog;
VarChkBox: TCheckBox;
SDChkBox: TCheckBox;
MatSaveChkBox: TCheckBox;
PredictChkBox: TCheckBox;
GroupBox1: TGroupBox;
InProb: TEdit;
Label5: TLabel;
NextBlkBtn: TButton;
DepInBtn: TBitBtn;
DepOutBtn: TBitBtn;
BlockNoEdit: TEdit;
InBtn: TBitBtn;
Label4: TLabel;
OutBtn: TBitBtn;
AllBtn: TBitBtn;
DepVar: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
BlockList: TListBox;
VarList: TListBox;
procedure AllBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure ComputeBtnClick(Sender: TObject);
procedure DepInBtnClick(Sender: TObject);
procedure DepOutBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure InBtnClick(Sender: TObject);
procedure NextBlkBtnClick(Sender: TObject);
procedure OutBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
private
{ private declarations }
BlkVarCols : IntDyneMat;
NoBlocks : integer;
VarsInBlk : IntDyneVec;
NoVars : integer;
public
{ public declarations }
end;
var
BlkMregFrm: TBlkMregFrm;
implementation
{ 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
begin
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
end;
InBtn.Enabled := true;
OutBtn.Enabled := false;
DepInBtn.Enabled := true;
DepOutBtn.Enabled := false;
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 := '0.05';
SetLength(BlkVarCols,NoVariables,NoVariables);
SetLength(VarsInBlk,NoVariables);
end;
procedure TBlkMregFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TBlkMregFrm.AllBtnClick(Sender: TObject);
VAR count, index : integer;
begin
count := VarList.Items.Count;
for index := 0 to count-1 do
begin
BlockList.Items.Add(VarList.Items.Strings[index]);
end;
VarList.Clear;
end;
procedure TBlkMregFrm.CancelBtnClick(Sender: TObject);
begin
if VarsInBlk <> nil then VarsInBlk := nil;
if BlkVarCols <> nil then BlkVarCols := nil;
BlkMRegFrm.Hide;
end;
procedure TBlkMregFrm.ComputeBtnClick(Sender: TObject);
Label CleanUp;
var
i, j, k, col, mattype, errorcode, NCases : integer;
NoIndepVars, DepVarCol, NEntered, StepNo : integer;
R2, df1, df2, Y, z, BPG, chiprob : double;
StdErrEst, F, FProbF, OldR2 : double;
pdf1, pdf2, probin, prout : double;
BetaWeights : DblDyneVec;
cellstring, outline : string;
corrs : DblDyneMat;
Means : DblDyneVec;
Variances : DblDyneVec;
StdDevs : DblDyneVec;
title : string;
IndRowLabels : StrDyneVec;
IndColLabels : StrDyneVec;
IndepInverse : DblDyneMat;
IndepIndex : IntDyneVec;
XYCorrs : DblDyneVec;
Partial : DblDyneVec;
Candidate : IntDyneVec;
filename : string;
ColEntered : IntDyneVec;
constant : double;
errcode : boolean;
begin
SetLength(corrs,NoVariables+1,NoVariables+1);
SetLength(IndepInverse,NoVariables,NoVariables);
SetLength(Means,NoVariables);
SetLength(Variances,NoVariables);
SetLength(StdDevs,NoVariables);
SetLength(IndepIndex,NoVariables);
SetLength(IndColLabels,NoVariables);
SetLength(IndRowLabels,NoVariables);
SetLength(BetaWeights,NoVariables);
SetLength(Candidate,NoVariables);
SetLength(ColEntered,NoVariables);
NextBlkBtnClick(self);
probin := StrToFloat(InProb.Text); // probability to include a block
prout := 1.0;
OutPutFrm.RichEdit.Clear;
// OutPutFrm.RichEdit.ParaGraph.Alignment := taLeftJustify;
OutPutFrm.RichEdit.Lines.Add('Block Entry Multiple Regression by Bill Miller');
errorcode := 0;
{ get dependendent variable column }
if DepVar.Text = '' then
begin
ShowMessage('ERROR! No Dependent variable selected.');
goto CleanUp;
end;
DepVarCol := 0;
NoVars := NoVars + 1;
for j := 1 to NoVariables do
if DepVar.Text = OS3MainFrm.DataGrid.Cells[j,0] then DepVarCol := j;
R2 := 0.0;
OldR2 := 0.0;
pdf1 := 0.0;
pdf2 := 0.0;
for i := 1 to NoBlocks-1 do Candidate[i-1] := i;
{ Now, complete Mult. Regs by adding blocks in each step }
for StepNo := 1 to NoBlocks-1 do
begin
NEntered := 0;
for i := 1 to StepNo do
begin
if (Candidate[StepNo-1] <> 0) then
begin
for j := 1 to VarsInBlk[i-1] do
begin
NEntered := NEntered + 1;
ColEntered[NEntered-1] := BlkVarCols[i-1,j-1];
k := BlkVarCols[i-1,j-1];
IndRowLabels[NEntered-1] := OS3MainFrm.DataGrid.Cells[k,0];
IndColLabels[NEntered-1] := OS3MainFrm.DataGrid.Cells[k,0];
end;
end;
end;
NEntered := NEntered + 1; // dependent variable last
ColEntered[NEntered-1] := DepVarCol;
IndRowLabels[NEntered-1] := OS3MainFrm.DataGrid.Cells[DepVarCol,0];
IndColLabels[NEntered-1] := OS3MainFrm.DataGrid.Cells[DepVarCol,0];
OutPutFrm.RichEdit.Lines.Add('');
outline := format('----------------- Trial Block %d Variables Added ------------------',[StepNo]);
OutPutFrm.RichEdit.Lines.Add(outline);
if CPChkBox.Checked = true then
begin
title := 'Cross-Products Matrix';
GridXProd(NEntered,ColEntered,Corrs,errcode,NCases);
MAT_PRINT(Corrs,NEntered,NEntered,title,IndRowLabels,IndColLabels,NCases);
end;
if CovChkBox.Checked = true then
begin
title := 'Variance-Covariance Matrix';
GridCovar(NEntered,ColEntered,Corrs,Means,Variances,
StdDevs,errcode,NCases);
MAT_PRINT(Corrs,NEntered,NEntered,title,IndRowLabels,IndColLabels,NCases);
end;
Correlations(NEntered,ColEntered,Corrs,Means,Variances,
StdDevs,errcode,NCases);
if CorrsChkBox.Checked = true then
begin
title := 'Product-Moment Correlations Matrix';
MAT_PRINT(Corrs,NEntered,NEntered,title,IndRowLabels,IndColLabels,NCases);
end;
title := 'Means';
if MeansChkBox.Checked = true then
DynVectorPrint(Means,NEntered,title,IndColLabels,NCases);
title := 'Variances';
if VarChkBox.Checked = true then
DynVectorPrint(Variances,NEntered,title,IndColLabels,NCases);
title := 'Standard Deviations';
if SDChkBox.Checked = true then
DynVectorPrint(StdDevs,NEntered,title,IndColLabels,NCases);
if errorcode > 0 then
begin
ShowMessage('ERROR! A selected variable has no variability-run aborted.');
goto CleanUp;
end;
NoIndepVars := NEntered - 1;
for i := 1 to NoIndepVars do IndepIndex[i-1] := i;
MReg2(NCases,NEntered,NoIndepVars,IndepIndex,corrs,IndepInverse,
IndRowLabels,R2,BetaWeights,
Means,Variances,errorcode,StdErrEst,constant,prout,true, false,false);
outline := format('Increase in R Squared = %6.3f',[R2-OldR2]);
OutPutFrm.RichEdit.Lines.Add(outline);
df1 := NoIndepVars - pdf1;
df2 := NCases - NoIndepVars - 1;
F := ((R2 - OldR2) / (1.0 - R2)) * df2 / df1;
FProbF := probf(F,df1,df2);
outline := format('F = %6.3f with probability = %6.3f',[F,FProbF]);
OutPutFrm.RichEdit.Lines.Add(outline);
if FProbF < probin then
begin
outline := format('Block %d met entry requirements',[StepNo]);
OutPutFrm.RichEdit.Lines.Add(outline);
end
else
begin
Candidate[StepNo-1] := 0;
NoIndepVars := NoIndepVars - VarsInBlk[StepNo-1];
outline := format('Block %d did not meet entry requirements',[StepNo]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OldR2 := R2;
pdf1 := NoIndepVars;
end;
{ add [predicted scores, residual scores, etc. to grid if options elected }
if PredictChkBox.Checked = true then
begin
prout := 1.0;
Correlations(NEntered,ColEntered,Corrs,Means,Variances,
StdDevs,errcode,NCases);
MReg2(NCases,NEntered,NoIndepVars,IndepIndex,corrs,IndepInverse,
IndRowLabels,R2,BetaWeights,
Means,Variances,errorcode,StdErrEst,constant,prout,true, false,false);
Predict(ColEntered, NEntered, IndepInverse, Means, StdDevs,
BetaWeights, StdErrEst, IndepIndex, NoIndepVars);
end;
{ if HeteroChk.Checked = true then // do BPG test
begin
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('=====================================================');
OutPutFrm.RichEdit.Lines.Add('Breusch-Pagan-Godfrey Test of Heteroscedasticity');
OutPutFrm.RichEdit.Lines.Add('=====================================================');
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Auxiliary Regression');
OutPutFrm.RichEdit.Lines.Add('');
BPG := 0.0;
col := NoVariables + 1;
DictionaryFrm.NewVar(col);
DictionaryFrm.DictGrid.Cells[1,col] := 'BPGResid.';
OS3MainFrm.DataGrid.Cells[col,0] := 'BPGResid.';
NoVariables := NoVariables + 1;
// get predicted raw score
for i := 1 to NCases do
begin
Y := 0.0;
for j := 1 to NoIndepVars do
begin
col := IndepIndex[j-1];
k := ColEntered[col-1];
z := (StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[k,i])) -
Means[col-1]) / StdDevs[col-1];
Y := Y + (z * BetaWeights[j-1]); // predicted z score
end;
Y := Y * StdDevs[NEntered-1] + Means[NEntered-1]; // predicte raw
k := ColEntered[NEntered-1];
Y := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[k,i])) - Y; // residual
BPG := BPG + (Y * Y); // sum of squared residuals
// save squared value for each case
OS3MainFrm.DataGrid.Cells[NoVariables,i] := FloatToStr(Y * Y);
// OS3MainFrm.DataGrid.Cells[NoVariables,i] := Format('%8.3f',[Y * Y]);
end;
BPG := BPG / NCases;
for i := 1 to NCases do
begin
Y := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[NoVariables,i])) / BPG;
OS3MainFrm.DataGrid.Cells[NoVariables,i] := Format('%8.3f',[Y]);
end;
// Now, regress Hetero values on the independent variables
DepVarCol := NoVariables;
ColEntered[NEntered-1] := NoVariables;
IndRowLabels[NEntered-1] := OS3MainFrm.DataGrid.Cells[DepVarCol,0];
IndColLabels[NEntered-1] := OS3MainFrm.DataGrid.Cells[DepVarCol,0];
Correlations(NEntered,ColEntered,Corrs,Means,Variances,
StdDevs,errcode,NCases);
if CorrsChkBox.Checked = true then
begin
title := 'Product-Moment Correlations Matrix';
MAT_PRINT(Corrs,NEntered,NEntered,title,IndRowLabels,IndColLabels,NCases);
end;
title := 'Means';
if MeansChkBox.Checked = true then
DynVectorPrint(Means,NEntered,title,IndColLabels,NCases);
title := 'Variances';
if VarChkBox.Checked = true then
DynVectorPrint(Variances,NEntered,title,IndColLabels,NCases);
title := 'Standard Deviations';
if SDChkBox.Checked = true then
DynVectorPrint(StdDevs,NEntered,title,IndColLabels,NCases);
MReg2(NCases,NEntered,NoIndepVars,IndepIndex,corrs,IndepInverse,
IndRowLabels,R2,BetaWeights,
Means,Variances,errorcode,StdErrEst,constant,prout,true, false,false);
BPG := ( R2 * Variances[NEntered-1] * (Ncases-1) ) / 2;
chiprob := 1.0 - chisquaredprob(BPG,NEntered-1);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Breusch-Pagan-Godfrey Test of Heteroscedasticity');
outline := format('Chi-Square = %8.3f with probability greater value = %8.3f',[BPG,chiprob]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
end;
}
if MatSaveChkBox.Checked = true then
begin
SaveDialog1.Filter := 'FreeStat matrix files (*.MAT)|*.MAT|All files (*.*)|*.*';
SaveDialog1.FilterIndex := 1;
if SaveDialog1.Execute then
begin
filename := SaveDialog1.FileName;
MATSAVE(Corrs,NoVars,NoVars,Means,StdDevs,NCases,IndRowLabels,IndColLabels,filename);
end;
end;
OutPutFrm.ShowModal;
CleanUp:
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;
procedure TBlkMregFrm.DepInBtnClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
DepVar.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
DepOutBtn.Enabled := true;
DepInBtn.Enabled := false;
end;
procedure TBlkMregFrm.DepOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(DepVar.Text);
DepVar.Text := '';
DepInBtn.Enabled := true;
end;
procedure TBlkMregFrm.InBtnClick(Sender: TObject);
VAR i, index : integer;
begin
index := VarList.Items.Count;
i := 0;
while i < index do
begin
if (VarList.Selected[i]) then
begin
BlockList.Items.Add(VarList.Items.Strings[i]);
VarList.Items.Delete(i);
index := index - 1;
i := 0;
end
else i := i + 1;
end;
OutBtn.Enabled := true;
end;
procedure TBlkMregFrm.NextBlkBtnClick(Sender: TObject);
var
blkno, i, j, count : integer;
cellstring : string;
begin
{save columns of variables in the current block }
count := BlockList.Items.Count;
if count = 0 then
begin
VarsInBlk[NoBlocks-1] := 0;
exit;
end;
VarsInBlk[NoBlocks-1] := count;
for i := 0 to count-1 do
begin
for j := 1 to NoVariables do
begin
cellstring := OS3MainFrm.DataGrid.Cells[j,0];
if cellstring = BlockList.Items.Strings[i] then
begin
BlkVarCols[NoBlocks-1,i] := j;
NoVars := NoVars + 1;
end;
end;
end;
blkno := StrToInt(BlockNoEdit.Text);
blkno := blkno + 1;
BlockNoEdit.Text := IntToStr(blkno);
NoBlocks := blkno;
BlockList.Clear;
end;
procedure TBlkMregFrm.OutBtnClick(Sender: TObject);
VAR index : integer;
begin
index := BlockList.ItemIndex;
VarList.Items.Add(BlockList.Items.Strings[index]);
BlockList.Items.Delete(index);
InBtn.Enabled := true;
if BlockList.Items.Count = 0 then OutBtn.Enabled := false;
end;
initialization
{$I blkmregunit.lrs}
end.

View File

@ -0,0 +1,406 @@
object BlkMregFrm: TBlkMregFrm
Left = 131
Height = 331
Top = 97
Width = 613
Caption = 'Block Entry Multiple Regression'
ClientHeight = 331
ClientWidth = 613
OnShow = FormShow
LCLVersion = '1.0.2.0'
object Label1: TLabel
Left = 6
Height = 16
Top = 8
Width = 99
Caption = 'Available Variables'
ParentColor = False
end
object Label2: TLabel
Left = 217
Height = 16
Top = 40
Width = 104
Caption = 'Dependent Variable'
ParentColor = False
end
object Label3: TLabel
Left = 214
Height = 16
Top = 112
Width = 168
Caption = 'Independent Var.s for this block'
ParentColor = False
end
object Label4: TLabel
Left = 181
Height = 16
Top = 12
Width = 55
Caption = 'Block No. '
ParentColor = False
end
object Label5: TLabel
Left = 383
Height = 16
Top = 11
Width = 164
Caption = 'Minimum Prob. to enter block:'
ParentColor = False
end
object VarList: TListBox
Left = 6
Height = 297
Top = 23
Width = 161
ItemHeight = 0
MultiSelect = True
TabOrder = 0
end
object DepInBtn: TBitBtn
Left = 176
Height = 29
Top = 40
Width = 32
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
}
NumGlyphs = 0
OnClick = DepInBtnClick
TabOrder = 1
end
object DepOutBtn: TBitBtn
Left = 176
Height = 29
Top = 72
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = DepOutBtnClick
TabOrder = 2
end
object InBtn: TBitBtn
Left = 176
Height = 29
Top = 144
Width = 32
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
}
NumGlyphs = 0
OnClick = InBtnClick
TabOrder = 3
end
object OutBtn: TBitBtn
Left = 176
Height = 29
Top = 176
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = OutBtnClick
TabOrder = 4
end
object AllBtn: TBitBtn
Left = 176
Height = 29
Top = 216
Width = 32
Caption = 'ALL'
NumGlyphs = 0
OnClick = AllBtnClick
TabOrder = 5
end
object DepVar: TEdit
Left = 216
Height = 23
Top = 56
Width = 146
TabOrder = 6
Text = 'DepVar'
end
object BlockList: TListBox
Left = 214
Height = 192
Top = 128
Width = 150
ItemHeight = 0
TabOrder = 7
end
object BlockNoEdit: TEdit
Left = 239
Height = 23
Top = 5
Width = 37
TabOrder = 8
Text = 'BlockNoEdit'
end
object NextBlkBtn: TButton
Left = 288
Height = 25
Top = 1
Width = 72
Caption = 'Next Block'
OnClick = NextBlkBtnClick
TabOrder = 9
end
object InProb: TEdit
Left = 552
Height = 23
Top = 5
Width = 44
TabOrder = 10
Text = 'InProb'
end
object GroupBox1: TGroupBox
Left = 382
Height = 209
Top = 40
Width = 216
Caption = 'Options'
ClientHeight = 191
ClientWidth = 212
TabOrder = 11
object CPChkBox: TCheckBox
Left = 6
Height = 19
Top = 1
Width = 169
Caption = 'Show Cross-Products Matrix'
TabOrder = 0
end
object CovChkBox: TCheckBox
Left = 6
Height = 19
Top = 22
Width = 197
Caption = 'Show Variance-Covariance Matrix'
TabOrder = 1
end
object CorrsChkBox: TCheckBox
Left = 6
Height = 19
Top = 43
Width = 169
Caption = 'Show Intercorrelation Matrix'
TabOrder = 2
end
object MeansChkBox: TCheckBox
Left = 7
Height = 19
Top = 64
Width = 87
Caption = 'Show Means'
TabOrder = 3
end
object VarChkBox: TCheckBox
Left = 7
Height = 19
Top = 85
Width = 102
Caption = 'Show Variances'
TabOrder = 4
end
object SDChkBox: TCheckBox
Left = 6
Height = 19
Top = 109
Width = 157
Caption = 'Show Standard Deviations'
TabOrder = 5
end
object MatSaveChkBox: TCheckBox
Left = 6
Height = 19
Top = 132
Width = 142
Caption = 'Save Correlation Matrix'
TabOrder = 6
end
object PredictChkBox: TCheckBox
Left = 7
Height = 19
Top = 154
Width = 195
Caption = 'Predictions,residuals,C.I.''s to Grid'
TabOrder = 7
end
end
object ResetBtn: TButton
Left = 382
Height = 26
Top = 264
Width = 66
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 12
end
object CancelBtn: TButton
Left = 504
Height = 26
Top = 264
Width = 66
Caption = 'Cancel'
ModalResult = 2
OnClick = CancelBtnClick
TabOrder = 13
end
object ComputeBtn: TButton
Left = 382
Height = 26
Top = 296
Width = 66
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 14
end
object ReturnBtn: TButton
Left = 504
Height = 26
Top = 296
Width = 66
Caption = 'Return'
ModalResult = 1
TabOrder = 15
end
object SaveDialog1: TSaveDialog
left = 178
top = 264
end
end

View File

@ -0,0 +1,263 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TBlkMregFrm','FORMDATA',[
'TPF0'#11'TBlkMregFrm'#10'BlkMregFrm'#4'Left'#3#131#0#6'Height'#3'K'#1#3'Top'
+#2'a'#5'Width'#3'e'#2#7'Caption'#6#31'Block Entry Multiple Regression'#12'Cl'
+'ientHeight'#3'K'#1#11'ClientWidth'#3'e'#2#6'OnShow'#7#8'FormShow'#10'LCLVer'
+'sion'#6#7'1.0.2.0'#0#6'TLabel'#6'Label1'#4'Left'#2#6#6'Height'#2#16#3'Top'#2
+#8#5'Width'#2'c'#7'Caption'#6#19'Available Variables'#11'ParentColor'#8#0#0#6
+'TLabel'#6'Label2'#4'Left'#3#217#0#6'Height'#2#16#3'Top'#2'('#5'Width'#2'h'#7
+'Caption'#6#18'Dependent Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'
+#4'Left'#3#214#0#6'Height'#2#16#3'Top'#2'p'#5'Width'#3#168#0#7'Caption'#6' I'
+'ndependent Var.s for this block'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4
+'Left'#3#181#0#6'Height'#2#16#3'Top'#2#12#5'Width'#2'7'#7'Caption'#6#10'Bloc'
+'k No. '#11'ParentColor'#8#0#0#6'TLabel'#6'Label5'#4'Left'#3#127#1#6'Height'
+#2#16#3'Top'#2#11#5'Width'#3#164#0#7'Caption'#6#29'Minimum Prob. to enter bl'
+'ock:'#11'ParentColor'#8#0#0#8'TListBox'#7'VarList'#4'Left'#2#6#6'Height'#3
+')'#1#3'Top'#2#23#5'Width'#3#161#0#10'ItemHeight'#2#0#11'MultiSelect'#9#8'Ta'
+'bOrder'#2#0#0#0#7'TBitBtn'#8'DepInBtn'#4'Left'#3#176#0#6'Height'#2#29#3'Top'
+#2'('#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'
+#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0
+#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%'
+'i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'
+#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'
+#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'
+#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255
+#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152
+#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193
+#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'
+#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255
+#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139
+#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255
+#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'
+#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'
+#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'
+#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'
+#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7
+'OnClick'#7#13'DepInBtnClick'#8'TabOrder'#2#1#0#0#7'TBitBtn'#9'DepOutBtn'#4
+'Left'#3#176#0#6'Height'#2#29#3'Top'#2'H'#5'Width'#2' '#10'Glyph.Data'#10':'
+#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '
+#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255
+#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213
+#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135
+#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'
+#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138
+#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207
+#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'
+#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0
+'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'
+#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'
+#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#14'DepOutBtnClick'
+#8'TabOrder'#2#2#0#0#7'TBitBtn'#5'InBtn'#4'Left'#3#176#0#6'Height'#2#29#3'To'
+'p'#3#144#0#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0
+#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'
+#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'
+#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'
+#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195
+'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144
+#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255
+#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255
+#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255
+']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145
+'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#10'InBtnClick'#8'TabOrder'#2#3#0#0#7'TBitBtn'#6'OutBtn'
+#4'Left'#3#176#0#6'Height'#2#29#3'Top'#3#176#0#5'Width'#2' '#10'Glyph.Data'
+#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0
+#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255
,#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213
+#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135
+#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'
+#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138
+#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207
+#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'
+#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0
+'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'
+#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'
+#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'OutBtnClick'#8
+'TabOrder'#2#4#0#0#7'TBitBtn'#6'AllBtn'#4'Left'#3#176#0#6'Height'#2#29#3'Top'
+#3#216#0#5'Width'#2' '#7'Caption'#6#3'ALL'#9'NumGlyphs'#2#0#7'OnClick'#7#11
+'AllBtnClick'#8'TabOrder'#2#5#0#0#5'TEdit'#6'DepVar'#4'Left'#3#216#0#6'Heigh'
+'t'#2#23#3'Top'#2'8'#5'Width'#3#146#0#8'TabOrder'#2#6#4'Text'#6#6'DepVar'#0#0
+#8'TListBox'#9'BlockList'#4'Left'#3#214#0#6'Height'#3#192#0#3'Top'#3#128#0#5
+'Width'#3#150#0#10'ItemHeight'#2#0#8'TabOrder'#2#7#0#0#5'TEdit'#11'BlockNoEd'
+'it'#4'Left'#3#239#0#6'Height'#2#23#3'Top'#2#5#5'Width'#2'%'#8'TabOrder'#2#8
+#4'Text'#6#11'BlockNoEdit'#0#0#7'TButton'#10'NextBlkBtn'#4'Left'#3' '#1#6'He'
+'ight'#2#25#3'Top'#2#1#5'Width'#2'H'#7'Caption'#6#10'Next Block'#7'OnClick'#7
+#15'NextBlkBtnClick'#8'TabOrder'#2#9#0#0#5'TEdit'#6'InProb'#4'Left'#3'('#2#6
+'Height'#2#23#3'Top'#2#5#5'Width'#2','#8'TabOrder'#2#10#4'Text'#6#6'InProb'#0
+#0#9'TGroupBox'#9'GroupBox1'#4'Left'#3'~'#1#6'Height'#3#209#0#3'Top'#2'('#5
+'Width'#3#216#0#7'Caption'#6#7'Options'#12'ClientHeight'#3#191#0#11'ClientWi'
+'dth'#3#212#0#8'TabOrder'#2#11#0#9'TCheckBox'#8'CPChkBox'#4'Left'#2#6#6'Heig'
+'ht'#2#19#3'Top'#2#1#5'Width'#3#169#0#7'Caption'#6#26'Show Cross-Products Ma'
+'trix'#8'TabOrder'#2#0#0#0#9'TCheckBox'#9'CovChkBox'#4'Left'#2#6#6'Height'#2
+#19#3'Top'#2#22#5'Width'#3#197#0#7'Caption'#6#31'Show Variance-Covariance Ma'
+'trix'#8'TabOrder'#2#1#0#0#9'TCheckBox'#11'CorrsChkBox'#4'Left'#2#6#6'Height'
+#2#19#3'Top'#2'+'#5'Width'#3#169#0#7'Caption'#6#28'Show Intercorrelation Mat'
+'rix'#8'TabOrder'#2#2#0#0#9'TCheckBox'#11'MeansChkBox'#4'Left'#2#7#6'Height'
+#2#19#3'Top'#2'@'#5'Width'#2'W'#7'Caption'#6#10'Show Means'#8'TabOrder'#2#3#0
+#0#9'TCheckBox'#9'VarChkBox'#4'Left'#2#7#6'Height'#2#19#3'Top'#2'U'#5'Width'
+#2'f'#7'Caption'#6#14'Show Variances'#8'TabOrder'#2#4#0#0#9'TCheckBox'#8'SDC'
+'hkBox'#4'Left'#2#6#6'Height'#2#19#3'Top'#2'm'#5'Width'#3#157#0#7'Caption'#6
+#24'Show Standard Deviations'#8'TabOrder'#2#5#0#0#9'TCheckBox'#13'MatSaveChk'
+'Box'#4'Left'#2#6#6'Height'#2#19#3'Top'#3#132#0#5'Width'#3#142#0#7'Caption'#6
+#23'Save Correlation Matrix'#8'TabOrder'#2#6#0#0#9'TCheckBox'#13'PredictChkB'
+'ox'#4'Left'#2#7#6'Height'#2#19#3'Top'#3#154#0#5'Width'#3#195#0#7'Caption'#6
+'$Predictions,residuals,C.I.''s to Grid'#8'TabOrder'#2#7#0#0#0#7'TButton'#8
+'ResetBtn'#4'Left'#3'~'#1#6'Height'#2#26#3'Top'#3#8#1#5'Width'#2'B'#7'Captio'
+'n'#6#5'Reset'#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#12#0#0#7'TButton'
+#9'CancelBtn'#4'Left'#3#248#1#6'Height'#2#26#3'Top'#3#8#1#5'Width'#2'B'#7'Ca'
+'ption'#6#6'Cancel'#11'ModalResult'#2#2#7'OnClick'#7#14'CancelBtnClick'#8'Ta'
+'bOrder'#2#13#0#0#7'TButton'#10'ComputeBtn'#4'Left'#3'~'#1#6'Height'#2#26#3
+'Top'#3'('#1#5'Width'#2'B'#7'Caption'#6#7'Compute'#7'OnClick'#7#15'ComputeBt'
+'nClick'#8'TabOrder'#2#14#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3#248#1#6'Heig'
,'ht'#2#26#3'Top'#3'('#1#5'Width'#2'B'#7'Caption'#6#6'Return'#11'ModalResult'
+#2#1#8'TabOrder'#2#15#0#0#11'TSaveDialog'#11'SaveDialog1'#4'left'#3#178#0#3
+'top'#3#8#1#0#0#0
]);

View File

@ -0,0 +1,56 @@
object BlankFrm: TBlankFrm
Left = 37
Top = 21
BorderStyle = bsDialog
Caption = 'Test Item Administration'
ClientHeight = 514
ClientWidth = 623
Color = clBtnFace
Font.Charset = ANSI_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Times New Roman'
Font.Style = []
OnShow = FormShow
PixelsPerInch = 96
object Label1: TLabel
Left = 8
Top = 488
Width = 37
Height = 14
Caption = 'Answer:'
end
object Image1: TImage
Left = 0
Top = 0
Width = 623
Height = 449
Align = alTop
end
object ContinueBtn: TButton
Left = 544
Top = 480
Width = 73
Height = 25
Caption = 'Continue'
ModalResult = 1
TabOrder = 0
OnClick = ContinueBtnClick
end
object AnswerEdit: TEdit
Left = 48
Top = 480
Width = 33
Height = 22
TabOrder = 1
end
object AnswerMemo: TMemo
Left = 48
Top = 456
Width = 481
Height = 49
ScrollBars = ssVertical
TabOrder = 2
Visible = False
end
end

View File

@ -0,0 +1,388 @@
unit BlankUnit;
{$MODE Delphi}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, ItemBankGlobals, FunctionsUnit;
type
TBlankFrm = class(TForm)
ContinueBtn: TButton;
Label1: TLabel;
AnswerEdit: TEdit;
Image1: TImage;
AnswerMemo: TMemo;
procedure ContinueBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
FontHi, FontWide, Indent, LineWidth, LineHi, PageHi, PageWide : integer;
ImageHi, ImageWide, linecnt : integer;
Grect : TRect;
Bitmap : TBitmap;
R1 : MatchItemsRcd;
R2 : BlankItemRcd;
R3 : MCItemRcd;
R4 : EssayItemRcd;
R5 : TFItemRcd;
public
{ Public declarations }
Response : string;
CorrectAnswer : string;
Cont : boolean;
itemtype, itemno, item : integer;
procedure ShowMCItem(Sender : TObject; itemno,item : integer);
procedure ShowTFItem(Sender : TObject; itemno,item : integer);
procedure ShowMAItem(Sender : TObject; itemno,item : integer);
procedure ShowCOItem(Sender : TObject; itemno,item : integer);
procedure ShowESItem(Sender : TObject; itemno,item : integer);
end;
var
BlankFrm: TBlankFrm;
implementation
uses CompTestUnit;
{$R *.lfm}
procedure TBlankFrm.ContinueBtnClick(Sender: TObject);
var
i : integer;
begin
Response := '';
case itemtype of
1,2 : Response := AnswerEdit.Text; // MC, TF items
3,4,5 : begin // MA, CO items
for i := 0 to AnswerMemo.Lines.Count-1 do
Response := Response + AnswerMemo.Lines[i];
end;
end;
Cont := true;
BlankFrm.Hide;
end;
//-------------------------------------------------------------------
procedure TBlankFrm.ShowMCItem(Sender : TObject; itemno,item : integer);
var
i, j : integer;
S : string;
X, Y : integer;
begin
ReadMCItem(item, R3);
CorrectAnswer := '';
for i := 1 to 5 do
begin
if R3.CorWeights[i] > 0.0 then
begin
CorrectAnswer := CorrectAnswer + R3.CorChoices[i] + '*' + FloatToStr(R3.CorWeights[i]);
if i < 5 then CorrectAnswer := CorrectAnswer + ' ';
end;
end;
linecnt := 1;
Y := linecnt * LineHi;
X := indent;
S := format('Item %d (Multiple Choice)',[itemno]);
Image1.Canvas.TextOut(X,Y,S);
linecnt := linecnt + 1;
if length(R3.Picture) > 0 then
begin
Grect.Top := linecnt * LineHi;
Grect.Left := indent;
Grect.Right := (3 * ClientWidth div 4) - indent;
Grect.Bottom := Grect.Top + ClientHeight div 3;
BitMap := TBitMap.Create;
if FileExists(R3.Picture) { *Converted from FileExists* } then
begin
Bitmap.LoadFromFile(R3.Picture);
Image1.Canvas.stretchdraw(Grect,Bitmap);
end
else ShowMessage('Image ' + R3.Picture + ' missing.');
Bitmap.Free;
linecnt := linecnt + (ClientHeight div 3) div LineHi;
linecnt := linecnt + 2;
end;
for j := 1 to 10 do
begin
if length(R3.ItemStem[j]) > 0 then
begin
S := trim(R3.ItemStem[j]);
X := indent;
Y := linecnt * LineHi;
Image1.Canvas.TextOut(X,Y,S);
linecnt := linecnt + 1;
end;
end;
for j := 1 to 5 do
begin
if length(R3.Choices[j]) > 0 then
begin
S := chr(j-1 + ord('A')) + ': ';
S := S + R3.Choices[j];
X := indent + 50;
Y := linecnt * LineHi;
Image1.Canvas.TextOut(X,Y,S);
linecnt := linecnt + 1;
end;
end;
end;
//-------------------------------------------------------------------
procedure TBlankFrm.ShowTFItem(Sender : TObject; itemno,item : integer);
var
j : integer;
S : string;
X, Y : integer;
begin
ReadTFItem(item,R5);
CorrectAnswer := '';
CorrectAnswer := CorrectAnswer + R5.CorChoice;
linecnt := 1;
Y := linecnt * LineHi;
X := indent;
S := format('Item %d (True-False)',[itemno]);
Image1.Canvas.TextOut(X,Y,S);
linecnt := linecnt + 1;
if length(R5.Picture) > 0 then
begin
Grect.Top := linecnt * LineHi;
Grect.Left := indent;
Grect.Right := (3 * ClientWidth div 4) - indent;
Grect.Bottom := Grect.Top + ClientHeight div 3;
BitMap := TBitMap.Create;
if FileExists(R5.Picture) { *Converted from FileExists* } then
begin
Bitmap.LoadFromFile(R5.Picture);
Image1.Canvas.stretchdraw(Grect,Bitmap);
end
else ShowMessage('Image ' + R5.Picture + ' missing.');
Bitmap.Free;
linecnt := linecnt + (ClientHeight div 3) div LineHi;
linecnt := linecnt + 2;
end;
for j := 1 to 10 do
begin
if length(R5.ItemStem[j]) > 0 then
begin
S := trim(R5.ItemStem[j]);
X := indent;
Y := linecnt * LineHi;
Image1.Canvas.TextOut(X,Y,S);
linecnt := linecnt + 1;
end;
end;
S := chr(ord('A')) + ': ';
S := S + 'TRUE';
X := indent + 50;
Y := linecnt * LineHi;
Image1.Canvas.TextOut(X,Y,S);
linecnt := linecnt + 1;
S := chr(1 + ord('A')) + ': ';
S := S + 'FALSE';
X := indent + 50;
Y := linecnt * LineHi;
Image1.Canvas.TextOut(X,Y,S);
linecnt := linecnt + 1;
end;
//-------------------------------------------------------------------
procedure TBlankFrm.ShowMAItem(Sender : TObject; itemno,item : integer);
var
i,j : integer;
S : string;
X, Y : integer;
anscol, itemstartY : integer;
begin
linecnt := 1;
anscol := indent + Image1.Width div 2;
ReadMAItem(item, R1);
CorrectAnswer := '';
for i := 1 to R1.NoItems do
begin
CorrectAnswer := CorrectAnswer + R1.CorChoices[i];
if i < R1.NoItems then CorrectAnswer := CorrectAnswer + ', ';
end;
X := 1;
Y := linecnt * LineHi;
S := 'Directions: Enter a sequence of letter choices separated by commas';
Image1.Canvas.TextOut(X,Y,S);
linecnt := linecnt + 1;
Y := linecnt * LineHi;
S := ' in the answer area below the items.';
Image1.Canvas.TextOut(X,Y,S);
linecnt := linecnt + 2;
Y := linecnt * LineHi;
X := 1;
S := format('Matching Item Set %d',[R1.SetNo]);
Image1.Canvas.TextOut(X,Y,S);
linecnt := linecnt + 1;
if length(R1.Picture) > 0 then
begin
Grect.Top := linecnt * LineHi;
Grect.Left := indent;
Grect.Right := (3 * ClientWidth div 4) - indent;
Grect.Bottom := Grect.Top + ClientHeight div 3;
BitMap := TBitMap.Create;
if FileExists(R1.Picture) { *Converted from FileExists* } then
begin
Bitmap.LoadFromFile(R1.Picture);
Image1.Canvas.stretchdraw(Grect,Bitmap);
end
else ShowMessage('Image ' + R1.Picture + ' missing.');
Bitmap.Free;
linecnt := linecnt + (ClientHeight div 3) div LineHi;
linecnt := linecnt + 2;
end;
itemstartY := linecnt;
for j := 1 to R1.NoItems do
begin
X := 1;
Y := linecnt * LineHi;
S := format('Item %d (Matching Item)',[itemno]);
Image1.Canvas.TextOut(X,Y,S);
linecnt := linecnt + 1;
S := trim(R1.ItemStems[j]);
X := 10;
Y := linecnt * LineHi;
Image1.Canvas.TextOut(X,Y,S);
linecnt := linecnt + 1;
itemno := itemno + 1;
end;
linecnt := itemstartY;
for j := 1 to R1.NoChoices do
begin
S := chr(j-1 + ord('A')) + ': ';
S := S + trim(R1.ItemChoices[j]);
X := anscol;
Y := linecnt * LineHi;
Image1.Canvas.TextOut(X,Y,S);
linecnt := linecnt + 2;
end;
CompTestFrm.itemno := itemno - 1;
end;
//-------------------------------------------------------------------
procedure TBlankFrm.ShowCOItem(Sender : TObject; itemno,item : integer);
var
j : integer;
S : string;
X, Y : integer;
begin
linecnt := 1;
ReadCOItem(item,R2);
CorrectAnswer := '';
CorrectAnswer := CorrectAnswer + R2.BestAns;
Y := linecnt * LineHi;
X := indent;
S := format('Item %d (Completion)',[itemno]);
Image1.Canvas.TextOut(X,Y,S);
linecnt := linecnt + 1;
if length(R2.Picture) > 0 then
begin
Grect.Top := linecnt * LineHi;
Grect.Left := indent;
Grect.Right := (3 * ClientWidth div 4) - indent;
Grect.Bottom := Grect.Top + ClientHeight div 3;
BitMap := TBitMap.Create;
if FileExists(R2.Picture) { *Converted from FileExists* } then
begin
Bitmap.LoadFromFile(R2.Picture);
Image1.Canvas.stretchdraw(Grect,Bitmap);
end
else ShowMessage('Image ' + R2.Picture + ' missing.');
Bitmap.Free;
linecnt := linecnt + (ClientHeight div 3) div LineHi;
linecnt := linecnt + 2;
end;
for j := 1 to 10 do
begin
if length(R2.ItemStem[j]) > 0 then
begin
S := trim(R2.ItemStem[j]);
X := indent;
Y := linecnt * LineHi;
Image1.Canvas.TextOut(X,Y,S);
linecnt := linecnt + 1;
end;
end;
end;
//-------------------------------------------------------------------
procedure TBlankFrm.ShowESItem(Sender : TObject; itemno,item : integer);
var
j : integer;
S : string;
X, Y : integer;
begin
linecnt := 1;
ReadESItem(item, R4);
CorrectAnswer := 'None Given';
Y := linecnt * LineHi;
X := indent;
S := format('Item %d (Essay Item)',[itemno]);
Image1.Canvas.TextOut(X,Y,S);
linecnt := linecnt + 1;
if length(R4.Picture) > 0 then
begin
Grect.Top := linecnt * LineHi;
Grect.Left := indent;
Grect.Right := (3 * ClientWidth div 4) - indent;
Grect.Bottom := Grect.Top + ClientHeight div 3;
BitMap := TBitMap.Create;
if FileExists(R4.Picture) { *Converted from FileExists* } then
begin
Bitmap.LoadFromFile(R4.Picture);
Image1.Canvas.stretchdraw(Grect,Bitmap);
end
else ShowMessage('Image ' + R4.Picture + ' missing.');
Bitmap.Free;
linecnt := linecnt + (ClientHeight div 3) div LineHi;
linecnt := linecnt + 2;
end;
for j := 1 to 20 do
begin
if length(R4.ItemStem[j]) > 0 then
begin
S := trim(R4.ItemStem[j]);
X := indent;
Y := linecnt * LineHi;
Image1.Canvas.TextOut(X,Y,S);
linecnt := linecnt + 1;
end;
end;
end;
//-------------------------------------------------------------------
procedure TBlankFrm.FormShow(Sender: TObject);
begin
// setup parameters
FontHi := Image1.Canvas.TextHeight('M');
FontWide := Image1.Canvas.TextWidth('M');
Indent := 10 * FontWide;
LineWidth := 60 * FontWide;
LineHi := FontHi + 5;
PageHi := Image1.ClientHeight;
ImageHi := PageHi;
PageWide := Image1.ClientWidth;
ImageWide := PageWide;
Image1.Canvas.Brush.Color := clWhite;
Image1.Canvas.Rectangle(0,0,ImageWide,ImageHi);
case itemtype of
1: ShowMCItem(Self,itemno,item);
2: ShowTFItem(Self,itemno,item);
3: ShowMAItem(Self,itemno,item);
4: ShowCOItem(Self,itemno,item);
5: ShowESItem(Self,itemno,item);
end;
end;
end.

View File

@ -0,0 +1,542 @@
object ABCNestedForm: TABCNestedForm
Left = 288
Height = 504
Top = 161
Width = 726
Caption = 'ABCNestedForm'
ClientHeight = 504
ClientWidth = 726
OnShow = ResetBtnClick
LCLVersion = '0.9.30'
object Label1: TLabel
Left = 16
Height = 16
Top = 8
Width = 102
Caption = 'Available Variables:'
ParentColor = False
end
object Label2: TLabel
Left = 255
Height = 16
Top = 24
Width = 90
Caption = 'Factor A Variable'
ParentColor = False
end
object Label3: TLabel
Left = 255
Height = 16
Top = 96
Width = 116
Caption = 'Factor B (Nested in A)'
ParentColor = False
end
object Label4: TLabel
Left = 248
Height = 16
Top = 240
Width = 104
Caption = 'Dependent Variable'
ParentColor = False
end
object VarList: TListBox
Left = 16
Height = 344
Top = 24
Width = 181
ItemHeight = 0
MultiSelect = True
TabOrder = 0
end
object AInBtn: TBitBtn
Left = 211
Height = 26
Top = 24
Width = 30
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
}
NumGlyphs = 0
OnClick = AInBtnClick
TabOrder = 1
end
object AOutBtn: TBitBtn
Left = 211
Height = 26
Top = 56
Width = 30
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = AOutBtnClick
TabOrder = 2
end
object BInBtn: TBitBtn
Left = 210
Height = 26
Top = 96
Width = 30
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
}
NumGlyphs = 0
OnClick = BInBtnClick
TabOrder = 3
end
object BOutBtn: TBitBtn
Left = 210
Height = 26
Top = 128
Width = 30
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = BOutBtnClick
TabOrder = 4
end
object DepInBtn: TBitBtn
Left = 211
Height = 26
Top = 240
Width = 30
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
}
NumGlyphs = 0
OnClick = DepInBtnClick
TabOrder = 5
end
object DepOutBtn: TBitBtn
Left = 211
Height = 26
Top = 272
Width = 30
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = DepOutBtnClick
TabOrder = 6
end
object FactorAEdit: TEdit
Left = 255
Height = 23
Top = 40
Width = 139
TabOrder = 7
Text = 'FactorAEdit'
end
object FactorBEdit: TEdit
Left = 255
Height = 23
Top = 112
Width = 138
TabOrder = 8
Text = 'FactorBEdit'
end
object ResetBtn: TButton
Left = 24
Height = 27
Top = 392
Width = 89
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 9
end
object CancelBtn: TButton
Left = 24
Height = 27
Top = 440
Width = 89
Cancel = True
Caption = 'Cancel'
ModalResult = 2
TabOrder = 10
end
object ComputeBtn: TButton
Left = 200
Height = 27
Top = 392
Width = 89
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 11
end
object ReturnBtn: TButton
Left = 200
Height = 27
Top = 440
Width = 89
Caption = 'Return'
ModalResult = 1
TabOrder = 12
end
object DepEdit: TEdit
Left = 248
Height = 23
Top = 256
Width = 132
TabOrder = 13
Text = 'DepEdit'
end
object OptionsBox: TRadioGroup
Left = 423
Height = 131
Top = 344
Width = 273
AutoFill = True
Caption = 'OptionsBox'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 113
ClientWidth = 269
Items.Strings = (
'Plot means using 2D Horizontal Bars'
'Plot means using 3D Horizontal Bars'
'Plot means using 2D Vertical Bars'
'Plot means using 3D Vertical Bars'
)
TabOrder = 14
end
object Memo1: TMemo
Left = 424
Height = 320
Top = 8
Width = 272
Lines.Strings = (
'Directions: This analysis assumes that levels of '
'Factor B are Nested within levels of Factor A.'
'It is assumed that all factors are fixed level '
'factors.'
''
'The variables for the group coding should be'
'defined as integers. The dependent variable '
'should be defined as a floating point variable.'
'The number of cases for each ABC group should'
'be equal and the number of B treatments in in '
'each A level should be equal. The number of C'
'treatment levels should be the same for each AB'
'combination.'
''
'Click the variable for each factor variable and the'
'corresponding arrow to enter it in the edit box'
'for that variable. Select the type of plot desired'
'for the means (if any.) Click the Compute button'
'to continue.'
)
TabOrder = 15
end
object CInBtn: TBitBtn
Left = 210
Height = 26
Top = 168
Width = 30
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
}
NumGlyphs = 0
OnClick = CInBtnClick
TabOrder = 16
end
object COutBtn: TBitBtn
Left = 210
Height = 26
Top = 200
Width = 30
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = COutBtnClick
TabOrder = 17
end
object FactorCEdit: TEdit
Left = 253
Height = 23
Top = 186
Width = 139
TabOrder = 18
Text = 'FactorCEdit'
end
object Label5: TLabel
Left = 253
Height = 16
Top = 168
Width = 90
Caption = 'Factor C Variable'
ParentColor = False
end
end

View File

@ -0,0 +1,468 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TABCNestedForm','FORMDATA',[
'TPF0'#14'TABCNestedForm'#13'ABCNestedForm'#4'Left'#3' '#1#6'Height'#3#248#1#3
+'Top'#3#161#0#5'Width'#3#214#2#7'Caption'#6#13'ABCNestedForm'#12'ClientHeigh'
+'t'#3#248#1#11'ClientWidth'#3#214#2#6'OnShow'#7#13'ResetBtnClick'#10'LCLVers'
+'ion'#6#6'0.9.30'#0#6'TLabel'#6'Label1'#4'Left'#2#16#6'Height'#2#16#3'Top'#2
+#8#5'Width'#2'f'#7'Caption'#6#20'Available Variables:'#11'ParentColor'#8#0#0
+#6'TLabel'#6'Label2'#4'Left'#3#255#0#6'Height'#2#16#3'Top'#2#24#5'Width'#2'Z'
+#7'Caption'#6#17'Factor A Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'
+#4'Left'#3#255#0#6'Height'#2#16#3'Top'#2'`'#5'Width'#2't'#7'Caption'#6#22'Fa'
+'ctor B (Nested in A)'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#3
+#248#0#6'Height'#2#16#3'Top'#3#240#0#5'Width'#2'h'#7'Caption'#6#18'Dependent'
+' Variable'#11'ParentColor'#8#0#0#8'TListBox'#7'VarList'#4'Left'#2#16#6'Heig'
+'ht'#3'X'#1#3'Top'#2#24#5'Width'#3#181#0#10'ItemHeight'#2#0#11'MultiSelect'#9
+#8'TabOrder'#2#0#0#0#7'TBitBtn'#6'AInBtn'#4'Left'#3#211#0#6'Height'#2#26#3'T'
+'op'#2#24#5'Width'#2#30#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0
+#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0
+#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'
+#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'
+#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195
+'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144
+#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255
+#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255
+#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255
+']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145
+'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#11'AInBtnClick'#8'TabOrder'#2#1#0#0#7'TBitBtn'#7'AOutB'
,'tn'#4'Left'#3#211#0#6'Height'#2#26#3'Top'#2'8'#5'Width'#2#30#10'Glyph.Data'
+#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0
+#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255
+#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213
+#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135
+#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'
+#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138
+#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207
+#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'
+#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0
+'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'
+#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'
+#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#12'AOutBtnClick'#8
+'TabOrder'#2#2#0#0#7'TBitBtn'#6'BInBtn'#4'Left'#3#210#0#6'Height'#2#26#3'Top'
+#2'`'#5'Width'#2#30#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'
+#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0
+#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%'
+'i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'
+#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'
+#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'
+#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255
+#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152
+#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193
+#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'
+#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255
+#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139
+#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255
+#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'
+#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'
+#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'
+#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'
+#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7
+'OnClick'#7#11'BInBtnClick'#8'TabOrder'#2#3#0#0#7'TBitBtn'#7'BOutBtn'#4'Left'
+#3#210#0#6'Height'#2#26#3'Top'#3#128#0#5'Width'#2#30#10'Glyph.Data'#10':'#4#0
+#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0
+#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'
+#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255
+';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255
+#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152
+#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255
,#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!'
+'c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138#255#162#216
+#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142
+#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255
+'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'
+#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255
+'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'
+#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199
+'t'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'
+#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#12'BOutBtnClick'#8'TabOrd'
+'er'#2#4#0#0#7'TBitBtn'#8'DepInBtn'#4'Left'#3#211#0#6'Height'#2#26#3'Top'#3
+#240#0#5'Width'#2#30#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0
+'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0
+#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'
+#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'
+#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195
+'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144
+#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255
+#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255
+#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255
+']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145
+'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#13'DepInBtnClick'#8'TabOrder'#2#5#0#0#7'TBitBtn'#9'Dep'
+'OutBtn'#4'Left'#3#211#0#6'Height'#2#26#3'Top'#3#16#1#5'Width'#2#30#10'Glyph'
+'.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16
+#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255
+'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'
+#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156
+#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255
+#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255
+'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138
+#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207
+#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'
+#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0
+'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'
+#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'
+#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#14'DepOutBtnClick'
+#8'TabOrder'#2#6#0#0#5'TEdit'#11'FactorAEdit'#4'Left'#3#255#0#6'Height'#2#23
+#3'Top'#2'('#5'Width'#3#139#0#8'TabOrder'#2#7#4'Text'#6#11'FactorAEdit'#0#0#5
+'TEdit'#11'FactorBEdit'#4'Left'#3#255#0#6'Height'#2#23#3'Top'#2'p'#5'Width'#3
+#138#0#8'TabOrder'#2#8#4'Text'#6#11'FactorBEdit'#0#0#7'TButton'#8'ResetBtn'#4
+'Left'#2#24#6'Height'#2#27#3'Top'#3#136#1#5'Width'#2'Y'#7'Caption'#6#5'Reset'
+#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#9#0#0#7'TButton'#9'CancelBtn'#4
+'Left'#2#24#6'Height'#2#27#3'Top'#3#184#1#5'Width'#2'Y'#6'Cancel'#9#7'Captio'
+'n'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#10#0#0#7'TButton'#10'Compu'
+'teBtn'#4'Left'#3#200#0#6'Height'#2#27#3'Top'#3#136#1#5'Width'#2'Y'#7'Captio'
+'n'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#11#0#0#7'TBu'
+'tton'#9'ReturnBtn'#4'Left'#3#200#0#6'Height'#2#27#3'Top'#3#184#1#5'Width'#2
+'Y'#7'Caption'#6#6'Return'#11'ModalResult'#2#1#8'TabOrder'#2#12#0#0#5'TEdit'
+#7'DepEdit'#4'Left'#3#248#0#6'Height'#2#23#3'Top'#3#0#1#5'Width'#3#132#0#8'T'
+'abOrder'#2#13#4'Text'#6#7'DepEdit'#0#0#11'TRadioGroup'#10'OptionsBox'#4'Lef'
+'t'#3#167#1#6'Height'#3#131#0#3'Top'#3'X'#1#5'Width'#3#17#1#8'AutoFill'#9#7
+'Caption'#6#10'OptionsBox'#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizi'
+'ng.TopBottomSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogeno'
+'usChildResize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomogenousChildResiz'
+'e'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.Shr'
+'inkVertical'#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRigh'
+'tThenTopToBottom'#27'ChildSizing.ControlsPerLine'#2#1#12'ClientHeight'#2'q'
+#11'ClientWidth'#3#13#1#13'Items.Strings'#1#6'#Plot means using 2D Horizonta'
+'l Bars'#6'#Plot means using 3D Horizontal Bars'#6'!Plot means using 2D Vert'
+'ical Bars'#6'!Plot means using 3D Vertical Bars'#0#8'TabOrder'#2#14#0#0#5'T'
+'Memo'#5'Memo1'#4'Left'#3#168#1#6'Height'#3'@'#1#3'Top'#2#8#5'Width'#3#16#1
+#13'Lines.Strings'#1#6'2Directions: This analysis assumes that levels of '#6
+'.Factor B are Nested within levels of Factor A.'#6'/It is assumed that all '
+'factors are fixed level '#6#8'factors.'#6#0#6',The variables for the group '
+'coding should be'#6'-defined as integers. The dependent variable '#6'/shou'
+'ld be defined as a floating point variable.'#6'-The number of cases for eac'
+'h ABC group should'#6'.be equal and the number of B treatments in in '#6'.e'
+'ach A level should be equal. The number of C'#6'/treatment levels should b'
+'e the same for each AB'#6#12'combination.'#6#0#6'3Click the variable for ea'
+'ch factor variable and the'#6'/corresponding arrow to enter it in the edit '
+'box'#6'3for that variable. Select the type of plot desired'#6'1for the mea'
+'ns (if any.) Click the Compute button'#6#12'to continue.'#0#8'TabOrder'#2
+#15#0#0#7'TBitBtn'#6'CInBtn'#4'Left'#3#210#0#6'Height'#2#26#3'Top'#3#168#0#5
+'Width'#2#30#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0
+'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0
+#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'
+#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190
+'m'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255
+'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139
+'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160
+#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255
+#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128
+#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199
,'t'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255#150
+#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255
+#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255
+#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255
+'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163
+'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247
+';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187
+'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnCl'
+'ick'#7#11'CInBtnClick'#8'TabOrder'#2#16#0#0#7'TBitBtn'#7'COutBtn'#4'Left'#3
+#210#0#6'Height'#2#26#3'Top'#3#200#0#5'Width'#2#30#10'Glyph.Data'#10':'#4#0#0
+'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0
+#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'
+#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255
+';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255
+#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152
+#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255
+#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!'
+'c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138#255#162#216
+#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142
+#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255
+'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'
+#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255
+'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'
+#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199
+'t'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'
+#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#12'COutBtnClick'#8'TabOrd'
+'er'#2#17#0#0#5'TEdit'#11'FactorCEdit'#4'Left'#3#253#0#6'Height'#2#23#3'Top'
+#3#186#0#5'Width'#3#139#0#8'TabOrder'#2#18#4'Text'#6#11'FactorCEdit'#0#0#6'T'
+'Label'#6'Label5'#4'Left'#3#253#0#6'Height'#2#16#3'Top'#3#168#0#5'Width'#2'Z'
+#7'Caption'#6#17'Factor C Variable'#11'ParentColor'#8#0#0#0
]);

View File

@ -0,0 +1,952 @@
unit ABCNestedUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons, ExtCtrls, MainUnit, OutPutUnit, FunctionsLib, GraphLib,
Globals, DataProcs, MatrixLib;
type
{ TABCNestedForm }
TABCNestedForm = class(TForm)
FactorCEdit: TEdit;
FactorAEdit: TEdit;
AInBtn: TBitBtn;
AOutBtn: TBitBtn;
FactorBEdit: TEdit;
BInBtn: TBitBtn;
BOutBtn: TBitBtn;
CancelBtn: TButton;
ComputeBtn: TButton;
DepEdit: TEdit;
DepInBtn: TBitBtn;
CInBtn: TBitBtn;
DepOutBtn: TBitBtn;
COutBtn: TBitBtn;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Memo1: TMemo;
OptionsBox: TRadioGroup;
ResetBtn: TButton;
ReturnBtn: TButton;
VarList: TListBox;
procedure AInBtnClick(Sender: TObject);
procedure AOutBtnClick(Sender: TObject);
procedure BInBtnClick(Sender: TObject);
procedure BOutBtnClick(Sender: TObject);
procedure CInBtnClick(Sender: TObject);
procedure ComputeBtnClick(Sender: TObject);
procedure COutBtnClick(Sender: TObject);
procedure DepInBtnClick(Sender: TObject);
procedure DepOutBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
private
{ private declarations }
CellCount : IntDyneCube;
ASS, BSS, CSS, ASumSqr, BSumSqr, CSumSqr, AMeans, BMeans, ASDs : DblDyneVec;
CMeans, BSDs, CSDs : DblDyneVec;
ACSS,ACSumSqr, ACMeans, ACSDs, ABSS, ABSumSqr, ABMeans, ABSDs : DblDyneMat;
ACount, BCount, CCount : IntDyneVec;
ACCount, ABCount : IntDyneMat;
CellSDs, SS, SumSqr, CellMeans : DblDyneCube;
MinA, MinB, MaxA, MaxB, NoALevels, NoBLevels, ACol, BCol, YCol : integer;
CCol, MinC, MaxC, NoCLevels : integer;
DepVar, FactorA, FactorB, FactorC : string;
SSTot, SumSqrTot, TotMean, MSTot, SSA, MSA, SSB, MSB, SSW, MSW : double;
SSC, MSC, SSAC, MSAC, SSBwAC, SSAB, MSBwAC : double;
TotN, dfA, dfBwA, dfwcell, dftotal, dfC, dfAC, dfBwAC : integer;
ColNoSelected : IntDyneVec;
procedure GetVars(Sender: TObject);
procedure GetMemory(Sender: TOBject);
procedure GetSums(Sender: TObject);
procedure ShowMeans(Sender: TObject);
procedure GetResults(Sender: TObject);
procedure ShowResults(Sender: TObject);
procedure ReleaseMemory(Sender: TObject);
procedure TwoWayPlot(Sender: TObject);
public
{ public declarations }
end;
var
ABCNestedForm: TABCNestedForm;
implementation
{ TABCNestedForm }
procedure TABCNestedForm.ResetBtnClick(Sender: TObject);
VAR
i : integer;
begin
VarList.Items.Clear;
FactorAEdit.Text := '';
FactorBEdit.Text := '';
FactorCEdit.Text := '';
DepEdit.Text := '';
AInBtn.Visible := true;
AOutBtn.Visible := false;
BInBtn.Visible := true;
BOutBtn.Visible := false;
CInBtn.Visible := true;
COutBtn.Visible := false;
DepInBtn.Visible := true;
DepoutBtn.Visible := false;
OptionsBox.ItemIndex := 3;
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
OptionsBox.ItemIndex := 3;
end;
procedure TABCNestedForm.AInBtnClick(Sender: TObject);
VAR
index : integer;
begin
index := VarList.ItemIndex;
FactorAEdit.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
AinBtn.Visible := false;
AOutBtn.Visible := true;
end;
procedure TABCNestedForm.AOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(FactorAEdit.Text);
FactorAEdit.Text := '';
AinBtn.Visible := true;
AOutBtn.Visible := false;
end;
procedure TABCNestedForm.BInBtnClick(Sender: TObject);
VAR
index : integer;
begin
index := VarList.ItemIndex;
FactorBEdit.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
BInBtn.Visible := false;
BOutBtn.Visible := true;
end;
procedure TABCNestedForm.BOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(FactorBEdit.Text);
FactorBEdit.Text := '';
BInBtn.Visible := true;
BOutBtn.Visible := false;
end;
procedure TABCNestedForm.CInBtnClick(Sender: TObject);
VAR
index : integer;
begin
index := VarList.ItemIndex;
FactorCEdit.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
BInBtn.Visible := false;
BOutBtn.Visible := true;
end;
procedure TABCNestedForm.ComputeBtnClick(Sender: TObject);
begin
GetVars(self);
GetMemory(self);
GetSums(self);
ShowMeans(self);
GetResults(self);
ShowResults(self);
TwoWayPlot(self);
ReleaseMemory(self);
end;
procedure TABCNestedForm.COutBtnClick(Sender: TObject);
begin
VarList.Items.Add(FactorCEdit.Text);
FactorCEdit.Text := '';
BInBtn.Visible := true;
BOutBtn.Visible := false;
end;
procedure TABCNestedForm.DepInBtnClick(Sender: TObject);
VAR
index : integer;
begin
index := VarList.ItemIndex;
DepEdit.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
DepOutBtn.Visible := true;
DepInBtn.Visible := false;
end;
procedure TABCNestedForm.DepOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(DepEdit.Text);
DepEdit.Text := '';
DepInBtn.Visible := true;
DepOutBtn.Visible := false;
end;
procedure TABCNestedForm.GetVars(Sender: TObject);
VAR
result, intvalue, i, group : integer;
AValue, BValue, CValue, dblvalue : double;
strvalue, cellstring : string;
begin
SetLength(ColNoSelected,4);
DepVar := DepEdit.Text;
FactorA := FactorAEdit.Text;
FactorB := FactorBEdit.Text;
FactorC := FactorCEdit.Text;
ACol := 0;
BCol := 0;
CCol := 0;
YCol := 0;
MinA := 1000;
MaxA := -1000;
MinB := 1000;
MaxB := -1000;
MinC := 1000;
MaxC := -1000;
for i := 1 to NoVariables do
begin
strvalue := Trim(OS3MainFrm.DataGrid.Cells[i,0]);
if FactorA = strvalue then
begin
ACol := i;
ColNoSelected[0] := i;
end;
if FactorB = strvalue then
begin
BCol := i;
ColNoSelected[1] := i;
end;
if FactorC = strvalue then
begin
CCol := i;
ColNoSelected[2] := i;
end;
if DepVar = strvalue then
begin
YCol := i;
ColNoSelected[3] := i;
end;
end;
if (ACol = 0) or (BCol = 0) or (CCol = 0) or (YCol = 0) then
begin
ShowMessage('ERROR! Select a variable for each entry box.');
exit;
end;
// get number of levels for Factors
for i := 1 to NoCases do
begin
cellstring := Trim(OS3MainFrm.DataGrid.Cells[ACol,i]);
group := round(StrToFloat(cellstring));
if (group > MaxA) then MaxA := group;
if (group < MinA) then MinA := group;
cellstring := Trim(OS3MainFrm.DataGrid.Cells[BCol,i]);
group := round(StrToFLoat(cellstring));
if (group > MaxB) then MaxB := group;
if (group < MinB) then MinB := group;
cellstring := Trim(OS3MainFrm.DataGrid.Cells[CCol,i]);
group := round(StrToFLoat(cellstring));
if (group > MaxC) then MaxC := group;
if (group < MinC) then MinC := group;
end;
NoALevels := MaxA - MinA + 1;
NoBLevels := MaxB - MinB + 1;
NoCLevels := MaxC - MinC + 1;
end;
procedure TABCNestedForm.GetMemory(Sender: TOBject);
begin
SetLength(SS,NoBLevels,NoALevels,NoCLevels);
SetLength(SumSqr,NoBLevels,NoALevels,NoCLevels);
SetLength(CellCount,NoBLevels,NoALevels,NoCLevels);
SetLength(CellMeans,NoBLevels,NoALevels,NoCLevels);
SetLength(CellSDs,NoBLevels,NoALevels,NoCLevels);
SetLength(ASS,NoALevels);
SetLength(BSS,NoBLevels);
SetLength(CSS,NoCLevels);
SetLength(ASumSqr,NoALevels);
SetLength(BSumSqr,NoBLevels);
SetLength(CSumSqr,NoCLevels);
SetLength(AMeans,NoALevels);
SetLength(BMeans,NoBLevels);
SetLength(CMeans,NoCLevels);
SetLength(ACount,NoALevels);
SetLength(BCount,NoBLevels);
SetLength(CCount,NoCLevels);
SetLength(ASDs,NoALevels);
SetLength(BSDs,NoBLevels);
SetLength(CSDs,NoCLevels);
SetLength(ACSS,NoALevels,NoCLevels);
SetLength(ACSumSqr,NoALevels,NoCLevels);
SetLength(ACCount,NoALevels,NoCLevels);
SetLength(ACMeans,NoALevels,NoCLevels);
SetLength(ACSDs,NoALevels,NoCLevels);
SetLength(ABSS,NoALevels,NoBLevels);
SetLength(ABSumSqr,NoALevels,NoBLevels);
SetLength(ABMeans,NoALevels,NoBLevels);
SetLength(ABCount,NoALevels,NoBLevels);
SetLength(ABSDs,NoALevels,NoBLevels);
end;
procedure TABCNestedForm.GetSums(Sender: TObject);
VAR
Aindex, Bindex, Cindex, result, intvalue, i, j, k : integer;
dblvalue, YValue : double;
strvalue : string;
begin
// clear memory
SSTot := 0.0;
SumSqrTot := 0.0;
for i := 0 to NoBLevels-1 do
begin
for j := 0 to NoALevels-1 do
begin
for k := 0 to NoCLevels-1 do
begin
SS[i,j,k] := 0.0;
SumSqr[i,j,k] := 0.0;
CellCount[i,j,k] := 0;
CellMeans[i,j,k] := 0.0;
end;
end;
end;
for i := 0 to NoALevels-1 do
begin
ACount[i] := 0;
AMeans[i] := 0.0;
ASS[i] := 0.0;
ASumSqr[i] := 0.0;
end;
for j := 0 to NoBLevels-1 do
begin
BCount[j] := 0;
BMeans[j] := 0.0;
BSS[j] := 0.0;
BSumSqr[j] := 0.0;
end;
for k := 0 to NoCLevels-1 do
begin
CCount[k] := 0;
CMeans[k] := 0.0;
CSS[k] := 0.0;
CSumSqr[k] := 0.0;
end;
for i := 0 to NoALevels-1 do
begin
for j := 0 to NoBLevels-1 do
begin
ABSS[i,j] := 0.0;
ABSumSqr[i,j] := 0.0;
ABCount[i,j] := 0;
ABSDs[i,j] := 0.0;
end;
end;
for i := 0 to NoALevels-1 do
begin
for k := 0 to NoCLevels-1 do
begin
ACSS[i,k] := 0.0;
ACSumSqr[i,k] := 0.0;
ACCount[i,k] := 0;
ACSDs[i,k] := 0.0;
end;
end;
// accumulate sums and sums of squared values
for i := 1 to NoCases do
begin
strvalue := Trim(OS3MainFrm.DataGrid.Cells[ACol,i]);
Aindex := round(StrToFloat(strvalue));
strvalue := Trim(OS3MainFrm.DataGrid.Cells[BCol,i]);
Bindex := round(StrToFloat(strvalue));
strvalue := Trim(OS3MainFrm.DataGrid.Cells[CCol,i]);
Cindex := round(StrToFloat(strvalue));
strvalue := Trim(OS3MainFrm.DataGrid.Cells[YCol,i]);
YValue := StrToFloat(strvalue);
Aindex := Aindex - MinA;
Bindex := Bindex - MinB;
Cindex := Cindex - MinC;
SS[Bindex,Aindex,Cindex] := SS[Bindex,Aindex,Cindex] + YValue * YValue;
SumSqr[Bindex,Aindex,Cindex] := SumSqr[Bindex,Aindex,Cindex] + YValue;
CellCount[Bindex,Aindex,Cindex] := CellCount[Bindex,Aindex,Cindex] + 1;
ACount[Aindex] := ACount[Aindex] + 1;
BCount[Bindex] := BCount[Bindex] + 1;
CCount[Cindex] := CCount[Cindex] + 1;
ASS[Aindex] := ASS[Aindex] + YValue * YValue;
BSS[Bindex] := BSS[Bindex] + YValue * YValue;
CSS[Cindex] := CSS[Cindex] + YValue * YValue;
ASumSqr[Aindex] := ASumSqr[Aindex] + YValue;
BSumSqr[Bindex] := BSumSqr[Bindex] + YValue;
CSumSqr[Cindex] := CSumSqr[Cindex] + YValue;
ACSS[Aindex,Cindex] := ACSS[Aindex,Cindex] + YValue * YValue;
ACSumSqr[Aindex,Cindex] := ACSumSqr[Aindex,Cindex] + YValue;
ACCount[Aindex,Cindex] := ACCount[Aindex,Cindex] + 1;
ABSS[Aindex,Bindex] := ABSS[Aindex,Bindex] + YValue * YValue;
ABSumSqr[Aindex,Bindex] := ABSumSqr[Aindex,Bindex] + YValue;
ABCount[Aindex,Bindex] := ABCount[Aindex,Bindex] + 1;
SSTot := SSTot + YValue * YValue;
SumSqrTot := SumSqrTot + YValue;
TotN := TotN + 1;
end;
// get cell means and marginal means plus square of sums
for i := 0 to NoBLevels-1 do
begin
for j := 0 to NoALevels-1 do
begin
for k := 0 to NoCLevels-1 do
begin
if CellCount[i,j,k] > 0 then
begin
CellMeans[i,j,k] := SumSqr[i,j,k] / CellCount[i,j,k];
SumSqr[i,j,k] := SumSqr[i,j,k] * SumSqr[i,j,k];
CellSDs[i,j,k] := SS[i,j,k] - (SumSqr[i,j,k] / CellCount[i,j,k]);
CellSDs[i,j,k] := CellSDs[i,j,k] / (CellCount[i,j,k] - 1);
CellSDs[i,j,k] := sqrt(CellSDs[i,j,k]);
end;
end;
end;
end;
for i := 0 to NoBLevels-1 do
begin
if BCount[i] > 0 then
begin
BMeans[i] := BSumSqr[i] / BCount[i];
BSumSqr[i] := BSumSqr[i] * BSumSqr[i];
BSDs[i] := BSS[i] - (BSumSqr[i] / BCount[i]);
BSDs[i] := BSDs[i] / (BCount[i] - 1);
BSDs[i] := sqrt(BSDs[i]);
end;
end;
for i := 0 to NoALevels-1 do
begin
AMeans[i] := ASumSqr[i] / ACount[i];
ASumSqr[i] := ASumSqr[i] * ASumSqr[i];
ASDs[i] := ASS[i] - (ASumSqr[i] / ACount[i]);
ASDs[i] := ASDs[i] / (ACount[i] - 1);
ASDs[i] := Sqrt(ASDs[i]);
end;
for i := 0 to NoCLevels-1 do
begin
CMeans[i] := CSumSqr[i] / CCount[i];
CSumSqr[i] := CSumSqr[i] * CSumSqr[i];
CSDs[i] := CSS[i] - (CSumSqr[i] / CCount[i]);
CSDs[i] := CSDs[i] / (CCount[i] - 1);
CSDs[i] := sqrt(CSDs[i]);
end;
for i := 0 to NoALevels-1 do
begin
for k := 0 to NoCLevels-1 do
begin
ACMeans[i,k] := ACMeans[i,k] / ACCount[i,k];
ACSumSqr[i,k] := ACSumSqr[i,k] * ACSumSqr[i,k];
ACSDs[i,k] := ACSS[i,k] - (ACSumSqr[i,k] / ACCount[i,k]);
ACSDs[i,k] := ACSDs[i,k] / (ACCount[i,k] - 1);
ACSDs[i,k] := sqrt(ACSDs[i,k]);
end;
end;
for i := 0 to NoALevels-1 do
begin
for j := 0 to NoBLevels-1 do
begin
if ABCount[i,j] > 0 then
begin
ABMeans[i,j] := ABSumSqr[i,j] / ABCount[i,j];
ABSumSqr[i,j] := ABSumSqr[i,j] * ABSumSqr[i,j];
ABSDs[i,j] :=ABSS[i,j] - (ABSumSqr[i,j] / ABCount[i,j]);
ABSDs[i,j] := ABSDs[i,j] / (ABCount[i,j] - 1);
ABSDs[i,j] := sqrt(ABSDs[i,j]);
end;
end;
end;
TotMean := SumSqrTot / TotN;
SumSqrTot := SumSqrTot * SumSqrTot;
end;
procedure TABCNestedForm.ShowMeans(Sender: TObject);
VAR
outvalue : string;
i, j, k : integer;
begin
OutPutFrm.RichEdit.Clear;
OutPutFrm.RichEdit.Lines.Add('Nested ANOVA by Bill Miller');
outvalue := format('File Analyzed = %s',[OS3MainFrm.FileNameEdit.Text]);
OutPutFrm.RichEdit.Lines.Add(outvalue);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('CELL MEANS');
OutPutFrm.RichEdit.Lines.Add('A LEVEL BLEVEL CLEVEL MEAN STD.DEV.');
for i := 0 to NoALevels-1 do
begin
for j := 0 to NoBLevels-1 do
begin
for k := 0 to NoCLevels-1 do
begin
if CellCount[j,i,k] > 0 then
begin
outvalue := format('%5D %5D %5D %10.4f %10.4f',
[i+MinA,j+MinB,k+MinC,CellMeans[j,i,k],CellSDs[j,i,k]]);
OutPutFrm.RichEdit.Lines.Add(outvalue);
end;
end;
end;
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('A MARGIN MEANS');
OutPutFrm.RichEdit.Lines.Add('A LEVEL MEAN STD.DEV.');
for i := 0 to NoALevels-1 do
begin
outvalue := format('%5d %10.3f %10.3f',[i+MinA,AMeans[i],ASDs[i]]);
OutPutFrm.RichEdit.Lines.Add(outvalue);
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('B MARGIN MEANS');
OutPutFrm.RichEdit.Lines.Add('B LEVEL MEAN STD.DEV.');
for i := 0 to NoBLevels-1 do
begin
if BCount[i] > 0 then
begin
outvalue := format('%5d %10.3f %10.3f',[i+MinB,BMeans[i],BSDs[i]]);
OutPutFrm.RichEdit.Lines.Add(outvalue);
end;
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('C MARGIN MEANS');
OutPutFrm.RichEdit.Lines.Add('C LEVEL MEAN STD.DEV.');
for i := 0 to NoCLevels-1 do
begin
if CCount[i] > 0 then
begin
outvalue := format('%5d %10.3f %10.3f',[i+MinC,CMeans[i],CSDs[i]]);
OutPutFrm.RichEdit.Lines.Add(outvalue);
end;
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('AB MARGIN MEANS');
OutPutFrm.RichEdit.Lines.Add('A LEVEL B LEVEL MEAN STD.DEV.');
for i := 0 to NoALevels-1 do
begin
for j := 0 to NoBLevels-1 do
begin
if ABCount[i,j] > 0 then
begin
outvalue := format('%5d %5D %10.3f %10.3f',[i+MinA,j+MinB,ABMeans[i,j],ABSDs[i,j]]);
OutPutFrm.RichEdit.Lines.Add(outvalue);
end;
end;
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('AC MARGIN MEANS');
OutPutFrm.RichEdit.Lines.Add('A LEVEL C LEVEL MEAN STD.DEV.');
for i := 0 to NoALevels-1 do
begin
for j := 0 to NoCLevels-1 do
begin
if ACCount[i,j] > 0 then
begin
outvalue := format('%5d %5D %10.3f %10.3f',[i+MinA,j+MinC,ACMeans[i,j],ACSDs[i,j]]);
OutPutFrm.RichEdit.Lines.Add(outvalue);
end;
end;
end;
OutPutFrm.RichEdit.Lines.Add('');
outvalue := format('GRAND MEAN = %10.3f',[TotMean]);
OutPutFrm.RichEdit.Lines.Add(outvalue);
OutPutFrm.RichEdit.Lines.Add('');
// OutPutFrm.ShowModal;
end;
procedure TABCNestedForm.GetResults(Sender: TObject);
VAR
temp, temp2, temp3, temp4, constant : double;
NoBLevelsInA, BLevCount, i, j, k, celln : integer;
strvalue : string;
begin
celln := 0;
for i := 0 to NoALevels-1 do
begin
for j := 0 to NoBLevels-1 do
begin
for k := 0 to NoCLevels-1 do
begin
if CellCount[j,i,k] > celln then celln := CellCount[j,i,k];
end;
end;
end;
// assume all cells have same n size
// get no. of levels in A
BLevCount := 0;
for i := 0 to NoALevels-1 do
begin
NoBLevelsInA := 0;
for j := 0 to NoBLevels-1 do
begin
if CellCount[j,i,0] > 0 then NoBLevelsInA := NoBLevelsInA + 1;
end;
if NoBLevelsInA > BLevCount then BLevCount := NoBLevelsInA;
end;
dfA := NoALevels - 1;
dfBwA := NoALevels * (BLevCount - 1);
dfC := NoCLevels - 1;
dfAC := (NoALevels-1) * (NoCLevels-1);
dfBwAC := NoALevels * (BLevCount-1) * (NoCLevels -1);
dfwcell := NoALevels * BLevCount * NoCLevels * (celln - 1);
dftotal := TotN - 1;
constant := SumSqrTot / TotN;
SSTot := SSTot - constant;
MSTot := SSTot / dftotal;
// get A Effects
SSA := 0.0;
for i := 0 to NoALevels-1 do SSA := SSA + (ASumSqr[i] / ACount[i]);
temp := SSA;
SSA := SSA - constant;
MSA := SSA / dfA;
//Get C Effects
SSC := 0.0;
for i := 0 to NoCLevels-1 do SSC := SSC + (CSumSqr[i] / CCount[i]);
temp2 := SSC;
SSC := SSC - constant;
MSC := SSC / dfC;
// get B within A
SSB := 0.0;
for i := 0 to NoALevels - 1 do
begin
for j := 0 to NoBLevels-1 do
begin
if ABCount[i,j] > 0 then SSB := SSB + (ABSumSqr[i,j] / ABCount[i,j]);
end;
end;
temp3 := SSB;
SSB := SSB - temp;
MSB := SSB / dfBwA;
// get AC interaction
SSAC := 0.0;
for i := 0 to NoALevels-1 do
begin
for j := 0 to NoCLevels-1 do SSAC := SSAC + ACSumSqr[i,j] / ACCount[i,j]
end;
temp4 := SSAC;
SSAC := SSAC - temp - temp2 + constant;
MSAC := SSAC / dfAC;
// get B within A x C interaction
SSBwAC := 0.0;
for i := 0 to NoALevels-1 do
begin
for j := 0 to NoBLevels-1 do
begin
for k := 0 to NoCLevels-1 do
begin
if CellCount[j,i,k] > 0 then SSBwAC := SSBwAC +
(SumSqr[j,i,k] / CellCount[j,i,k]);
end;
end;
end;
SSBwAC := SSBwAC - temp3 - temp4 + temp;
MSBwAC := SSBwAC / dfBwAC;
SSW := SSTot - SSA - SSB - SSAB - SSAC - SSBwAC;
MSW := SSW / dfwcell;
end;
procedure TABCNestedForm.ShowResults(Sender: TObject);
VAR
outvalue : string;
F, PF : double;
begin
OutPutFrm.RichEdit.Lines.Add('ANOVA TABLE');
OutPutFrm.RichEdit.Lines.Add('SOURCE D.F. SS MS F PROB.');
F := MSA / MSW;
PF := probf(F,dfA,dfwcell);
outvalue := format('A %4D %10.3f%10.3f%10.3f%10.3f',[dfA,SSA,MSA,F,PF]);
OutPutFrm.RichEdit.Lines.Add(outvalue);
F := MSB / MSW;
PF := probf(F,dfBwA,dfwcell);
outvalue := format('B(A) %4D %10.3f%10.3f%10.3f%10.3f',[dfBwA,SSB,MSB,F,PF]);
OutPutFrm.RichEdit.Lines.Add(outvalue);
F := MSC / MSW;
PF := probf(F,dfC,dfwcell);
outvalue := format('C %4D %10.3f%10.3f%10.3f%10.3f',[dfC,SSC,MSC,F,PF]);
OutPutFrm.RichEdit.Lines.Add(outvalue);
F := MSAC / MSW;
PF := probf(F,dfAC,dfwcell);
outvalue := format('AxC %4D %10.3f%10.3f%10.3f%10.3f',[dfAC,SSAC,MSAC,F,PF]);
OutPutFrm.RichEdit.Lines.Add(outvalue);
F := MSBwAC / MSW;
PF := probf(F,dfBwAC,dfwcell);
outvalue := format('B(A)xC %4D %10.3f%10.3f%10.3f%10.3f',[dfBwAC,SSBwAC,MSBwAC,F,PF]);
OutPutFrm.RichEdit.Lines.Add(outvalue);
outvalue := format('w.cells %4D %10.3f%10.3f',[dfwcell,SSW,MSW]);
OutPutFrm.RichEdit.Lines.Add(outvalue);
outvalue := format('Total %4D %10.3f',[dftotal,SSTot]);
OutPutFrm.RichEdit.Lines.Add(outvalue);
OutPutFrm.ShowModal;
end;
procedure TABCNestedForm.ReleaseMemory(Sender: TObject);
begin
ColNoSelected := nil;
ABSDs := nil;
ABCount := nil;
ABMeans := nil;
ABSumSqr := nil;
ABSS := nil;
ACSDs := nil;
ACMeans := nil;
ACCount := nil;
ACSumSqr := nil;
ACSS := nil;
CSDs := nil;
BSDs := nil;
ASDs := nil;
CCount := nil;
BCount := nil;
ACount := nil;
CMeans := nil;
BMeans := nil;
AMeans := nil;
CSumSqr := nil;
BSumSqr := nil;
ASumSqr := nil;
CSS := nil;
BSS := nil;
ASS := nil;
CellSDs := nil;
CellMeans := nil;
CellCount := nil;
SumSqr := nil;
SS := nil;
end;
procedure TABCNestedForm.TwoWayPlot(Sender: TObject);
VAR
plottype, i, j, k : integer;
maxmean, XBar : double;
title, setstring : string;
XValue : DblDyneVec;
begin
plottype := OptionsBox.ItemIndex + 1;
if plottype = 3 then plottype := 1
else if plottype = 4 then plottype := 2
else if plottype = 1 then plottype := 9
else if plottype = 2 then plottype := 10;
// Factor A first
maxmean := -1000.0;
SetLength(XValue,NoALevels);
setstring := 'FACTOR A';
GraphFrm.SetLabels[1] := setstring;
SetLength(GraphFrm.Xpoints,1,NoALevels);
SetLength(GraphFrm.Ypoints,1,NoALevels);
for i := 1 to NoALevels do
begin
GraphFrm.Ypoints[0,i-1] := AMeans[i-1];
if AMeans[i-1] > maxmean then maxmean := AMeans[i-1];
XValue[i-1] := MinA + i -1;
GraphFrm.Xpoints[0,i-1] := XValue[i-1];
end;
GraphFrm.nosets := 1;
GraphFrm.nbars := NoALevels;
GraphFrm.Heading := FactorA;
title := FactorA + ' Group Codes';
GraphFrm.XTitle := title;
GraphFrm.YTitle := 'Mean';
GraphFrm.barwideprop := 0.5;
GraphFrm.AutoScale := false;
GraphFrm.miny := 0.0;
GraphFrm.maxy := maxmean;
GraphFrm.GraphType := plottype;
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.FloorColor := clLtGray;
GraphFrm.ShowBackWall := true;
GraphFrm.ShowModal;
GraphFrm.Xpoints := nil;
GraphFrm.Ypoints := nil;
XValue := nil;
// Factor B next
SetLength(XValue,NoBLevels);
setstring := 'FACTOR B';
GraphFrm.SetLabels[1] := setstring;
maxmean := -1000.0;
SetLength(GraphFrm.Xpoints,1,NoBLevels);
SetLength(GraphFrm.Ypoints,1,NoBLevels);
for i := 1 to NoBLevels do
begin
GraphFrm.Ypoints[0,i-1] := BMeans[i-1];
if BMeans[i-1] > maxmean then maxmean := BMeans[i-1];
XValue[i-1] := MinB + i - 1;
GraphFrm.Xpoints[0,i-1] := XValue[i-1];
end;
GraphFrm.nosets := 1;
GraphFrm.nbars := NoBLevels;
GraphFrm.Heading := 'FACTOR B';
title := FactorB + ' Group Codes';
GraphFrm.XTitle := title;
GraphFrm.YTitle := 'Mean';
GraphFrm.barwideprop := 0.5;
GraphFrm.AutoScale := false;
GraphFrm.miny := 0.0;
GraphFrm.maxy := maxmean;
GraphFrm.GraphType := plottype;
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.FloorColor := clLtGray;
GraphFrm.ShowBackWall := true;
GraphFrm.ShowModal;
GraphFrm.Xpoints := nil;
GraphFrm.Ypoints := nil;
XValue := nil;
// Factor C next
SetLength(XValue,NoCLevels);
setstring := 'FACTOR C';
GraphFrm.SetLabels[1] := setstring;
maxmean := -1000.0;
SetLength(GraphFrm.Xpoints,1,NoCLevels);
SetLength(GraphFrm.Ypoints,1,NoCLevels);
for i := 0 to NoCLevels-1 do
begin
GraphFrm.Ypoints[0,i] := CMeans[i];
if CMeans[i] > maxmean then maxmean := CMeans[i];
XValue[i] := MinC + i - 1;
GraphFrm.Xpoints[0,i] := XValue[i];
end;
GraphFrm.nosets := 1;
GraphFrm.nbars := NoCLevels;
GraphFrm.Heading := 'FACTOR C';
title := FactorB + ' Group Codes';
GraphFrm.XTitle := title;
GraphFrm.YTitle := 'Mean';
GraphFrm.barwideprop := 0.5;
GraphFrm.AutoScale := false;
GraphFrm.miny := 0.0;
GraphFrm.maxy := maxmean;
GraphFrm.GraphType := plottype;
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.FloorColor := clLtGray;
GraphFrm.ShowBackWall := true;
GraphFrm.ShowModal;
GraphFrm.Xpoints := nil;
GraphFrm.Ypoints := nil;
XValue := nil;
// Factor A x B interaction within each slice next
SetLength(XValue,NoALevels + NoBLevels);
SetLength(GraphFrm.Ypoints,NoALevels,NoBLevels);
SetLength(GraphFrm.Xpoints,1,NoBLevels);
for k := 0 to NoCLevels-1 do
begin
maxmean := -1000.0;
for i := 0 to NoALevels-1 do
begin
setstring := 'FACTOR A ' + IntToStr(i+1);
GraphFrm.SetLabels[i+1] := setstring;
for j := 0 to NoBLevels-1 do
begin
if ABCount[i,j] > 0 then
begin
if ABMeans[i,j] > maxmean then maxmean := ABMeans[i,j];
GraphFrm.Ypoints[i,j] := ABMeans[i,j];
end;
end;
end;
for j := 0 to NoBLevels-1 do
begin
XValue[j] := MinB + j - 1;
GraphFrm.Xpoints[0,j] := XValue[j];
end;
GraphFrm.nosets := NoALevels;
GraphFrm.nbars := NoBLevels;
GraphFrm.Heading := 'FACTOR A x Factor B within C' + IntToStr(k+1);
title := FactorB + ' Group Codes';
GraphFrm.XTitle := title;
GraphFrm.YTitle := 'Mean';
GraphFrm.barwideprop := 0.5;
GraphFrm.AutoScale := false;
GraphFrm.miny := 0.0;
GraphFrm.maxy := maxmean;
GraphFrm.GraphType := plottype;
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.FloorColor := clLtGray;
GraphFrm.ShowBackWall := true;
GraphFrm.ShowModal;
end;
GraphFrm.Xpoints := nil;
GraphFrm.Ypoints := nil;
XValue := nil;
//Factor A x C Interaction within each column next
setLength(XValue,NoALevels+NoCLevels);
SetLength(GraphFrm.Xpoints,1,NoCLevels);
SetLength(GraphFrm.Ypoints,NoALevels,NoCLevels);
for j := 0 to NoBLevels-1 do
begin
maxmean := 0.0;
for i := 0 to NoALevels-1 do
begin
setstring := 'Factor A ' + IntToStr(i+1);
GraphFrm.SetLabels[i+1] := setstring;
for k := 0 to NoCLevels-1 do
begin
XBar := ACMeans[i,k];
if XBar > maxmean then maxmean := XBar;
GraphFrm.Ypoints[i,k] := XBar;
end;
end;
for k := 0 to NoCLevels-1 do
begin
XValue[k] := MinC + k - 1;
GraphFrm.Xpoints[0,k] := XValue[k];
end;
GraphFrm.nosets := NoALevels;
GraphFrm.nbars := NoCLevels;
GraphFrm.Heading := 'FACTOR A x Factor C within B ' + IntToStr(j+1);
title := FactorC + ' Group Codes';
GraphFrm.XTitle := title;
GraphFrm.YTitle := 'Mean';
GraphFrm.barwideprop := 0.5;
GraphFrm.AutoScale := false;
GraphFrm.miny := 0.0;
GraphFrm.maxy := maxmean;
GraphFrm.GraphType := plottype;
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.FloorColor := clLtGray;
GraphFrm.ShowBackWall := true;
// GraphFrm.ShowModal;
end;
GraphFrm.Xpoints := nil;
GraphFrm.Ypoints := nil;
XValue := nil;
end;
initialization
{$I abcnestedunit.lrs}
end.

View File

@ -0,0 +1,653 @@
unit ANOVATESTSUnit;
{$mode objfpc}{$H+}
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
FunctionsLib, OutPutUnit, Globals, MainUnit, DataProcs;
procedure TUKEY(error_ms : double; { mean squared for residual }
error_df : double; { deg. freedom for residual }
value : double; { size of smallest group }
group_total : DblDyneVec; { sum of scores in a group }
group_count : DblDyneVec; { no. of cases in a group }
min_grp : integer; { minimum group code }
max_grp : integer); { maximum group code }
procedure SCHEFFETEST(error_ms : double; { mean squared residual }
group_total : DblDyneVec; { sum of scores in a group }
group_count : DblDyneVec; { count of cases in a group }
min_grp : integer; { code of first group }
max_grp : integer; { code of last group }
total_n : double); { total number of cases }
procedure Newman_Keuls(error_ms : double; { residual mean squared }
error_df : double; { deg. freedom for error }
value : double; { number in smallest group }
group_total : DblDyneVec; { sum of scores in a group }
group_count : DblDyneVec; { count of cases in a group }
min_grp : integer; { lowest group code }
max_grp : integer); { largest group code }
procedure TUKEY_KRAMER(error_ms : double; { residual mean squared }
error_df : double; { deg. freedom for error }
value : double; { number in smallest group }
group_total : DblDyneVec; { sum of scores in group }
group_count : DblDyneVec; { number of caes in group }
min_grp : integer; { code of lowest group }
max_grp : integer); { code of highst group }
procedure CONTRASTS(error_ms : double; { residual ms }
error_df : double; { residual df }
group_total : DblDyneVec; { group sums }
group_count : DblDyneVec; { group cases }
min_grp : integer; { lowest code }
max_grp : integer; { highest code }
overall_probf : double); { prob of overall test }
procedure Bonferroni( group_total : DblDyneVec; { sum of scores in group }
group_count : DblDyneVec; { number of caes in group }
group_var : DblDyneVec; { group variances }
min_grp : integer; { code of lowest group }
max_grp : integer); { code of highst group }
procedure TUKEYBTEST(ErrorMS : double; // within groups error
ErrorDF : double; // degrees of freedom within
group_total : DblDyneVec; // vector of group sums
group_count : DblDyneVec; // vector of group n's
min_grp : integer; // smallest group code
max_grp : integer; // largest group code
groupsize : double); // size of groups (all equal)
procedure HomogeneityTest(GroupCol : integer;
VarColumn : integer;
NoCases : integer);
implementation
Uses BlkAnovaUnit;
procedure TUKEY(error_ms : double; { mean squared for residual }
error_df : double; { deg. freedom for residual }
value : double; { size of smallest group }
group_total : DblDyneVec; { sum of scores in a group }
group_count : DblDyneVec; { no. of cases in a group }
min_grp : integer; { minimum group code }
max_grp : integer); { maximum group code }
var
sig : boolean;
divisor : double;
df1 : integer;
alpha : double;
contrast, mean1, mean2 : double;
q_stat : double;
i,j : integer;
outline : string;
begin
alpha := StrToFloat(BlksAnovaFrm.PostAlpha.Text);
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add(' Tukey HSD Test for Differences Between Means');
outline := format(' alpha selected = %4.2f',[alpha]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('Groups Difference Statistic Probability Significant?');
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
divisor := sqrt(error_ms / value );
for i := min_grp to max_grp - 1 do
for j := i + 1 to max_grp do
begin
outline := format('%2d - %2d ',[i,j]);
mean1 := group_total[i-1] / group_count[i-1];
mean2 := group_total[j-1] / group_count[j-1];
contrast := mean1 - mean2;
outline := outline + format('%7.3f q = ',[contrast]);
contrast := abs(contrast / divisor) ;
outline := outline + format('%6.3f ',[contrast]);
df1 := max_grp - min_grp + 1;
q_stat := STUDENT(contrast,error_df,df1);
outline := outline + format(' %6.4f',[q_stat]);
if alpha >= q_stat then sig := TRUE else sig := FALSE;
if sig = TRUE then outline := outline + ' YES '
else outline := outline + ' NO';
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
end;
{ ------------------------------------------------------------------------ }
procedure SCHEFFETEST(error_ms : double; { mean squared residual }
group_total : DblDyneVec; { sum of scores in a group }
group_count : DblDyneVec; { count of cases in a group }
min_grp : integer; { code of first group }
max_grp : integer; { code of last group }
total_n : double); { total number of cases }
var
statistic, stat_var, stat_sd : double;
mean1, mean2, alpha, difference, prob_scheffe, f_prob, df1, df2 : double;
outline : string;
i, j : integer;
begin
alpha := StrToFloat(BlksAnovaFrm.PostAlpha.Text);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('----------------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add(' Scheffe contrasts among pairs of means.');
outline := format(' alpha selected = %4.2f',[alpha]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('Group vs Group Difference Scheffe Critical Significant?');
OutPutFrm.RichEdit.Lines.Add(' Statistic Value');
OutPutFrm.RichEdit.Lines.Add('----------------------------------------------------------------');
alpha := 1.0 - alpha ;
for i:= min_grp to max_grp - 1 do
for j := i + 1 to max_grp do
begin
outline := format('%2d %2d ',[i,j]);
mean1 := group_total[i-1] / group_count[i-1];
mean2 := group_total[j-1] / group_count[j-1];
difference := mean1 - mean2;
outline := outline + format('%8.2f ',[difference]);
stat_var := error_ms *
( 1.0 / group_count[i-1] + 1.0 / group_count[j-1]);
stat_sd := sqrt(stat_var);
statistic := abs(difference / stat_sd);
outline := outline + format('%8.2f ',[statistic]);
df1 := max_grp - min_grp;
df2 := total_n - df1 + 1;
f_prob := fpercentpoint(alpha,round(df1),round(df2) );
prob_scheffe := sqrt(df1 * f_prob);
outline := outline + format('%8.3f ',[prob_scheffe]);
if statistic > prob_scheffe then outline := outline + 'YES'
else outline := outline + 'NO';
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('----------------------------------------------------------------');
end;
{ ----------------------------------------------------------------------- }
procedure Newman_Keuls(error_ms : double; { residual mean squared }
error_df : double; { deg. freedom for error }
value : double; { number in smallest group }
group_total : DblDyneVec; { sum of scores in a group }
group_count : DblDyneVec; { count of cases in a group }
min_grp : integer; { lowest group code }
max_grp : integer); { largest group code }
var
i, j : integer;
temp1, temp2 : double;
groupno : IntDyneVec;
alpha : double;
contrast, mean1, mean2 : double;
q_stat : double;
divisor : double;
tempno : integer;
df1 : integer;
sig : boolean;
outline : string;
begin
SetLength(groupno,max_grp-min_grp+1);
for i := min_grp to max_grp do groupno[i-1] := i;
for i := min_grp to max_grp - 1 do
begin
for j := i + 1 to max_grp do
begin
if group_total[i-1] / group_count[i-1] >
group_total[j-1] / group_count[j-1] then
begin
temp1 := group_total[i-1];
temp2 := group_count[i-1];
tempno := groupno[i-1];
group_total[i-1] := group_total[j-1];
group_count[i-1] := group_count[j-1];
groupno[i-1] := groupno[j-1];
group_total[j-1] := temp1;
group_count[j-1] := temp2;
groupno[j-1] := tempno;
end;
end;
end;
alpha := StrToFloat(BlksAnovaFrm.PostAlpha.Text);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('----------------------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add(' Neuman-Keuls Test for Contrasts on Ordered Means');
outline := format(' alpha selected = %4.2f',[alpha]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Group Mean');
for i := 1 to max_grp do
begin
outline := format('%3d %10.3f',[groupno[i-1],group_total[i-1] / group_count[i-1]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Groups Difference Statistic d.f. Probability Significant?');
OutPutFrm.RichEdit.Lines.Add('----------------------------------------------------------------------');
divisor := sqrt(error_ms / value);
for i := min_grp to max_grp - 1 do
begin
for j := i + 1 to max_grp do
begin
outline := format('%2d - %2d ',[groupno[i-1],groupno[j-1]]);
mean1 := group_total[i-1] / group_count[i-1];
mean2 := group_total[j-1] / group_count[j-1];
contrast := mean1 - mean2;
outline := outline + format('%7.3f q = ',[contrast]);
contrast := abs(contrast / divisor );
df1 := j - i + 1;
outline := outline + format('%6.3f %2d %3.0f ',[contrast,df1,error_df]);
q_stat := STUDENT(contrast,error_df,df1);
outline := outline + format(' %6.4f',[q_stat]);
if alpha > q_stat then sig := TRUE else sig := FALSE;
if sig = TRUE then outline := outline + ' YES'
else outline := outline + ' NO';
OutPutFrm.RichEdit.Lines.Add(outline);
end;
end;
OutPutFrm.RichEdit.Lines.Add('----------------------------------------------------------------------');
groupno := nil;
end;
{ ----------------------------------------------------------------------- }
procedure TUKEY_KRAMER(error_ms : double; { residual mean squared }
error_df : double; { deg. freedom for error }
value : double; { number in smallest group }
group_total : DblDyneVec; { sum of scores in group }
group_count : DblDyneVec; { number of caes in group }
min_grp : integer; { code of lowest group }
max_grp : integer); { code of highst group }
var
sig : boolean;
divisor : double;
df1 : integer;
alpha : double;
contrast, mean1, mean2 : double;
q_stat : double;
outline : string;
i, j : integer;
begin
alpha := StrToFloat(BlksAnovaFrm.PostAlpha.Text);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add(' Tukey-Kramer Test for Differences Between Means');
outline := format(' alpha selected = %4.2f',[alpha]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('Groups Difference Statistic Probability Significant?');
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
for i := min_grp to max_grp - 1 do
for j := i + 1 to max_grp do
begin
outline := format('%2d - %2d ',[i,j]);
mean1 := group_total[i-1] / group_count[i-1];
mean2 := group_total[j-1] / group_count[j-1];
contrast := mean1 - mean2;
outline := outline + format('%7.3f q = ',[contrast]);
divisor := sqrt(error_ms *
( ( 1.0/group_count[i-1] + 1.0/group_count[j-1] ) / 2 ) );
contrast := abs(contrast / divisor) ;
outline := outline + format('%6.3f ',[contrast]);
df1 := max_grp - min_grp + 1;
q_stat := STUDENT(contrast,error_df,df1);
outline := outline + format(' %6.4f',[q_stat]);
if alpha >= q_stat then sig := TRUE else sig := FALSE;
if sig = TRUE then outline := outline + ' YES '
else outline := outline + ' NO';
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
end;
{ ------------------------------------------------------------------------ }
procedure CONTRASTS(error_ms : double; { residual ms }
error_df : double; { residual df }
group_total : DblDyneVec; { group sums }
group_count : DblDyneVec; { group cases }
min_grp : integer; { lowest code }
max_grp : integer; { highest code }
overall_probf : double); { prob of overall test }
var
nocontrasts, i, j, k : integer;
df1, df2, probstat, statistic, alpha : double;
coefficients : array[1..20,1..20] of double;
nonorthog : boolean;
weight, sumcross : double;
response : string[5];
outline : string;
prompt : string;
begin
outline := format('Enter the number of contrasts (less than %2d or 0:',[max_grp-min_grp+1]);
response := InputBox('ORTHOGONAL CONTRASTS',outline,'0');
nocontrasts := StrToInt(response);
if nocontrasts > 0 then
begin
for i := 1 to nocontrasts do
begin
outline := format('Contrast number %2d',[i]);
for j := 1 to (max_grp - min_grp+1) do
begin
prompt := format('Group %2d coefficient = ',[j]);
response := InputBox(outline,prompt,'1');
coefficients[i,j] := StrToFloat(response);
end;
end;
{ Check for orthogonality }
nonorthog := FALSE;
for i := 1 to nocontrasts - 1 do
begin
for j := i + 1 to nocontrasts do
begin
sumcross := 0;
for k := 1 to (max_grp - min_grp + 1) do
begin
sumcross := sumcross +
coefficients[i,k]*coefficients[j,k];
end;
if sumcross <> 0 then nonorthog := TRUE;
if sumcross <> 0 then
begin
outline := format('contrasts %2d and %2d not orthogonal.',[i,j]);
ShowMessage('ERROR!' + outline);
end;
end;
end;
if NOT nonorthog then
begin
alpha := StrToFloat(BlksAnovaFrm.PostAlpha.Text);
if overall_probf > alpha then
begin
OutPutFrm.RichEdit.Lines.Add('No contrasts significant.');
exit;
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add(' ORTHOGONAL CONTRASTS');
OutPutFrm.RichEdit.Lines.Add('Contrast Statistic Probability Critical Value Significant?');
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
for i := 1 to nocontrasts do
begin
statistic := 0.0;
weight := 0.0;
for j := 1 to (max_grp - min_grp + 1) do
begin
statistic := statistic + (coefficients[i,j] *
(group_total[j-1] / group_count[j-1]));
weight := weight + (sqr(coefficients[i,j]) /
group_count[j-1]);
end;
statistic := sqr(statistic);
statistic := statistic / (error_ms * weight);
outline := format('%3d %9.4f ',[i,statistic]);
df1 := 1;
df2 := error_df;
probstat := probf(statistic,round(df1),round(df2)) / 2;
outline := outline + format('%8.3f %5.2f ',[probstat,alpha]);
if probstat < alpha then outline := outline + 'YES'
else outline := outline + 'NO';
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Contrast Coefficients Used:');
for i := 1 to nocontrasts do
begin
outline := format('Contrast %2d ',[i]);
for j := 1 to (max_grp - min_grp + 1) do
outline := outline + format('%4.1f ',[coefficients[i,j]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
end; { if orthogonal }
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
end; { if nocontrasts > 0 }
end; { of procedure CONTRASTS }
{ ----------------------------------------------------------------------- }
procedure Bonferroni( group_total : DblDyneVec; { sum of scores in group }
group_count : DblDyneVec; { number of cases in group }
group_var : DblDyneVec; { group variances }
min_grp : integer; { code of lowest group }
max_grp : integer); { code of highst group }
var
i, j : integer;
alpha : double;
contrast, mean1, mean2 : double;
divisor : double;
df2 : integer;
outline : string;
testalpha : double;
NoGrps : integer;
tprob : double;
sig : string[6];
SS1, SS2 : double;
begin
alpha := StrToFloat(BlksAnovaFrm.PostAlpha.Text);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add(' Bonferroni Test for Differences Between Means');
outline := format(' Overall alpha selected = %4.2f',[alpha]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
NoGrps := max_grp - min_grp + 1;
testalpha := alpha / ( (NoGrps * (NoGrps-1)) / 2.0 );
outline := format('Comparisons made at alpha / no. comparisons = %5.3f',[testalpha]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Groups Difference Statistic Prob > Value Significant?');
for i := 1 to NoGrps - 1 do
begin
for j := i+1 to NoGrps do
begin
mean1 := group_total[i-1] / group_count[i-1];
mean2 := group_total[j-1] / group_count[j-1];
SS1 := group_var[i-1] * (group_count[i-1] - 1.0);
SS2 := group_var[j-1] * (group_count[j-1] - 1.0);
divisor := (SS1 + SS2) / (group_count[i-1] + group_count[j-1] - 2.0);
divisor := sqrt(divisor * ( 1.0 / group_count[i-1] + 1.0 / group_count[j-1]));
contrast := abs(mean1-mean2) / divisor;
df2 := round(group_count[i-1] + group_count[j-1] - 2.0);
tprob := probt(contrast,df2);
if testalpha >= tprob then sig := 'YES' else sig := 'NO';
outline := format('%3d - %3d %10.3f %10.3f %10.3f %s',
[min_grp+i-1,min_grp+j-1,mean1-mean2,contrast,tprob,sig]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
end;
end;
//-------------------------------------------------------------------
procedure TUKEYBTEST(ErrorMS : double; // within groups error
ErrorDF : double; // degrees of freedom within
group_total : DblDyneVec; // vector of group sums
group_count : DblDyneVec; // vector of group n's
min_grp : integer; // smallest group code
max_grp : integer; // largest group code
groupsize : double); // size of groups (all equal)
var
alpha : double;
outline : string;
i, j : integer;
df1 : double;
qstat : double;
tstat : double;
groupno : IntDyneVec;
temp1, temp2 : double;
tempno : integer;
NoGrps : integer;
contrast : double;
mean1, mean2 : double;
sig : string[6];
groups : double;
response : string[5];
divisor : double;
begin
SetLength(groupno,max_grp-min_grp+1);
alpha := StrToFloat(BlksAnovaFrm.PostAlpha.Text);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add(' Tukey B Test for Contrasts on Ordered Means');
outline := format(' alpha selected = %4.2f',[alpha]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('---------------------------------------------------------------');
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Groups Difference Statistic d.f. Prob.>value Significant?');
divisor := sqrt(ErrorMS / groupsize);
NoGrps := max_grp - min_grp + 1;
for i := min_grp to max_grp do groupno[i-1] := i;
for i := 1 to NoGrps - 1 do
begin
for j := i + 1 to NoGrps do
begin
if group_total[i-1] / group_count[i-1] >
group_total[j-1] / group_count[j-1] then
begin
temp1 := group_total[i-1];
temp2 := group_count[i-1];
tempno := groupno[i-1];
group_total[i-1] := group_total[j-1];
group_count[i-1] := group_count[j-1];
groupno[i-1] := groupno[j-1];
group_total[j-1] := temp1;
group_count[j-1] := temp2;
groupno[j-1] := tempno;
end;
end;
end;
for i := 1 to NoGrps-1 do
begin
for j := i+1 to NoGrps do
begin
mean1 := group_total[i-1] / group_count[i-1];
mean2 := group_total[j-1] / group_count[j-1];
contrast := abs((mean1 - mean2) / divisor);
df1 := j - i + 1.0;
qstat := STUDENT(contrast,ErrorDF,df1);
groups := NoGrps;
tstat := STUDENT(contrast,ErrorDF,groups);
qstat := (qstat + tstat) / 2.0;
if alpha >= qstat then sig := 'YES' else sig := 'NO';
outline := format('%3d - %3d %10.3f %10.3f %4.0f,%4.0f %5.3f %s',
[groupno[i-1],groupno[j-1],
mean1-mean2,contrast,df1,ErrorDF,qstat,sig]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
end;
groupno := nil;
end;
procedure HomogeneityTest(GroupCol : integer;
VarColumn : integer;
NoCases : integer);
Var
i, j, k, N, intvalue, intvalue2, Nf1cells, tempi : integer;
min, max : integer;
zscores : DblDyneMat;
medians : DblDyneVec;
cellcnts : IntDyneVec;
cellvars : DblDyneVec;
cellsums : DblDyneVec;
X, X2, temp : double;
DFF1, DFErr, DFTot : integer;
SSF1, SSDep, SSErr : double;
MSF1, MSDep, MSErr : double;
Omega, F, ProbF1, MeanDep : double;
outline : string;
begin
// complete a one-way anova on z scores obtained as the absolute difference
// between between the observed score and the median of a group.
// get min and max group codes
min := 100000;
max := 0;
N := 0;
for i := 1 to NoCases do
begin
intvalue := round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[GroupCol,i])));
if intvalue < min then min := intvalue;
if intvalue > max then max := intvalue;
end;
Nf1cells := max - min + 1;
setlength(zscores,Nf1cells,NoCases);
setlength(medians,Nf1cells);
setlength(cellcnts,Nf1cells);
setlength(cellvars,Nf1cells);
setlength(cellsums,Nf1cells);
// Get cell counts
for i := 1 to NoCases do
begin
intvalue := round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[GroupCol,i])));
intvalue := intvalue - min + 1;
cellcnts[intvalue-1] := cellcnts[intvalue-1] + 1;
end;
// get working totals
for j := 0 to Nf1cells do
begin
k := 0;
for i := 1 to NoCases do
begin
if not ValidValue(i,VarColumn) then continue;
intvalue := round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[GroupCol,i])));
intvalue := intvalue - min;
if intvalue <> j then continue;
X := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[VarColumn,i]));
zscores[intvalue,k] := X;
k := k + 1;
end;
end;
//sort on z scores and obtain the median for each group
for i := 0 to Nf1cells-1 do // sort scores in each group
begin
for j := 0 to cellcnts[i]-2 do
begin
for k := j+1 to cellcnts[i]-1 do
begin
X := zscores[i,j];
X2 := zscores[i,k];
if X2 < X then // swap
begin
temp := X;
X := X2;
X2 := temp;
end;
end;
end;
end;
for i := 0 to Nf1cells-1 do
begin
medians[i] := zscores[i,cellcnts[i] div 2];
end;
// Get deviations from the medians
for i := 0 to Nf1cells-1 do
begin
for j := 0 to cellcnts[i]-1 do
zscores[i,j] := zscores[i,j] - medians[i];
end;
// place group membership and z deviation scores in columns and
// do a regular one-way ANOVA
k := 0;
for i := 0 to Nf1cells-1 do
begin
for j := 0 to cellcnts[i]-1 do
begin
k := k +1;
OS3MainFrm.DataGrid.Cells[GroupCol,k] := IntToStr(i+1);
OS3MainFrm.DataGrid.Cells[VarColumn,k] := FloatToStr(abs(zscores[i,j]));
end;
end;
outline := 'Data have been placed in the grid. Do a one-way ANOVA';
ShowMessage(outline);
end;
end.

View File

@ -0,0 +1,71 @@
object AvgLinkFrm: TAvgLinkFrm
Left = 241
Height = 112
Top = 105
Width = 328
Caption = 'Average Linkage Hierarchical Clustering'
ClientHeight = 112
ClientWidth = 328
OnShow = FormShow
LCLVersion = '0.9.28.2'
object RadioGroup1: TRadioGroup
Left = 8
Height = 67
Top = 8
Width = 116
AutoFill = True
Caption = 'Matrix Type Is:'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 49
ClientWidth = 112
Items.Strings = (
'Similarities'
'Dissimilarities'
)
TabOrder = 0
end
object CancelBtn: TButton
Left = 136
Height = 33
Top = 16
Width = 78
Caption = 'Cancel'
ModalResult = 2
TabOrder = 1
end
object ComputeBtn: TButton
Left = 136
Height = 33
Top = 64
Width = 78
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 2
end
object ReturnBtn: TButton
Left = 224
Height = 33
Top = 64
Width = 78
Caption = 'Return'
ModalResult = 1
TabOrder = 3
end
object HelpBtn: TButton
Tag = 105
Left = 224
Height = 32
Top = 16
Width = 78
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 4
end
end

View File

@ -0,0 +1,25 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TAvgLinkFrm','FORMDATA',[
'TPF0'#11'TAvgLinkFrm'#10'AvgLinkFrm'#4'Left'#3#241#0#6'Height'#2'p'#3'Top'#2
+'i'#5'Width'#3'H'#1#7'Caption'#6'''Average Linkage Hierarchical Clustering'
+#12'ClientHeight'#2'p'#11'ClientWidth'#3'H'#1#6'OnShow'#7#8'FormShow'#10'LCL'
+'Version'#6#8'0.9.28.2'#0#11'TRadioGroup'#11'RadioGroup1'#4'Left'#2#8#6'Heig'
+'ht'#2'C'#3'Top'#2#8#5'Width'#2't'#8'AutoFill'#9#7'Caption'#6#15'Matrix Type'
+' Is:'#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'
+#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChildResize'#27'Chi'
+'ldSizing.EnlargeVertical'#7#24'crsHomogenousChildResize'#28'ChildSizing.Shr'
+'inkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crs'
+'ScaleChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27
+'ChildSizing.ControlsPerLine'#2#1#12'ClientHeight'#2'1'#11'ClientWidth'#2'p'
+#13'Items.Strings'#1#6#12'Similarities'#6#15'Dissimilarities'#0#8'TabOrder'#2
+#0#0#0#7'TButton'#9'CancelBtn'#4'Left'#3#136#0#6'Height'#2'!'#3'Top'#2#16#5
+'Width'#2'N'#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#1#0#0#7
+'TButton'#10'ComputeBtn'#4'Left'#3#136#0#6'Height'#2'!'#3'Top'#2'@'#5'Width'
+#2'N'#7'Caption'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2
+#2#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3#224#0#6'Height'#2'!'#3'Top'#2'@'#5
+'Width'#2'N'#7'Caption'#6#6'Return'#11'ModalResult'#2#1#8'TabOrder'#2#3#0#0#7
+'TButton'#7'HelpBtn'#3'Tag'#2'i'#4'Left'#3#224#0#6'Height'#2' '#3'Top'#2#16#5
+'Width'#2'N'#7'Caption'#6#4'Help'#7'OnClick'#7#12'HelpBtnClick'#8'TabOrder'#2
+#4#0#0#0
]);

View File

@ -0,0 +1,504 @@
unit AvgLinkUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls, MainUnit, functionslib, Globals, matrixlib, dataprocs,
outputunit, strutils, contexthelpunit;
type
{ TAvgLinkFrm }
TAvgLinkFrm = class(TForm)
CancelBtn: TButton;
ComputeBtn: TButton;
HelpBtn: TButton;
ReturnBtn: TButton;
RadioGroup1: TRadioGroup;
procedure ComputeBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure TreePlot(Clusters : IntDyneMat; Lst : IntDyneVec; NoPoints : integer);
procedure PreTree(NN, CRIT : integer; LST : IntDyneVec; KLUS : IntDyneMat);
private
{ private declarations }
public
{ public declarations }
end;
var
AvgLinkFrm: TAvgLinkFrm;
implementation
{ TAvgLinkFrm }
procedure TAvgLinkFrm.FormShow(Sender: TObject);
begin
RadioGroup1.ItemIndex := 0;
end;
procedure TAvgLinkFrm.HelpBtnClick(Sender: TObject);
begin
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
procedure TAvgLinkFrm.ComputeBtnClick(Sender: TObject);
VAR
X : DblDyneMat; // similarity or dissimilarity matrix
KLUS : IntDyneMat;
LST : IntDyneVec;
RX, SAV, SAV2, RRRMIN : double;
NIN, NVAR : IntDyneVec;
I, J, NI, NJ, Ina, ICOL, K, L, M, MN, N, CRIT, ITR, LIMIT : integer;
INEND, JCOL, JPRE, JEND, NHOLD, MSH, KSH, NLINES, INDX : integer;
// ROWS : StrDyneVec;
DIS, Title : string;
outline : string;
nvalues : integer;
label label300, label60, label70;
begin
// Reference: Anderberg, M. R. (1973). Cluster analysis for
// applications. New York: Academic press.
//
// Almost any text on cluster analysis should have a good
// description of the average-linkage hierarchical clustering
// algorithm. The algorithm begins with an initial similarity
// or dissimilarity matrix between pairs of objects. The
// algorithm proceeds in an iterative way. At each iteration
// the two most similar (we assume similarities for explanation)
// objects are combined into one group. At each successive
// iteration, the two most similar objects or groups of objects are
// merged. Similarity between groups is defined as the average
// similarity between objects in one group with objects in the other.
//
// INPUT: A correlation matrix (or some other similarity or
// dissimilarity matrix) in a file named MATRIX.DAT
// This must contain all the elements of a full
// (n x n), symmetrical matrix. Any format is
// allowable, as long as numbers are separated by
// blanks.
//
// OUTPUT: Output consists of a cluster history and a tree
// diagram (dendogram). The cluster history
// indicates, for each iteration, the objects
// or clusters merged, and the average pairwise
// similarity or dissimilarity in the resulting
// cluster.
//
// Author: John Uebersax
nvalues := NoVariables;
if (NoVariables <= 0) then
begin
ShowMessage('ERROR! You must first load a matrix into the grid.');
exit;
end;
SetLength(X,nvalues+1,nvalues+1);
SetLength(KLUS,nvalues+1,3);
SetLength(LST,nvalues+1);
SetLength(NIN,nvalues+1);
SetLength(NVAR,nvalues+1);
Title := 'Average Linkage Cluster Analysis. Adopted from ClusBas by John S. Uebersax';
// This section does the cluster analysis, taking data from the Main Form.
// Parameters controlling the analysis are obtained from the dialog form.
DIS := 'DIS';
OutPutFrm.RichEdit.Clear;
OutPutFrm.RichEdit.Lines.Add(Title);
OutPutFrm.RichEdit.Lines.Add('');
M := nvalues;
CRIT := RadioGroup1.ItemIndex; // 0 := Similarity, 1 := dissimilarity
// get matrix of data from OS3MainFrm
for i := 1 to NoVariables do
begin
for j := 1 to NoVariables do
X[i,j] := StrToFloat(OS3MainFrm.DataGrid.Cells[i,j]);
end;
LIMIT := M - 1;
for i := 1 to M do
begin
NVAR[i] := i;
NIN[i] := 1;
end;
// cluster analysis
ITR := 0;
label300:
ITR := ITR + 1;
//
// determine groups to be merged this iteration
//
if (CRIT = 1) then // (BSCAN) dissimilarity matrix
begin
// This section looks for the minimum dissimilarity. It finds
// element (K, L), where K and L are the most dissimilar objects
// or groups.
//
N := 1;
RRRMIN := 1000000.0;
MN := M - 1;
for i := 1 to MN do
begin
N := N + 1;
for j := N to M do
begin
if (RRRMIN < 0.0) then continue;
K := i;
L := j;
RRRMIN := X[i,j];
end;
end;
RX := RRRMIN;
end else // SCAN procedure
begin
// This section looks for the maximum similarity. It finds
// element (K, L), where K and L are the most similar objects or
// groups.
//
N := 1;
RX := -10000.0;
for i := 1 to M do
begin
N := N + 1;
for j := N to M do
begin
if (RX - X[i,j] > 0.0) then continue;
K := i;
L := j;
RX := X[i,j];
end;
end;
end;
// ARRANGE
//
// This section updates the similarity or dissimilarity matrix.
// If two objects/groups K and L are merged, it calculates the
// similarity or dissimilarity of the new group with all other objects
// or groups. It does this by averaging the elements in row K of
// X() with those in row L, and similarly for columns K and L.
// The new elements are put in row K and column L (K < L). Row K
// and column L are deleted. Columns and rows greater than L are
// shifted up one column or row to fill in the gap. The resulting
// matrix X() thus has one less column and row then at the beginning
// of the subroutine.
MN := M - 1;
SAV := X[K,L];
SAV2 := X[K,K];
// Calculate similarity or dissimilarity of group formed by merging I
// and J to all other groups by averaging the similarities or
// dissimilarities of I and J with other groups
for I := 1 to M do
begin
X[I,K] := (X[I,K] * NIN[K] + X[I,L] * NIN[L]) / (NIN[K] + NIN[L]);
X[K,I] := X[I,K];
end;
X[K,K] := SAV2 * NIN[K] * (NIN[K] - 1) + X[L,L] * NIN[L] * (NIN[L] - 1);
X[K,K] := X[K,K] + SAV * 2 * NIN[K] * NIN[L];
X[K,K] := X[K,K] / ((NIN[K] + NIN[L]) * (NIN[K] + NIN[L] - 1));
if (L = M) then goto label60;
for I := 1 to M do
begin
// Shift columns after J up one place
for J := L to MN do X[I,J] := X[I,J+1];
end;
for I := L to MN do
begin
// Shift rows after J up one place
for J := 1 to M do X[I,J] := X[I+1,J];
end;
NIN[K] := NIN[K] + NIN[L];
for I := L to MN do NIN[I] := NIN[I+1];
goto label70;
label60:
// Update number of objects in each cluster
NIN[K] := NIN[K] + NIN[L];
label70: // end of ARRANGE procedure
// continuation of CLUSV1 procedure
// OUTPUT
if (CRIT = 0) then
begin
outline := format('Group %3d is joined by group %3d. N is %3d ITER := %3d SIM := %10.3f',
[NVAR[K], NVAR[L],NIN[K],ITR,RX]);
OutPutFrm.RichEdit.Lines.Add(outline);
end else
begin
outline := format('Group %3d is joined by group %3d. N is %3d ITER := %3d DIS := %10.3f',
[NVAR[K], NVAR[L],NIN[K],ITR,RX]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
KLUS[ITR,1] := NVAR[K]; // save in KLUS rather than write out to file as in
KLUS[ITR,2] := NVAR[L]; // original program
if not(L = M) then
begin
MN := M - 1;
for i := L to MN do NVAR[i] := NVAR[i+1];
end;
M := M - 1;
if (ITR < LIMIT) then goto label300;
OutPutFrm.RichEdit.Lines.Add('');
// OutPutFrm.ShowModal;
// End of CLUSV1 procedure
// do pre-tree processing
PreTree(nvalues, CRIT, LST, KLUS);
OutPutFrm.ShowModal;
// do TREE procedure
TreePlot(KLUS,LST,nvalues);
OutPutFrm.ShowModal;
// cleanup
NVAR := nil;
NIN := nil;
LST := nil;
KLUS := nil;
X := nil;
end;
procedure TAvgLinkFrm.TreePlot(Clusters : IntDyneMat; Lst : IntDyneVec; NoPoints : integer);
VAR
outline : array[0..501] of char;
aline : array[0..82] of char;
valstr : string;
tempstr : string;
plotline : string;
star : char;
blank : char;
endit : char;
col1, col2, colpos1, colpos2 : integer;
noparts, startcol, endcol : integer;
Results : StrDyneVec;
ColPos : IntDyneVec;
i, j, k, L, linecount, newcol, howlong, count, strlong : integer;
done : boolean;
begin
linecount := 1;
star := '*';
blank := ' ';
SetLength(ColPos,NoPoints+2);
SetLength(Results,NoPoints*2+3);
OutPutFrm.RichEdit.Lines.Add('');
done := false;
// store initial column positions of vertical linkages
for i := 1 to NoPoints do ColPos[Lst[i]] := 4 + (i * 5);
// create column heading indented 10 spaces
tempstr := 'UNIT ';
for i := 1 to NoPoints do
begin
valstr := format('%5d',[Lst[i]]);
tempstr := tempstr + valstr;
end;
Results[linecount] := tempstr;
linecount := linecount + 1;
// create beginning of vertical linkages
plotline := 'STEP ';
for i := 1 to NoPoints do plotline := plotline + ' *';
Results[linecount] := plotline;
linecount := linecount + 1;
// start dendoplot
for i := 1 to NoPoints - 1 do
begin
outline := '';
valstr := format('%5d',[i]); // put step no. first
outline := valstr;
// clear remainder of outline
for j := 5 to (5 + NoPoints * 5) do outline[j] := ' ';
outline[6 + NoPoints * 5] := #0;
col1 := Clusters[i,1];
col2 := Clusters[i,2];
// find column positions for each variable
colpos1 := ColPos[col1];
colpos2 := ColPos[col2];
for k := colpos1 to colpos2 do outline[k] := star;
// change column positions 1/2 way between the matched ones
newcol := colpos1 + ((colpos2 - colpos1) div 2);
for k := 1 to NoPoints do
if ((ColPos[k] = colpos1) or (ColPos[k] = colpos2)) then ColPos[k] := newcol;
for k := 1 to NoPoints do
begin
L := ColPos[k];
if ((L <> colpos1) and (L <> colpos2)) then outline[L] := star;
end;
Results[linecount] := outline;
linecount := linecount + 1;
// add a line of connectors to next grouping
outline := ' ';
for j := 5 to (5 + NoPoints * 5) do outline[j] := blank;
for j := 1 to NoPoints do
begin
colpos1 := ColPos[j];
outline[colpos1] := star;
end;
Results[linecount] := outline;
linecount := linecount + 1;
end;
// output the Results in parts
// determine number of pages needed for whole plot
noparts := 0;
howlong := Length(Results[1]);
noparts := round(howlong / 80.0);
if (noparts <= 0) then noparts := 1;
if (noparts = 1) then // simply print the list
begin
for i := 0 to linecount - 1 do
begin
OutPutFrm.RichEdit.Lines.Add(Results[i]);
end;
end
else // break lines into strings of 15 units
begin
startcol := 0;
endcol := 80;
for i := 1 to noparts do
begin
outline := format('PART %d OUTPUT',[i]);
OutPutFrm.RichEdit.Lines.Add(outline);
for j := 0 to 80 do aline[j] := blank;
for j := 0 to linecount - 1 do
begin
count := 0;
outline := Results[j];
for k := startcol to endcol do
begin
aline[count] := outline[k];
count := count + 1;
end;
aline[count+1] := #0;
OutPutFrm.RichEdit.Lines.Add(aline);
end;
OutPutFrm.RichEdit.Lines.Add('');
startcol := endcol + 1;
endcol := endcol + 80;
if (endcol > howlong) then endcol := howlong;
end;
end;
Results := nil;
ColPos := nil;
end;
procedure TAvgLinkFrm.PreTree(NN, CRIT : integer; LST : IntDyneVec; KLUS : IntDyneMat);
VAR
I, II, J, NI, NJ, L, M, N, Ina, INEND, NHOLD, NLINES, INDX, ICOL, JCOL : integer;
KSH, JEND, MSH : integer;
JHOLD, NIN1 : IntDyneVec;
outline, outvalue : string;
label label2015, label2020, label2030, label2040, label2055, label2060;
begin
// PRETRE procedure
SetLength(JHOLD,NN+1);
SetLength(NIN1,NN+1);
// int NN := nvalues;
N := NN - 1;
outline := format('No. of objects := %3d',[NN]);
OutPutFrm.RichEdit.Lines.Add(outline);
if (CRIT = 0) then outline := 'Matrix defined similarities among objects.'
else outline := 'Matrix defined dissimilarities among objects.';
OutPutFrm.RichEdit.Lines.Add(outline);
for I := 1 to NN do
begin
LST[I] := I;
NIN1[I] := 1;
end;
for II := 1 to N do
begin
// name tabs
I := KLUS[II][1];
J := KLUS[II][2];
NI := NIN1[I];
NJ := NIN1[J];
L := 1;
label2015:
if (LST[L] = I) then goto label2020;
L := L + 1;
if (L <= NN) then goto label2015;
label2020:
ICOL := L;
Ina := ICOL + NI;
INEND := Ina + NJ - 1;
L := L + 1;
label2030:
if (LST[L] = J) then goto label2040;
L := L + 1;
if (L <= NN) then goto label2030;
label2040:
JCOL := L;
JEND := JCOL + NJ - 1;
NHOLD := 1;
// remove J vector and store in HOLD
for M := JCOL to JEND do
begin
JHOLD[NHOLD] := LST[M];
NHOLD := NHOLD + 1;
end;
// shift
MSH := JEND;
label2055:
if (MSH = INEND) then goto label2060;
KSH := MSH - NJ;
LST[MSH] := LST[KSH];
MSH := MSH - 1;
goto label2055;
// insert hold vector
label2060:
NHOLD := 1;
for M := Ina to INEND do
begin
LST[M] := JHOLD[NHOLD];
NHOLD := NHOLD + 1;
end;
NIN1[I] := NI + NJ;
end;
NLINES := (NN div 20) + 1;
INDX := 0;
for I := 1 to NLINES do
begin
outline := ' ';
for J := 1 to 20 do
begin
INDX := INDX + 1;
if (INDX <= NN) then
begin
outvalue := format(' %3d',[LST[INDX]]);
outline := outline + outvalue;
end;
end;
end;
NIN1 := nil;
JHOLD := nil;
// End of PRETRE procedure
end;
initialization
{$I avglinkunit.lrs}
end.

View File

@ -0,0 +1,253 @@
object BartlettTestForm: TBartlettTestForm
Left = 229
Height = 308
Top = 141
Width = 668
Caption = 'Bartlett Test of Sphericity'
ClientHeight = 308
ClientWidth = 668
OnShow = ResetBtnClick
LCLVersion = '0.9.30'
object Label2: TLabel
Left = 8
Height = 16
Top = 8
Width = 48
Caption = 'Variables'
ParentColor = False
end
object Label3: TLabel
Left = 239
Height = 16
Top = 8
Width = 45
Caption = 'Selected'
ParentColor = False
end
object VarList: TListBox
Left = 8
Height = 225
Top = 24
Width = 166
ItemHeight = 0
MultiSelect = True
TabOrder = 0
end
object SelList: TListBox
Left = 239
Height = 225
Top = 24
Width = 161
ItemHeight = 0
TabOrder = 1
end
object ResetBtn: TButton
Left = 564
Height = 32
Top = 136
Width = 80
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 2
end
object CancelBtn: TButton
Left = 425
Height = 30
Top = 176
Width = 82
Cancel = True
Caption = 'Cancel'
ModalResult = 2
TabOrder = 3
end
object ComputeBtn: TButton
Left = 564
Height = 30
Top = 176
Width = 80
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 4
end
object InBtn: TBitBtn
Left = 184
Height = 39
Top = 24
Width = 38
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
}
NumGlyphs = 0
OnClick = InBtnClick
TabOrder = 5
end
object OutBtn: TBitBtn
Left = 184
Height = 39
Top = 72
Width = 38
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = OutBtnClick
TabOrder = 6
end
object AllBtn: TBitBtn
Left = 184
Height = 39
Top = 136
Width = 38
Caption = 'ALL'
NumGlyphs = 0
OnClick = AllBtnClick
TabOrder = 7
end
object HelpBtn: TButton
Tag = 119
Left = 425
Height = 32
Top = 136
Width = 82
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 8
end
object Memo1: TMemo
Left = 425
Height = 109
Top = 13
Width = 219
Lines.Strings = (
'This is the Bartlett test of sphericity for'
' three or more variables. Enter three or'
' more of the variables listed in the left'
' box and press the compute button to'
' obtain the results.'
)
TabOrder = 9
end
object Label1: TLabel
Left = 9
Height = 16
Top = 270
Width = 68
Caption = 'Chisquare = '
ParentColor = False
end
object ChiSqrEdit: TEdit
Left = 80
Height = 23
Top = 265
Width = 92
TabOrder = 10
Text = 'ChiSqrEdit'
end
object Label4: TLabel
Left = 239
Height = 16
Top = 270
Width = 72
Caption = 'Probability = '
ParentColor = False
end
object ProbEdit: TEdit
Left = 316
Height = 23
Top = 263
Width = 84
TabOrder = 11
Text = 'ProbEdit'
end
object Label5: TLabel
Left = 425
Height = 16
Top = 270
Width = 89
Caption = 'Deg. Freedom = '
ParentColor = False
end
object DFEdit: TEdit
Left = 521
Height = 23
Top = 265
Width = 40
TabOrder = 12
Text = 'DFEdit'
end
object ReturnBtn: TButton
Left = 488
Height = 35
Top = 216
Width = 88
Caption = 'Return'
ModalResult = 1
TabOrder = 13
end
end

View File

@ -0,0 +1,145 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TBartlettTestForm','FORMDATA',[
'TPF0'#17'TBartlettTestForm'#16'BartlettTestForm'#4'Left'#3#229#0#6'Height'#3
+'4'#1#3'Top'#3#141#0#5'Width'#3#156#2#7'Caption'#6#27'Bartlett Test of Spher'
+'icity'#12'ClientHeight'#3'4'#1#11'ClientWidth'#3#156#2#6'OnShow'#7#13'Reset'
+'BtnClick'#10'LCLVersion'#6#6'0.9.30'#0#6'TLabel'#6'Label2'#4'Left'#2#8#6'He'
+'ight'#2#16#3'Top'#2#8#5'Width'#2'0'#7'Caption'#6#9'Variables'#11'ParentColo'
+'r'#8#0#0#6'TLabel'#6'Label3'#4'Left'#3#239#0#6'Height'#2#16#3'Top'#2#8#5'Wi'
+'dth'#2'-'#7'Caption'#6#8'Selected'#11'ParentColor'#8#0#0#8'TListBox'#7'VarL'
+'ist'#4'Left'#2#8#6'Height'#3#225#0#3'Top'#2#24#5'Width'#3#166#0#10'ItemHeig'
+'ht'#2#0#11'MultiSelect'#9#8'TabOrder'#2#0#0#0#8'TListBox'#7'SelList'#4'Left'
+#3#239#0#6'Height'#3#225#0#3'Top'#2#24#5'Width'#3#161#0#10'ItemHeight'#2#0#8
+'TabOrder'#2#1#0#0#7'TButton'#8'ResetBtn'#4'Left'#3'4'#2#6'Height'#2' '#3'To'
+'p'#3#136#0#5'Width'#2'P'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'ResetBtnClic'
+'k'#8'TabOrder'#2#2#0#0#7'TButton'#9'CancelBtn'#4'Left'#3#169#1#6'Height'#2
+#30#3'Top'#3#176#0#5'Width'#2'R'#6'Cancel'#9#7'Caption'#6#6'Cancel'#11'Modal'
+'Result'#2#2#8'TabOrder'#2#3#0#0#7'TButton'#10'ComputeBtn'#4'Left'#3'4'#2#6
+'Height'#2#30#3'Top'#3#176#0#5'Width'#2'P'#7'Caption'#6#7'Compute'#7'OnClick'
+#7#15'ComputeBtnClick'#8'TabOrder'#2#4#0#0#7'TBitBtn'#5'InBtn'#4'Left'#3#184
+#0#6'Height'#2''''#3'Top'#2#24#5'Width'#2'&'#10'Glyph.Data'#10':'#4#0#0'6'#4
+#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0
+#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169
+'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255
+'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255
+#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161
+#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198
+#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196
+#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255
+#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149
+#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'
+#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195
+'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255
+'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#10'InBtnClick'#8'TabOrder'#2#5#0
+#0#7'TBitBtn'#6'OutBtn'#4'Left'#3#184#0#6'Height'#2''''#3'Top'#2'H'#5'Width'
+#2'&'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0
+#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255
+'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%'
+'i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200
+#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139
+#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'
+#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201
+#127#204#138#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159
+#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197
+#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0
+#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'
+#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'
+#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11
+'OutBtnClick'#8'TabOrder'#2#6#0#0#7'TBitBtn'#6'AllBtn'#4'Left'#3#184#0#6'Hei'
+'ght'#2''''#3'Top'#3#136#0#5'Width'#2'&'#7'Caption'#6#3'ALL'#9'NumGlyphs'#2#0
+#7'OnClick'#7#11'AllBtnClick'#8'TabOrder'#2#7#0#0#7'TButton'#7'HelpBtn'#3'Ta'
+'g'#2'w'#4'Left'#3#169#1#6'Height'#2' '#3'Top'#3#136#0#5'Width'#2'R'#7'Capti'
+'on'#6#4'Help'#7'OnClick'#7#12'HelpBtnClick'#8'TabOrder'#2#8#0#0#5'TMemo'#5
+'Memo1'#4'Left'#3#169#1#6'Height'#2'm'#3'Top'#2#13#5'Width'#3#219#0#13'Lines'
+'.Strings'#1#6'+This is the Bartlett test of sphericity for'#6') three or mo'
+'re variables. Enter three or'#6') more of the variables listed in the left'
+#6'$ box and press the compute button to'#6#20' obtain the results.'#0#8'Tab'
,'Order'#2#9#0#0#6'TLabel'#6'Label1'#4'Left'#2#9#6'Height'#2#16#3'Top'#3#14#1
+#5'Width'#2'D'#7'Caption'#6#12'Chisquare = '#11'ParentColor'#8#0#0#5'TEdit'
+#10'ChiSqrEdit'#4'Left'#2'P'#6'Height'#2#23#3'Top'#3#9#1#5'Width'#2'\'#8'Tab'
+'Order'#2#10#4'Text'#6#10'ChiSqrEdit'#0#0#6'TLabel'#6'Label4'#4'Left'#3#239#0
+#6'Height'#2#16#3'Top'#3#14#1#5'Width'#2'H'#7'Caption'#6#14'Probability = '
+#11'ParentColor'#8#0#0#5'TEdit'#8'ProbEdit'#4'Left'#3'<'#1#6'Height'#2#23#3
+'Top'#3#7#1#5'Width'#2'T'#8'TabOrder'#2#11#4'Text'#6#8'ProbEdit'#0#0#6'TLabe'
+'l'#6'Label5'#4'Left'#3#169#1#6'Height'#2#16#3'Top'#3#14#1#5'Width'#2'Y'#7'C'
+'aption'#6#15'Deg. Freedom = '#11'ParentColor'#8#0#0#5'TEdit'#6'DFEdit'#4'Le'
+'ft'#3#9#2#6'Height'#2#23#3'Top'#3#9#1#5'Width'#2'('#8'TabOrder'#2#12#4'Text'
+#6#6'DFEdit'#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3#232#1#6'Height'#2'#'#3'To'
+'p'#3#216#0#5'Width'#2'X'#7'Caption'#6#6'Return'#11'ModalResult'#2#1#8'TabOr'
+'der'#2#13#0#0#0
]);

View File

@ -0,0 +1,208 @@
unit BartlettTestUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons, MainUnit, Globals, functionsLib, OutPutUnit, DataProcs,
DictionaryUnit, MatrixLib, contexthelpunit, matmanunit;
type
{ TBartlettTestForm }
TBartlettTestForm = class(TForm)
AllBtn: TBitBtn;
ReturnBtn: TButton;
CancelBtn: TButton;
ChiSqrEdit: TEdit;
DFEdit: TEdit;
Label5: TLabel;
ProbEdit: TEdit;
HelpBtn: TButton;
InBtn: TBitBtn;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Memo1: TMemo;
ComputeBtn: TButton;
OutBtn: TBitBtn;
ResetBtn: TButton;
SelList: TListBox;
VarList: TListBox;
procedure AllBtnClick(Sender: TObject);
procedure ComputeBtnClick(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure InBtnClick(Sender: TObject);
procedure OutBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
BartlettTestForm: TBartlettTestForm;
implementation
{ TBartlettTestForm }
procedure TBartlettTestForm.ResetBtnClick(Sender: TObject);
VAR i :integer;
begin
ChiSqrEdit.Text := '';
ProbEdit.Text := '';
DFEdit.Text := '';
InBtn.Visible := true;
OutBtn.Visible := false;
VarList.Clear;
SelList.Clear;
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
end;
procedure TBartlettTestForm.InBtnClick(Sender: TObject);
VAR i, index : integer;
begin
index := VarList.Items.Count;
i := 0;
while i < index do
begin
if (VarList.Selected[i]) then
begin
SelList.Items.Add(VarList.Items.Strings[i]);
VarList.Items.Delete(i);
index := index - 1;
i := 0;
end
else i := i + 1;
end;
OutBtn.Enabled := true;
end;
procedure TBartlettTestForm.AllBtnClick(Sender: TObject);
VAR i : integer;
begin
for i := 0 to VarList.Items.Count-1 do
SelList.Items.Add(VarList.Items.Strings[i]);
VarList.Clear;
OutBtn.Enabled := true;
InBtn.Enabled := false;
end;
procedure TBartlettTestForm.ComputeBtnClick(Sender: TObject);
VAR
matrix, temp, eigenvectors : DblDyneMat;
eigenvalues, means, variances, stddevs : DblDyneVec;
sumroots, determinant, chisquare, probability, natlogdet, natlogp : double;
i, j, k, df, p, result, intvalue, ncases, colno : integer;
aline, strvalue, ytitle, title, probvalue, chivalue : string;
ColNoSelected : IntDyneVec;
dblvalue : double;
DataGrid : DblDyneMat;
RowLabels, ColLabels : StrDyneVec;
errorcode : boolean;
begin
p := SelList.Count;
SetLength(matrix,p+1,p+1);
SetLength(temp,p+1,p+1);
SetLength(eigenvectors,p,p);
SetLength(eigenvalues,p);
SetLength(means,p+1);
SetLength(stddevs,p+1);
SetLength(variances,p+1);
SetLength(ColNoSelected,p+1);
SetLength(DataGrid,NoCases,p+1);
SetLength(RowLabels,p+1);
SetLength(ColLabels,p+1);
for j := 0 to p-1 do
begin
for i := 1 to NoVariables do
begin
if SelList.Items.Strings[j] = OS3MainFrm.DataGrid.Cells[i,0] then
begin
ColNoSelected[j] := i;
RowLabels[j] := OS3MainFrm.DataGrid.Cells[i,0];
ColLabels[j] := OS3MainFrm.DataGrid.Cells[i,0];
end;
end;
end;
ncases := 0;
ytitle := 'Variable';
errorcode := false;
// get data into the datagrid
for j := 0 to p-1 do
begin
for i := 1 to NoCases do
begin
if not GoodRecord(i,p,ColNoSelected) then continue;
colno := ColNoSelected[j];
dblvalue := StrToFloat(OS3MainFrm.DataGrid.Cells[colno,i]);
DataGrid[i-1,j] := dblvalue;
ncases := ncases + 1;
end;
end;
OutPutFrm.RichEdit.Clear;
ncases := 0;
Correlations(p,ColNoSelected,matrix,means,variances,stddevs,errorcode,ncases);
title := 'CORRELATION MATRIX';
MAT_PRINT(matrix,p,p,title,RowLabels,ColLabels,ncases);
OutPutFrm.RichEdit.Lines.Add('');
DETERM(matrix,p,p,determinant,errorcode);
strvalue := format('Determinant of matrix = %8.3f',[determinant]);
OutPutFrm.RichEdit.Lines.Add(strvalue);
OutPutFrm.RichEdit.Lines.Add('');
natlogp := ln(1.0 / p);
chisquare := -((ncases-1) - (2.0*p-5)/6) * ln(determinant);
df := ((p * p) - p) div 2;
probability := chisquaredprob(chisquare,df);
chivalue := format('%8.3f',[chisquare]);
probvalue := format('%8.3f',[1.0-probability]);
chisqrEdit.Text := chivalue;
ProbEdit.Text := probvalue;
DFEdit.Text := IntToStr(df);
aline := format('chisquare = %s, D.F. = %D, Proabability greater value = %s',
[chivalue,df,probvalue]);
OutPutFrm.RichEdit.Lines.Add(aline);
ColLabels := nil;
RowLabels := nil;
DataGrid := nil;
ColNoSelected := nil;
variances := nil;
stddevs := nil;
means := nil;
eigenvalues := nil;
eigenvectors := nil;
temp := nil;
matrix := nil;
OutPutFrm.ShowModal;
end;
procedure TBartlettTestForm.HelpBtnClick(Sender: TObject);
begin
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
procedure TBartlettTestForm.OutBtnClick(Sender: TObject);
VAR index : integer;
begin
index := SelList.ItemIndex;
VarList.Items.Add(SelList.Items.Strings[index]);
SelList.Items.Delete(index);
InBtn.Enabled := true;
if SelList.Items.Count = 0 then OutBtn.Enabled := false;
end;
initialization
{$I bartletttestunit.lrs}
end.

View File

@ -0,0 +1,65 @@
object BlankFrm: TBlankFrm
Left = 41
Height = 557
Top = 96
Width = 751
BorderStyle = bsSingle
Caption = 'BlankFrm'
ClientHeight = 557
ClientWidth = 751
OnShow = FormShow
LCLVersion = '0.9.30'
object Image1: TImage
Left = 0
Height = 496
Top = 0
Width = 751
Align = alClient
end
object Panel1: TPanel
Left = 0
Height = 61
Top = 496
Width = 751
Align = alBottom
ClientHeight = 61
ClientWidth = 751
TabOrder = 0
object PrintBtn: TButton
Left = 439
Height = 28
Top = 17
Width = 97
Caption = 'Print'
OnClick = PrintBtnClick
TabOrder = 0
end
object SaveBtn: TButton
Left = 296
Height = 27
Top = 17
Width = 92
Caption = 'Save Image'
OnClick = SaveBtnClick
TabOrder = 1
end
end
object CloseBtn: TButton
Left = 592
Height = 30
Top = 512
Width = 97
Caption = 'Close'
OnClick = CloseBtnClick
TabOrder = 1
end
object SavePictureDialog1: TSavePictureDialog
Title = 'Save file as'
left = 47
top = 508
end
object OpenPictureDialog1: TOpenPictureDialog
left = 91
top = 508
end
end

View File

@ -0,0 +1,20 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TBlankFrm','FORMDATA',[
'TPF0'#9'TBlankFrm'#8'BlankFrm'#4'Left'#2')'#6'Height'#3'-'#2#3'Top'#2'`'#5'W'
+'idth'#3#239#2#11'BorderStyle'#7#8'bsSingle'#7'Caption'#6#8'BlankFrm'#12'Cli'
+'entHeight'#3'-'#2#11'ClientWidth'#3#239#2#6'OnShow'#7#8'FormShow'#10'LCLVer'
+'sion'#6#6'0.9.30'#0#6'TImage'#6'Image1'#4'Left'#2#0#6'Height'#3#240#1#3'Top'
+#2#0#5'Width'#3#239#2#5'Align'#7#8'alClient'#0#0#6'TPanel'#6'Panel1'#4'Left'
+#2#0#6'Height'#2'='#3'Top'#3#240#1#5'Width'#3#239#2#5'Align'#7#8'alBottom'#12
+'ClientHeight'#2'='#11'ClientWidth'#3#239#2#8'TabOrder'#2#0#0#7'TButton'#8'P'
+'rintBtn'#4'Left'#3#183#1#6'Height'#2#28#3'Top'#2#17#5'Width'#2'a'#7'Caption'
+#6#5'Print'#7'OnClick'#7#13'PrintBtnClick'#8'TabOrder'#2#0#0#0#7'TButton'#7
+'SaveBtn'#4'Left'#3'('#1#6'Height'#2#27#3'Top'#2#17#5'Width'#2'\'#7'Caption'
+#6#10'Save Image'#7'OnClick'#7#12'SaveBtnClick'#8'TabOrder'#2#1#0#0#0#7'TBut'
+'ton'#8'CloseBtn'#4'Left'#3'P'#2#6'Height'#2#30#3'Top'#3#0#2#5'Width'#2'a'#7
+'Caption'#6#5'Close'#7'OnClick'#7#13'CloseBtnClick'#8'TabOrder'#2#1#0#0#18'T'
+'SavePictureDialog'#18'SavePictureDialog1'#5'Title'#6#12'Save file as'#4'lef'
+'t'#2'/'#3'top'#3#252#1#0#0#18'TOpenPictureDialog'#18'OpenPictureDialog1'#4
+'left'#2'['#3'top'#3#252#1#0#0#0
]);

View File

@ -0,0 +1,84 @@
unit BlankFrmUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ExtCtrls, StdCtrls, ExtDlgs, Clipbrd, printers;
type
{ TBlankFrm }
TBlankFrm = class(TForm)
SaveBtn: TButton;
PrintBtn: TButton;
CloseBtn: TButton;
OpenPictureDialog1: TOpenPictureDialog;
Image1: TImage;
Panel1: TPanel;
SavePictureDialog1: TSavePictureDialog;
procedure CloseBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure PrintBtnClick(Sender: TObject);
procedure SaveBtnClick(Sender: TObject);
private
Bitmap : TBitMap;
jp: TJpegImage; //Requires the "jpeg" unit added to "uses" clause.
{ private declarations }
public
{ public declarations }
end;
var
BlankFrm: TBlankFrm;
implementation
{ TBlankFrm }
procedure TBlankFrm.CloseBtnClick(Sender: TObject);
begin
// Bitmap.FreeImage;
BlankFrm.Hide;
end;
procedure TBlankFrm.FormShow(Sender: TObject);
begin
// Image1.Canvas.Clear;
// Bitmap := GetFormImage;
// Clipboard.Assign(Bitmap);
// Image1.Picture.Assign(Clipboard);
end;
procedure TBlankFrm.PrintBtnClick(Sender: TObject);
var
r : Trect;
begin
with Printer do
begin
Printer.Orientation := poPortrait;
r := Rect(20,20,printer.pagewidth-20,printer.pageheight div 2 + 20);
BeginDoc;
Canvas.StretchDraw(r,Image1.Picture.BitMap);
EndDoc;
end;
end;
procedure TBlankFrm.SaveBtnClick(Sender: TObject);
begin
if SavePictureDialog1.Execute then
begin
Image1.Picture.SaveToFile(SavePictureDialog1.FileName);
end;
end;
initialization
{$I blankfrmunit.lrs}
end.

View File

@ -0,0 +1,435 @@
object BNestedAForm: TBNestedAForm
Left = 288
Height = 402
Top = 161
Width = 686
Caption = 'Factor B Nested in Factor A Analysis of Variance'
ClientHeight = 402
ClientWidth = 686
OnShow = ResetBtnClick
LCLVersion = '0.9.30'
object Label1: TLabel
Left = 16
Height = 16
Top = 8
Width = 102
Caption = 'Available Variables:'
ParentColor = False
end
object Label2: TLabel
Left = 255
Height = 16
Top = 24
Width = 90
Caption = 'Factor A Variable'
ParentColor = False
end
object Label3: TLabel
Left = 255
Height = 16
Top = 96
Width = 116
Caption = 'Factor B (Nested in A)'
ParentColor = False
end
object Label4: TLabel
Left = 256
Height = 16
Top = 197
Width = 104
Caption = 'Dependent Variable'
ParentColor = False
end
object VarList: TListBox
Left = 16
Height = 239
Top = 24
Width = 181
ItemHeight = 0
MultiSelect = True
TabOrder = 0
end
object AInBtn: TBitBtn
Left = 211
Height = 26
Top = 24
Width = 30
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
}
NumGlyphs = 0
OnClick = AInBtnClick
TabOrder = 1
end
object AOutBtn: TBitBtn
Left = 211
Height = 26
Top = 56
Width = 30
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = AOutBtnClick
TabOrder = 2
end
object BInBtn: TBitBtn
Left = 210
Height = 26
Top = 96
Width = 30
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
}
NumGlyphs = 0
OnClick = BInBtnClick
TabOrder = 3
end
object BOutBtn: TBitBtn
Left = 210
Height = 26
Top = 128
Width = 30
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = BOutBtnClick
TabOrder = 4
end
object DepInBtn: TBitBtn
Left = 211
Height = 26
Top = 200
Width = 30
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
}
NumGlyphs = 0
OnClick = DepInBtnClick
TabOrder = 5
end
object DepOutBtn: TBitBtn
Left = 211
Height = 26
Top = 232
Width = 30
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = DepOutBtnClick
TabOrder = 6
end
object ACodes: TEdit
Left = 255
Height = 23
Top = 40
Width = 139
TabOrder = 7
Text = 'ACodes'
end
object BCodes: TEdit
Left = 255
Height = 23
Top = 112
Width = 138
TabOrder = 8
Text = 'BCodes'
end
object ResetBtn: TButton
Left = 24
Height = 27
Top = 296
Width = 89
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 9
end
object CancelBtn: TButton
Left = 24
Height = 27
Top = 344
Width = 89
Cancel = True
Caption = 'Cancel'
ModalResult = 2
TabOrder = 10
end
object ComputeBtn: TButton
Left = 240
Height = 27
Top = 296
Width = 89
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 11
end
object ReturnBtn: TButton
Left = 240
Height = 27
Top = 344
Width = 89
Caption = 'Return'
ModalResult = 1
TabOrder = 12
end
object DepEdit: TEdit
Left = 255
Height = 23
Top = 216
Width = 132
TabOrder = 13
Text = 'DepEdit'
end
object OptionsBox: TRadioGroup
Left = 400
Height = 131
Top = 240
Width = 273
AutoFill = True
Caption = 'OptionsBox'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 113
ClientWidth = 269
Items.Strings = (
'Plot means using 2D Horizontal Bars'
'Plot means using 3D Horizontal Bars'
'Plot means using 2D Vertical Bars'
'Plot means using 3D Vertical Bars'
)
TabOrder = 14
end
object Memo1: TMemo
Left = 400
Height = 197
Top = 16
Width = 272
Lines.Strings = (
'Directions: This analysis assumes that levels of '
'Factor B are Nested within levels of Factor A.'
'Unless otherwise specified, it is assumed that'
'Factors A and B are fixed level factors. If Factor B'
'is a random variable, check the provided box to'
'indicate this.'
''
'The number of cases for each B group should be'
'equal and the number of B treatements in each '
'A level should be equal.'
)
TabOrder = 15
end
object RandomBChk: TCheckBox
Left = 211
Height = 19
Top = 168
Width = 135
Caption = 'B is random, not fixed'
TabOrder = 16
end
end

View File

@ -0,0 +1,359 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TBNestedAForm','FORMDATA',[
'TPF0'#13'TBNestedAForm'#12'BNestedAForm'#4'Left'#3' '#1#6'Height'#3#146#1#3
+'Top'#3#161#0#5'Width'#3#174#2#7'Caption'#6'0Factor B Nested in Factor A Ana'
+'lysis of Variance'#12'ClientHeight'#3#146#1#11'ClientWidth'#3#174#2#6'OnSho'
+'w'#7#13'ResetBtnClick'#10'LCLVersion'#6#6'0.9.30'#0#6'TLabel'#6'Label1'#4'L'
+'eft'#2#16#6'Height'#2#16#3'Top'#2#8#5'Width'#2'f'#7'Caption'#6#20'Available'
+' Variables:'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#3#255#0#6'He'
+'ight'#2#16#3'Top'#2#24#5'Width'#2'Z'#7'Caption'#6#17'Factor A Variable'#11
+'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#3#255#0#6'Height'#2#16#3'Top'
+#2'`'#5'Width'#2't'#7'Caption'#6#22'Factor B (Nested in A)'#11'ParentColor'#8
+#0#0#6'TLabel'#6'Label4'#4'Left'#3#0#1#6'Height'#2#16#3'Top'#3#197#0#5'Width'
+#2'h'#7'Caption'#6#18'Dependent Variable'#11'ParentColor'#8#0#0#8'TListBox'#7
+'VarList'#4'Left'#2#16#6'Height'#3#239#0#3'Top'#2#24#5'Width'#3#181#0#10'Ite'
+'mHeight'#2#0#11'MultiSelect'#9#8'TabOrder'#2#0#0#0#7'TBitBtn'#6'AInBtn'#4'L'
+'eft'#3#211#0#6'Height'#2#26#3'Top'#2#24#5'Width'#2#30#10'Glyph.Data'#10':'#4
+#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0
+#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'
+#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'
+#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255
+#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211
+#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130
+#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'
+#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171
+#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204
+#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'
+#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255
+'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161
+'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'AInBtnClick'#8'TabOrde'
,'r'#2#1#0#0#7'TBitBtn'#7'AOutBtn'#4'Left'#3#211#0#6'Height'#2#26#3'Top'#2'8'
+#5'Width'#2#30#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0
+#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0
+#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'
+#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'
+#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255
+'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'
+#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195
+'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144
+#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255
+#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255
+#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135
+#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#12'AOutBtnClick'#8'TabOrder'#2#2#0#0#7'TBitBtn'#6'BInB'
+'tn'#4'Left'#3#210#0#6'Height'#2#26#3'Top'#2'`'#5'Width'#2#30#10'Glyph.Data'
+#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0
+#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^'
+' '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177
+'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255
+'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255
+#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255
+#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142
+#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'
+#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162
+#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255
+#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130
+#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199
+'t'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255
+'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'
+#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'BInBtnClick'#8
+'TabOrder'#2#3#0#0#7'TBitBtn'#7'BOutBtn'#4'Left'#3#210#0#6'Height'#2#26#3'To'
+'p'#3#128#0#5'Width'#2#30#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0
+#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'
+#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'
+#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161
+'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131
+#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/'
+'x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'
+#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255
,#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132
+#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255
+#255#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154
+#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255
+#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201
+#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'
+#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'Num'
+'Glyphs'#2#0#7'OnClick'#7#12'BOutBtnClick'#8'TabOrder'#2#4#0#0#7'TBitBtn'#8
+'DepInBtn'#4'Left'#3#211#0#6'Height'#2#26#3'Top'#3#200#0#5'Width'#2#30#10'Gl'
+'yph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0
+#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'
+#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'
+#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'
+#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255
+#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165
+#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201
+#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140
+'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255
+#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154
+#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194
+#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'
+#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'
+#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/'
+'x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
,#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#13'DepInBtnClick'
+#8'TabOrder'#2#5#0#0#7'TBitBtn'#9'DepOutBtn'#4'Left'#3#211#0#6'Height'#2#26#3
+'Top'#3#232#0#5'Width'#2#30#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0
+#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0
+'d'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'
+#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217
+'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193
+#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'
+#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255
+#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157
+#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195
+#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0
+#255#255#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255
+#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144
+#255#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255
+#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'
+#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153
+'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#14'DepOutBtnClick'#8'TabOrder'#2#6#0#0#5
+'TEdit'#6'ACodes'#4'Left'#3#255#0#6'Height'#2#23#3'Top'#2'('#5'Width'#3#139#0
+#8'TabOrder'#2#7#4'Text'#6#6'ACodes'#0#0#5'TEdit'#6'BCodes'#4'Left'#3#255#0#6
+'Height'#2#23#3'Top'#2'p'#5'Width'#3#138#0#8'TabOrder'#2#8#4'Text'#6#6'BCode'
+'s'#0#0#7'TButton'#8'ResetBtn'#4'Left'#2#24#6'Height'#2#27#3'Top'#3'('#1#5'W'
+'idth'#2'Y'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'
+#2#9#0#0#7'TButton'#9'CancelBtn'#4'Left'#2#24#6'Height'#2#27#3'Top'#3'X'#1#5
+'Width'#2'Y'#6'Cancel'#9#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrd'
+'er'#2#10#0#0#7'TButton'#10'ComputeBtn'#4'Left'#3#240#0#6'Height'#2#27#3'Top'
+#3'('#1#5'Width'#2'Y'#7'Caption'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClic'
+'k'#8'TabOrder'#2#11#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3#240#0#6'Height'#2
+#27#3'Top'#3'X'#1#5'Width'#2'Y'#7'Caption'#6#6'Return'#11'ModalResult'#2#1#8
+'TabOrder'#2#12#0#0#5'TEdit'#7'DepEdit'#4'Left'#3#255#0#6'Height'#2#23#3'Top'
+#3#216#0#5'Width'#3#132#0#8'TabOrder'#2#13#4'Text'#6#7'DepEdit'#0#0#11'TRadi'
+'oGroup'#10'OptionsBox'#4'Left'#3#144#1#6'Height'#3#131#0#3'Top'#3#240#0#5'W'
+'idth'#3#17#1#8'AutoFill'#9#7'Caption'#6#10'OptionsBox'#28'ChildSizing.LeftR'
+'ightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing.Enlarg'
+'eHorizontal'#7#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVertical'
+#7#24'crsHomogenousChildResize'#28'ChildSizing.ShrinkHorizontal'#7#14'crsSca'
+'leChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSizin'
+'g.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.ControlsPerLin'
+'e'#2#1#12'ClientHeight'#2'q'#11'ClientWidth'#3#13#1#13'Items.Strings'#1#6'#'
+'Plot means using 2D Horizontal Bars'#6'#Plot means using 3D Horizontal Bars'
+#6'!Plot means using 2D Vertical Bars'#6'!Plot means using 3D Vertical Bars'
+#0#8'TabOrder'#2#14#0#0#5'TMemo'#5'Memo1'#4'Left'#3#144#1#6'Height'#3#197#0#3
+'Top'#2#16#5'Width'#3#16#1#13'Lines.Strings'#1#6'2Directions: This analysis'
+' assumes that levels of '#6'.Factor B are Nested within levels of Factor A.'
+#6'.Unless otherwise specified, it is assumed that'#6'5Factors A and B are f'
+'ixed level factors. If Factor B'#6'/is a random variable, check the provid'
+'ed box to'#6#14'indicate this.'#6#0#6'.The number of cases for each B group'
+' should be'#6'.equal and the number of B treatements in each '#6#24'A level'
+' should be equal.'#0#8'TabOrder'#2#15#0#0#9'TCheckBox'#10'RandomBChk'#4'Lef'
+'t'#3#211#0#6'Height'#2#19#3'Top'#3#168#0#5'Width'#3#135#0#7'Caption'#6#22'B'
+' is random, not fixed'#8'TabOrder'#2#16#0#0#0
]);

View File

@ -0,0 +1,540 @@
unit BNestAUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons, ExtCtrls, MainUnit, OutPutUnit, FunctionsLib, GraphLib,
Globals, DataProcs, MatrixLib;
type
{ TBNestedAForm }
TBNestedAForm = class(TForm)
ACodes: TEdit;
AInBtn: TBitBtn;
AOutBtn: TBitBtn;
BCodes: TEdit;
BInBtn: TBitBtn;
BOutBtn: TBitBtn;
CancelBtn: TButton;
RandomBChk: TCheckBox;
DepInBtn: TBitBtn;
ComputeBtn: TButton;
DepOutBtn: TBitBtn;
DepEdit: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Memo1: TMemo;
OptionsBox: TRadioGroup;
ResetBtn: TButton;
ReturnBtn: TButton;
VarList: TListBox;
procedure AInBtnClick(Sender: TObject);
procedure AOutBtnClick(Sender: TObject);
procedure BInBtnClick(Sender: TObject);
procedure BOutBtnClick(Sender: TObject);
procedure ComputeBtnClick(Sender: TObject);
procedure DepInBtnClick(Sender: TObject);
procedure DepOutBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
private
{ private declarations }
SS, SumSqr, CellMeans, CellSDs : DblDyneMat;
CellCount : IntDyneMat;
ASS, BSS, ASumSqr, BSumSqr, AMeans, BMeans, ASDs : DblDyneVec;
ACount, BCount : IntDyneVec;
MinA, MinB, MaxA, MaxB, NoALevels, NoBLevels, ACol, BCol, YCol : integer;
DepVar, FactorA, FactorB : string;
SSTot, SumSqrTot, TotMean, MSTot, SSA, MSA, SSB, MSB, SSW, MSW : double;
TotN, dfA, dfBwA, dfwcell, dftotal : integer;
procedure GetVars(Sender: TObject);
procedure GetMemory(Sender: TOBject);
procedure GetSums(Sender: TObject);
procedure ShowMeans(Sender: TObject);
procedure GetResults(Sender: TObject);
procedure ShowResults(Sender: TObject);
procedure ReleaseMemory(Sender: TObject);
procedure TwoWayPlot(Sender: TObject);
public
{ public declarations }
end;
var
BNestedAForm: TBNestedAForm;
implementation
{ TBNestedAForm }
procedure TBNestedAForm.ResetBtnClick(Sender: TObject);
VAR i : integer;
begin
VarList.Items.Clear;
ACodes.Text := '';
BCodes.Text := '';
DepEdit.Text := '';
AInBtn.Visible := true;
AOutBtn.Visible := false;
BInBtn.Visible := true;
BOutBtn.Visible := false;
DepInBtn.Visible := true;
DepoutBtn.Visible := false;
OptionsBox.ItemIndex := 0;
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
OptionsBox.ItemIndex := 3;
end;
procedure TBNestedAForm.AInBtnClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
ACodes.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
AinBtn.Visible := false;
AOutBtn.Visible := true;
end;
procedure TBNestedAForm.AOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(ACodes.Text);
ACodes.Text := '';
AinBtn.Visible := true;
AOutBtn.Visible := false;
end;
procedure TBNestedAForm.BInBtnClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
BCodes.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
BInBtn.Visible := false;
BOutBtn.Visible := true;
end;
procedure TBNestedAForm.BOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(BCodes.Text);
BCodes.Text := '';
BInBtn.Visible := true;
BOutBtn.Visible := false;
end;
procedure TBNestedAForm.ComputeBtnClick(Sender: TObject);
begin
GetVars(self);
GetMemory(self);
GetSums(self);
ShowMeans(self);
GetResults(self);
ShowResults(self);
TwoWayPlot(self);
ReleaseMemory(self);
end;
procedure TBNestedAForm.DepInBtnClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
DepEdit.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
DepOutBtn.Visible := true;
DepInBtn.Visible := false;
end;
procedure TBNestedAForm.DepOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(DepEdit.Text);
DepEdit.Text := '';
DepInBtn.Visible := true;
DepOutBtn.Visible := false;
end;
procedure TBNestedAForm.GetVars(Sender: TObject);
VAR
result, intvalue, i, group : integer;
AValue, BValue : integer;
strvalue, cellstring : string;
begin
DepVar := DepEdit.Text;
FactorA := ACodes.Text;
FactorB := BCodes.Text;
ACol := 0;
BCol := 0;
YCol := 0;
MinA := 1000;
MaxA := -1000;
MinB := 1000;
MaxB := -1000;
for i := 1 to NoVariables do
begin
strvalue := Trim(OS3MainFrm.DataGrid.Cells[i,0]);
if FactorA = strvalue then ACol := i;
if FactorB = strvalue then BCol := i;
if DepVar = strvalue then YCol := i;
end;
if (ACol = 0) or (BCol = 0) or (YCol = 0) then
begin
ShowMessage('ERROR! Select a variable for each entry box.');
exit;
end;
// get number of levels for Factors
for i := 1 to NoCases do
begin
cellstring := Trim(OS3MainFrm.DataGrid.Cells[ACol,i]);
group := round(StrToFloat(cellstring));
if (group > MaxA) then MaxA := group;
if (group < MinA) then MinA := group;
cellstring := Trim(OS3MainFrm.DataGrid.Cells[BCol,i]);
group := round(StrToFLoat(cellstring));
if (group > MaxB) then MaxB := group;
if (group < MinB) then MinB := group;
end;
NoALevels := MaxA - MinA + 1;
NoBLevels := MaxB - MinB + 1;
end;
procedure TBNestedAForm.GetMemory(Sender: TOBject);
begin
SetLength(SS,NoBLevels,NoALevels);
SetLength(SumSqr,NoBLevels,NoALevels);
SetLength(CellCount,NoBLevels,NoALevels);
SetLength(CellMeans,NoBLevels,NoALevels);
SetLength(CellSDs,NoBLevels,NoALevels);
SetLength(ASS,NoALevels);
SetLength(BSS,NoBLevels);
SetLength(ASumSqr,NoALevels);
SetLength(BSumSqr,NoBLevels);
SetLength(AMeans,NoALevels);
SetLength(BMeans,NoBLevels);
SetLength(ACount,NoALevels);
SetLength(BCount,NoBLevels);
SetLength(ASDs,NoALevels);
end;
procedure TBNestedAForm.GetSums(Sender: TObject);
VAR
Aindex, Bindex, result, intvalue, i, j : integer;
YValue : double;
strvalue : string;
begin
// initialize memory
for i := 0 to NoBLevels-1 do
begin
for j := 0 to NoALevels-1 do
begin
SS[i,j] := 0.0;
SumSqr[i,j] := 0.0;
CellCount[i,j] := 0;
end;
end;
for i := 0 to NoALevels-1 do
begin
ACount[i] := 0;
AMeans[i] := 0.0;
ASS[i] := 0.0;
ASumSqr[i] := 0.0;
end;
for j := 0 to NoBLevels-1 do
begin
BCount[i] := 0;
BMeans[i] := 0.0;
BSS[i] := 0.0;
BSumSqr[i] := 0.0;
end;
// Accumulate sums and sums of squared values
for i := 1 to NoCases do
begin
strvalue := Trim(OS3MainFrm.DataGrid.Cells[ACol,i]);
Aindex := round(StrToFloat(strvalue));
strvalue := Trim(OS3MainFrm.DataGrid.Cells[BCol,i]);
Bindex := round(StrToFloat(strvalue));
strvalue := Trim(OS3MainFrm.DataGrid.Cells[YCol,i]);
YValue := StrToFloat(strvalue);
Aindex := Aindex - MinA;
Bindex := Bindex - MinB;
SS[Bindex,Aindex] := SS[Bindex,Aindex] + YValue * YValue;
SumSqr[Bindex,Aindex] := SumSqr[Bindex,Aindex] + YValue;
CellCount[Bindex,Aindex] := CellCount[Bindex,Aindex] + 1;
ACount[Aindex] := ACount[Aindex] + 1;
BCount[Bindex] := BCount[Bindex] + 1;
ASS[Aindex] := ASS[Aindex] + YValue * YValue;
BSS[Bindex] := BSS[Bindex] + YValue * YValue;
ASumSqr[Aindex] := ASumSqr[Aindex] + YValue;
BSumSqr[Bindex] := BSumSqr[Bindex] + YValue;
SSTot := SSTot + YValue * YValue;
SumSqrTot := SumSqrTot + YValue;
TotN := TotN + 1;
end;
//get cell means and marginal means, SDs plus square of sums
for i := 0 to NoBlevels-1 do
begin
for j := 0 to NoALevels-1 do
begin
if CellCount[i,j] > 0 then
begin
CellMeans[i,j] := SumSqr[i,j] / CellCount[i,j];
SumSqr[i,j] := SumSqr[i,j] * SumSqr[i,j];
CellSDs[i,j] := SS[i,j] - (SumSqr[i,j] / CellCount[i,j]);
CellSDs[i,j] := CellSDs[i,j] / (CellCount[i,j] - 1);
CellSDs[i,j] := Sqrt(CellSDs[i,j]);
end;
end;
end;
for i := 0 to NoBLevels-1 do
begin
BMeans[i] := BSumSqr[i] / BCount[i];
BSumSqr[i] := BSumSqr[i] * BSumSqr[i];
end;
for i := 0 to NoALevels-1 do
begin
AMeans[i] := ASumSqr[i] / ACount[i];
ASumSqr[i] := ASumSqr[i] * ASumSqr[i];
ASDs[i] := ASS[i] - (ASumSqr[i] / ACount[i]);
ASDs[i] := ASDs[i] / (ACount[i] - 1);
ASDs[i] := Sqrt(ASDs[i]);
end;
TotMean := SumSqrTot / TotN;
SumSqrTot := SumSqrTot * SumSqrTot;
end;
procedure TBNestedAForm.ShowMeans(Sender: TObject);
VAR
outvalue : string;
i, j : integer;
begin
OutPutFrm.RichEdit.Clear;
OutPutFrm.RichEdit.Lines.Add('Nested ANOVA by Bill Miller');
outvalue := format('File Analyzed = %s',[OS3MainFrm.FileNameEdit.Text]);
OutPutFrm.RichEdit.Lines.Add(outvalue);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('CELL MEANS');
OutPutFrm.RichEdit.Lines.Add('A LEVEL BLEVEL MEAN STD.DEV.');
for i := 0 to NoALevels-1 do
begin
for j := 0 to NoBLevels-1 do
begin
if CellCount[j,i] > 0 then
begin
outvalue := format('%5d %5d %10.3f %10.3f',
[i+MinA,j+MinB,CellMeans[j,i],CellSDs[j,i]]);
OutPutFrm.RichEdit.Lines.Add(outvalue);
end;
end;
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('A MARGIN MEANS');
OutPutFrm.RichEdit.Lines.Add('A LEVEL MEAN STD.DEV.');
for i := 0 to NoALevels-1 do
begin
outvalue := format('%5d %10.3f %10.3f',[i+MinA,AMeans[i],ASDs[i]]);
OutPutFrm.RichEdit.Lines.Add(outvalue);
end;
OutPutFrm.RichEdit.Lines.Add('');
outvalue := format('GRAND MEAN = %10.3f',[TotMean]);
OutPutFrm.RichEdit.Lines.Add(outvalue);
OutPutFrm.RichEdit.Lines.Add('');
// OutPutFrm.ShowModal;
end;
procedure TBNestedAForm.GetResults(Sender: TObject);
VAR
temp, constant : double;
NoBLevelsInA, BLevCount, i, j, celln : integer;
strvalue : string;
begin
celln := 0;
for i := 0 to NoALevels-1 do
begin
for j := 0 to NoBLevels-1 do
begin
if CellCount[j,i] > celln then celln := CellCount[j,i];
end;
end;
// assume all cells have same n size
// get no. of levels in A
BLevCount := 0;
for i := 0 to NoALevels-1 do
begin
NoBLevelsInA := 0;
for j := 0 to NoBLevels-1 do
begin
if CellCount[j,i] > 0 then NoBLevelsInA := NoBLevelsInA + 1;
end;
if NoBLevelsInA > BLevCount then BLevCount := NoBLevelsInA;
end;
dfA := NoALevels - 1;
dfBwA := NoALevels * (BLevCount - 1);
dfwcell := NoALevels * BLevCount * (celln - 1);
dftotal := TotN - 1;
constant := SumSqrTot / TotN;
SSTot := SSTot - constant;
MSTot := SSTot / dftotal;
SSA := 0.0;
for i := 0 to NoALevels-1 do SSA := SSA + (ASumSqr[i] / ACount[i]);
temp := SSA;
SSA := SSA - constant;
MSA := SSA / dfA;
SSB := 0.0;
for i := 0 to NoALevels - 1 do
begin
for j := 0 to NoBLevels-1 do
begin
if CellCount[j,i] > 0 then SSB := SSB + (SumSqr[j,i] / CellCount[j,i]);
end;
end;
SSB := SSB - temp;
MSB := SSB / dfBwA;
SSW := SSTot - SSA - SSB;
MSW := SSW / dfwcell;
(*
OutPutFrm.RichEdit.Clear;
strvalue := format('SSA = %10.3f MSA = %10.3f SSB = %10.3f MSB = %10.3f',
[SSA,MSA,SSB,MSB]);
OutPutFrm.RichEdit.Lines.Add(strvalue);
strvalue := format('SSW = %10.3f MSW = %10.3f',[SSW,MSW]);
OutPutFrm.RichEdit.Lines.Add(strvalue);
OutPutFrm.ShowModal;
*)
end;
procedure TBNestedAForm.ShowResults(Sender: TObject);
VAR
outvalue : string;
F, PF : double;
begin
OutPutFrm.RichEdit.Lines.Add('ANOVA TABLE');
OutPutFrm.RichEdit.Lines.Add('SOURCE D.F. SS MS F PROB.');
if RandomBChk.Checked then
begin
F := MSA / MSB;
PF := probf(F,dfA,dfBwA);
end else
begin
F := MSA / MSW;
PF := probf(F,dfA,dfwcell);
end;
outvalue := format('A %4D %10.3f%10.3f%10.3f%10.3f',[dfA,SSA,MSA,F,PF]);
OutPutFrm.RichEdit.Lines.Add(outvalue);
F := MSB / MSW;
PF := probf(F,dfBwA,dfwcell);
outvalue := format('B(W) %4D %10.3f%10.3f%10.3f%10.3f',[dfBwA,SSB,MSB,F,PF]);
OutPutFrm.RichEdit.Lines.Add(outvalue);
outvalue := format('w.cells %4D %10.3f%10.3f',[dfwcell,SSW,MSW]);
OutPutFrm.RichEdit.Lines.Add(outvalue);
outvalue := format('Total %4D %10.3f',[dftotal,SSTot]);
OutPutFrm.RichEdit.Lines.Add(outvalue);
OutPutFrm.ShowModal;
end;
procedure TBNestedAForm.ReleaseMemory(Sender: TObject);
begin
ASDs := nil;
BCount := nil;
ACount := nil;
BMeans := nil;
AMeans := nil;
BSumSqr := nil;
ASumSqr := nil;
BSS := nil;
ASS := nil;
CellSDs := nil;
CellMeans := nil;
CellCount := nil;
SumSqr := nil;
SS := nil;
end;
procedure TBNestedAForm.TwoWayPlot(Sender: TObject);
VAR
plottype, i, j : integer;
maxmean, XBar : double;
title, setstring : string;
XValue : DblDyneVec;
begin
maxmean := -1000.0;
SetLength(XValue,NoALevels+NoBLevels);
setstring := 'FACTOR A';
plottype := OptionsBox.ItemIndex + 1;
if plottype = 3 then plottype := 1
else if plottype = 4 then plottype := 2
else if plottype = 1 then plottype := 9
else if plottype = 2 then plottype := 10;
GraphFrm.SetLabels[1] := setstring;
SetLength(GraphFrm.Xpoints,1,NoALevels);
SetLength(GraphFrm.Ypoints,1,NoALevels);
for i := 1 to NoALevels do
begin
GraphFrm.Ypoints[0,i-1] := AMeans[i-1];
if AMeans[i-1] > maxmean then maxmean := AMeans[i-1];
XValue[i-1] := MinA + i -1;
GraphFrm.Xpoints[0,i-1] := XValue[i-1];
end;
GraphFrm.nosets := 1;
GraphFrm.nbars := NoALevels;
GraphFrm.Heading := FactorA;
title := FactorA + ' Group Codes';
GraphFrm.XTitle := title;
GraphFrm.YTitle := 'Mean';
GraphFrm.barwideprop := 0.5;
GraphFrm.AutoScale := false;
GraphFrm.miny := 0.0;
GraphFrm.maxy := maxmean;
GraphFrm.GraphType := plottype;
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.FloorColor := clLtGray;
GraphFrm.ShowBackWall := true;
GraphFrm.ShowModal;
GraphFrm.Xpoints := nil;
GraphFrm.Ypoints := nil;
// Factor B next
setstring := 'FACTOR B';
GraphFrm.SetLabels[1] := setstring;
maxmean := 0.0;
SetLength(GraphFrm.Xpoints,1,NoBLevels);
SetLength(GraphFrm.Ypoints,1,NoBLevels);
for i := 1 to NoBLevels do
begin
GraphFrm.Ypoints[0,i-1] := BMeans[i-1];
if BMeans[i-1] > maxmean then maxmean := BMeans[i-1];
XValue[i-1] := MinB + i - 1;
GraphFrm.Xpoints[0,i-1] := XValue[i-1];
end;
GraphFrm.nosets := 1;
GraphFrm.nbars := NoBLevels;
GraphFrm.Heading := 'FACTOR B';
title := FactorB + ' Group Codes';
GraphFrm.XTitle := title;
GraphFrm.YTitle := 'Mean';
GraphFrm.barwideprop := 0.5;
GraphFrm.AutoScale := false;
GraphFrm.miny := 0.0;
GraphFrm.maxy := maxmean;
GraphFrm.GraphType := plottype;
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.FloorColor := clLtGray;
GraphFrm.ShowBackWall := true;
GraphFrm.ShowModal;
GraphFrm.Xpoints := nil;
GraphFrm.Ypoints := nil;
XValue := nil;
end;
initialization
{$I bnestaunit.lrs}
end.

View File

@ -0,0 +1,134 @@
object BoxPlotFrm: TBoxPlotFrm
Left = 258
Height = 254
Top = 105
Width = 420
Caption = 'Box Plot'
ClientHeight = 254
ClientWidth = 420
OnShow = FormShow
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 8
Height = 14
Top = 8
Width = 90
Caption = 'Available Variables'
ParentColor = False
end
object Label2: TLabel
Left = 167
Height = 14
Top = 24
Width = 71
Caption = 'Group Variable'
ParentColor = False
end
object Label3: TLabel
Left = 167
Height = 14
Top = 112
Width = 102
Caption = 'Meaurement Variable'
ParentColor = False
end
object VarList: TListBox
Left = 8
Height = 208
Top = 24
Width = 142
ItemHeight = 0
OnClick = VarListClick
TabOrder = 0
end
object GroupEdit: TEdit
Left = 166
Height = 21
Top = 40
Width = 129
TabOrder = 1
Text = 'GroupEdit'
end
object MeasEdit: TEdit
Left = 167
Height = 21
Top = 128
Width = 130
TabOrder = 2
Text = 'MeasEdit'
end
object GroupBox1: TGroupBox
Left = 166
Height = 65
Top = 168
Width = 129
Caption = 'Options'
ClientHeight = 47
ClientWidth = 125
TabOrder = 3
object PrintChk: TCheckBox
Left = 8
Height = 17
Top = 4
Width = 84
Caption = 'Print Box Plot'
TabOrder = 0
end
object ShowChk: TCheckBox
Left = 8
Height = 17
Top = 23
Width = 107
Caption = 'Show Frequencies'
TabOrder = 1
end
end
object ResetBtn: TButton
Left = 315
Height = 32
Top = 56
Width = 78
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 4
end
object CancelBtn: TButton
Left = 315
Height = 32
Top = 104
Width = 79
Caption = 'Cancel'
ModalResult = 2
OnClick = CancelBtnClick
TabOrder = 5
end
object ComputeBtn: TButton
Left = 315
Height = 32
Top = 152
Width = 79
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 6
end
object OKBtn: TButton
Left = 315
Height = 33
Top = 200
Width = 79
Caption = 'Return'
ModalResult = 1
OnClick = OKBtnClick
TabOrder = 7
end
object HelpBtn: TButton
Tag = 108
Left = 315
Height = 32
Top = 8
Width = 78
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 8
end
end

View File

@ -0,0 +1,35 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TBoxPlotFrm','FORMDATA',[
'TPF0'#11'TBoxPlotFrm'#10'BoxPlotFrm'#4'Left'#3#2#1#6'Height'#3#254#0#3'Top'#2
+'i'#5'Width'#3#164#1#7'Caption'#6#8'Box Plot'#12'ClientHeight'#3#254#0#11'Cl'
+'ientWidth'#3#164#1#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#8'0.9.28.2'#0#6
+'TLabel'#6'Label1'#4'Left'#2#8#6'Height'#2#14#3'Top'#2#8#5'Width'#2'Z'#7'Cap'
+'tion'#6#19'Available Variables'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4
+'Left'#3#167#0#6'Height'#2#14#3'Top'#2#24#5'Width'#2'G'#7'Caption'#6#14'Grou'
+'p Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#3#167#0#6'Hei'
+'ght'#2#14#3'Top'#2'p'#5'Width'#2'f'#7'Caption'#6#19'Meaurement Variable'#11
+'ParentColor'#8#0#0#8'TListBox'#7'VarList'#4'Left'#2#8#6'Height'#3#208#0#3'T'
+'op'#2#24#5'Width'#3#142#0#10'ItemHeight'#2#0#7'OnClick'#7#12'VarListClick'#8
+'TabOrder'#2#0#0#0#5'TEdit'#9'GroupEdit'#4'Left'#3#166#0#6'Height'#2#21#3'To'
+'p'#2'('#5'Width'#3#129#0#8'TabOrder'#2#1#4'Text'#6#9'GroupEdit'#0#0#5'TEdit'
+#8'MeasEdit'#4'Left'#3#167#0#6'Height'#2#21#3'Top'#3#128#0#5'Width'#3#130#0#8
+'TabOrder'#2#2#4'Text'#6#8'MeasEdit'#0#0#9'TGroupBox'#9'GroupBox1'#4'Left'#3
+#166#0#6'Height'#2'A'#3'Top'#3#168#0#5'Width'#3#129#0#7'Caption'#6#7'Options'
+#12'ClientHeight'#2'/'#11'ClientWidth'#2'}'#8'TabOrder'#2#3#0#9'TCheckBox'#8
+'PrintChk'#4'Left'#2#8#6'Height'#2#17#3'Top'#2#4#5'Width'#2'T'#7'Caption'#6
+#14'Print Box Plot'#8'TabOrder'#2#0#0#0#9'TCheckBox'#7'ShowChk'#4'Left'#2#8#6
+'Height'#2#17#3'Top'#2#23#5'Width'#2'k'#7'Caption'#6#16'Show Frequencies'#8
+'TabOrder'#2#1#0#0#0#7'TButton'#8'ResetBtn'#4'Left'#3';'#1#6'Height'#2' '#3
+'Top'#2'8'#5'Width'#2'N'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'ResetBtnClick'
+#8'TabOrder'#2#4#0#0#7'TButton'#9'CancelBtn'#4'Left'#3';'#1#6'Height'#2' '#3
+'Top'#2'h'#5'Width'#2'O'#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#7'OnClic'
+'k'#7#14'CancelBtnClick'#8'TabOrder'#2#5#0#0#7'TButton'#10'ComputeBtn'#4'Lef'
+'t'#3';'#1#6'Height'#2' '#3'Top'#3#152#0#5'Width'#2'O'#7'Caption'#6#7'Comput'
+'e'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#6#0#0#7'TButton'#5'OKBtn'
+#4'Left'#3';'#1#6'Height'#2'!'#3'Top'#3#200#0#5'Width'#2'O'#7'Caption'#6#6'R'
+'eturn'#11'ModalResult'#2#1#7'OnClick'#7#10'OKBtnClick'#8'TabOrder'#2#7#0#0#7
+'TButton'#7'HelpBtn'#3'Tag'#2'l'#4'Left'#3';'#1#6'Height'#2' '#3'Top'#2#8#5
+'Width'#2'N'#7'Caption'#6#4'Help'#7'OnClick'#7#12'HelpBtnClick'#8'TabOrder'#2
+#8#0#0#0
]);

View File

@ -0,0 +1,676 @@
unit BoxPlotUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, MainUnit, Globals, DataProcs, OutPutUnit,
GraphLib, Printers, BlankFrmUnit, contexthelpunit;
type
{ TBoxPlotFrm }
TBoxPlotFrm = class(TForm)
HelpBtn: TButton;
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
OKBtn: TButton;
ShowChk: TCheckBox;
PrintChk: TCheckBox;
GroupBox1: TGroupBox;
MeasEdit: TEdit;
GroupEdit: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
VarList: TListBox;
procedure CancelBtnClick(Sender: TObject);
procedure ComputeBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure OKBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
procedure VarListClick(Sender: TObject);
private
{ private declarations }
function Percentile(nscrgrps : integer;
pcnt : double;
VAR freq : DblDyneVec;
VAR cumfreq : DblDyneVec;
VAR scores : DblDyneVec) : double;
procedure pBoxPlot(nbars : integer;
max, min : double;
VAR lowqrtl : DblDyneVec;
VAR hiqrtl : DblDyneVec;
VAR tenpcnt : DblDyneVec;
VAR ninetypcnt : DblDyneVec;
VAR means : DblDyneVec;
VAR median : DblDyneVec);
procedure BoxPlot(nbars : integer;
max, min : double;
VAR lowqrtl : DblDyneVec;
VAR hiqrtl : DblDyneVec;
VAR tenpcnt : DblDyneVec;
VAR ninetypcnt : DblDyneVec;
VAR means : DblDyneVec;
VAR median : DblDyneVec);
public
{ public declarations }
end;
var
BoxPlotFrm: TBoxPlotFrm;
implementation
{ TBoxPlotFrm }
procedure TBoxPlotFrm.ResetBtnClick(Sender: TObject);
var i : integer;
begin
VarList.Clear;
GroupEdit.Text := '';
MeasEdit.Text := '';
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
end;
procedure TBoxPlotFrm.VarListClick(Sender: TObject);
var
index : integer;
begin
index := VarList.ItemIndex;
if GroupEdit.Text = '' then GroupEdit.Text := VarList.Items.Strings[index]
else MeasEdit.Text := VarList.Items.Strings[index];
end;
procedure TBoxPlotFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TBoxPlotFrm.HelpBtnClick(Sender: TObject);
begin
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
procedure TBoxPlotFrm.OKBtnClick(Sender: TObject);
begin
BoxPlotFrm.Hide;
end;
procedure TBoxPlotFrm.CancelBtnClick(Sender: TObject);
begin
BoxPlotFrm.Hide;
end;
procedure TBoxPlotFrm.ComputeBtnClick(Sender: TObject);
label cleanup;
var
i, j, k, GrpVar, MeasVar, mingrp, maxgrp, G, NoGrps, cnt : integer;
nscrgrps : integer;
X, tenpcnt, ninepcnt, qrtile1, qrtile2, qrtile3 : double;
minscr, maxscr, intvlsize, lastX : double;
cellstring, outline : string;
means, lowqrtl, hiqrtl, tenpcntile, ninetypcntile, median : DblDyneVec;
freq : DblDyneVec;
Scores : DblDyneVec;
cumfreq : DblDyneVec;
prank : DblDyneVec;
grpsize : IntDyneVec;
scrgrp : DblDyneVec;
done : boolean;
NoSelected : integer;
ColNoSelected : IntDyneVec;
begin
SetLength(ColNoSelected,NoVariables);
SetLength(freq,2 * NoCases + 1);
SetLength(Scores,2 * NoCases + 1);
SetLength(cumfreq,2 * NoCases + 1);
SetLength(prank,2 * NoCases + 1);
OutPutFrm.RichEdit.Clear;
OutPutFrm.RichEdit.Lines.Add('Box Plot of Groups');
OutPutFrm.RichEdit.Lines.Add('');
GrpVar := 1;
MeasVar := 2;
for i := 1 to NoVariables do
begin
cellstring := OS3MainFrm.DataGrid.Cells[i,0];
if cellstring = GroupEdit.Text then GrpVar := i;
if cellstring = MeasEdit.Text then MeasVar := i;
end;
NoSelected := 2;
ColNoSelected[0] := GrpVar;
ColNoSelected[1] := MeasVar;
// get minimum and maximum group values
mingrp := 10000;
maxgrp := -10000;
for i := 1 to NoCases do
begin
if Not GoodRecord(i,NoSelected,ColNoSelected) then continue;
G := round(StrToFloat(OS3MainFrm.DataGrid.Cells[GrpVar,i]));
if G < mingrp then mingrp := G;
if G > maxgrp then maxgrp := G;
end;
NoGrps := maxgrp - mingrp + 1;
if NoGrps > 30 then
begin
ShowMessage('ERROR! Too many groups for meaningful plot.');
goto cleanup;
end;
SetLength(grpsize,NoGrps+1);
SetLength(means,NoGrps+1);
SetLength(lowqrtl,NoGrps+1);
SetLength(hiqrtl,NoGrps+1);
SetLength(tenpcntile,NoGrps+1);
SetLength(ninetypcntile,NoGrps+1);
SetLength(median,NoGrps+1);
SetLength(scrgrp,NoGrps+1);
// initialize
for j := 1 to NoGrps do
begin
means[j-1] := 0.0;
grpsize[j-1] := 0;
end;
// get minimum and maximum scores and score interval
intvlsize := 10000.0;
lastX := 0.0;
X := StrToFloat(OS3MainFrm.DataGrid.Cells[MeasVar,1]);
minscr := X;
maxscr := X;
for i := 1 to NoCases do
begin
if Not GoodRecord(i,NoSelected,ColNoSelected) then continue;
X := StrToFloat(OS3MainFrm.DataGrid.Cells[MeasVar,i]);
if X > maxscr then maxscr := X;
if X < minscr then minscr := X;
if i > 1 then // get interval size as minimum difference between 2 scores
begin
if (X <> lastX) and (abs(X - lastX) < intvlsize) then
intvlsize := abs(X - lastX);
lastX := X;
end
else lastX := X;
end;
// check for excess no. of intervals and reset if needed
nscrgrps := round((maxscr - minscr) / intvlsize);
if nscrgrps > (2 * NoCases) then
intvlsize := (maxscr - minscr) / NoCases;
// setup score groups
done := false;
Scores[0] := minscr - (intvlsize / 2.0);
nscrgrps := 0;
lastX := maxscr + intvlsize + (intvlsize / 2.0);
while not done do
begin
nscrgrps := nscrgrps + 1;
Scores[nscrgrps] := minscr + (nscrgrps * intvlsize) - (intvlsize / 2.0);
if Scores[nscrgrps] > lastX then done := true;
end;
Scores[nscrgrps+1] := Scores[nscrgrps] + intvlsize;
if Scores[0] < minscr then minscr := Scores[0];
if Scores[nscrgrps] > maxscr then maxscr := Scores[nscrgrps];
// do analysis for each group
for j := 1 to NoGrps do // group
begin
// get score groups for this group j
for i := 0 to nscrgrps do
begin
cumfreq[i] := 0.0;
freq[i] := 0.0;
end;
cnt := 0;
for i := 1 to NoCases do
begin // get scores for this group j
if Not GoodRecord(i,NoSelected,ColNoSelected) then continue;
G := round(StrToFloat(OS3MainFrm.DataGrid.Cells[GrpVar,i]));
G := G - mingrp + 1;
if G = j then // subject in this group
begin
cnt := cnt + 1;
X := StrToFloat(OS3MainFrm.DataGrid.Cells[MeasVar,i]);
means[j-1] := means[j-1] + X;
// find score interval and add to the frequency
for k := 0 to nscrgrps do
if (X >= Scores[k]) and (X < Scores[k+1]) then
freq[k] := freq[k] + 1;
end;
end;
grpsize[j-1] := cnt;
if grpsize[j-1] > 0 then means[j-1] := means[j-1] / grpsize[j-1];
// accumulate frequencies
cumfreq[0] := freq[0];
for i := 1 to nscrgrps-1 do
cumfreq[i] := cumfreq[i-1] + freq[i];
cumfreq[nscrgrps] := cumfreq[nscrgrps-1];
// get percentile ranks
prank[0] := ((cumfreq[0] / 2.0) / grpsize[j-1]) * 100.0;
for i := 1 to nscrgrps-1 do
prank[i] := ((cumfreq[i-1] + (freq[i] / 2.0)) / grpsize[j-1]) * 100.0;
// get centiles required.
tenpcnt := 0.10 * grpsize[j-1];
tenpcntile[j-1] := Percentile(nscrgrps,tenpcnt,freq,cumfreq,scores);
ninepcnt := 0.90 * grpsize[j-1];
ninetypcntile[j-1] := Percentile(nscrgrps,ninepcnt,freq,cumfreq,scores);
qrtile1 := 0.25 * grpsize[j-1];
lowqrtl[j-1] := Percentile(nscrgrps,qrtile1,freq,cumfreq,scores);
qrtile2 := 0.50 * grpsize[j-1];
median[j-1] := Percentile(nscrgrps,qrtile2,freq,cumfreq,scores);
qrtile3 := 0.75 * grpsize[j-1];
hiqrtl[j-1] := Percentile(nscrgrps,qrtile3,freq,cumfreq,scores);
if ShowChk.Checked then
begin
OutPutFrm.RichEdit.Lines.Add('');
outline := format('Results for group %d, mean = %8.3f',[j, means[j-1]]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('Centile Value');
outline := format('Ten %6.3f',[tenpcntile[j-1]]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Twenty five %6.3f',[lowqrtl[j-1]]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Median %6.3f',[median[j-1]]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Seventy five %6.3f',[hiqrtl[j-1]]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Ninety %6.3f',[ninetypcntile[j-1]]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('Score Range Frequency Cum.Freq. Percentile Rank');
OutPutFrm.RichEdit.Lines.Add('______________ _________ _________ _______________');
for i := 0 to nscrgrps-1 do
begin
outline := format('%6.2f - %6.2f %6.2f %6.2f %6.2f',
[Scores[i],Scores[i+1],freq[i],cumfreq[i],prank[i]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
end;
end; // get values for next group
if ShowChk.Checked then OutPutFrm.ShowModal;
// plot the boxes
BoxPlot(NoGrps,maxscr,minscr,lowqrtl,hiqrtl,tenpcntile,ninetypcntile,means,median);
if PrintChk.Checked then
pBoxPlot(NoGrps,maxscr,minscr,lowqrtl,hiqrtl,tenpcntile,ninetypcntile,means,median);
//cleanup the heap
cleanup:
scrgrp := nil;
median := nil;
ninetypcntile := nil;
tenpcntile := nil;
hiqrtl := nil;
lowqrtl := nil;
means := nil;
grpsize := nil;
cumfreq := nil;
scores := nil;
freq := nil;
ColNoSelected := nil;
end;
function TBoxPlotFrm.Percentile(nscrgrps : integer;
pcnt : double;
VAR freq : DblDyneVec;
VAR cumfreq : DblDyneVec;
VAR scores : DblDyneVec) : double;
var
i, interval : integer;
pcntile, Llimit, Ulimit, cumlower, intvlfreq : double;
begin
interval := 0;
for i := 0 to nscrgrps-1 do
begin
if cumfreq[i] > pcnt then
begin
interval := i;
Break;
end;
end;
if interval > 0 then
begin
Llimit := Scores[interval];
Ulimit := Scores[interval+1];
cumlower := cumfreq[interval-1];
intvlfreq := freq[interval];
end
else
begin // Percentile in first interval
Llimit := Scores[0];
Ulimit := Scores[1];
cumlower := 0.0;
intvlfreq := freq[0];
end;
if intvlfreq > 0 then
pcntile := Llimit + ((pcnt - cumlower) / intvlfreq) * (Ulimit- Llimit)
else pcntile := Llimit;
Result := pcntile;
end;
//-------------------------------------------------------------------
procedure TBoxPlotFrm.pBoxPlot(nbars : integer;
max, min : double;
VAR lowqrtl : DblDyneVec;
VAR hiqrtl : DblDyneVec;
VAR tenpcnt : DblDyneVec;
VAR ninetypcnt : DblDyneVec;
VAR means : DblDyneVec;
VAR median : DblDyneVec);
var
i, HTickSpace, imagewide, imagehi, vtop, vbottom, offset : integer;
vhi, hleft, hright, hwide, barwidth, Xpos, Ypos, strhi, strwide : integer;
// coords : array [1..5] of TPoint;
X, Y, colcycle : integer;
X1, X2, X3, X9, X10 : integer; // X coordinates for box and lines
Y1, Y2, Y3, Y4, Y9 : integer; // Y coordinates for box and lines
Title : string;
valincr, Yvalue : double;
begin
Printer.Orientation := poLandscape;
Printer.BeginDoc;
Title := 'BOXPLOT FOR : ' + OS3MainFrm.FileNameEdit.Text;
imagewide := Printer.PageWidth;
imagehi := Printer.PageHeight;
vtop := 400;
vbottom := round(imagehi) - 400;
// vhi := vbottom - vtop;
hleft := 400;
hright := imagewide - 40;
hwide := hright - hleft;
// show title
Printer.Canvas.Brush.Color := clWhite;
strhi := Printer.Canvas.TextWidth(Title) div 2;
strhi := imagewide div 2 - strhi;
Printer.Canvas.TextOut(strhi,50,Title);
// show legend
Y := Printer.Canvas.TextHeight(Title) * 2;
Y := Y + 50;
Title := 'RED: mean, BLACK: median, BOX: 25th to 75th percentile, WISKERS: 10th and 90th percentile';
X := imagewide div 2 - Printer.Canvas.TextWidth(Title) div 2;
Printer.Canvas.TextOut(X,Y,Title);
Printer.Canvas.Pen.Color := clBlack;
Printer.Canvas.Brush.Color := clWhite;
// Draw chart border
Printer.Canvas.Rectangle(hleft,vtop,hright,vbottom);
vbottom := vbottom - 400; // decrease bottom
vhi := vbottom - vtop;
// Draw vertical axis
valincr := (max - min) / 20.0;
for i := 1 to 21 do
begin
Title := format('%8.2f',[max - ((i-1)*valincr)]);
strwide := Printer.Canvas.TextWidth(Title);
strhi := Printer.Canvas.TextHeight(Title);
xpos := 20 + hleft;
Yvalue := max - (valincr * (i-1));
ypos := round(vhi * ( (max - Yvalue) / (max - min)));
ypos := ypos + vtop - strhi div 2;
Printer.Canvas.TextOut(xpos,ypos,Title);
end;
Printer.Canvas.MoveTo(hleft + strwide + 50,vtop);
Printer.Canvas.LineTo(hleft + strwide + 50,vbottom+20);
hwide := hwide - (strwide + 50);
hleft := hleft + strwide + 50;
HTickSpace := hwide div (nbars + 1);
barwidth := HTickSpace div 2;
// draw horizontal axis
Printer.Canvas.MoveTo(hleft,vbottom + 20);
Printer.Canvas.LineTo(hright,vbottom + 20);
for i := 1 to nbars do
begin
ypos := vbottom + 10;
xpos := round((hwide / (nbars+1))* i + hleft);
Printer.Canvas.MoveTo(xpos,ypos);
ypos := ypos + 10;
Printer.Canvas.LineTo(xpos,ypos);
Title := format('%d',[i]);
offset := Printer.Canvas.TextWidth(Title) div 2;
strhi := Printer.Canvas.TextHeight(Title);
xpos := xpos - offset;
ypos := ypos + strhi;
Printer.Canvas.Pen.Color := clBlack;
Printer.Canvas.TextOut(xpos,ypos,Title);
xpos := hleft;
Printer.Canvas.TextOut(xpos,ypos,'GROUPS:');
end;
for i := 1 to nbars do
begin
colcycle := i mod 4; // select a color for box
if (colcycle = 0) then Printer.Canvas.Brush.Color := clBlue;
if (colcycle = 1) then Printer.Canvas.Brush.Color := clGreen;
if (colcycle = 2) then Printer.Canvas.Brush.Color := clFuchsia;
if (colcycle = 3) then Printer.Canvas.Brush.Color := clLime;
// plot the box front face
X9 := round(hleft + ((i) * HTickSpace) - (barwidth / 2));
X10 := X9 + barwidth;
X1 := X9;
X2 := X10;
Ypos:= round((((max - hiqrtl[i-1]) / (max - min)) * vhi) + vtop);
Y1 := Ypos;
Ypos := round((((max - lowqrtl[i-1]) / (max - min)) * vhi) + vtop);
Y2 := Ypos;
Printer.Canvas.Rectangle(X1,Y1,X2,Y2);
// draw upper 90th percentile line and end
X3 := round(X1 + barwidth / 2);
Printer.Canvas.MoveTo(X3,Y1);
Ypos := round((((max - ninetypcnt[i-1]) / (max - min)) * vhi) + vtop);
Y3 := Ypos;
Printer.Canvas.LineTo(X3,Y3);
Printer.Canvas.MoveTo(X1,Y3);
Printer.Canvas.LineTo(X2,Y3);
// draw lower 10th percentile line and end
Printer.Canvas.MoveTo(X3,Y2);
Ypos := round((((max - tenpcnt[i-1]) / (max - min)) * vhi) + vtop);
Y4 := Ypos;
Printer.Canvas.LineTo(X3,Y4);
Printer.Canvas.MoveTo(X1,Y4);
Printer.Canvas.LineTo(X2,Y4);
//plot the mean line
Printer.Canvas.Pen.Width := 10;
Printer.Canvas.Pen.Color := clRed;
Printer.Canvas.Pen.Style := psDot;
Ypos := round((((max - means[i-1]) / (max - min)) * vhi) + vtop);
Y9 := Ypos;
Printer.Canvas.MoveTo(X9,Y9);
Printer.Canvas.LineTo(X10,Y9);
Printer.Canvas.Pen.Color := clBlack;
Printer.Canvas.Pen.Style := psSolid;
//plot the median line
Printer.Canvas.Pen.Color := clBlack;
Ypos := round((((max - median[i-1]) / (max - min)) * vhi) + vtop);
Y9 := Ypos;
Printer.Canvas.MoveTo(X9,Y9);
Printer.Canvas.LineTo(X10,Y9);
Printer.Canvas.Pen.Color := clBlack;
end;
Printer.EndDoc;
Printer.Orientation := poPortrait;
end;
//--------------------------------------------------------------------------
procedure TBoxPlotFrm.BoxPlot(nbars : integer;
max, min : double;
VAR lowqrtl : DblDyneVec;
VAR hiqrtl : DblDyneVec;
VAR tenpcnt : DblDyneVec;
VAR ninetypcnt : DblDyneVec;
VAR means : DblDyneVec;
VAR median : DblDyneVec);
var
i, HTickSpace, imagewide, imagehi, vtop, vbottom, offset : integer;
vhi, hleft, hright, hwide, barwidth, Xpos, Ypos, strhi : integer;
XOffset, YOffset : integer;
// coords : array [1..5] of TPoint;
X, Y, colcycle : integer;
X1, X2, X3, X9, X10 : integer; // X coordinates for box and lines
Y1, Y2, Y3, Y4, Y9 : integer; // Y coordinates for box and lines
Title : string;
valincr, Yvalue : double;
begin
BlankFrm.Show;
BlankFrm.Image1.Canvas.Clear;
Title := 'BOXPLOT FOR : ' + OS3MainFrm.FileNameEdit.Text;
imagewide := BlankFrm.width;
imagehi := BlankFrm.Height;
XOffset := imagewide div 10;
YOffset := imagehi div 10;
vtop := YOffset;
vbottom := imagehi - YOffset;
vhi := vbottom - vtop;
hleft := XOffset;
hright := imagewide - hleft - XOffset;
hwide := hright - hleft;
BlankFrm.Image1.Canvas.Brush.Color := clWhite;
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
// Show title
BlankFrm.Caption := Title;
// show legend
Y := BlankFrm.Image1.Canvas.TextHeight(Title) * 2;
Y := Y + vtop;
Title := 'RED: mean, BLACK: median, BOX: 25th to 75th percentile, WISKERS: 10th and 90th percentile';
X := imagewide div 2 - BlankFrm.Canvas.TextWidth(Title) div 2;
BlankFrm.Image1.Canvas.TextOut(X,Y,Title);
HTickSpace := hwide div nbars;
barwidth := HTickSpace div 2;
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
BlankFrm.Image1.Canvas.Brush.Color := clWhite;
// Draw chart border
BlankFrm.Image1.Canvas.Rectangle(0,0,imagewide,imagehi);
// Draw vertical axis
valincr := (max - min) / 20.0;
for i := 1 to 21 do
begin
Title := format('%8.2f',[max - ((i-1)*valincr)]);
strhi := BlankFrm.Image1.Canvas.TextHeight(Title);
xpos := XOffset;
Yvalue := max - (valincr * (i-1));
ypos := round(vhi * ( (max - Yvalue) / (max - min)));
ypos := ypos + vtop - strhi div 2;
BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title);
end;
BlankFrm.Image1.Canvas.MoveTo(hleft,vtop);
BlankFrm.Image1.Canvas.LineTo(hleft,vbottom);
// draw horizontal axis
BlankFrm.Image1.Canvas.MoveTo(hleft,vbottom + 10 );
BlankFrm.Image1.Canvas.LineTo(hright,vbottom + 10);
for i := 1 to nbars do
begin
ypos := vbottom + 10;
xpos := round((hwide / nbars)* i + hleft);
BlankFrm.Image1.Canvas.MoveTo(xpos,ypos);
ypos := ypos + 10;
BlankFrm.Image1.Canvas.LineTo(xpos,ypos);
Title := format('%d',[i]);
offset := BlankFrm.Image1.Canvas.TextWidth(Title) div 2;
strhi := BlankFrm.Image1.Canvas.TextHeight(Title);
xpos := xpos - offset;
ypos := ypos + strhi;
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title);
xpos := 20;
BlankFrm.Image1.Canvas.TextOut(xpos,ypos,'GROUPS:');
end;
for i := 1 to nbars do
begin
colcycle := i mod 4; // select a color for box
if (colcycle = 0) then BlankFrm.Image1.Canvas.Brush.Color := clBlue;
if (colcycle = 1) then BlankFrm.Image1.Canvas.Brush.Color := clGreen;
if (colcycle = 2) then BlankFrm.Image1.Canvas.Brush.Color := clFuchsia;
if (colcycle = 3) then BlankFrm.Image1.Canvas.Brush.Color := clLime;
// plot the box front face
X9 := round(hleft + ((i) * HTickSpace) - (barwidth / 2));
X10 := X9 + barwidth;
X1 := X9;
X2 := X10;
Ypos:= round((((max - hiqrtl[i-1]) / (max - min)) * vhi) + vtop);
Y1 := Ypos;
Ypos := round((((max - lowqrtl[i-1]) / (max - min)) * vhi) + vtop);
Y2 := Ypos;
BlankFrm.Image1.Canvas.Rectangle(X1,Y1,X2,Y2);
// draw upper 90th percentile line and end
X3 := round(X1 + barwidth / 2);
BlankFrm.Image1.Canvas.MoveTo(X3,Y1);
Ypos := round((((max - ninetypcnt[i-1]) / (max - min)) * vhi) + vtop);
Y3 := Ypos;
BlankFrm.Image1.Canvas.LineTo(X3,Y3);
BlankFrm.Image1.Canvas.MoveTo(X1,Y3);
BlankFrm.Image1.Canvas.LineTo(X2,Y3);
// draw lower 10th percentile line and end
BlankFrm.Image1.Canvas.MoveTo(X3,Y2);
Ypos := round((((max - tenpcnt[i-1]) / (max - min)) * vhi) + vtop);
Y4 := Ypos;
BlankFrm.Image1.Canvas.LineTo(X3,Y4);
BlankFrm.Image1.Canvas.MoveTo(X1,Y4);
BlankFrm.Image1.Canvas.LineTo(X2,Y4);
//plot the means line
BlankFrm.Image1.Canvas.Pen.Color := clRed;
BlankFrm.Image1.Canvas.Pen.Style := psDot;
Ypos := round((((max - means[i-1]) / (max - min)) * vhi) + vtop);
Y9 := Ypos;
BlankFrm.Image1.Canvas.MoveTo(X9,Y9);
BlankFrm.Image1.Canvas.LineTo(X10,Y9);
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
BlankFrm.Image1.Canvas.Pen.Style := psSolid;
//plot the median line
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
Ypos := round((((max - median[i-1]) / (max - min)) * vhi) + vtop);
Y9 := Ypos;
BlankFrm.Image1.Canvas.MoveTo(X9,Y9);
BlankFrm.Image1.Canvas.LineTo(X10,Y9);
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
end;
end;
//--------------------------------------------------------------------------
initialization
{$I boxplotunit.lrs}
end.

View File

@ -0,0 +1,302 @@
object BreakDownFrm: TBreakDownFrm
Left = 180
Height = 292
Top = 103
Width = 599
Caption = 'Breakdown'
ClientHeight = 292
ClientWidth = 599
OnShow = FormShow
LCLVersion = '0.9.28.2'
object AvailLabel: TLabel
Left = 7
Height = 14
Top = 7
Width = 90
Caption = 'Available Variables'
ParentColor = False
end
object AnalLabel: TLabel
Left = 231
Height = 14
Top = 7
Width = 98
Caption = 'Variables to Analyze'
ParentColor = False
end
object SelLabel: TLabel
Left = 231
Height = 14
Top = 224
Width = 140
Caption = 'Selected Continuous Variable'
ParentColor = False
end
object VarList: TListBox
Left = 6
Height = 256
Top = 24
Width = 168
ItemHeight = 0
MultiSelect = True
TabOrder = 0
end
object ListBox1: TListBox
Left = 232
Height = 185
Top = 23
Width = 176
ItemHeight = 0
TabOrder = 1
end
object DepVar: TEdit
Left = 231
Height = 21
Top = 240
Width = 175
TabOrder = 2
Text = 'DepVar'
end
object CheckGroup1: TCheckGroup
Left = 424
Height = 41
Top = 8
Width = 167
AutoFill = True
Caption = 'Option'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
Items.Strings = (
'One Way ANOVA'
)
TabOrder = 3
Data = {
0100000002
}
end
object ResetBtn: TButton
Left = 464
Height = 29
Top = 112
Width = 78
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 4
end
object CancelBtn: TButton
Left = 464
Height = 29
Top = 160
Width = 78
Caption = 'Cancel'
ModalResult = 2
OnClick = CancelBtnClick
TabOrder = 5
end
object OKBtn: TButton
Left = 464
Height = 29
Top = 209
Width = 78
Caption = 'Continue'
ModalResult = 1
OnClick = OKBtnClick
TabOrder = 6
end
object InBtn: TBitBtn
Left = 184
Height = 30
Top = 26
Width = 34
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
}
NumGlyphs = 0
OnClick = InBtnClick
TabOrder = 7
end
object OutBtn: TBitBtn
Left = 184
Height = 30
Top = 56
Width = 34
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = OutBtnClick
TabOrder = 8
end
object SelVarInBtn: TBitBtn
Left = 184
Height = 30
Top = 216
Width = 34
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
}
NumGlyphs = 0
OnClick = SelVarInBtnClick
TabOrder = 9
end
object SelVarOutBtn: TBitBtn
Left = 184
Height = 30
Top = 248
Width = 34
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = SelVarOutBtnClick
TabOrder = 10
end
object HelpBtn: TButton
Tag = 109
Left = 464
Height = 28
Top = 64
Width = 78
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 11
end
end

View File

@ -0,0 +1,242 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TBreakDownFrm','FORMDATA',[
'TPF0'#13'TBreakDownFrm'#12'BreakDownFrm'#4'Left'#3#180#0#6'Height'#3'$'#1#3
+'Top'#2'g'#5'Width'#3'W'#2#7'Caption'#6#9'Breakdown'#12'ClientHeight'#3'$'#1
+#11'ClientWidth'#3'W'#2#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#8'0.9.28.2'
+#0#6'TLabel'#10'AvailLabel'#4'Left'#2#7#6'Height'#2#14#3'Top'#2#7#5'Width'#2
+'Z'#7'Caption'#6#19'Available Variables'#11'ParentColor'#8#0#0#6'TLabel'#9'A'
+'nalLabel'#4'Left'#3#231#0#6'Height'#2#14#3'Top'#2#7#5'Width'#2'b'#7'Caption'
+#6#20'Variables to Analyze'#11'ParentColor'#8#0#0#6'TLabel'#8'SelLabel'#4'Le'
+'ft'#3#231#0#6'Height'#2#14#3'Top'#3#224#0#5'Width'#3#140#0#7'Caption'#6#28
+'Selected Continuous Variable'#11'ParentColor'#8#0#0#8'TListBox'#7'VarList'#4
+'Left'#2#6#6'Height'#3#0#1#3'Top'#2#24#5'Width'#3#168#0#10'ItemHeight'#2#0#11
+'MultiSelect'#9#8'TabOrder'#2#0#0#0#8'TListBox'#8'ListBox1'#4'Left'#3#232#0#6
+'Height'#3#185#0#3'Top'#2#23#5'Width'#3#176#0#10'ItemHeight'#2#0#8'TabOrder'
+#2#1#0#0#5'TEdit'#6'DepVar'#4'Left'#3#231#0#6'Height'#2#21#3'Top'#3#240#0#5
+'Width'#3#175#0#8'TabOrder'#2#2#4'Text'#6#6'DepVar'#0#0#11'TCheckGroup'#11'C'
+'heckGroup1'#4'Left'#3#168#1#6'Height'#2')'#3'Top'#2#8#5'Width'#3#167#0#8'Au'
+'toFill'#9#7'Caption'#6#6'Option'#28'ChildSizing.LeftRightSpacing'#2#6#28'Ch'
+'ildSizing.TopBottomSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsH'
+'omogenousChildResize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomogenousChi'
+'ldResize'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'ChildSiz'
+'ing.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29'cclLef'
+'tToRightThenTopToBottom'#27'ChildSizing.ControlsPerLine'#2#1#13'Items.Strin'
+'gs'#1#6#13'One Way ANOVA'#0#8'TabOrder'#2#3#4'Data'#10#5#0#0#0#1#0#0#0#2#0#0
+#7'TButton'#8'ResetBtn'#4'Left'#3#208#1#6'Height'#2#29#3'Top'#2'p'#5'Width'#2
+'N'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#4#0#0
+#7'TButton'#9'CancelBtn'#4'Left'#3#208#1#6'Height'#2#29#3'Top'#3#160#0#5'Wid'
+'th'#2'N'#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#7'OnClick'#7#14'CancelB'
+'tnClick'#8'TabOrder'#2#5#0#0#7'TButton'#5'OKBtn'#4'Left'#3#208#1#6'Height'#2
+#29#3'Top'#3#209#0#5'Width'#2'N'#7'Caption'#6#8'Continue'#11'ModalResult'#2#1
+#7'OnClick'#7#10'OKBtnClick'#8'TabOrder'#2#6#0#0#7'TBitBtn'#5'InBtn'#4'Left'
+#3#184#0#6'Height'#2#30#3'Top'#2#26#5'Width'#2'"'#10'Glyph.Data'#10':'#4#0#0
+'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0
+#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'
+#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'
+#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255
+#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211
+#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130
+#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'
+#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171
+#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204
+#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'
+#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255
+'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161
+'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255
,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#10'InBtnClick'#8'TabOrder'
+#2#7#0#0#7'TBitBtn'#6'OutBtn'#4'Left'#3#184#0#6'Height'#2#30#3'Top'#2'8'#5'W'
+'idth'#2'"'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0
+'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0
+#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'
+#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'
+#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255
+'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'
+#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195
+'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144
+#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255
+#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255
+#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135
+#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#11'OutBtnClick'#8'TabOrder'#2#8#0#0#7'TBitBtn'#11'SelV'
+'arInBtn'#4'Left'#3#184#0#6'Height'#2#30#3'Top'#3#216#0#5'Width'#2'"'#10'Gly'
+'ph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0
+#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'
+#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'
+#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'
+#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255
+#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165
+#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201
+#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140
+'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255
+#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154
+#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194
+#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'
+#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'
+#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/'
+'x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#16'SelVarInBtnCli'
+'ck'#8'TabOrder'#2#9#0#0#7'TBitBtn'#12'SelVarOutBtn'#4'Left'#3#184#0#6'Heigh'
+'t'#2#30#3'Top'#3#248#0#5'Width'#2'"'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM'
+'6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0
+#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169
+'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'
+#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255
+'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0
+#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255
+#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137
+#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255
+#255#255#0#255#255#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158
+#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255
+#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255
+'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139
+#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255
+'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195
+'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'
+#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#17'SelVarOutBtnClick'#8'TabOrder'#2
+#10#0#0#7'TButton'#7'HelpBtn'#3'Tag'#2'm'#4'Left'#3#208#1#6'Height'#2#28#3'T'
+'op'#2'@'#5'Width'#2'N'#7'Caption'#6#4'Help'#7'OnClick'#7#12'HelpBtnClick'#8
+'TabOrder'#2#11#0#0#0
]);

View File

@ -0,0 +1,559 @@
unit BreakDownUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls, Buttons, MainUnit, Globals, functionsLib, OutPutUnit,
DataProcs, contexthelpunit;
type
{ TBreakDownFrm }
TBreakDownFrm = class(TForm)
HelpBtn: TButton;
InBtn: TBitBtn;
OutBtn: TBitBtn;
SelVarInBtn: TBitBtn;
SelVarOutBtn: TBitBtn;
ResetBtn: TButton;
CancelBtn: TButton;
OKBtn: TButton;
CheckGroup1: TCheckGroup;
DepVar: TEdit;
AvailLabel: TLabel;
AnalLabel: TLabel;
SelLabel: TLabel;
ListBox1: TListBox;
VarList: TListBox;
procedure CancelBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure InBtnClick(Sender: TObject);
procedure OKBtnClick(Sender: TObject);
procedure OutBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
procedure SelVarInBtnClick(Sender: TObject);
procedure SelVarOutBtnClick(Sender: TObject);
private
{ private declarations }
{ Private declarations }
Minimum, Maximum, levels, displace, subscript : IntDyneVec;
Freq : IntDyneVec;
Selected : IntDyneVec;
mean, variance, Stddev, SS : DblDyneVec;
index, NoSelected, ListSize, Dependentvar, X, length_array : integer;
ptr1, ptr2, sum, grandsum : integer;
xsumtotal, xsqrtotal, grandsumx, grandsumx2, value, SD : double;
SST, SSW, SSB, MSW, MSB, F, FProb, DF1, DF2 : double;
cellstring : string;
outline : string;
valstr : string;
dataread : boolean;
function Index_Pos(VAR X1 : IntDyneVec;
VAR displace1 : IntDyneVec;
ListSize1 : integer;
Sender: TObject) : integer;
public
{ public declarations }
end;
var
BreakDownFrm: TBreakDownFrm;
implementation
{ TBreakDownFrm }
procedure TBreakDownFrm.ResetBtnClick(Sender: TObject);
var
i : integer;
begin
VarList.Clear;
ListBox1.Clear;
DepVar.Text := '';
InBtn.Visible := true;
OutBtn.Visible := false;
SelVarInBtn.Visible := true;
SelVarOutBtn.Visible := false;
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
end;
procedure TBreakDownFrm.SelVarInBtnClick(Sender: TObject);
var
index1 : integer;
begin
index1 := VarList.ItemIndex;
DepVar.Text := VarList.Items.Strings[index1];
SelVarInBtn.Visible := false;
SelVarOutBtn.Visible := true;
end;
procedure TBreakDownFrm.SelVarOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(DepVar.Text);
SelVarOutBtn.Visible := false;
SelVarInBtn.Visible := true;
end;
procedure TBreakDownFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TBreakDownFrm.HelpBtnClick(Sender: TObject);
begin
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
procedure TBreakDownFrm.CancelBtnClick(Sender: TObject);
begin
BreakDownFrm.Hide;
end;
procedure TBreakDownFrm.InBtnClick(Sender: TObject);
var
index1, i : integer;
begin
index1 := VarList.Items.Count;
i := 0;
while i < index1 do
begin
if (VarList.Selected[i]) then
begin
ListBox1.Items.Add(VarList.Items.Strings[i]);
VarList.Items.Delete(i);
index1 := index1 - 1;
i := 0;
end
else i := i + 1;
end;
OutBtn.Visible := true;
if VarList.Items.Count = 0 then InBtn.Visible := false;
end;
procedure TBreakDownFrm.OKBtnClick(Sender: TObject);
label Label1, Label3, Label4, NextStep, FirstOne, SecondOne, ThirdOne, LastStep;
var
i, j : integer;
tempval : string;
begin
// Identify columns of variables to analyze and the dependent var.
NoSelected := ListBox1.Items.Count;
// Get column no. of dependent variable
cellstring := DepVar.Text;
for i := 1 to NoVariables do
if cellstring = OS3MainFrm.DataGrid.Cells[i,0] then dependentvar := i;
// Allocate heap
SetLength(Minimum,NoVariables);
SetLength(Maximum,NoVariables);
SetLength(levels,NoVariables);
SetLength(displace,NoVariables);
SetLength(subscript,NoVariables);
SetLength(Selected,NoVariables);
// Get selected variables
for i := 1 to NoSelected do
begin
cellstring := ListBox1.Items.Strings[i-1];
for j := 1 to NoVariables do
if cellstring = OS3MainFrm.DataGrid.Cells[j,0] then Selected[i-1] := j;
end;
Selected[NoSelected] := dependentvar;
ListSize := NoSelected;
// Get maximum and minimum levels in each variable
for i := 1 to ListSize do
begin
index := Selected[i-1];
Minimum[i-1] := round(StrToFloat(OS3MainFrm.DataGrid.Cells[index,1]));
Maximum[i-1] := Minimum[i-1];
for j := 1 to NoCases do
begin
if GoodRecord(j,NoSelected,Selected) then
begin
X := round(StrToFloat(OS3MainFrm.DataGrid.Cells[index,j]));
if X < Minimum[i-1] then Minimum[i-1] := X;
if X > Maximum[i-1] then Maximum[i-1] := X;
end;
end;
end;
// Calculate number of levels for each variable
for i := 1 to ListSize do
levels[i-1] := Maximum[i-1] - Minimum[i-1] + 1;
displace[ListSize-1] := 1;
if ListSize > 1 then
begin
for i := ListSize-1 downto 1 do
displace[i-1] := levels[i] * displace[i];
end;
// Now, tabulate
length_array := 1;
for i := 1 to ListSize do length_array := Length_array * levels[i-1];
// initialize values
SetLength(Freq,length_array+1);
SetLength(mean,length_array+1);
SetLength(variance,length_array+1);
SetLength(Stddev,length_array+1);
SetLength(SS,length_array+1);
for i := 0 to length_array do
begin
Freq[i] := 0;
mean[i] := 0.0;
variance[i] := 0.0;
Stddev[i] := 0.0;
SS[i] := 0.0;
end;
// tabulate
for i := 1 to NoCases do
begin
dataread := false;
if GoodRecord(i,NoSelected,Selected) then
begin
for j := 1 to ListSize do
begin
index := Selected[j-1];
X := round(StrToFLoat(OS3MainFrm.DataGrid.Cells[index,i]));
X := X - Minimum[j-1] + 1;
subscript[j-1] := X;
dataread := true;
end;
end;
if dataread then
begin
j := Index_Pos(subscript,displace,ListSize, self);
Freq[j] := Freq[j] + 1;
index := dependentvar;
tempval := Trim(OS3MainFrm.DataGrid.Cells[index,i]);
if tempval <> '' then
begin
value := StrToFloat(tempval);
mean[j] := mean[j] + value;
variance[j] := variance[j] + (value * value);
end;
end;
end;
// setup the output
OutPutFrm.RichEdit.Clear;
// OutPutFrm.RichEdit.ParaGraph.Alignment := taLeftJustify;
OutPutFrm.RichEdit.Lines.Add('BREAKDOWN ANALYSIS PROGRAM');
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('VARIABLE SEQUENCE FOR THE BREAKDOWN:');
for i := 1 to ListSize do
begin
index := Selected[i-1];
outline := format('%-10s (Variable %3d) Lowest level = %2d Highest level = %2d',
[OS3MainFrm.DataGrid.Cells[index,0],i, Minimum[i-1], Maximum[i-1]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
//OutPutFrm.ShowModal;
// Breakdown the data
ptr1 := ListSize - 1;
ptr2 := ListSize;
for i := 1 to ListSize do subscript[i-1] := 1;
sum := 0;
xsumtotal := 0.0;
xsqrtotal := 0.0;
grandsum := 0;
grandsumx := 0.0;
grandsumx2 := 0.0;
Label1:
index := Index_Pos(subscript,displace,ListSize,self);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Variable levels: ');
for i := 1 to ListSize do
begin
j := Selected[i-1];
outline := format('%-10s level = %3d',
[OS3MainFrm.DataGrid.Cells[j,0],
Minimum[i-1] + subscript[i-1] - 1]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('');
sum := sum + Freq[index];
xsumtotal := xsumtotal + mean[index];
xsqrtotal := xsqrtotal + variance[index];
OutPutFrm.RichEdit.Lines.Add('Freq. Mean Std. Dev.');
outline := format('%3d',[Freq[index]]);
if Freq[index] > 0 then
begin
valstr := format(' %8.3f ',[mean[index] / Freq[index]]);
outline := outline + valstr;
end
else outline := outline +' ******** ';
if Freq[index] > 1 then
begin
SS[index] := variance[index];
variance[index] := variance[index] - (mean[index] * mean[index] / Freq[index]);
variance[index] := variance[index] / (Freq[index] - 1);
Stddev[index] := sqrt(variance[index]);
valstr := format('%8.3f ',[Stddev[index]]);
outline := outline + valstr;
end
else outline := outline + '********';
OutPutFrm.RichEdit.Lines.Add(outline);
subscript[ptr2-1] := subscript[ptr2-1] + 1;
if subscript[ptr2-1] <= levels[ptr2-1] then goto Label1;
outline := format('Number of observations accross levels = %3d',[sum]);
OutPutFrm.RichEdit.Lines.Add(outline);
if sum > 0 then
begin
outline := format('Mean accross levels = %8.3f',[ xsumtotal / sum]);
OutPutFrm.RichEdit.Lines.Add(outline);
end
else OutPutFrm.RichEdit.Lines.Add('Mean accross levels = ********');
if sum > 1 then
begin
SD := sqrt( (xsqrtotal - (xsumtotal * xsumtotal) / sum) / (sum - 1));
outline := format('Std. Dev. accross levels = %8.3f',[SD]);
OutPutFrm.RichEdit.Lines.Add(outline);
end
else OutPutFrm.RichEdit.Lines.Add('Std. Dev. accross levels = *******');
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
grandsum := grandsum + sum;
grandsumx := grandsumx + xsumtotal;
grandsumx2 := grandsumx2 + xsqrtotal;
sum := 0;
xsumtotal := 0.0;
xsqrtotal := 0.0;
if ptr1 < 1 then goto NextStep;
subscript[ptr1-1] :=subscript[ptr1-1] + 1;
if subscript[ptr1-1] <= levels[ptr1-1] then goto Label4;
Label3:
ptr1 := ptr1 - 1;
if ptr1 < 1 then goto NextStep;
if subscript[ptr1-1] > levels[ptr1-1] then goto Label3;
subscript[ptr1-1] := subscript[ptr1-1] + 1;
if subscript[ptr1-1] > levels[ptr1-1] then goto Label3;
Label4:
for i := ptr1+1 to ListSize do subscript[i-1] := 1;
ptr1 := ListSize - 1;
if ptr1 < 1 then goto NextStep;
goto Label1;
NextStep:
outline := format('Grand number of observations accross all categories = %3d',
[grandsum]);
OutPutFrm.RichEdit.Lines.Add(outline);
if grandsum > 0 then
begin
outline := format('Overall Mean = %8.3f',[grandsumx / grandsum]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
if grandsum > 1 then
begin
SD := sqrt((grandsumx2 - (grandsumx * grandsumx) / grandsum) / (grandsum - 1));
outline := format('Overall standard deviation = %8.3f',[SD]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
// Do ANOVA's if requested
if CheckGroup1.CheckEnabled[0] then
begin
OutPutFrm.RichEdit.Lines.Add('ANALYSES OF VARIANCE SUMMARY TABLES');
OutPutFrm.RichEdit.Lines.Add('');
ptr1 := ListSize - 1;
ptr2 := ListSize;
for i := 1 to ListSize do subscript[i-1] := 1;
SSB := 0.0;
SSW := 0.0;
MSB := 0.0;
MSW := 0.0;
grandsum := 0;
grandsumx := 0.0;
grandsumx2 := 0.0;
DF1 := 0.0;
DF2 := 0.0;
FirstOne:
index := Index_Pos(subscript,displace,ListSize, self);
if Freq[index] > 0 then
begin
OutPutFrm.RichEdit.Lines.Add('Variable levels: ');
for i := 1 to ListSize do
begin
j := Selected[i-1];
outline := format('%-10s level = %3d',
[OS3MainFrm.DataGrid.Cells[j,0], Minimum[i-1] + subscript[i-1] - 1]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('');
// build sumsof squares for this set
DF1 := DF1 + 1;
DF2 := DF2 + Freq[index] - 1;
grandsum := grandsum + Freq[index];
grandsumx := grandsumx + mean[index];
grandsumx2 := grandsumx2 + SS[index];
SSW := SSW + SS[index] - (mean[index] * mean[index] / Freq[index]);
end;
subscript[ptr2-1] := subscript[ptr2-1] + 1;
if subscript[ptr2-1] <= levels[ptr2-1] then goto FirstOne;
if ((grandsum > 0.0) and (DF1 > 1) and (DF2 > 1) and (SSW > 0.0)) then
begin
// build and show anova table
SST := grandsumx2 - (grandsumx * grandsumx / grandsum);
SSB := SST - SSW;
DF1 := DF1 - 1.0; // no. of groups - 1
MSB := SSB / DF1;
MSW := SSW / DF2;
F := MSB / MSW;
FProb := probf(DF1,DF2,F);
OutPutFrm.RichEdit.Lines.Add('SOURCE D.F. SS MS F Prob.>F');
outline := format('GROUPS %2.0f %8.2f %8.2f %8.3f %6.4f',
[DF1,SSB,MSB,F,FProb]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('WITHIN %2.0f %8.2f %8.2f',
[DF2,SSW,MSW]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('TOTAL %2d %8.2f',[grandsum-1,SST]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
end
else begin
OutPutFrm.RichEdit.Lines.Add('Insufficient data for ANOVA');
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
end;
SSB := 0.0;
SSW := 0.0;
MSB := 0.0;
MSW := 0.0;
grandsum := 0;
grandsumx := 0.0;
grandsumx2 := 0.0;
DF1 := 0.0;
DF2 := 0.0;
if ptr1 < 1 then goto LastStep;
subscript[ptr1-1] := subscript[ptr1-1] + 1;
if subscript[ptr1-1] <= levels[ptr1-1] then goto ThirdOne;
SecondOne:
ptr1 := ptr1 - 1;
if ptr1 < 1 then goto LastStep;
if subscript[ptr1-1] > levels[ptr1-1] then goto SecondOne;
subscript[ptr1-1] := subscript[ptr1-1] + 1;
if subscript[ptr1-1] > levels[ptr1-1] then goto SecondOne;
ThirdOne:
for i := ptr1+1 to ListSize do subscript[i-1] := 1;
ptr1 := ListSize - 1;
if ptr1 < 1 then goto LastStep;
goto FirstOne;
LastStep:
// do anova for all cells
OutPutFrm.RichEdit.Lines.Add('ANOVA FOR ALL CELLS');
OutPutFrm.RichEdit.Lines.Add('');
SST := 0.0;
SSW := 0.0;
DF2 := 0.0;
DF1 := 0.0;
grandsumx := 0.0;
grandsum := 0;
for i := 1 to length_array do
begin
if Freq[i] > 0 then
begin
SST := SST + SS[i];
grandsum := grandsum + Freq[i];
grandsumx := grandsumx + mean[i];
SSW := SSW + (SS[i] - (mean[i] * mean[i] / Freq[i]));
DF1 := DF1 + 1.0;
DF2 := DF2 + (Freq[i] - 1);
end;
end;
if ( (DF1 > 1.0) and (DF2 > 1.0) and (SSW > 0.0)) then
begin
SST := SST - (grandsumx * grandsumx / grandsum);
SSB := SST - SSW;
DF1 := DF1 - 1;
MSB := SSB / DF1;
MSW := SSW / DF2;
F := MSB / MSW;
FProb := probf(DF1, DF2, F);
OutPutFrm.RichEdit.Lines.Add('SOURCE D.F. SS MS F Prob.>F');
outline := format('GROUPS %2.0f %8.2f %8.2f %8.3f %6.4f',
[DF1,SSB,MSB,F,FProb]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('WITHIN %2.0f %8.2f %8.2f',
[DF2,SSW,MSW]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('TOTAL %2d %8.2f',[grandsum-1,SST]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('FINISHED');
OutPutFrm.ShowModal;
end
else
begin
OutPutFrm.RichEdit.Lines.Add('Only 1 group. No ANOVA possible.');
OutPutFrm.ShowModal;
end;
end;
SS := nil;
Stddev := nil;
variance := nil;
mean := nil;
Freq := nil;
selected := nil;
subscript := nil;
displace := nil;
levels := nil;
Maximum := nil;
Minimum := nil;
BreakDownFrm.Hide;
end;
procedure TBreakDownFrm.OutBtnClick(Sender: TObject);
var
index1: integer;
begin
index1 := ListBox1.ItemIndex;
VarList.Items.Add(ListBox1.Items.Strings[index1]);
ListBox1.Items.Delete(index1);
InBtn.Visible := true;
if ListBox1.Items.Count = 0 then OutBtn.Visible := false;
end;
function TBreakDownFrm.Index_Pos(var X1: IntDyneVec; var displace1: IntDyneVec;
ListSize1: integer; Sender: TObject): integer;
var
index1, i : integer;
begin
index1 := X1[ListSize-1];
for i := 1 to ListSize - 1 do
index1 := index1 + ((X1[i-1] - 1) * displace[i-1]);
Result := index1;
end;
initialization
{$I breakdownunit.lrs}
end.

View File

@ -0,0 +1,553 @@
object BubbleForm: TBubbleForm
Left = 133
Height = 412
Top = 122
Width = 550
Caption = 'Repeated Measures Bubble Plot'
ClientHeight = 412
ClientWidth = 550
OnShow = FormShow
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 8
Height = 14
Top = 16
Width = 48
Caption = 'Variables:'
ParentColor = False
end
object Label2: TLabel
Left = 230
Height = 14
Top = 32
Width = 172
Caption = 'Bubble Identification Nuber Variable'
ParentColor = False
end
object Label3: TLabel
Left = 231
Height = 14
Top = 104
Width = 77
Caption = 'X Value Variable'
ParentColor = False
end
object Label4: TLabel
Left = 230
Height = 14
Top = 176
Width = 77
Caption = 'Y Value Variable'
ParentColor = False
end
object Label5: TLabel
Left = 230
Height = 14
Top = 248
Width = 96
Caption = 'Bubble Size Variable'
ParentColor = False
end
object Label6: TLabel
Left = 8
Height = 14
Top = 328
Width = 50
Caption = 'Main Title:'
ParentColor = False
end
object Label7: TLabel
Left = 8
Height = 14
Top = 360
Width = 39
Caption = 'X Label:'
ParentColor = False
end
object Label8: TLabel
Left = 240
Height = 14
Top = 360
Width = 39
Caption = 'Y Label:'
ParentColor = False
end
object VarList: TListBox
Left = 8
Height = 274
Top = 32
Width = 173
ItemHeight = 0
TabOrder = 0
end
object IDInBtn: TBitBtn
Left = 192
Height = 26
Top = 32
Width = 29
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
}
NumGlyphs = 0
OnClick = IDInBtnClick
TabOrder = 1
end
object IDOutBtn: TBitBtn
Left = 192
Height = 26
Top = 64
Width = 29
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = IDOutBtnClick
TabOrder = 2
end
object XInBtn: TBitBtn
Left = 192
Height = 26
Top = 104
Width = 29
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
}
NumGlyphs = 0
OnClick = XInBtnClick
TabOrder = 3
end
object XOutBtn: TBitBtn
Left = 192
Height = 26
Top = 136
Width = 29
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = XOutBtnClick
TabOrder = 4
end
object YInBtn: TBitBtn
Left = 192
Height = 26
Top = 176
Width = 29
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
}
NumGlyphs = 0
OnClick = YInBtnClick
TabOrder = 5
end
object YOutBtn: TBitBtn
Left = 192
Height = 26
Top = 208
Width = 29
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = YOutBtnClick
TabOrder = 6
end
object SizeInBtn: TBitBtn
Left = 192
Height = 26
Top = 248
Width = 29
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
}
NumGlyphs = 0
OnClick = SizeInBtnClick
TabOrder = 7
end
object SizeOutBtn: TBitBtn
Left = 192
Height = 26
Top = 280
Width = 29
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = SizeOutBtnClick
TabOrder = 8
end
object BubbleEdit: TEdit
Left = 232
Height = 21
Top = 48
Width = 167
TabOrder = 9
Text = 'BubbleEdit'
end
object XEdit: TEdit
Left = 230
Height = 21
Top = 120
Width = 166
TabOrder = 10
Text = 'XEdit'
end
object YEdit: TEdit
Left = 230
Height = 21
Top = 192
Width = 165
TabOrder = 11
Text = 'YEdit'
end
object SizeEdit: TEdit
Left = 230
Height = 21
Top = 264
Width = 166
TabOrder = 12
Text = 'SizeEdit'
end
object ResetBtn: TButton
Left = 443
Height = 40
Top = 80
Width = 94
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 13
end
object CancelBtn: TButton
Left = 440
Height = 38
Top = 144
Width = 98
Caption = 'Cancel'
ModalResult = 2
TabOrder = 14
end
object ComputeBtn: TButton
Left = 440
Height = 38
Top = 208
Width = 98
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 15
end
object ReturnBtn: TButton
Left = 440
Height = 38
Top = 272
Width = 98
Caption = 'Return'
ModalResult = 1
TabOrder = 16
end
object TitleEdit: TEdit
Left = 63
Height = 21
Top = 321
Width = 332
TabOrder = 17
Text = 'TitleEdit'
end
object XLabelEdit: TEdit
Left = 63
Height = 21
Top = 353
Width = 157
TabOrder = 18
Text = 'XLabelEdit'
end
object YLabelEdit: TEdit
Left = 280
Height = 21
Top = 353
Width = 159
TabOrder = 19
Text = 'YLabelEdit'
end
object TransformChk: TCheckBox
Left = 8
Height = 17
Top = 384
Width = 335
Caption = 'Transform Data Grid for ANOVA (Treatments by Subjects ANOVA)'
TabOrder = 20
end
object HelpBtn: TButton
Tag = 110
Left = 440
Height = 42
Top = 16
Width = 96
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 21
end
end

View File

@ -0,0 +1,460 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TBubbleForm','FORMDATA',[
'TPF0'#11'TBubbleForm'#10'BubbleForm'#4'Left'#3#133#0#6'Height'#3#156#1#3'Top'
+#2'z'#5'Width'#3'&'#2#7'Caption'#6#29'Repeated Measures Bubble Plot'#12'Clie'
+'ntHeight'#3#156#1#11'ClientWidth'#3'&'#2#6'OnShow'#7#8'FormShow'#10'LCLVers'
+'ion'#6#8'0.9.28.2'#0#6'TLabel'#6'Label1'#4'Left'#2#8#6'Height'#2#14#3'Top'#2
+#16#5'Width'#2'0'#7'Caption'#6#10'Variables:'#11'ParentColor'#8#0#0#6'TLabel'
+#6'Label2'#4'Left'#3#230#0#6'Height'#2#14#3'Top'#2' '#5'Width'#3#172#0#7'Cap'
+'tion'#6'$Bubble Identification Nuber Variable'#11'ParentColor'#8#0#0#6'TLab'
+'el'#6'Label3'#4'Left'#3#231#0#6'Height'#2#14#3'Top'#2'h'#5'Width'#2'M'#7'Ca'
+'ption'#6#16'X Value Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'L'
+'eft'#3#230#0#6'Height'#2#14#3'Top'#3#176#0#5'Width'#2'M'#7'Caption'#6#16'Y '
+'Value Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'Label5'#4'Left'#3#230#0#6
+'Height'#2#14#3'Top'#3#248#0#5'Width'#2'`'#7'Caption'#6#20'Bubble Size Varia'
+'ble'#11'ParentColor'#8#0#0#6'TLabel'#6'Label6'#4'Left'#2#8#6'Height'#2#14#3
+'Top'#3'H'#1#5'Width'#2'2'#7'Caption'#6#11'Main Title:'#11'ParentColor'#8#0#0
+#6'TLabel'#6'Label7'#4'Left'#2#8#6'Height'#2#14#3'Top'#3'h'#1#5'Width'#2''''
+#7'Caption'#6#8'X Label:'#11'ParentColor'#8#0#0#6'TLabel'#6'Label8'#4'Left'#3
+#240#0#6'Height'#2#14#3'Top'#3'h'#1#5'Width'#2''''#7'Caption'#6#8'Y Label:'
+#11'ParentColor'#8#0#0#8'TListBox'#7'VarList'#4'Left'#2#8#6'Height'#3#18#1#3
+'Top'#2' '#5'Width'#3#173#0#10'ItemHeight'#2#0#8'TabOrder'#2#0#0#0#7'TBitBtn'
+#7'IDInBtn'#4'Left'#3#192#0#6'Height'#2#26#3'Top'#2' '#5'Width'#2#29#10'Glyp'
+'h.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0
+#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'
+#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'
+#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'
+#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255
+#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165
+#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201
+#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140
+'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255
+#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154
+#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194
+#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'
+#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'
+#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/'
+'x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#12'IDInBtnClick'#8
+'TabOrder'#2#1#0#0#7'TBitBtn'#8'IDOutBtn'#4'Left'#3#192#0#6'Height'#2#26#3'T'
+'op'#2'@'#5'Width'#2#29#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0
+#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0
+#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'
+#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161
+'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131
+#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/'
+'x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'
+#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255
+#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132
+#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255
+#255#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154
+#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255
+#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201
+#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'
+#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'Num'
+'Glyphs'#2#0#7'OnClick'#7#13'IDOutBtnClick'#8'TabOrder'#2#2#0#0#7'TBitBtn'#6
+'XInBtn'#4'Left'#3#192#0#6'Height'#2#26#3'Top'#2'h'#5'Width'#2#29#10'Glyph.D'
+'ata'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0
+#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184
+#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177
+'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255
+'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255
+#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255
+#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142
+#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'
+#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162
+#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255
+#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130
+#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199
+'t'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255
+'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'
+#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'XInBtnClick'#8
+'TabOrder'#2#3#0#0#7'TBitBtn'#7'XOutBtn'#4'Left'#3#192#0#6'Height'#2#26#3'To'
+'p'#3#136#0#5'Width'#2#29#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0
+#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'
+#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'
+#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161
,'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131
+#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/'
+'x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'
+#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255
+#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132
+#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255
+#255#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154
+#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255
+#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201
+#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'
+#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'Num'
+'Glyphs'#2#0#7'OnClick'#7#12'XOutBtnClick'#8'TabOrder'#2#4#0#0#7'TBitBtn'#6
+'YInBtn'#4'Left'#3#192#0#6'Height'#2#26#3'Top'#3#176#0#5'Width'#2#29#10'Glyp'
+'h.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0
+#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'
+#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'
+#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'
+#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255
+#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165
+#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201
+#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140
+'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255
+#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154
+#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194
+#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'
+#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'
,#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/'
+'x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'YInBtnClick'#8
+'TabOrder'#2#5#0#0#7'TBitBtn'#7'YOutBtn'#4'Left'#3#192#0#6'Height'#2#26#3'To'
+'p'#3#208#0#5'Width'#2#29#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0
+#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'
+#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'
+#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161
+'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131
+#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/'
+'x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'
+#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255
+#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132
+#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255
+#255#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154
+#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255
+#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201
+#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'
+#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'Num'
+'Glyphs'#2#0#7'OnClick'#7#12'YOutBtnClick'#8'TabOrder'#2#6#0#0#7'TBitBtn'#9
+'SizeInBtn'#4'Left'#3#192#0#6'Height'#2#26#3'Top'#3#248#0#5'Width'#2#29#10'G'
+'lyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0
+#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184
+'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255
+';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'
+#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255
+#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147
+#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'
+#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218
+#174#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147
+#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255
+'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'
+#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'
+#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'
+#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#14'SizeInBt'
+'nClick'#8'TabOrder'#2#7#0#0#7'TBitBtn'#10'SizeOutBtn'#4'Left'#3#192#0#6'Hei'
+'ght'#2#26#3'Top'#3#24#1#5'Width'#2#29#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'B'
+'M6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0
+#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169
+'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'
+#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255
+'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0
+#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255
+#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137
+#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255
+#255#255#0#255#255#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158
+#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255
+#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255
+'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139
+#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255
+'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195
+'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'
+#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#15'SizeOutBtnClick'#8'TabOrder'#2#8
+#0#0#5'TEdit'#10'BubbleEdit'#4'Left'#3#232#0#6'Height'#2#21#3'Top'#2'0'#5'Wi'
+'dth'#3#167#0#8'TabOrder'#2#9#4'Text'#6#10'BubbleEdit'#0#0#5'TEdit'#5'XEdit'
+#4'Left'#3#230#0#6'Height'#2#21#3'Top'#2'x'#5'Width'#3#166#0#8'TabOrder'#2#10
+#4'Text'#6#5'XEdit'#0#0#5'TEdit'#5'YEdit'#4'Left'#3#230#0#6'Height'#2#21#3'T'
+'op'#3#192#0#5'Width'#3#165#0#8'TabOrder'#2#11#4'Text'#6#5'YEdit'#0#0#5'TEdi'
+'t'#8'SizeEdit'#4'Left'#3#230#0#6'Height'#2#21#3'Top'#3#8#1#5'Width'#3#166#0
+#8'TabOrder'#2#12#4'Text'#6#8'SizeEdit'#0#0#7'TButton'#8'ResetBtn'#4'Left'#3
+#187#1#6'Height'#2'('#3'Top'#2'P'#5'Width'#2'^'#7'Caption'#6#5'Reset'#7'OnCl'
+'ick'#7#13'ResetBtnClick'#8'TabOrder'#2#13#0#0#7'TButton'#9'CancelBtn'#4'Lef'
+'t'#3#184#1#6'Height'#2'&'#3'Top'#3#144#0#5'Width'#2'b'#7'Caption'#6#6'Cance'
+'l'#11'ModalResult'#2#2#8'TabOrder'#2#14#0#0#7'TButton'#10'ComputeBtn'#4'Lef'
+'t'#3#184#1#6'Height'#2'&'#3'Top'#3#208#0#5'Width'#2'b'#7'Caption'#6#7'Compu'
+'te'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#15#0#0#7'TButton'#9'Retu'
+'rnBtn'#4'Left'#3#184#1#6'Height'#2'&'#3'Top'#3#16#1#5'Width'#2'b'#7'Caption'
+#6#6'Return'#11'ModalResult'#2#1#8'TabOrder'#2#16#0#0#5'TEdit'#9'TitleEdit'#4
+'Left'#2'?'#6'Height'#2#21#3'Top'#3'A'#1#5'Width'#3'L'#1#8'TabOrder'#2#17#4
+'Text'#6#9'TitleEdit'#0#0#5'TEdit'#10'XLabelEdit'#4'Left'#2'?'#6'Height'#2#21
,#3'Top'#3'a'#1#5'Width'#3#157#0#8'TabOrder'#2#18#4'Text'#6#10'XLabelEdit'#0#0
+#5'TEdit'#10'YLabelEdit'#4'Left'#3#24#1#6'Height'#2#21#3'Top'#3'a'#1#5'Width'
+#3#159#0#8'TabOrder'#2#19#4'Text'#6#10'YLabelEdit'#0#0#9'TCheckBox'#12'Trans'
+'formChk'#4'Left'#2#8#6'Height'#2#17#3'Top'#3#128#1#5'Width'#3'O'#1#7'Captio'
+'n'#6'<Transform Data Grid for ANOVA (Treatments by Subjects ANOVA)'#8'TabOr'
+'der'#2#20#0#0#7'TButton'#7'HelpBtn'#3'Tag'#2'n'#4'Left'#3#184#1#6'Height'#2
+'*'#3'Top'#2#16#5'Width'#2'`'#7'Caption'#6#4'Help'#7'OnClick'#7#12'HelpBtnCl'
+'ick'#8'TabOrder'#2#21#0#0#0
]);

View File

@ -0,0 +1,592 @@
unit BubblePlotUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, MainUnit, Globals, functionsLib, OutPutUnit, DataProcs,
DictionaryUnit, Math, Clipbrd, Buttons, contexthelpunit;
type
{ TBubbleForm }
TBubbleForm = class(TForm)
HelpBtn: TButton;
TransformChk: TCheckBox;
YLabelEdit: TEdit;
Label8: TLabel;
XLabelEdit: TEdit;
Label7: TLabel;
TitleEdit: TEdit;
Label6: TLabel;
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
IDInBtn: TBitBtn;
IDOutBtn: TBitBtn;
XInBtn: TBitBtn;
XOutBtn: TBitBtn;
YInBtn: TBitBtn;
YOutBtn: TBitBtn;
SizeInBtn: TBitBtn;
SizeOutBtn: TBitBtn;
BubbleEdit: TEdit;
SizeEdit: TEdit;
YEdit: TEdit;
XEdit: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
VarList: TListBox;
procedure ComputeBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure IDInBtnClick(Sender: TObject);
procedure IDOutBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
procedure SizeInBtnClick(Sender: TObject);
procedure SizeOutBtnClick(Sender: TObject);
procedure XInBtnClick(Sender: TObject);
procedure XOutBtnClick(Sender: TObject);
procedure YInBtnClick(Sender: TObject);
procedure YOutBtnClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
BubbleForm: TBubbleForm;
implementation
uses BlankFrmUnit;
{ TBubbleForm }
procedure TBubbleForm.IDInBtnClick(Sender: TObject);
VAR
i : integer;
index : integer;
begin
index := VarList.Items.Count;
i := 0;
while i < index do
begin
if (VarList.Selected[i]) then
begin
BubbleEdit.Text := VarList.Items.Strings[i];
VarList.Items.Delete(i);
index := index - 1;
i := 0;
end
else i := i + 1;
end;
IDOutBtn.Visible := true;
IDInBtn.Visible := false;
end;
procedure TBubbleForm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TBubbleForm.HelpBtnClick(Sender: TObject);
begin
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
procedure TBubbleForm.ComputeBtnClick(Sender: TObject);
var
BubbleCol, XCol, YCol, SizeCol, i, j, LabelWide, TextHi, Xpos : integer;
ImageWide, ImageHi, Xstart, Xend, Ystart, Yend, Yincr, cell : integer;
Xmin, Xmax, Xrange, Xstep, intcell, noreplications, minrep, maxrep : integer;
MaxBubSize, MinBubSize, nobubbles, xprop, yprop : integer;
varname, Xlabel, Ylabel, astring, Title : string;
Ymin, Ymax, Yrange, Ystep, cellvalue, xvalue : double;
BubMin, BubMax, BubRange, ratio, value : double;
valstr : string;
Bubcolor, place : integer;
Colors : array[0..12] of TColor;
X1, Y1, X2, Y2 : integer;
Data : DblDyneMat;
ncases, ncols, BubbleID, newcol : integer;
GrandYMean, GrandSizeMean, sizevalue, yvalue : double;
Ymeans : DblDyneVec;
CaseYMeans : DblDyneVec;
SizeMeans : DblDyneVec;
CaseSizeMeans : DblDyneVec;
outline : string;
labels : StrDyneVec;
begin
// Compute and plot bubbles
Colors[0] := clMaroon;
Colors[1] := clRed;
Colors[2] := clBlue;
Colors[3] := clGreen;
Colors[4] := clNavy;
Colors[5] := clTeal;
Colors[6] := clAqua;
Colors[7] := clLime;
Colors[8] := clFuchsia;
Colors[9] := clGray;
Colors[10] := clPurple;
Colors[11] := clOlive;
BubbleCol := 0;
XCol := 0;
YCol := 0;
SizeCol := 0;
for i := 1 to NoVariables do
begin
varname := OS3MainFrm.DataGrid.Cells[i,0];
if (varname = BubbleEdit.Text) then BubbleCol := i;
if (varname = XEdit.Text) then XCol := i;
if (varname = YEdit.Text) then YCol := i;
if (varname <> SizeEdit.Text) then SizeCol := i;
end;
if ((BubbleCol = 0) or (XCol = 0) or (YCol = 0) or (SizeCol = 0)) then
begin
ShowMessage('ERROR! One or more variables not found!');
Exit;
end;
// get number of bubbles and replications per bubble (number of bubble id's)
minrep := 1000;
maxrep := -1;
for i := 1 to NoCases do
begin
intcell := StrToInt(OS3MainFrm.DataGrid.Cells[BubbleCol,i]);
if (intcell > maxrep) then maxrep := intcell;
if (intcell < minrep) then minrep := intcell;
end;
nobubbles := maxrep - minrep + 1;
noreplications := 1;
intcell := StrToInt(OS3MainFrm.DataGrid.Cells[BubbleCol,1]);
for i := 2 to NoCases do
begin
cell := StrToInt(OS3MainFrm.DataGrid.Cells[BubbleCol,i]);
if (cell = intcell) then noreplications := noreplications + 1;
end;
// get min, max and range of Y
Ymin := 1.0e300;
Ymax := -1.0e300;
for i := 1 to NoCases do
begin
cellvalue := StrToFloat(OS3MainFrm.DataGrid.Cells[YCol,i]);
if (cellvalue > Ymax) then Ymax := cellvalue;
if (cellvalue < Ymin) then Ymin := cellvalue;
end;
Yrange := Ymax - Ymin;
Ystep := Yrange / 10;
// get min, max and range of X
Xmin := 10000;
Xmax := -1;
for i := 1 to NoCases do
begin
intcell := StrToInt(OS3MainFrm.DataGrid.Cells[XCol,i]);
if (intcell > Xmax) then Xmax := intcell;
if (intcell < Xmin) then Xmin := intcell;
end;
Xrange := Xmax - Xmin;
Xstep := Xrange div (noreplications-1);
// get min, max, range, and increment of bubble sizes
BubMin := 1.0e300;
BubMax := -1.0e300;
for i := 1 to NoCases do
begin
cellvalue := StrToFloat(OS3MainFrm.DataGrid.Cells[SizeCol,i]);
if (cellvalue > BubMax) then BubMax := cellvalue;
if (cellvalue < BubMin) then BubMin := cellvalue;
end;
BubRange := BubMax - BubMin;
// Display basic statistics
ncases := NoCases div noreplications;
GrandYMean := 0.0;
GrandSizeMean := 0.0;
SetLength(CaseYMeans,ncases);
SetLength(CaseSizeMeans,ncases);
SetLength(Ymeans,noreplications);
SetLength(SizeMeans,noreplications);
for i := 0 to ncases - 1 do
begin
CaseYMeans[i] := 0.0;
CaseSizeMeans[i] := 0.0;
end;
for i := 0 to noreplications - 1 do
begin
Ymeans[i] := 0.0;
SizeMeans[i] := 0.0;
end;
i := 1;
while ( i <= NoCases) do
begin
for j := 1 to noreplications do
begin
bubbleID := StrToInt(OS3MainFrm.DataGrid.Cells[BubbleCol,i]);
yvalue := StrToFloat(OS3MainFrm.DataGrid.Cells[YCol,i]);
sizevalue := StrToFloat(OS3MainFrm.DataGrid.Cells[SizeCol,i]);
GrandYMean:= GrandYMean + yvalue;
GrandSizeMean := GrandSizeMean + sizevalue;
Ymeans[j-1] := Ymeans[j-1] + yvalue;
SizeMeans[j-1] := SizeMeans[j-1] + sizevalue;
CaseYMeans[bubbleID-1] := CaseYMeans[bubbleID-1] + yvalue;
CaseSizeMeans[bubbleID-1] := CaseSizeMeans[bubbleID-1] + sizevalue;
i := i + 1;
end;
end;
GrandYMean := GrandYMean / (ncases * noreplications);
GrandSizeMean := GrandSizeMean / (ncases * noreplications);
for j := 0 to noreplications - 1 do
begin
Ymeans[j] := Ymeans[j] / ncases;
SizeMeans[j] := SizeMeans[j] / ncases;
end;
for i := 0 to ncases - 1 do
begin
CaseYMeans[i] := CaseYMeans[i] / noreplications;
CaseSizeMeans[i] := CaseSizeMeans[i] / noreplications;
end;
OutPutFrm.RichEdit.Clear;
OutPutFrm.RichEdit.Lines.Add('MEANS FOR Y AND SIZE VARIABLES');
OutPutFrm.RichEdit.Lines.Add('');
outline := format('Grand Mean for Y := %8.3f',[GrandYMean]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Grand Mean for Size := %8.3f',[GrandSizeMean]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('REPLICATION MEAN Y VALUES (ACROSS OBJECTS)');
for j := 0 to noreplications - 1 do
begin
outline := format('Replication %5d Mean := %8.3f',[j+1,Ymeans[j]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('REPLICATION MEAN SIZE VALUES (ACROSS OBJECTSend;');
for j := 0 to noreplications - 1 do
begin
outline := format('Replication %5d Mean := %8.3f',[j+1,SizeMeans[j]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('MEAN Y VALUES FOR EACH BUBBLE (OBJECT)');
for i := 0 to ncases - 1 do
begin
outline := format('Object %5d Mean := %8.3f',[i+1,CaseYMeans[i]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('MEAN SIZE VALUES FOR EACH BUBBLE (OBJECT)');
for i := 0 to ncases - 1 do
begin
outline := format('Object %5d Mean := %8.3f',[i+1,CaseSizeMeans[i]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
SizeMeans := nil;
Ymeans := nil;
CaseSizeMeans := nil;
CaseYMeans := nil;
//--------------------------------------------------------------------------
// Plotting Section
//---------------------------------------------------------------------------
BlankFrm.Image1.Canvas.Clear;
BlankFrm.Show;
BlankFrm.Caption := 'Bubble Plot of ' + OS3MainFrm.FileNameEdit.Text;
Xlabel := XlabelEdit.Text;
Ylabel := YlabelEdit.Text;
Title := TitleEdit.Text;
ImageHi := BlankFrm.Image1.Height;
ImageWide := BlankFrm.Image1.Width;
Xstart := ImageWide div 10;
Xend := (ImageWide * 9) div 10;
Ystart := ImageHi div 10;
Yend := (ImageHi * 8) div 10;
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
BlankFrm.Image1.Canvas.Brush.Color := clWhite;
BlankFrm.Image1.Canvas.Rectangle(0,0,ImageWide,ImageHi);
BlankFrm.Image1.Canvas.FloodFill(0,0,clWhite,fsBorder);
BlankFrm.Image1.Canvas.TextOut(Xstart-10,Ystart-30,Ylabel);
LabelWide := BlankFrm.Image1.Canvas.TextWidth(Xlabel);
BlankFrm.Image1.Canvas.TextOut((Xend-Xstart) div 2 - LabelWide,Yend + 40,Xlabel);
LabelWide := BlankFrm.Image1.Canvas.TextWidth(Title);
BlankFrm.Image1.Canvas.TextOut((Xend-Xstart) div 2 - LabelWide div 2, Ystart - 40,Title);
// draw axis lines
BlankFrm.Image1.Canvas.MoveTo(Xstart,Yend);
BlankFrm.Image1.Canvas.LineTo(Xend,Yend);
BlankFrm.Image1.Canvas.MoveTo(Xstart,Yend);
BlankFrm.Image1.Canvas.LineTo(Xstart,Ystart);
// create y axis values
Yincr := (Yend - Ystart) div 10;
for i := 0 to 10 do // print Y axis values
begin
place := Yend - (i * Yincr);
value := Ymin + (Ystep * i);
valstr := format('%4.2f',[value]);
astring := valstr;
TextHi := BlankFrm.Image1.Canvas.TextHeight(astring);
BlankFrm.Image1.Canvas.TextOut(Xstart-30,place-TextHi,astring);
end;
// create x axis values
for i := 1 to noreplications do // print x axis
begin
value := Xmin + ((i-1) * Xstep);
ratio := i / noreplications;
Xpos := round(ratio * (Xend - Xstart));
valstr := format('%4.0f',[value]);
astring := valstr;
BlankFrm.Image1.Canvas.TextOut(Xpos,Yend + 20,astring);
end;
// Plot the bubbles
for i := 1 to NoCases do
begin
intcell := StrToInt(OS3MainFrm.DataGrid.Cells[BubbleCol,i]);
xvalue := StrToFloat(OS3MainFrm.DataGrid.Cells[XCol,i]);
cellvalue := StrToFloat(OS3MainFrm.DataGrid.Cells[YCol,i]);
yprop := Yend - round(((cellvalue-Ymin) / Yrange) * (Yend - Ystart));
cellvalue := StrToFloat(OS3MainFrm.DataGrid.Cells[SizeCol,i]);
astring := Trim(OS3MainFrm.DataGrid.Cells[BubbleCol,i]);
cellvalue := ((cellvalue - BubMin) / BubRange) * 20;
cellvalue := cellvalue + 10;
ratio := ((xvalue - Xmin) / Xstep) + 1;
ratio := (ratio / noreplications) * (Xend - Xstart);
Xpos := ceil(ratio);
Bubcolor := intcell - 1;
while (Bubcolor > 11) do Bubcolor := 12 - Bubcolor;
BlankFrm.Image1.Canvas.Brush.Color := Colors[Bubcolor];
X1 := Xpos - ceil(cellvalue);
Y1 := yprop - ceil(cellvalue);
X2 := Xpos + ceil(cellvalue);
Y2 := yprop + ceil(cellvalue);
BlankFrm.Image1.Canvas.Ellipse(X1,Y1,X2,Y2);
BlankFrm.Image1.Canvas.Brush.Color := clWhite;
BlankFrm.Image1.Canvas.TextOut(Xpos,yprop,astring);
end;
// Transform data matrix if elected
if (TransformChk.Checked = true) then
begin
ncases := nobubbles;
ncols := noreplications * 3 + 1;
// Note - columns: 1:=object ID, 2 to noreplications := X,
// next noreplications := Y, next noreplications := size
SetLength(Data,ncases,ncols);
i := 1;
while (i <= NoCases) do
begin
for j := 1 to noreplications do
begin
bubbleID := StrToInt(OS3MainFrm.DataGrid.Cells[BubbleCol,i]);
xvalue := StrToFloat(OS3MainFrm.DataGrid.Cells[XCol,i]);
yvalue := StrToFloat(OS3MainFrm.DataGrid.Cells[YCol,i]);
sizevalue := StrToFloat(OS3MainFrm.DataGrid.Cells[SizeCol,i]);
Data[bubbleID-1,0] := bubbleID;
Data[bubbleID-1,j] := xvalue;
Data[bubbleID-1,noreplications+j] := yvalue;
Data[bubbleID-1,noreplications*2+j] := sizevalue;
i := i + 1;
end;
end;
SetLength(labels,NoVariables+1);
for i := 1 to NoVariables do labels[i] := OS3MainFrm.DataGrid.Cells[i,0];
ClearGrid;
OS3MainFrm.DataGrid.RowCount := ncases + 1;
OS3MainFrm.DataGrid.ColCount := ncols + 1;
for i := 1 to ncases do
begin
OS3MainFrm.DataGrid.Cells[0,i] := IntToStr(i);
for j := 1 to ncols do
OS3MainFrm.DataGrid.Cells[j,i] := FloatToStr(Data[i-1,j-1]);
end;
OS3MainFrm.DataGrid.Cells[1,0] := labels[1];
for j := 2 to NoVariables do // clear dictionary
begin
for i := 0 to 7 do DictionaryFrm.DictGrid.Cells[i,j] := '';
DictionaryFrm.DictGrid.RowCount := DictionaryFrm.DictGrid.RowCount - 1;
VarDefined[j] := false;
end;
DictionaryFrm.DictGrid.Cells[1,1] := labels[1];
for j := 1 to noreplications do
begin
outline := labels[2] + IntToStr(j);
newcol := j + 1;
if (newcol+1 > DictionaryFrm.DictGrid.RowCount) then
DictionaryFrm.DictGrid.RowCount := DictionaryFrm.DictGrid.RowCount + 1;
DictionaryFrm.Defaults(Self,newcol);
VarDefined[newcol] := true;
DictionaryFrm.DictGrid.Cells[1,newcol] := outline;
OS3MainFrm.DataGrid.Cells[newcol,0] := outline;
end;
for j := 1 to noreplications do
begin
outline := labels[3] + IntToStr(j);
newcol := j + 1 + noreplications;
OS3MainFrm.DataGrid.Cells[newcol,0] := outline;
if (newcol+1 > DictionaryFrm.DictGrid.RowCount) then
DictionaryFrm.DictGrid.RowCount := DictionaryFrm.DictGrid.RowCount + 1;
DictionaryFrm.Defaults(Self,newcol);
VarDefined[newcol] := true;
DictionaryFrm.DictGrid.Cells[1,newcol] := outline;
end;
for j := 1 to noreplications do
begin
outline := labels[4] + IntToStr(j);
newcol := j + 1 + noreplications * 2;
OS3MainFrm.DataGrid.Cells[newcol,0] := outline;
if (newcol+1 > DictionaryFrm.DictGrid.RowCount) then
DictionaryFrm.DictGrid.RowCount := DictionaryFrm.DictGrid.RowCount + 1;
DictionaryFrm.Defaults(Self,newcol);
VarDefined[newcol] := true;
DictionaryFrm.DictGrid.Cells[1,newcol] := outline;
end;
NoVariables := ncols;
NoCases := ncases;
OS3MainFrm.NoCasesEdit.Text := IntToStr(NoCases);
OS3MainFrm.NoVarsEdit.Text := IntToStr(NoVariables);
Data := nil;
labels := nil;
end;
end;
procedure TBubbleForm.IDOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(BubbleEdit.Text);
IDInBtn.Visible := true;
IDOutBtn.Visible := false;
end;
procedure TBubbleForm.ResetBtnClick(Sender: TObject);
VAR i : integer;
begin
BubbleEdit.Text := '';
XEdit.Text := '';
YEdit.Text := '';
SizeEdit.Text := '';
IDInBtn.Visible := true;
IDOutBtn.Visible := false;
XInBtn.Visible := true;
XOutBtn.Visible := false;
YInBtn.Visible := true;
YOutBtn.Visible := false;
SizeInBtn.Visible := true;
SizeOutBtn.Visible := false;
VarList.Clear;
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
end;
procedure TBubbleForm.SizeInBtnClick(Sender: TObject);
VAR
index, i : integer;
begin
index := VarList.Items.Count;
i := 0;
while i < index do
begin
if (VarList.Selected[i]) then
begin
SizeEdit.Text := VarList.Items.Strings[i];
VarList.Items.Delete(i);
index := index - 1;
i := 0;
end
else i := i + 1;
end;
SizeOutBtn.Visible := true;
SizeInBtn.Visible := false;
end;
procedure TBubbleForm.SizeOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(SizeEdit.Text);
SizeInBtn.Visible := true;
SizeOutBtn.Visible := false;
end;
procedure TBubbleForm.XInBtnClick(Sender: TObject);
VAR
i, index : integer;
begin
index := VarList.Items.Count;
i := 0;
while i < index do
begin
if (VarList.Selected[i]) then
begin
XEdit.Text := VarList.Items.Strings[i];
VarList.Items.Delete(i);
index := index - 1;
i := 0;
end
else i := i + 1;
end;
XOutBtn.Visible := true;
XInBtn.Visible := false;
end;
procedure TBubbleForm.XOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(XEdit.Text);
XInBtn.Visible := true;
XOutBtn.Visible := false;
end;
procedure TBubbleForm.YInBtnClick(Sender: TObject);
VAR
index, i : integer;
begin
index := VarList.Items.Count;
i := 0;
while i < index do
begin
if (VarList.Selected[i]) then
begin
YEdit.Text := VarList.Items.Strings[i];
VarList.Items.Delete(i);
index := index - 1;
i := 0;
end
else i := i + 1;
end;
YOutBtn.Visible := true;
YInBtn.Visible := false;
end;
procedure TBubbleForm.YOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(YEdit.Text);
YInBtn.Visible := true;
YOutBtn.Visible := false;
end;
initialization
{$I bubbleplotunit.lrs}
end.