LazStats: Small fixes to previous commit. Update help file to new DistribUnit.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7636 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2020-08-24 22:54:29 +00:00
parent cd7073f12e
commit fdfd3c7330
4 changed files with 27 additions and 24 deletions

Binary file not shown.

View File

@ -5,7 +5,6 @@ object DistribFrm: TDistribFrm
Width = 687 Width = 687
HelpType = htKeyword HelpType = htKeyword
HelpKeyword = 'html/DistributionPlotsandCriticalValu.htm' HelpKeyword = 'html/DistributionPlotsandCriticalValu.htm'
BorderStyle = bsDialog
Caption = 'Distributions' Caption = 'Distributions'
ClientHeight = 432 ClientHeight = 432
ClientWidth = 687 ClientWidth = 687
@ -77,10 +76,10 @@ object DistribFrm: TDistribFrm
Anchors = [akLeft, akRight, akBottom] Anchors = [akLeft, akRight, akBottom]
Shape = bsBottomLine Shape = bsBottomLine
end end
object Panel1: TPanel object ChartPanel: TPanel
AnchorSideLeft.Control = Owner AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner AnchorSideTop.Control = Owner
AnchorSideRight.Control = Panel2 AnchorSideRight.Control = ParameterPanel
AnchorSideBottom.Control = Bevel1 AnchorSideBottom.Control = Bevel1
Left = 8 Left = 8
Height = 377 Height = 377
@ -131,6 +130,7 @@ object DistribFrm: TDistribFrm
Foot.Brush.Color = clBtnFace Foot.Brush.Color = clBtnFace
Foot.Font.Color = clBlue Foot.Font.Color = clBlue
Margins.Bottom = 0 Margins.Bottom = 0
Title.Brush.Color = clBtnFace
Title.Brush.Style = bsClear Title.Brush.Style = bsClear
Title.Font.Color = clBlue Title.Font.Color = clBlue
Title.Text.Strings = ( Title.Text.Strings = (
@ -176,7 +176,7 @@ object DistribFrm: TDistribFrm
OnClick = PrintBtnClick OnClick = PrintBtnClick
TabOrder = 5 TabOrder = 5
end end
object Panel2: TPanel object ParameterPanel: TPanel
AnchorSideTop.Control = Owner AnchorSideTop.Control = Owner
AnchorSideRight.Control = Owner AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
@ -190,13 +190,12 @@ object DistribFrm: TDistribFrm
BorderSpacing.Top = 8 BorderSpacing.Top = 8
BorderSpacing.Right = 8 BorderSpacing.Right = 8
BevelOuter = bvNone BevelOuter = bvNone
Caption = 'Panel2'
ClientHeight = 377 ClientHeight = 377
ClientWidth = 180 ClientWidth = 180
TabOrder = 6 TabOrder = 6
object GroupBox1: TGroupBox object GroupBox1: TGroupBox
AnchorSideLeft.Control = Panel2 AnchorSideLeft.Control = ParameterPanel
AnchorSideTop.Control = Panel2 AnchorSideTop.Control = ParameterPanel
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
Left = 0 Left = 0
Height = 136 Height = 136

View File

@ -31,7 +31,7 @@ type
SavePictureDialog: TSavePictureDialog; SavePictureDialog: TSavePictureDialog;
VertLineSeries: TLineSeries; VertLineSeries: TLineSeries;
FuncSeries: TFuncSeries; FuncSeries: TFuncSeries;
Panel2: TPanel; ParameterPanel: TPanel;
SaveBtn: TButton; SaveBtn: TButton;
PrintBtn: TButton; PrintBtn: TButton;
Chart: TChart; Chart: TChart;
@ -41,7 +41,7 @@ type
FChk: TRadioButton; FChk: TRadioButton;
MeanEdit: TEdit; MeanEdit: TEdit;
NDChk: TRadioButton; NDChk: TRadioButton;
Panel1: TPanel; ChartPanel: TPanel;
ResetBtn: TButton; ResetBtn: TButton;
ComputeBtn: TButton; ComputeBtn: TButton;
CloseBtn: TButton; CloseBtn: TButton;
@ -315,9 +315,10 @@ end;
procedure TDistribFrm.NDPlot; procedure TDistribFrm.NDPlot;
var var
alpha: Double; alpha: Double;
zCrit, pCrit: Double; zMax, zCrit, pCrit: Double;
begin begin
alpha := StrToFloat(AlphaEdit.Text); alpha := StrToFloat(AlphaEdit.Text);
zMax := InverseZ(0.9999);
zCrit := inversez(1.0 - alpha); zCrit := inversez(1.0 - alpha);
CalcND(zCrit, pCrit); CalcND(zCrit, pCrit);
@ -327,8 +328,8 @@ begin
Chart.Title.Text.Add(Format('Critical value = %.3f', [zCrit])); Chart.Title.Text.Add(Format('Critical value = %.3f', [zCrit]));
Chart.Title.Visible := true; Chart.Title.Visible := true;
Chart.BottomAxis.Title.Caption := 'z'; Chart.BottomAxis.Title.Caption := 'z';
FuncSeries.Extent.XMin := -4; FuncSeries.Extent.XMin := -zMax;
FuncSeries.Extent.XMax := +4; FuncSeries.Extent.XMax := +zMax;
FuncSeries.Extent.UseXMin := true; FuncSeries.Extent.UseXMin := true;
FuncSeries.Extent.UseXMax := true; FuncSeries.Extent.UseXMax := true;
FuncSeries.OnCalculate := @CalcND; FuncSeries.OnCalculate := @CalcND;
@ -342,21 +343,22 @@ end;
procedure TDistribFrm.ChiPlot; procedure TDistribFrm.ChiPlot;
var var
alpha: Double; alpha: Double;
Chi2Crit, pCrit: Double; Chi2Max, Chi2Crit, pCrit: Double;
begin begin
alpha := StrToFloat(AlphaEdit.Text); alpha := StrToFloat(AlphaEdit.Text);
DF1 := StrToInt(DF1Edit.Text); DF1 := StrToInt(DF1Edit.Text);
Chi2Max := InverseChi(0.9999, DF1);
Chi2Crit := InverseChi(1.0 - alpha, DF1); Chi2Crit := InverseChi(1.0 - alpha, DF1);
CalcChiSq(Chi2Crit, pCrit); CalcChiSq(Chi2Crit, pCrit);
Chart.Title.Text.Clear; Chart.Title.Text.Clear;
Chart.Title.Text.Add('<b>Chi-Squared Distribution.</b>'); Chart.Title.Text.Add('<b>Chi-Squared Distribution</b>');
Chart.Title.Text.Add(Format('&alpha; = %.3g / Degrees of freedom = %d', [alpha, DF1])); Chart.Title.Text.Add(Format('&alpha; = %.3g / Degrees of freedom = %d', [alpha, DF1]));
Chart.Title.Text.Add(Format('Critical value = %.3f', [Chi2Crit])); Chart.Title.Text.Add(Format('Critical value = %.3f', [Chi2Crit]));
Chart.Title.Visible := true; Chart.Title.Visible := true;
Chart.BottomAxis.Title.Caption := '&chi;<sup>2</sup>'; Chart.BottomAxis.Title.Caption := '&chi;<sup>2</sup>';
FuncSeries.Extent.XMin := 0; FuncSeries.Extent.XMin := 0;
FuncSeries.Extent.XMax := 125; FuncSeries.Extent.XMax := Chi2Max;
FuncSeries.Extent.UseXMin := true; FuncSeries.Extent.UseXMin := true;
FuncSeries.Extent.UseXMax := true; FuncSeries.Extent.UseXMax := true;
FuncSeries.OnCalculate := @CalcChiSq; FuncSeries.OnCalculate := @CalcChiSq;
@ -370,22 +372,23 @@ end;
procedure TDistribFrm.FPlot; procedure TDistribFrm.FPlot;
var var
alpha: Double; alpha: Double;
FCrit, pCrit: Double; FMax, FCrit, pCrit: Double;
begin begin
alpha := StrToFloat(AlphaEdit.Text); alpha := StrToFloat(AlphaEdit.Text);
DF1 := StrToInt(DF1Edit.Text); DF1 := StrToInt(DF1Edit.Text);
DF2 := StrToInt(DF2Edit.Text); DF2 := StrToInt(DF2Edit.Text);
FMax := FPercentPoint(0.999, DF1, DF2);
FCrit := FPercentPoint(1.0 - alpha, DF1, DF2); FCrit := FPercentPoint(1.0 - alpha, DF1, DF2);
CalcF(FCrit, pCrit); CalcF(FCrit, pCrit);
Chart.Title.Text.Clear; Chart.Title.Text.Clear;
Chart.Title.Text.Add('<b>F Distribution.</b>'); Chart.Title.Text.Add('<b>F Distribution</b>');
Chart.Title.Text.Add(Format('&alpha; = %.3g / DF1 = %d, DF2 = %d', [alpha, DF1, DF2])); Chart.Title.Text.Add(Format('&alpha; = %.3g / DF1 = %d, DF2 = %d', [alpha, DF1, DF2]));
Chart.Title.Text.Add(Format('Critical value = %.3f', [FCrit])); Chart.Title.Text.Add(Format('Critical value = %.3f', [FCrit]));
Chart.Title.Visible := true; Chart.Title.Visible := true;
Chart.BottomAxis.Title.Caption := 'F'; Chart.BottomAxis.Title.Caption := 'F';
FuncSeries.Extent.XMin := 0; FuncSeries.Extent.XMin := 0;
FuncSeries.Extent.XMax := 15; FuncSeries.Extent.XMax := FMax;
FuncSeries.Extent.UseXMin := true; FuncSeries.Extent.UseXMin := true;
FuncSeries.Extent.UseXMax := true; FuncSeries.Extent.UseXMax := true;
FuncSeries.OnCalculate := @CalcF; FuncSeries.OnCalculate := @CalcF;
@ -399,21 +402,22 @@ end;
procedure TDistribFrm.tPlot; procedure TDistribFrm.tPlot;
var var
alpha: Double; alpha: Double;
tCrit, pCrit: Double; tMax, tCrit, pCrit: Double;
begin begin
alpha := StrToFloat(AlphaEdit.Text); alpha := StrToFloat(AlphaEdit.Text);
DF1 := StrToInt(DF1Edit.Text); DF1 := StrToInt(DF1Edit.Text);
tMax := Inverset(0.9999, DF1);
tCrit := Inverset(1.0 - alpha, DF1); tCrit := Inverset(1.0 - alpha, DF1);
Calct(tCrit, pCrit); Calct(tCrit, pCrit);
Chart.Title.Text.Clear; Chart.Title.Text.Clear;
Chart.Title.Text.Add('<b>Student t Distribution.</b>'); Chart.Title.Text.Add('<b>Student t Distribution</b>');
Chart.Title.Text.Add(Format('&alpha; = %.3g / Degrees of freedom = %d', [alpha, DF1])); Chart.Title.Text.Add(Format('&alpha; = %.3g / Degrees of freedom = %d', [alpha, DF1]));
Chart.Title.Text.Add(Format('Critical value = %.3f', [tCrit])); Chart.Title.Text.Add(Format('Critical value = %.3f', [tCrit]));
Chart.Title.Visible := true; Chart.Title.Visible := true;
Chart.BottomAxis.Title.Caption := 't'; Chart.BottomAxis.Title.Caption := 't';
FuncSeries.Extent.XMin := -4; FuncSeries.Extent.XMin := -tMax;
FuncSeries.Extent.XMax := 4; FuncSeries.Extent.XMax := tMax;
FuncSeries.Extent.UseXMin := true; FuncSeries.Extent.UseXMin := true;
FuncSeries.Extent.UseXMax := true; FuncSeries.Extent.UseXMax := true;
FuncSeries.OnCalculate := @Calct; FuncSeries.OnCalculate := @Calct;
@ -429,8 +433,8 @@ var
w: Integer; w: Integer;
begin begin
w := MaxValue([SaveBtn.Width, PrintBtn.Width, ResetBtn.Width, ComputeBtn.Width, CloseBtn.Width]); w := MaxValue([SaveBtn.Width, PrintBtn.Width, ResetBtn.Width, ComputeBtn.Width, CloseBtn.Width]);
SaveBtn.Width := w; SaveBtn.Constraints.MinWidth := w;
PrintBtn.Width := w; PrintBtn.Constraints.MinWidth := w;
ResetBtn.Constraints.MinWidth := w; ResetBtn.Constraints.MinWidth := w;
ComputeBtn.Constraints.MinWidth := w; ComputeBtn.Constraints.MinWidth := w;
CloseBtn.Constraints.MinWidth := w; CloseBtn.Constraints.MinWidth := w;