diff --git a/applications/lazstats/LazStats.chm b/applications/lazstats/LazStats.chm
index 2e75b59ab..166589097 100644
Binary files a/applications/lazstats/LazStats.chm and b/applications/lazstats/LazStats.chm differ
diff --git a/applications/lazstats/docs/HelpNDoc/LazStats.hnd b/applications/lazstats/docs/HelpNDoc/LazStats.hnd
index 8ae8b1e3b..2f6d0db02 100644
Binary files a/applications/lazstats/docs/HelpNDoc/LazStats.hnd and b/applications/lazstats/docs/HelpNDoc/LazStats.hnd differ
diff --git a/applications/lazstats/source/forms/simulations/distribunit.lfm b/applications/lazstats/source/forms/simulations/distribunit.lfm
index 4c966c26c..c83831814 100644
--- a/applications/lazstats/source/forms/simulations/distribunit.lfm
+++ b/applications/lazstats/source/forms/simulations/distribunit.lfm
@@ -5,7 +5,6 @@ object DistribFrm: TDistribFrm
Width = 687
HelpType = htKeyword
HelpKeyword = 'html/DistributionPlotsandCriticalValu.htm'
- BorderStyle = bsDialog
Caption = 'Distributions'
ClientHeight = 432
ClientWidth = 687
@@ -77,10 +76,10 @@ object DistribFrm: TDistribFrm
Anchors = [akLeft, akRight, akBottom]
Shape = bsBottomLine
end
- object Panel1: TPanel
+ object ChartPanel: TPanel
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner
- AnchorSideRight.Control = Panel2
+ AnchorSideRight.Control = ParameterPanel
AnchorSideBottom.Control = Bevel1
Left = 8
Height = 377
@@ -131,6 +130,7 @@ object DistribFrm: TDistribFrm
Foot.Brush.Color = clBtnFace
Foot.Font.Color = clBlue
Margins.Bottom = 0
+ Title.Brush.Color = clBtnFace
Title.Brush.Style = bsClear
Title.Font.Color = clBlue
Title.Text.Strings = (
@@ -176,7 +176,7 @@ object DistribFrm: TDistribFrm
OnClick = PrintBtnClick
TabOrder = 5
end
- object Panel2: TPanel
+ object ParameterPanel: TPanel
AnchorSideTop.Control = Owner
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
@@ -190,13 +190,12 @@ object DistribFrm: TDistribFrm
BorderSpacing.Top = 8
BorderSpacing.Right = 8
BevelOuter = bvNone
- Caption = 'Panel2'
ClientHeight = 377
ClientWidth = 180
TabOrder = 6
object GroupBox1: TGroupBox
- AnchorSideLeft.Control = Panel2
- AnchorSideTop.Control = Panel2
+ AnchorSideLeft.Control = ParameterPanel
+ AnchorSideTop.Control = ParameterPanel
AnchorSideRight.Side = asrBottom
Left = 0
Height = 136
diff --git a/applications/lazstats/source/forms/simulations/distribunit.pas b/applications/lazstats/source/forms/simulations/distribunit.pas
index a93027de3..2cdd96ea2 100644
--- a/applications/lazstats/source/forms/simulations/distribunit.pas
+++ b/applications/lazstats/source/forms/simulations/distribunit.pas
@@ -31,7 +31,7 @@ type
SavePictureDialog: TSavePictureDialog;
VertLineSeries: TLineSeries;
FuncSeries: TFuncSeries;
- Panel2: TPanel;
+ ParameterPanel: TPanel;
SaveBtn: TButton;
PrintBtn: TButton;
Chart: TChart;
@@ -41,7 +41,7 @@ type
FChk: TRadioButton;
MeanEdit: TEdit;
NDChk: TRadioButton;
- Panel1: TPanel;
+ ChartPanel: TPanel;
ResetBtn: TButton;
ComputeBtn: TButton;
CloseBtn: TButton;
@@ -315,9 +315,10 @@ end;
procedure TDistribFrm.NDPlot;
var
alpha: Double;
- zCrit, pCrit: Double;
+ zMax, zCrit, pCrit: Double;
begin
alpha := StrToFloat(AlphaEdit.Text);
+ zMax := InverseZ(0.9999);
zCrit := inversez(1.0 - alpha);
CalcND(zCrit, pCrit);
@@ -327,8 +328,8 @@ begin
Chart.Title.Text.Add(Format('Critical value = %.3f', [zCrit]));
Chart.Title.Visible := true;
Chart.BottomAxis.Title.Caption := 'z';
- FuncSeries.Extent.XMin := -4;
- FuncSeries.Extent.XMax := +4;
+ FuncSeries.Extent.XMin := -zMax;
+ FuncSeries.Extent.XMax := +zMax;
FuncSeries.Extent.UseXMin := true;
FuncSeries.Extent.UseXMax := true;
FuncSeries.OnCalculate := @CalcND;
@@ -342,21 +343,22 @@ end;
procedure TDistribFrm.ChiPlot;
var
alpha: Double;
- Chi2Crit, pCrit: Double;
+ Chi2Max, Chi2Crit, pCrit: Double;
begin
alpha := StrToFloat(AlphaEdit.Text);
DF1 := StrToInt(DF1Edit.Text);
+ Chi2Max := InverseChi(0.9999, DF1);
Chi2Crit := InverseChi(1.0 - alpha, DF1);
CalcChiSq(Chi2Crit, pCrit);
Chart.Title.Text.Clear;
- Chart.Title.Text.Add('Chi-Squared Distribution.');
+ Chart.Title.Text.Add('Chi-Squared Distribution');
Chart.Title.Text.Add(Format('α = %.3g / Degrees of freedom = %d', [alpha, DF1]));
Chart.Title.Text.Add(Format('Critical value = %.3f', [Chi2Crit]));
Chart.Title.Visible := true;
Chart.BottomAxis.Title.Caption := 'χ2';
FuncSeries.Extent.XMin := 0;
- FuncSeries.Extent.XMax := 125;
+ FuncSeries.Extent.XMax := Chi2Max;
FuncSeries.Extent.UseXMin := true;
FuncSeries.Extent.UseXMax := true;
FuncSeries.OnCalculate := @CalcChiSq;
@@ -370,22 +372,23 @@ end;
procedure TDistribFrm.FPlot;
var
alpha: Double;
- FCrit, pCrit: Double;
+ FMax, FCrit, pCrit: Double;
begin
alpha := StrToFloat(AlphaEdit.Text);
DF1 := StrToInt(DF1Edit.Text);
DF2 := StrToInt(DF2Edit.Text);
+ FMax := FPercentPoint(0.999, DF1, DF2);
FCrit := FPercentPoint(1.0 - alpha, DF1, DF2);
CalcF(FCrit, pCrit);
Chart.Title.Text.Clear;
- Chart.Title.Text.Add('F Distribution.');
+ Chart.Title.Text.Add('F Distribution');
Chart.Title.Text.Add(Format('α = %.3g / DF1 = %d, DF2 = %d', [alpha, DF1, DF2]));
Chart.Title.Text.Add(Format('Critical value = %.3f', [FCrit]));
Chart.Title.Visible := true;
Chart.BottomAxis.Title.Caption := 'F';
FuncSeries.Extent.XMin := 0;
- FuncSeries.Extent.XMax := 15;
+ FuncSeries.Extent.XMax := FMax;
FuncSeries.Extent.UseXMin := true;
FuncSeries.Extent.UseXMax := true;
FuncSeries.OnCalculate := @CalcF;
@@ -399,21 +402,22 @@ end;
procedure TDistribFrm.tPlot;
var
alpha: Double;
- tCrit, pCrit: Double;
+ tMax, tCrit, pCrit: Double;
begin
alpha := StrToFloat(AlphaEdit.Text);
DF1 := StrToInt(DF1Edit.Text);
+ tMax := Inverset(0.9999, DF1);
tCrit := Inverset(1.0 - alpha, DF1);
Calct(tCrit, pCrit);
Chart.Title.Text.Clear;
- Chart.Title.Text.Add('Student t Distribution.');
+ Chart.Title.Text.Add('Student t Distribution');
Chart.Title.Text.Add(Format('α = %.3g / Degrees of freedom = %d', [alpha, DF1]));
Chart.Title.Text.Add(Format('Critical value = %.3f', [tCrit]));
Chart.Title.Visible := true;
Chart.BottomAxis.Title.Caption := 't';
- FuncSeries.Extent.XMin := -4;
- FuncSeries.Extent.XMax := 4;
+ FuncSeries.Extent.XMin := -tMax;
+ FuncSeries.Extent.XMax := tMax;
FuncSeries.Extent.UseXMin := true;
FuncSeries.Extent.UseXMax := true;
FuncSeries.OnCalculate := @Calct;
@@ -429,8 +433,8 @@ var
w: Integer;
begin
w := MaxValue([SaveBtn.Width, PrintBtn.Width, ResetBtn.Width, ComputeBtn.Width, CloseBtn.Width]);
- SaveBtn.Width := w;
- PrintBtn.Width := w;
+ SaveBtn.Constraints.MinWidth := w;
+ PrintBtn.Constraints.MinWidth := w;
ResetBtn.Constraints.MinWidth := w;
ComputeBtn.Constraints.MinWidth := w;
CloseBtn.Constraints.MinWidth := w;