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;