You've already forked lazarus-ccr
Lazstats: Less hints and warnings.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7917 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -1,41 +1,41 @@
|
||||
inherited ABCLogLinearForm: TABCLogLinearForm
|
||||
Left = 596
|
||||
Height = 408
|
||||
Height = 414
|
||||
Top = 216
|
||||
Width = 854
|
||||
HelpType = htKeyword
|
||||
HelpKeyword = 'html/html/AxBxCLogLinear.htm'
|
||||
Caption = 'Log Linear Analysis for AxBxC Classification Table'
|
||||
ClientHeight = 408
|
||||
ClientHeight = 414
|
||||
ClientWidth = 854
|
||||
inherited ParamsPanel: TPanel
|
||||
Height = 392
|
||||
Height = 398
|
||||
Width = 376
|
||||
ClientHeight = 392
|
||||
ClientHeight = 398
|
||||
ClientWidth = 376
|
||||
inherited CloseBtn: TButton
|
||||
Left = 321
|
||||
Top = 367
|
||||
Top = 373
|
||||
TabOrder = 5
|
||||
end
|
||||
inherited ComputeBtn: TButton
|
||||
Left = 237
|
||||
Top = 367
|
||||
Top = 373
|
||||
TabOrder = 4
|
||||
end
|
||||
inherited ResetBtn: TButton
|
||||
Left = 175
|
||||
Top = 367
|
||||
Top = 373
|
||||
TabOrder = 3
|
||||
end
|
||||
inherited HelpBtn: TButton
|
||||
Tag = 101
|
||||
Left = 116
|
||||
Top = 367
|
||||
Top = 373
|
||||
TabOrder = 2
|
||||
end
|
||||
inherited ButtonBevel: TBevel
|
||||
Top = 351
|
||||
Top = 357
|
||||
Width = 376
|
||||
end
|
||||
object FileFromGrp: TRadioGroup[5]
|
||||
@ -77,10 +77,10 @@ inherited ABCLogLinearForm: TABCLogLinearForm
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = ButtonBevel
|
||||
Left = 0
|
||||
Height = 284
|
||||
Height = 290
|
||||
Top = 67
|
||||
Width = 376
|
||||
PageIndex = 1
|
||||
PageIndex = 0
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Top = 16
|
||||
TabOrder = 1
|
||||
@ -140,7 +140,7 @@ inherited ABCLogLinearForm: TABCLogLinearForm
|
||||
AnchorSideBottom.Control = Page1
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 0
|
||||
Height = 292
|
||||
Height = 290
|
||||
Top = 0
|
||||
Width = 166
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
@ -460,6 +460,6 @@ inherited ABCLogLinearForm: TABCLogLinearForm
|
||||
end
|
||||
inherited ParamsSplitter: TSplitter
|
||||
Left = 388
|
||||
Height = 408
|
||||
Height = 414
|
||||
end
|
||||
end
|
||||
|
@ -9,7 +9,7 @@ interface
|
||||
uses
|
||||
Classes, SysUtils, Forms, Controls, Graphics, Dialogs,
|
||||
ExtCtrls, StdCtrls, Buttons, Grids,
|
||||
MainUnit, Globals, DataProcs, BasicStatsReportFormUnit;
|
||||
MainUnit, Globals, BasicStatsReportFormUnit;
|
||||
|
||||
type
|
||||
|
||||
@ -69,16 +69,14 @@ type
|
||||
var Total: double; Model: integer; AReport: TStrings);
|
||||
procedure Iterate(
|
||||
Nrows, Ncols, Nslices: integer;
|
||||
const Data: DblDyneCube;
|
||||
const RowMarg, ColMarg, SliceMarg: DblDyneVec;
|
||||
var Total: double;
|
||||
const Expected: DblDyneCube;
|
||||
const NewRowMarg, NewColMarg, NewSliceMarg: DblDyneVec;
|
||||
var NewTotal: double);
|
||||
|
||||
procedure PrintTable(Nrows, Ncols, Nslices: integer;
|
||||
const Data: DblDyneCube; const RowMarg, ColMarg, SliceMarg: DblDyneVec;
|
||||
Total: double; AReport: TStrings);
|
||||
AReport: TStrings);
|
||||
procedure PrintLamdas(Nrows,Ncols,Nslices: integer;
|
||||
const CellLambdas: DblDyneQuad; mu: double; AReport: TStrings);
|
||||
procedure PrintMatrix(const X: DblDyneMat;
|
||||
@ -358,7 +356,7 @@ begin
|
||||
// print observed matrix
|
||||
astr := 'Observed Frequencies';
|
||||
lReport.Add(astr);
|
||||
PrintTable(Nrows,Ncols,Nslices,Data,RowMarg,ColMarg,SliceMarg,Total, lReport);
|
||||
PrintTable(Nrows,Ncols,Nslices,Data,RowMarg,ColMarg,SliceMarg, lReport);
|
||||
lReport.Add('');
|
||||
|
||||
// Print sub-matrices
|
||||
@ -388,16 +386,23 @@ procedure TABCLogLinearForm.ModelEffect(
|
||||
Model: integer;
|
||||
AReport: TStrings);
|
||||
var
|
||||
i, j, k: integer;
|
||||
CellLambdas : DblDyneQuad;
|
||||
LogData, Expected : DblDyneCube;
|
||||
Title, astr : string;
|
||||
NewRowMarg,NewColMarg,NewSliceMarg : DblDyneVec;
|
||||
LogRowMarg, LogColMarg, LogSliceMarg : DblDyneVec;
|
||||
NewTotal: double = 0.0;
|
||||
ABLogs, ACLogs, BCLogs : DblDyneMat;
|
||||
LogTotal, mu, Ysqr : double;
|
||||
DF : integer;
|
||||
i, j, k: integer;
|
||||
CellLambdas: DblDyneQuad = nil;
|
||||
LogData: DblDyneCube = nil;
|
||||
Expected: DblDyneCube = nil;
|
||||
Title, astr : string;
|
||||
NewRowMarg: DblDyneVec = nil;
|
||||
NewColMarg: DblDyneVec = nil;
|
||||
NewSliceMarg: DblDyneVec = nil;
|
||||
LogRowMarg: DblDyneVec = nil;
|
||||
LogColMarg: DblDyneVec = nil;
|
||||
LogSliceMarg: DblDyneVec = nil;
|
||||
NewTotal: double = 0.0;
|
||||
ABLogs: DblDyneMat = nil;
|
||||
ACLogs: DblDyneMat = nil;
|
||||
BCLogs: DblDyneMat = nil;
|
||||
LogTotal, mu, Ysqr: double;
|
||||
DF: integer;
|
||||
begin
|
||||
// Get expected values for chosen model
|
||||
SetLength(Expected,Nrows+1, Ncols+1, Nslices+1);
|
||||
@ -425,8 +430,8 @@ begin
|
||||
if Model = 2 then // independence
|
||||
begin
|
||||
Title := 'Model of Independence';
|
||||
Iterate(Nrows, Ncols, Nslices, Data, RowMarg, ColMarg, SliceMarg,
|
||||
Total, Expected, NewRowMarg, NewColMarg, NewSliceMarg, NewTotal);
|
||||
Iterate(Nrows, Ncols, Nslices, RowMarg, ColMarg, SliceMarg,
|
||||
Expected, NewRowMarg, NewColMarg, NewSliceMarg, NewTotal);
|
||||
end;
|
||||
|
||||
if Model = 3 then // no AB effect
|
||||
@ -437,6 +442,7 @@ begin
|
||||
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';
|
||||
@ -445,6 +451,7 @@ begin
|
||||
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';
|
||||
@ -453,6 +460,7 @@ begin
|
||||
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';
|
||||
@ -607,13 +615,12 @@ begin
|
||||
|
||||
astr := 'Expected Frequencies';
|
||||
AReport.Add(astr);
|
||||
PrintTable(Nrows,Ncols,Nslices,Expected,NewRowMarg,NewColMarg,
|
||||
NewSliceMarg,NewTotal, AReport);
|
||||
PrintTable(Nrows,Ncols,Nslices,Expected,NewRowMarg,NewColMarg, NewSliceMarg,AReport);
|
||||
AReport.Add('');
|
||||
|
||||
astr := 'Log Frequencies';
|
||||
AReport.Add(astr);
|
||||
PrintTable(Nrows,Ncols,Nslices,LogData,LogRowMarg,LogColMarg,LogSliceMarg,LogTotal, AReport);
|
||||
PrintTable(Nrows,Ncols,Nslices,LogData,LogRowMarg,LogColMarg,LogSliceMarg,AReport);
|
||||
|
||||
AReport.Add('');
|
||||
AReport.Add('======================================================================');
|
||||
@ -660,20 +667,18 @@ end;
|
||||
|
||||
procedure TABCLogLinearForm.Iterate(
|
||||
Nrows, Ncols, Nslices: integer;
|
||||
const Data: DblDyneCube; const RowMarg, ColMarg, SliceMarg: DblDyneVec;
|
||||
var Total: double;
|
||||
const RowMarg, ColMarg, SliceMarg: DblDyneVec;
|
||||
const Expected: DblDyneCube; const NewRowMarg, NewColMarg, NewSliceMarg: DblDyneVec;
|
||||
var NewTotal: double);
|
||||
|
||||
Label Step;
|
||||
var
|
||||
Aprevious : DblDyneCube;
|
||||
i, j, k : integer;
|
||||
delta : double;
|
||||
difference : double;
|
||||
|
||||
Aprevious: DblDyneCube = nil;
|
||||
i, j, k: integer;
|
||||
delta: double;
|
||||
difference: double;
|
||||
begin
|
||||
SetLength(Aprevious,Nrows+1,Ncols+1,Nslices+1);
|
||||
SetLength(Aprevious ,Nrows+1,Ncols+1,Nslices+1);
|
||||
delta := 0.1;
|
||||
difference := 0.0;
|
||||
for i := 1 to Nrows do newrowmarg[i] := 0.0;
|
||||
@ -753,30 +758,32 @@ Step:
|
||||
end;
|
||||
Aprevious := nil;
|
||||
end;
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
|
||||
procedure TABCLogLinearForm.PrintTable(
|
||||
Nrows, Ncols, Nslices: integer;
|
||||
const Data: DblDyneCube; const RowMarg, ColMarg, SliceMarg: DblDyneVec;
|
||||
Total: double;
|
||||
AReport: TStrings);
|
||||
var
|
||||
i, j, k: integer;
|
||||
begin
|
||||
AReport.Add(' A B C VALUE ');
|
||||
AReport.Add(' A B C VALUE');
|
||||
for i := 1 to Nrows do
|
||||
for j := 1 to Ncols do
|
||||
for k := 1 to Nslices do
|
||||
AReport.Add('%3d %3d %3d %8.3f', [i, j, k, Data[i,j,k]]);
|
||||
AReport.Add('%3d %3d %3d %8.3f', [i, j, k, Data[i,j,k]]);
|
||||
|
||||
AReport.Add('');
|
||||
AReport.Add('Totals for Dimension A');
|
||||
for i := 1 to Nrows do
|
||||
AReport.Add('Row %d %8.3f', [i, RowMarg[i]]);
|
||||
|
||||
AReport.Add('');
|
||||
AReport.Add('Totals for Dimension B');
|
||||
for j := 1 to Ncols do
|
||||
AReport.Add('Col %d %8.3f', [j, ColMarg[j]]);
|
||||
|
||||
AReport.Add('');
|
||||
AReport.Add('Totals for Dimension C');
|
||||
for k := 1 to Nslices do
|
||||
AReport.Add('Slice %d %8.3f', [k, SliceMarg[k]]);
|
||||
@ -851,8 +858,6 @@ end;
|
||||
|
||||
|
||||
procedure TABCLogLinearForm.Reset;
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
inherited;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
object LogLinScreenFrm: TLogLinScreenFrm
|
||||
object LogLinScreenForm: TLogLinScreenForm
|
||||
Left = 417
|
||||
Height = 379
|
||||
Top = 130
|
||||
|
@ -21,9 +21,9 @@ uses
|
||||
|
||||
type
|
||||
|
||||
{ TLogLinScreenFrm }
|
||||
{ TLogLinScreenForm }
|
||||
|
||||
TLogLinScreenFrm = class(TForm)
|
||||
TLogLinScreenForm = class(TForm)
|
||||
Bevel1: TBevel;
|
||||
Bevel2: TBevel;
|
||||
HelpBtn: TButton;
|
||||
@ -115,16 +115,16 @@ type
|
||||
end;
|
||||
|
||||
var
|
||||
LogLinScreenFrm: TLogLinScreenFrm;
|
||||
LogLinScreenForm: TLogLinScreenForm;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
Math, LCLIntf, LCLType, Utils;
|
||||
|
||||
{ TLogLinScreenFrm }
|
||||
{ TLogLinScreenForm }
|
||||
|
||||
procedure TLogLinScreenFrm.ResetBtnClick(Sender: TObject);
|
||||
procedure TLogLinScreenForm.ResetBtnClick(Sender: TObject);
|
||||
var
|
||||
i : integer;
|
||||
begin
|
||||
@ -135,13 +135,13 @@ begin
|
||||
UpdateMinMaxGrid;
|
||||
end;
|
||||
|
||||
procedure TLogLinScreenFrm.SelectListSelectionChange(Sender: TObject;
|
||||
procedure TLogLinScreenForm.SelectListSelectionChange(Sender: TObject;
|
||||
User: boolean);
|
||||
begin
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TLogLinScreenFrm.InBtnClick(Sender: TObject);
|
||||
procedure TLogLinScreenForm.InBtnClick(Sender: TObject);
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
@ -160,7 +160,7 @@ begin
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TLogLinScreenFrm.FormActivate(Sender: TObject);
|
||||
procedure TLogLinScreenForm.FormActivate(Sender: TObject);
|
||||
var
|
||||
w: Integer;
|
||||
begin
|
||||
@ -185,24 +185,24 @@ begin
|
||||
FAutoSized := true;
|
||||
end;
|
||||
|
||||
procedure TLogLinScreenFrm.FormCreate(Sender: TObject);
|
||||
procedure TLogLinScreenForm.FormCreate(Sender: TObject);
|
||||
begin
|
||||
Assert(OS3MainFrm <> nil);
|
||||
end;
|
||||
|
||||
procedure TLogLinScreenFrm.FormShow(Sender: TObject);
|
||||
procedure TLogLinScreenForm.FormShow(Sender: TObject);
|
||||
begin
|
||||
ResetBtnClick(Self);
|
||||
end;
|
||||
|
||||
procedure TLogLinScreenFrm.HelpBtnClick(Sender: TObject);
|
||||
procedure TLogLinScreenForm.HelpBtnClick(Sender: TObject);
|
||||
begin
|
||||
if ContextHelpForm = nil then
|
||||
Application.CreateForm(TContextHelpForm, ContextHelpForm);
|
||||
ContextHelpForm.HelpMessage((Sender as TButton).Tag);
|
||||
end;
|
||||
|
||||
procedure TLogLinScreenFrm.AllBtnClick(Sender: TObject);
|
||||
procedure TLogLinScreenForm.AllBtnClick(Sender: TObject);
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
@ -213,7 +213,7 @@ begin
|
||||
UpdateMinMaxGrid;
|
||||
end;
|
||||
|
||||
procedure TLogLinScreenFrm.ComputeBtnClick(Sender: TObject);
|
||||
procedure TLogLinScreenForm.ComputeBtnClick(Sender: TObject);
|
||||
var
|
||||
ArraySize : integer;
|
||||
N : integer;
|
||||
@ -607,7 +607,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TLogLinScreenFrm.OutBtnClick(Sender: TObject);
|
||||
procedure TLogLinScreenForm.OutBtnClick(Sender: TObject);
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
@ -626,7 +626,7 @@ begin
|
||||
UpdateMinMaxGrid;
|
||||
end;
|
||||
|
||||
procedure TLogLinScreenFrm.Screen(var NVAR: integer; var MP: integer;
|
||||
procedure TLogLinScreenForm.Screen(var NVAR: integer; var MP: integer;
|
||||
var MM: integer; var NTAB: integer; var TABLE: DblDyneVec;
|
||||
var DIM: IntDyneVec; var GSQ: DblDyneVec; var DGFR: IntDyneVec;
|
||||
var PART: DblDyneMat; var MARG: DblDyneMat; var DFS: IntDyneMat;
|
||||
@ -775,7 +775,7 @@ begin
|
||||
end; // 200 CONTINUE
|
||||
end;
|
||||
|
||||
procedure TLogLinScreenFrm.CONF(var N: integer; var M: integer;
|
||||
procedure TLogLinScreenForm.CONF(var N: integer; var M: integer;
|
||||
var MP: integer; var MM: integer; var ISET: IntDyneVec; var JSET: IntDyneVec;
|
||||
var IP: IntDyneMat; var IM: IntDyneMat; var NP: integer);
|
||||
Label 100, 120;
|
||||
@ -824,12 +824,12 @@ begin
|
||||
GOTO 120;
|
||||
end;
|
||||
|
||||
procedure TLogLinScreenFrm.CountVarChkChange(Sender: TObject);
|
||||
procedure TLogLinScreenForm.CountVarChkChange(Sender: TObject);
|
||||
begin
|
||||
UpdateMinMaxGrid;
|
||||
end;
|
||||
|
||||
procedure TLogLinScreenFrm.COMBO(var ISET: IntDyneVec; N, M: Integer;
|
||||
procedure TLogLinScreenForm.COMBO(var ISET: IntDyneVec; N, M: Integer;
|
||||
var LAST: boolean);
|
||||
label 100, 110, 130, 150;
|
||||
VAR
|
||||
@ -879,7 +879,7 @@ begin
|
||||
end; //160 CONTINUE
|
||||
end;
|
||||
|
||||
procedure TLogLinScreenFrm.EVAL(var IAR: IntDyneMat; NC, NV, IBEG, NVAR,
|
||||
procedure TLogLinScreenForm.EVAL(var IAR: IntDyneMat; NC, NV, IBEG, NVAR,
|
||||
MAX: integer; var CONFIG: IntDyneMat; var DIM: IntDyneVec; var DF: integer);
|
||||
VAR I, J, K, KK, L : integer;
|
||||
// SUBROUTINE EVAL(IAR, NC, NV, IBEG, NVAR, MAX, CONFIG, DIM, DF)
|
||||
@ -913,7 +913,7 @@ begin
|
||||
end; // 110 CONTINUE
|
||||
end;
|
||||
|
||||
procedure TLogLinScreenFrm.RESET(var FIT: DblDyneVec; NTAB: Integer; AVG: Double
|
||||
procedure TLogLinScreenForm.RESET(var FIT: DblDyneVec; NTAB: Integer; AVG: Double
|
||||
);
|
||||
VAR I : integer;
|
||||
|
||||
@ -933,7 +933,7 @@ begin
|
||||
end; // 100 CONTINUE
|
||||
end;
|
||||
|
||||
procedure TLogLinScreenFrm.LIKE(var GSQ: Double; var FIT: DblDyneVec;
|
||||
procedure TLogLinScreenForm.LIKE(var GSQ: Double; var FIT: DblDyneVec;
|
||||
var TABLE: DblDyneVec; NTAB: integer);
|
||||
VAR I : integer;
|
||||
ZERO, TWO : Double;
|
||||
@ -959,7 +959,7 @@ begin
|
||||
GSQ := TWO * GSQ;
|
||||
end;
|
||||
|
||||
procedure TLogLinScreenFrm.LOGFIT(NVAR, NTAB, NCON: integer;
|
||||
procedure TLogLinScreenForm.LOGFIT(NVAR, NTAB, NCON: integer;
|
||||
var DIM: IntDyneVec; var CONFIG: IntDyneMat; var TABLE: DblDyneVec;
|
||||
var FIT: DblDyneVec; var SIZE: IntDyneVec; var COORD: IntDyneVec;
|
||||
var X: DblDyneVec; var Y: DblDyneVec);
|
||||
@ -1070,7 +1070,7 @@ begin
|
||||
end; // 230 CONTINUE
|
||||
end;
|
||||
|
||||
procedure TLogLinScreenFrm.MaxCombos(NumDims: integer; out MM, MP: integer);
|
||||
procedure TLogLinScreenForm.MaxCombos(NumDims: integer; out MM, MP: integer);
|
||||
var
|
||||
combos: integer;
|
||||
i,j: integer;
|
||||
@ -1096,7 +1096,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TLogLinScreenFrm.ArrayPosition(NumDims: integer;
|
||||
function TLogLinScreenForm.ArrayPosition(NumDims: integer;
|
||||
const Data: DblDyneVec; const Subscripts, DimSize: IntDyneVec): integer;
|
||||
var
|
||||
Pos : integer;
|
||||
@ -1121,7 +1121,7 @@ begin
|
||||
PriorSizes := nil;
|
||||
end;
|
||||
|
||||
procedure TLogLinScreenFrm.Marginals(NumDims, ArraySize: integer;
|
||||
procedure TLogLinScreenForm.Marginals(NumDims, ArraySize: integer;
|
||||
const Indexes: IntDyneMat; const Data: DblDyneVec; const Margins: IntDyneMat);
|
||||
var
|
||||
i, j, category: integer;
|
||||
@ -1136,14 +1136,14 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TLogLinScreenFrm.UpdateBtnStates;
|
||||
procedure TLogLinScreenForm.UpdateBtnStates;
|
||||
begin
|
||||
InBtn.Enabled := AnySelected(VarList);
|
||||
OutBtn.Enabled := AnySelected(SelectList);
|
||||
AllBtn.Enabled := VarList.Items.Count > 0;
|
||||
end;
|
||||
|
||||
procedure TLogLinScreenFrm.UpdateMinMaxGrid;
|
||||
procedure TLogLinScreenForm.UpdateMinMaxGrid;
|
||||
var
|
||||
NumDims, j: Integer;
|
||||
begin
|
||||
@ -1161,7 +1161,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TLogLinScreenFrm.VarListSelectionChange(Sender: TObject; User: boolean);
|
||||
procedure TLogLinScreenForm.VarListSelectionChange(Sender: TObject; User: boolean);
|
||||
begin
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
Reference in New Issue
Block a user