You've already forked lazarus-ccr
LazStats: Inherit OneSampUnit from TBasicStatsReportForm. Unit renamed to OneSampleUnit.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7841 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -1,13 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<CONFIG>
|
<CONFIG>
|
||||||
<ProjectOptions>
|
<ProjectOptions>
|
||||||
<Version Value="12"/>
|
<Version Value="11"/>
|
||||||
<PathDelim Value="\"/>
|
<PathDelim Value="\"/>
|
||||||
<General>
|
<General>
|
||||||
<Flags>
|
|
||||||
<CompatibilityMode Value="True"/>
|
|
||||||
</Flags>
|
|
||||||
<SessionStorage Value="InProjectDir"/>
|
<SessionStorage Value="InProjectDir"/>
|
||||||
|
<MainUnit Value="0"/>
|
||||||
<Scaled Value="True"/>
|
<Scaled Value="True"/>
|
||||||
<ResourceType Value="res"/>
|
<ResourceType Value="res"/>
|
||||||
<UseXPManifest Value="True"/>
|
<UseXPManifest Value="True"/>
|
||||||
@ -94,6 +92,7 @@
|
|||||||
</PublishOptions>
|
</PublishOptions>
|
||||||
<RunParams>
|
<RunParams>
|
||||||
<FormatVersion Value="2"/>
|
<FormatVersion Value="2"/>
|
||||||
|
<Modes Count="0"/>
|
||||||
</RunParams>
|
</RunParams>
|
||||||
<RequiredPackages Count="7">
|
<RequiredPackages Count="7">
|
||||||
<Item1>
|
<Item1>
|
||||||
@ -298,12 +297,12 @@
|
|||||||
<UnitName Value="MultXvsYUnit"/>
|
<UnitName Value="MultXvsYUnit"/>
|
||||||
</Unit23>
|
</Unit23>
|
||||||
<Unit24>
|
<Unit24>
|
||||||
<Filename Value="forms\analysis\one_sample_tests\onesampunit.pas"/>
|
<Filename Value="forms\analysis\one_sample_tests\onesampleunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="OneSampFrm"/>
|
<ComponentName Value="OneSampleForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="OneSampUnit"/>
|
<UnitName Value="OneSampleUnit"/>
|
||||||
</Unit24>
|
</Unit24>
|
||||||
<Unit25>
|
<Unit25>
|
||||||
<Filename Value="forms\analysis\comparisons\twocorrsunit.pas"/>
|
<Filename Value="forms\analysis\comparisons\twocorrsunit.pas"/>
|
||||||
|
Binary file not shown.
@ -0,0 +1,211 @@
|
|||||||
|
inherited OneSampleForm: TOneSampleForm
|
||||||
|
Left = 1258
|
||||||
|
Height = 338
|
||||||
|
Top = 230
|
||||||
|
Width = 533
|
||||||
|
BorderStyle = bsSingle
|
||||||
|
Caption = 'One Sample Tests'
|
||||||
|
ClientHeight = 338
|
||||||
|
ClientWidth = 533
|
||||||
|
inherited ParamsPanel: TPanel
|
||||||
|
Height = 322
|
||||||
|
ClientHeight = 322
|
||||||
|
inherited CloseBtn: TButton
|
||||||
|
Top = 297
|
||||||
|
end
|
||||||
|
inherited ComputeBtn: TButton
|
||||||
|
Top = 297
|
||||||
|
end
|
||||||
|
inherited ResetBtn: TButton
|
||||||
|
Top = 297
|
||||||
|
end
|
||||||
|
inherited HelpBtn: TButton
|
||||||
|
Top = 297
|
||||||
|
end
|
||||||
|
inherited ButtonBevel: TBevel
|
||||||
|
Top = 281
|
||||||
|
end
|
||||||
|
object StatsGroup: TRadioGroup[5]
|
||||||
|
AnchorSideLeft.Control = ParamsPanel
|
||||||
|
AnchorSideLeft.Side = asrCenter
|
||||||
|
AnchorSideTop.Control = ParamsPanel
|
||||||
|
AnchorSideBottom.Side = asrBottom
|
||||||
|
Left = 71
|
||||||
|
Height = 114
|
||||||
|
Top = 0
|
||||||
|
Width = 149
|
||||||
|
AutoFill = True
|
||||||
|
AutoSize = True
|
||||||
|
BorderSpacing.Left = 8
|
||||||
|
Caption = 'Statistic of Interest'
|
||||||
|
ChildSizing.LeftRightSpacing = 12
|
||||||
|
ChildSizing.TopBottomSpacing = 6
|
||||||
|
ChildSizing.VerticalSpacing = 2
|
||||||
|
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
|
||||||
|
ChildSizing.EnlargeVertical = crsHomogenousChildResize
|
||||||
|
ChildSizing.ShrinkHorizontal = crsScaleChilds
|
||||||
|
ChildSizing.ShrinkVertical = crsScaleChilds
|
||||||
|
ChildSizing.Layout = cclLeftToRightThenTopToBottom
|
||||||
|
ChildSizing.ControlsPerLine = 1
|
||||||
|
ClientHeight = 94
|
||||||
|
ClientWidth = 145
|
||||||
|
ItemIndex = 0
|
||||||
|
Items.Strings = (
|
||||||
|
'Sample Mean'
|
||||||
|
'Sample Proportion'
|
||||||
|
'Sample Correlation'
|
||||||
|
'Sample Variance'
|
||||||
|
)
|
||||||
|
OnClick = StatsGroupClick
|
||||||
|
TabOrder = 4
|
||||||
|
end
|
||||||
|
object StatisticLabel: TLabel[6]
|
||||||
|
AnchorSideTop.Control = StatisticEdit
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
AnchorSideRight.Control = StdDevLabel
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 93
|
||||||
|
Height = 15
|
||||||
|
Top = 142
|
||||||
|
Width = 99
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
Caption = 'Sample Proportion'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object ParameterLabel: TLabel[7]
|
||||||
|
AnchorSideTop.Control = ParameterEdit
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
AnchorSideRight.Control = StdDevLabel
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 74
|
||||||
|
Height = 15
|
||||||
|
Top = 169
|
||||||
|
Width = 118
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
Caption = 'Population Parameter:'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object SizeLabel: TLabel[8]
|
||||||
|
AnchorSideTop.Control = SizeEdit
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
AnchorSideRight.Control = StdDevLabel
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 127
|
||||||
|
Height = 15
|
||||||
|
Top = 196
|
||||||
|
Width = 65
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
Caption = 'Sample Size:'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object Label4: TLabel[9]
|
||||||
|
AnchorSideTop.Control = CIntervalEdit
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
AnchorSideRight.Control = StdDevLabel
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 80
|
||||||
|
Height = 15
|
||||||
|
Top = 250
|
||||||
|
Width = 112
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
Caption = 'Confidence Level (%)'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object StdDevLabel: TLabel[10]
|
||||||
|
AnchorSideTop.Control = StdDevEdit
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
AnchorSideRight.Control = StdDevEdit
|
||||||
|
Left = 47
|
||||||
|
Height = 15
|
||||||
|
Top = 223
|
||||||
|
Width = 145
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.Right = 8
|
||||||
|
Caption = 'Sample Standard Deviation:'
|
||||||
|
ParentColor = False
|
||||||
|
end
|
||||||
|
object StatisticEdit: TEdit[11]
|
||||||
|
AnchorSideLeft.Control = StdDevEdit
|
||||||
|
AnchorSideTop.Control = StatsGroup
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = StdDevEdit
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 200
|
||||||
|
Height = 23
|
||||||
|
Top = 138
|
||||||
|
Width = 91
|
||||||
|
Alignment = taRightJustify
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Top = 24
|
||||||
|
TabOrder = 5
|
||||||
|
Text = 'StatisticEdit'
|
||||||
|
end
|
||||||
|
object StdDevEdit: TEdit[12]
|
||||||
|
AnchorSideTop.Control = SizeEdit
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ParamsPanel
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 200
|
||||||
|
Height = 23
|
||||||
|
Top = 219
|
||||||
|
Width = 91
|
||||||
|
Alignment = taRightJustify
|
||||||
|
Anchors = [akTop, akRight]
|
||||||
|
BorderSpacing.Left = 8
|
||||||
|
BorderSpacing.Top = 4
|
||||||
|
TabOrder = 6
|
||||||
|
Text = 'StdDevEdit'
|
||||||
|
end
|
||||||
|
object ParameterEdit: TEdit[13]
|
||||||
|
AnchorSideLeft.Control = StdDevEdit
|
||||||
|
AnchorSideTop.Control = StatisticEdit
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ParamsPanel
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 200
|
||||||
|
Height = 23
|
||||||
|
Top = 165
|
||||||
|
Width = 91
|
||||||
|
Alignment = taRightJustify
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Top = 4
|
||||||
|
TabOrder = 7
|
||||||
|
Text = 'ParameterEdit'
|
||||||
|
end
|
||||||
|
object SizeEdit: TEdit[14]
|
||||||
|
AnchorSideLeft.Control = StdDevEdit
|
||||||
|
AnchorSideTop.Control = ParameterEdit
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = ParamsPanel
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 200
|
||||||
|
Height = 23
|
||||||
|
Top = 192
|
||||||
|
Width = 91
|
||||||
|
Alignment = taRightJustify
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Top = 4
|
||||||
|
TabOrder = 8
|
||||||
|
Text = 'SizeEdit'
|
||||||
|
end
|
||||||
|
object CIntervalEdit: TEdit[15]
|
||||||
|
AnchorSideLeft.Control = StdDevEdit
|
||||||
|
AnchorSideTop.Control = StdDevEdit
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = StdDevEdit
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 200
|
||||||
|
Height = 23
|
||||||
|
Top = 246
|
||||||
|
Width = 91
|
||||||
|
Alignment = taRightJustify
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Top = 4
|
||||||
|
TabOrder = 9
|
||||||
|
Text = 'CIntervalEdit'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
inherited ParamsSplitter: TSplitter
|
||||||
|
Height = 338
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,316 @@
|
|||||||
|
unit OneSampleUnit;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils, Forms, Controls, Graphics, Dialogs,
|
||||||
|
ExtCtrls, StdCtrls, BasicStatsReportFormUnit;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{ TOneSampleForm }
|
||||||
|
|
||||||
|
TOneSampleForm = class(TBasicStatsReportForm)
|
||||||
|
StatisticEdit: TEdit;
|
||||||
|
ParameterEdit: TEdit;
|
||||||
|
SizeEdit: TEdit;
|
||||||
|
CIntervalEdit: TEdit;
|
||||||
|
StdDevEdit: TEdit;
|
||||||
|
StatisticLabel: TLabel;
|
||||||
|
ParameterLabel: TLabel;
|
||||||
|
SizeLabel: TLabel;
|
||||||
|
Label4: TLabel;
|
||||||
|
StdDevLabel: TLabel;
|
||||||
|
StatsGroup: TRadioGroup;
|
||||||
|
procedure StatsGroupClick(Sender: TObject);
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
protected
|
||||||
|
procedure AdjustConstraints; override;
|
||||||
|
procedure Compute; override;
|
||||||
|
function Validate(out AMsg: String; out AControl: TWinControl): Boolean; override;
|
||||||
|
|
||||||
|
public
|
||||||
|
constructor Create(AOwner: TComponent); override;
|
||||||
|
procedure Reset; override;
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
OneSampleForm: TOneSampleForm;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
{$R *.lfm}
|
||||||
|
|
||||||
|
uses
|
||||||
|
Math,
|
||||||
|
Globals, FunctionsLib, MathUnit;
|
||||||
|
|
||||||
|
|
||||||
|
{ TOneSampleForm }
|
||||||
|
|
||||||
|
constructor TOneSampleForm.Create(AOwner: TComponent);
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
CIntervalEdit.Text := FormatFloat('0', DEFAULT_CONFIDENCE_LEVEL_PERCENT);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TOneSampleForm.AdjustConstraints;
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
|
||||||
|
ParamsPanel.Constraints.MinWidth := Max(
|
||||||
|
4*CloseBtn.Width + 3*CloseBtn.BorderSpacing.Left,
|
||||||
|
StdDevLabel.Width + StdDevEdit.BorderSpacing.Left + StdDevEdit.Width
|
||||||
|
);
|
||||||
|
ParamsPanel.Constraints.MinHeight := CIntervalEdit.Top + CIntervalEdit.Height +
|
||||||
|
ButtonBevel.Height + CloseBtn.BorderSpacing.Top + CloseBtn.Height;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TOneSampleForm.Compute;
|
||||||
|
var
|
||||||
|
N: integer;
|
||||||
|
sampleValue, popValue, stdErr, sampleSD, probability, UCL, LCL: Double;
|
||||||
|
sampleTrans, popTrans: Double;
|
||||||
|
confidence, alpha, df: double;
|
||||||
|
z, zReject, zConf, t, testT: double;
|
||||||
|
chiSqrVal, lowChi, hiChi, testChi: double;
|
||||||
|
lReport: TStrings;
|
||||||
|
begin
|
||||||
|
lReport := TStringList.Create;
|
||||||
|
try
|
||||||
|
lReport.Add('ANALYSIS OF A ' + UpperCase(StatsGroup.Items[StatsGroup.ItemIndex]));
|
||||||
|
lReport.Add('');
|
||||||
|
N := round(StrToFloat(SizeEdit.Text));
|
||||||
|
confidence := StrToFloat(CIntervalEdit.Text) / 100.0;
|
||||||
|
case StatsGroup.ItemIndex of
|
||||||
|
0 : begin // Means
|
||||||
|
sampleValue := StrToFloat(StatisticEdit.Text);
|
||||||
|
popValue := StrToFloat(ParameterEdit.Text);
|
||||||
|
sampleSD := StrToFloat(StdDevEdit.Text);
|
||||||
|
DF := N;
|
||||||
|
stdErr := sampleSD / sqrt(DF);
|
||||||
|
DF := N-1;
|
||||||
|
t := (sampleValue - popValue) / stdErr;
|
||||||
|
probability := ProbT(t, DF);
|
||||||
|
alpha := (1.0 - confidence) / 2.0;
|
||||||
|
testT := InverseT(1.0 - alpha, DF);
|
||||||
|
UCL := sampleValue + testT * stdErr;
|
||||||
|
LCL := sampleValue - testT * stdErr;
|
||||||
|
lReport.Add('Sample Mean: %9.3f', [sampleValue]);
|
||||||
|
lReport.Add('Population Mean: %9.3f', [popValue]);
|
||||||
|
lReport.Add('Sample Size: %9d', [N]);
|
||||||
|
lReport.Add('Standard error of Mean: %9.3f', [stdErr]);
|
||||||
|
lReport.Add('t test statistic: %9.3f', [t]);
|
||||||
|
lReport.Add(' with probability: %9.3f', [probability]);
|
||||||
|
lReport.Add('t value required for rejection: %9.3f', [testT]);
|
||||||
|
lReport.Add('Confidence Interval: %9.3f ... %.3f', [LCL, UCL]);
|
||||||
|
end;
|
||||||
|
1 : begin // Proportions
|
||||||
|
sampleValue := StrToFloat(StatisticEdit.Text);
|
||||||
|
popValue := StrToFloat(ParameterEdit.Text);
|
||||||
|
stdErr := sqrt((sampleValue * (1.0 - sampleValue)) / N);
|
||||||
|
z := (sampleValue - popValue) / stdErr;
|
||||||
|
probability := 1.0 - ProbZ(z);
|
||||||
|
zReject := InverseZ(confidence);
|
||||||
|
zConf := abs(InverseZ((1.0 - confidence) / 2.0));
|
||||||
|
UCL := sampleValue + (zconf * stdErr);
|
||||||
|
LCL := sampleValue - (zconf * stdErr);
|
||||||
|
lReport.Add('Sample Proportion: %9.3f', [sampleValue]);
|
||||||
|
lReport.Add('Population Proportion: %9.3f', [popValue]);
|
||||||
|
lReport.Add('Sample Size: %9d', [N]);
|
||||||
|
lReport.Add('Standard error of proportion: %9.3f', [stdErr]);
|
||||||
|
lReport.Add('z test statistic: %9.3f', [z]);
|
||||||
|
lReport.Add(' with probability > P: %9.3f', [probability]);
|
||||||
|
lReport.Add('z value required for rejection: %9.3f', [zReject]);
|
||||||
|
lReport.Add('Confidence Interval: %9.3f ... %.3f', [LCL, UCL]);
|
||||||
|
end;
|
||||||
|
2 : begin // Correlation
|
||||||
|
sampleValue := StrToFloat(StatisticEdit.Text);
|
||||||
|
popValue := StrToFloat(ParameterEdit.Text);
|
||||||
|
zConf := abs(InverseZ((1.0 - confidence) / 2.0));
|
||||||
|
sampleTrans := ln((1.0 + sampleValue) / (1.0 - sampleValue)) / 2.0;
|
||||||
|
popTrans := ln((1.0 + popValue) / (1.0 - popValue)) / 2.0;
|
||||||
|
stdErr := sqrt(1.0 / (N - 3.0));
|
||||||
|
z := (sampleTrans - popTrans) / stdErr;
|
||||||
|
probability := ProbZ(z);
|
||||||
|
alpha := (1.0 - confidence) / 2.0;
|
||||||
|
zReject := InverseZ(1.0 - alpha);
|
||||||
|
UCL := sampleTrans + (zConf * stdErr);
|
||||||
|
LCL := sampleTrans - (zConf * stdErr);
|
||||||
|
UCL := (exp(2.0 * UCL) - 1.0) / (exp(2.0 * UCL) + 1.0);
|
||||||
|
LCL := (exp(2.0 * LCL) - 1.0) / (exp(2.0 * LCL) + 1.0);
|
||||||
|
lReport.Add('Sample Correlation: %9.3f', [sampleValue]);
|
||||||
|
lReport.Add('Population Correlation: %9.3f', [popValue]);
|
||||||
|
lReport.Add('Sample Size: %9d', [N]);
|
||||||
|
lReport.Add('z Transform of sample correlation: %9.3f', [sampleTrans]);
|
||||||
|
lReport.Add('z Transform of population correlation: %9.3f', [popTrans]);
|
||||||
|
lReport.Add('Standard error of transform: %9.3f', [stdErr]);
|
||||||
|
lReport.Add('z test statistic: %9.3f', [z]);
|
||||||
|
lReport.Add(' with probability: %9.3f', [probability]);
|
||||||
|
lReport.Add('z value required for rejection: %9.3f', [zReject]);
|
||||||
|
lReport.Add('Confidence Interval for sample correlation: %9.3f ... %.3f', [LCL, UCL]);
|
||||||
|
end;
|
||||||
|
3 : begin // Variance
|
||||||
|
sampleValue := StrToFloat(StatisticEdit.Text);
|
||||||
|
popValue := StrToFloat(ParameterEdit.Text);
|
||||||
|
alpha := 1.0 - confidence;
|
||||||
|
chiSqrVal := ((N - 1.0) * sampleValue) / popValue;
|
||||||
|
probability := 1.0 - chiSquaredProb(chiSqrVal, N-1);
|
||||||
|
lowChi := InverseChi((1.0 - alpha / 2.0), N-1);
|
||||||
|
hiChi := InverseChi((alpha / 2.0), N-1);
|
||||||
|
LCL := ((N - 1.0) * sampleValue) / lowChi;
|
||||||
|
UCL := ((N - 1.0) * sampleValue) / hiChi;
|
||||||
|
if sampleValue > popValue then
|
||||||
|
testChi := lowChi
|
||||||
|
else
|
||||||
|
testChi := hiChi;
|
||||||
|
lReport.Add('Sample Variance: %9.3f', [sampleValue]);
|
||||||
|
lReport.Add('Population Variance: %9.3f', [popValue]);
|
||||||
|
lReport.Add('Sample Size: %9d', [N]);
|
||||||
|
lReport.Add('Chi-square statistic %9.3f', [chiSqrVal]);
|
||||||
|
lReport.Add(' with probability > chisquare %9.3f', [probability]);
|
||||||
|
lReport.Add(' and D.F. %9d', [N-1]);
|
||||||
|
lReport.Add('Chi-square value required for rejection: %9.3f', [testChi]);
|
||||||
|
lReport.Add('Chi-square Confidence Interval: %9.3f ... %.3f', [lowChi, hiChi]);
|
||||||
|
lReport.Add('Variance Confidence Interval: %9.3f ... %.3f', [LCL, UCL]);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
FReportFrame.DisplayReport(lReport);
|
||||||
|
finally
|
||||||
|
lReport.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TOneSampleForm.Reset;
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
StatisticEdit.Clear;
|
||||||
|
ParameterEdit.Clear;
|
||||||
|
SizeEdit.Clear;
|
||||||
|
StdDevEdit.Clear;
|
||||||
|
StatsGroupClick(nil);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TOneSampleForm.StatsGroupClick(Sender: TObject);
|
||||||
|
var
|
||||||
|
StatisticName: String;
|
||||||
|
begin
|
||||||
|
StatisticName := StatsGroup.Items[StatsGroup.ItemIndex];
|
||||||
|
Delete(StatisticName, 1, Length('Sample '));
|
||||||
|
StatisticLabel.Caption := 'Sample ' + StatisticName;
|
||||||
|
ParameterLabel.Caption := 'Population ' + StatisticName;
|
||||||
|
|
||||||
|
StdDevLabel.Enabled := StatsGroup.ItemIndex = 0;
|
||||||
|
StdDevEdit.Enabled := StatsGroup.ItemIndex = 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function TOneSampleForm.Validate(out AMsg: String; out AControl: TWinControl): Boolean;
|
||||||
|
var
|
||||||
|
x: Double;
|
||||||
|
n: Integer;
|
||||||
|
s: String;
|
||||||
|
begin
|
||||||
|
Result := false;
|
||||||
|
|
||||||
|
if StatisticEdit.Text = '' then
|
||||||
|
begin
|
||||||
|
AMsg := 'Value of sample proportion missing.';
|
||||||
|
AControl := StatisticEdit;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
if not TryStrtoFloat(StatisticEdit.Text, x) then
|
||||||
|
begin
|
||||||
|
AMsg := 'Sample proportion is not a valid number.';
|
||||||
|
AControl := StatisticEdit;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
if (StatsGroup.ItemIndex in [1, 2]) and ((x <= 0) or (x >= 1)) then
|
||||||
|
begin
|
||||||
|
AMsg := StatsGroup.Items[StatsGroup.ItemIndex] + ' must be between 0 and 1.';
|
||||||
|
AControl := StatisticEdit;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if ParameterEdit.Text = '' then
|
||||||
|
begin
|
||||||
|
AMsg := 'Value of population parameter is missing.';
|
||||||
|
AControl := ParameterEdit;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
if not TryStrToFloat(ParameterEdit.Text, x) then
|
||||||
|
begin
|
||||||
|
AMsg := 'Population parameter is not a valid number.';
|
||||||
|
AControl := ParameterEdit;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
if (StatsGroup.ItemIndex in [1, 2]) and ((x <= 0) or (x >= 1)) then
|
||||||
|
begin
|
||||||
|
s := Lowercase(Copy(StatsGroup.Items[StatsGroup.ItemIndex], Length('Sample ')+1, MaxInt));
|
||||||
|
AMsg := 'Population ' + s + ' must be between 0 and 1.';
|
||||||
|
AControl := ParameterEdit;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if SizeEdit.Text = '' then
|
||||||
|
begin
|
||||||
|
AMsg := 'Value of sample size is missing.';
|
||||||
|
AControl := SizeEdit;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
if not TryStrToInt(SizeEdit.Text, n) then
|
||||||
|
begin
|
||||||
|
AMsg := 'Sample size is not a valid number.';
|
||||||
|
AControl := SizeEdit;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if StatsGroup.ItemIndex = 0 then
|
||||||
|
begin
|
||||||
|
if StdDevEdit.Text = '' then
|
||||||
|
begin
|
||||||
|
AMsg := 'Sample standard deviation is not specified.';
|
||||||
|
AControl := StdDevEdit;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
if not TryStrToFloat(StdDevEdit.Text, x) then
|
||||||
|
begin
|
||||||
|
AMsg := 'Sample standard deviation is not a valid number.';
|
||||||
|
AControl := StdDevEdit;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if CIntervalEdit.Text = '' then
|
||||||
|
begin
|
||||||
|
AMsg := 'Confidence level is not specified.';
|
||||||
|
AControl := CIntervalEdit;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
if not TryStrToFloat(CIntervalEdit.Text, x) then
|
||||||
|
begin
|
||||||
|
AMsg := 'Confidence level is not a valid number.';
|
||||||
|
AControl := CIntervalEdit;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
if (x <= 0) or (x >= 100) then
|
||||||
|
begin
|
||||||
|
AMsg := 'Confidence level must be between 0 and 100.';
|
||||||
|
AControl := CIntervalEdit;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
Result := true;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
@ -1,271 +0,0 @@
|
|||||||
object OneSampFrm: TOneSampFrm
|
|
||||||
Left = 490
|
|
||||||
Height = 188
|
|
||||||
Top = 260
|
|
||||||
Width = 430
|
|
||||||
AutoSize = True
|
|
||||||
BorderStyle = bsSingle
|
|
||||||
Caption = 'One Sample Tests'
|
|
||||||
ClientHeight = 188
|
|
||||||
ClientWidth = 430
|
|
||||||
OnActivate = FormActivate
|
|
||||||
OnCreate = FormCreate
|
|
||||||
OnShow = FormShow
|
|
||||||
Position = poMainFormCenter
|
|
||||||
LCLVersion = '2.1.0.0'
|
|
||||||
object RadioGroup1: TRadioGroup
|
|
||||||
AnchorSideLeft.Control = Owner
|
|
||||||
AnchorSideTop.Control = Owner
|
|
||||||
AnchorSideBottom.Control = Panel1
|
|
||||||
AnchorSideBottom.Side = asrBottom
|
|
||||||
Left = 8
|
|
||||||
Height = 131
|
|
||||||
Top = 8
|
|
||||||
Width = 149
|
|
||||||
Anchors = [akTop, akLeft, akBottom]
|
|
||||||
AutoFill = True
|
|
||||||
AutoSize = True
|
|
||||||
BorderSpacing.Left = 8
|
|
||||||
BorderSpacing.Top = 8
|
|
||||||
Caption = 'Statistic of Interest'
|
|
||||||
ChildSizing.LeftRightSpacing = 12
|
|
||||||
ChildSizing.TopBottomSpacing = 6
|
|
||||||
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
|
|
||||||
ChildSizing.EnlargeVertical = crsHomogenousChildResize
|
|
||||||
ChildSizing.ShrinkHorizontal = crsScaleChilds
|
|
||||||
ChildSizing.ShrinkVertical = crsScaleChilds
|
|
||||||
ChildSizing.Layout = cclLeftToRightThenTopToBottom
|
|
||||||
ChildSizing.ControlsPerLine = 1
|
|
||||||
ClientHeight = 111
|
|
||||||
ClientWidth = 145
|
|
||||||
ItemIndex = 0
|
|
||||||
Items.Strings = (
|
|
||||||
'Sample Mean'
|
|
||||||
'Sample Proportion'
|
|
||||||
'Sample Correlation'
|
|
||||||
'Sample Variance'
|
|
||||||
)
|
|
||||||
OnClick = RadioGroup1Click
|
|
||||||
TabOrder = 0
|
|
||||||
end
|
|
||||||
object Panel1: TPanel
|
|
||||||
AnchorSideLeft.Control = RadioGroup1
|
|
||||||
AnchorSideLeft.Side = asrBottom
|
|
||||||
AnchorSideTop.Control = Owner
|
|
||||||
Left = 181
|
|
||||||
Height = 131
|
|
||||||
Top = 8
|
|
||||||
Width = 236
|
|
||||||
AutoSize = True
|
|
||||||
BorderSpacing.Left = 24
|
|
||||||
BorderSpacing.Top = 8
|
|
||||||
BorderSpacing.Right = 8
|
|
||||||
BevelOuter = bvNone
|
|
||||||
ClientHeight = 131
|
|
||||||
ClientWidth = 236
|
|
||||||
TabOrder = 1
|
|
||||||
object Label1: TLabel
|
|
||||||
AnchorSideLeft.Control = Panel1
|
|
||||||
AnchorSideTop.Control = Statistic
|
|
||||||
AnchorSideTop.Side = asrCenter
|
|
||||||
Left = 0
|
|
||||||
Height = 15
|
|
||||||
Top = 4
|
|
||||||
Width = 99
|
|
||||||
Caption = 'Sample Proportion'
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object Label2: TLabel
|
|
||||||
AnchorSideLeft.Control = Panel1
|
|
||||||
AnchorSideTop.Control = Parameter
|
|
||||||
AnchorSideTop.Side = asrCenter
|
|
||||||
Left = 0
|
|
||||||
Height = 15
|
|
||||||
Top = 31
|
|
||||||
Width = 118
|
|
||||||
Caption = 'Population Parameter:'
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object Label3: TLabel
|
|
||||||
AnchorSideLeft.Control = Panel1
|
|
||||||
AnchorSideTop.Control = Size
|
|
||||||
AnchorSideTop.Side = asrCenter
|
|
||||||
Left = 0
|
|
||||||
Height = 15
|
|
||||||
Top = 58
|
|
||||||
Width = 65
|
|
||||||
Caption = 'Sample Size:'
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object Label4: TLabel
|
|
||||||
AnchorSideLeft.Control = Panel1
|
|
||||||
AnchorSideTop.Control = CInterval
|
|
||||||
AnchorSideTop.Side = asrCenter
|
|
||||||
Left = 0
|
|
||||||
Height = 15
|
|
||||||
Top = 112
|
|
||||||
Width = 112
|
|
||||||
Caption = 'Confidence Level (%)'
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object Label5: TLabel
|
|
||||||
AnchorSideLeft.Control = Panel1
|
|
||||||
AnchorSideTop.Control = StdDev
|
|
||||||
AnchorSideTop.Side = asrCenter
|
|
||||||
Left = 0
|
|
||||||
Height = 15
|
|
||||||
Top = 85
|
|
||||||
Width = 145
|
|
||||||
Caption = 'Sample Standard Deviation:'
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object Statistic: TEdit
|
|
||||||
AnchorSideLeft.Control = StdDev
|
|
||||||
AnchorSideTop.Control = Panel1
|
|
||||||
AnchorSideRight.Control = StdDev
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 153
|
|
||||||
Height = 23
|
|
||||||
Top = 0
|
|
||||||
Width = 83
|
|
||||||
Alignment = taRightJustify
|
|
||||||
Anchors = [akTop, akLeft, akRight]
|
|
||||||
TabOrder = 0
|
|
||||||
Text = 'Statistic'
|
|
||||||
end
|
|
||||||
object StdDev: TEdit
|
|
||||||
AnchorSideLeft.Control = Label5
|
|
||||||
AnchorSideLeft.Side = asrBottom
|
|
||||||
AnchorSideTop.Control = Size
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = Panel1
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 153
|
|
||||||
Height = 23
|
|
||||||
Top = 81
|
|
||||||
Width = 83
|
|
||||||
Alignment = taRightJustify
|
|
||||||
BorderSpacing.Left = 8
|
|
||||||
BorderSpacing.Top = 4
|
|
||||||
TabOrder = 3
|
|
||||||
Text = 'Edit1'
|
|
||||||
end
|
|
||||||
object Parameter: TEdit
|
|
||||||
AnchorSideLeft.Control = StdDev
|
|
||||||
AnchorSideTop.Control = Statistic
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = StdDev
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 153
|
|
||||||
Height = 23
|
|
||||||
Top = 27
|
|
||||||
Width = 83
|
|
||||||
Alignment = taRightJustify
|
|
||||||
Anchors = [akTop, akLeft, akRight]
|
|
||||||
BorderSpacing.Top = 4
|
|
||||||
TabOrder = 1
|
|
||||||
Text = 'Edit1'
|
|
||||||
end
|
|
||||||
object Size: TEdit
|
|
||||||
AnchorSideLeft.Control = StdDev
|
|
||||||
AnchorSideTop.Control = Parameter
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = StdDev
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 153
|
|
||||||
Height = 23
|
|
||||||
Top = 54
|
|
||||||
Width = 83
|
|
||||||
Alignment = taRightJustify
|
|
||||||
Anchors = [akTop, akLeft, akRight]
|
|
||||||
BorderSpacing.Top = 4
|
|
||||||
TabOrder = 2
|
|
||||||
Text = 'Edit1'
|
|
||||||
end
|
|
||||||
object CInterval: TEdit
|
|
||||||
AnchorSideLeft.Control = StdDev
|
|
||||||
AnchorSideTop.Control = StdDev
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = StdDev
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 153
|
|
||||||
Height = 23
|
|
||||||
Top = 108
|
|
||||||
Width = 83
|
|
||||||
Alignment = taRightJustify
|
|
||||||
Anchors = [akTop, akLeft, akRight]
|
|
||||||
BorderSpacing.Top = 4
|
|
||||||
TabOrder = 4
|
|
||||||
Text = 'Edit1'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object ResetBtn: TButton
|
|
||||||
AnchorSideTop.Control = Bevel1
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = ComputeBtn
|
|
||||||
AnchorSideBottom.Side = asrBottom
|
|
||||||
Left = 221
|
|
||||||
Height = 25
|
|
||||||
Top = 155
|
|
||||||
Width = 54
|
|
||||||
Anchors = [akTop, akRight]
|
|
||||||
AutoSize = True
|
|
||||||
BorderSpacing.Left = 8
|
|
||||||
BorderSpacing.Top = 8
|
|
||||||
BorderSpacing.Right = 8
|
|
||||||
BorderSpacing.Bottom = 8
|
|
||||||
Caption = 'Reset'
|
|
||||||
OnClick = ResetBtnClick
|
|
||||||
TabOrder = 2
|
|
||||||
end
|
|
||||||
object CloseBtn: TButton
|
|
||||||
AnchorSideTop.Control = Bevel1
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = Owner
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
AnchorSideBottom.Side = asrBottom
|
|
||||||
Left = 367
|
|
||||||
Height = 25
|
|
||||||
Top = 155
|
|
||||||
Width = 55
|
|
||||||
Anchors = [akTop, akRight]
|
|
||||||
AutoSize = True
|
|
||||||
BorderSpacing.Top = 8
|
|
||||||
BorderSpacing.Right = 8
|
|
||||||
BorderSpacing.Bottom = 8
|
|
||||||
Caption = 'Close'
|
|
||||||
ModalResult = 11
|
|
||||||
TabOrder = 4
|
|
||||||
end
|
|
||||||
object ComputeBtn: TButton
|
|
||||||
AnchorSideTop.Control = Bevel1
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = CloseBtn
|
|
||||||
AnchorSideBottom.Side = asrBottom
|
|
||||||
Left = 283
|
|
||||||
Height = 25
|
|
||||||
Top = 155
|
|
||||||
Width = 76
|
|
||||||
Anchors = [akTop, akRight]
|
|
||||||
AutoSize = True
|
|
||||||
BorderSpacing.Top = 8
|
|
||||||
BorderSpacing.Right = 8
|
|
||||||
BorderSpacing.Bottom = 8
|
|
||||||
Caption = 'Compute'
|
|
||||||
OnClick = ComputeBtnClick
|
|
||||||
TabOrder = 3
|
|
||||||
end
|
|
||||||
object Bevel1: TBevel
|
|
||||||
AnchorSideLeft.Control = Owner
|
|
||||||
AnchorSideTop.Control = Panel1
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = Owner
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 0
|
|
||||||
Height = 8
|
|
||||||
Top = 139
|
|
||||||
Width = 430
|
|
||||||
Anchors = [akTop, akLeft, akRight]
|
|
||||||
Shape = bsBottomLine
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,313 +0,0 @@
|
|||||||
unit OneSampUnit;
|
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
|
|
||||||
ExtCtrls, StdCtrls;
|
|
||||||
|
|
||||||
type
|
|
||||||
|
|
||||||
{ TOneSampFrm }
|
|
||||||
|
|
||||||
TOneSampFrm = class(TForm)
|
|
||||||
Bevel1: TBevel;
|
|
||||||
ComputeBtn: TButton;
|
|
||||||
ResetBtn: TButton;
|
|
||||||
CloseBtn: TButton;
|
|
||||||
Statistic: TEdit;
|
|
||||||
Parameter: TEdit;
|
|
||||||
Size: TEdit;
|
|
||||||
CInterval: TEdit;
|
|
||||||
StdDev: TEdit;
|
|
||||||
Label1: TLabel;
|
|
||||||
Label2: TLabel;
|
|
||||||
Label3: TLabel;
|
|
||||||
Label4: TLabel;
|
|
||||||
Label5: TLabel;
|
|
||||||
Panel1: TPanel;
|
|
||||||
RadioGroup1: TRadioGroup;
|
|
||||||
procedure ComputeBtnClick(Sender: TObject);
|
|
||||||
procedure FormActivate(Sender: TObject);
|
|
||||||
procedure FormCreate(Sender: TObject);
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure RadioGroup1Click(Sender: TObject);
|
|
||||||
procedure ResetBtnClick(Sender: TObject);
|
|
||||||
private
|
|
||||||
{ private declarations }
|
|
||||||
function Validate(out AMsg: String; out AControl: TWinControl): Boolean;
|
|
||||||
public
|
|
||||||
{ public declarations }
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
OneSampFrm: TOneSampFrm;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses
|
|
||||||
Math,
|
|
||||||
Globals, OutputUnit, FunctionsLib, MathUnit;
|
|
||||||
|
|
||||||
{ TOneSampFrm }
|
|
||||||
|
|
||||||
procedure TOneSampFrm.FormActivate(Sender: TObject);
|
|
||||||
var
|
|
||||||
w: Integer;
|
|
||||||
begin
|
|
||||||
w := MaxValue([ResetBtn.Width, ComputeBtn.Width, CloseBtn.Width]);
|
|
||||||
ResetBtn.Constraints.MinWidth := w;
|
|
||||||
ComputeBtn.Constraints.MinWidth := w;
|
|
||||||
CloseBtn.Constraints.MinWidth := w;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOneSampFrm.FormCreate(Sender: TObject);
|
|
||||||
begin
|
|
||||||
CInterval.Text := FormatFloat('0', DEFAULT_CONFIDENCE_LEVEL_PERCENT);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOneSampFrm.ResetBtnClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Statistic.Text := '';
|
|
||||||
Parameter.Text := '';
|
|
||||||
Size.Text := '';
|
|
||||||
StdDev.Text := '';
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOneSampFrm.FormShow(Sender: TObject);
|
|
||||||
begin
|
|
||||||
ResetBtnClick(self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOneSampFrm.RadioGroup1Click(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Label5.Enabled := RadioGroup1.ItemIndex = 0;
|
|
||||||
StdDev.Enabled := RadioGroup1.ItemIndex = 0;
|
|
||||||
{ if RadioGroup1.ItemIndex <> 0 then
|
|
||||||
begin
|
|
||||||
Label5.Visible := false;
|
|
||||||
StdDev.Visible := false;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
Label5.Visible := true;
|
|
||||||
StdDev.Visible := true;
|
|
||||||
end;
|
|
||||||
}
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TOneSampFrm.ComputeBtnClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
N : integer;
|
|
||||||
sampmean, sampprop, sampcor, sampvar, Confidence, alpha, df : double;
|
|
||||||
popmean, popprop, popcor, popvar, stderr : double;
|
|
||||||
z, zprobability, zreject, zconf, UCL, LCL, sampsd : double;
|
|
||||||
t, tprobability, testt : double;
|
|
||||||
poptrans, samptrans, chisqrval, chiprob, lowchi, hichi, testchi : double;
|
|
||||||
lReport: TStrings;
|
|
||||||
msg: String;
|
|
||||||
C: TWinControl;
|
|
||||||
begin
|
|
||||||
if not Validate(msg, C) then
|
|
||||||
begin
|
|
||||||
C.SetFocus;
|
|
||||||
MessageDlg(msg, mtError, [mbOK], 0);
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
|
|
||||||
lReport := TStringList.Create;
|
|
||||||
try
|
|
||||||
N := round(StrToFloat(Size.Text));
|
|
||||||
Confidence := StrToFloat(CInterval.Text) / 100.0;
|
|
||||||
case RadioGroup1.ItemIndex of
|
|
||||||
0 : begin
|
|
||||||
sampmean := StrToFloat(Statistic.Text);
|
|
||||||
popmean := StrToFloat(Parameter.Text);
|
|
||||||
sampsd := StrToFloat(StdDev.Text);
|
|
||||||
df := N;
|
|
||||||
stderr := sampsd / sqrt(df);
|
|
||||||
df := N-1;
|
|
||||||
t := (sampmean - popmean) / stderr;
|
|
||||||
tprobability := probt(t,df);
|
|
||||||
alpha := (1.0 - confidence) / 2.0;
|
|
||||||
testt := inverset((1.0 - alpha),df);
|
|
||||||
UCL := sampmean + testt * stderr;
|
|
||||||
LCL := sampmean - testt * stderr;
|
|
||||||
lReport.Add('ANALYSIS OF A SAMPLE MEAN');
|
|
||||||
lReport.Add('');
|
|
||||||
lReport.Add('Sample Mean: %9.3f', [sampmean]);
|
|
||||||
lReport.Add('Population Mean: %9.3f', [popmean]);
|
|
||||||
lReport.Add('Sample Size: %9d', [N]);
|
|
||||||
lReport.Add('Standard error of Mean: %9.3f', [stderr]);
|
|
||||||
lReport.Add('t test statistic: %9.3f', [t]);
|
|
||||||
lReport.Add(' with probability: %9.3f', [tprobability]);
|
|
||||||
lReport.Add('t value required for rejection: %9.3f', [testt]);
|
|
||||||
lReport.Add('Confidence Interval: (%.3f ... %.3f)', [LCL, UCL]);
|
|
||||||
end;
|
|
||||||
1 : begin
|
|
||||||
sampprop := StrToFloat(Statistic.Text);
|
|
||||||
popprop := StrToFloat(Parameter.Text);
|
|
||||||
stderr := sqrt((sampprop * (1.0 - sampprop)) / N);
|
|
||||||
z := (sampprop - popprop) / StdErr;
|
|
||||||
zprobability := 1.0 - probz(z);
|
|
||||||
zreject := inversez(confidence);
|
|
||||||
zconf := abs(inversez((1.0 - confidence) / 2.0));
|
|
||||||
UCL := sampprop + (zconf * stderr);
|
|
||||||
LCL := sampprop - (zconf * stderr);
|
|
||||||
lReport.Add('ANALYSIS OF A SAMPLE PROPORTION');
|
|
||||||
lReport.Add('');
|
|
||||||
lReport.Add('Sample Proportion: %9.3f', [sampprop]);
|
|
||||||
lReport.Add('Population Proportion: %9.3f', [popprop]);
|
|
||||||
lReport.Add('Sample Size: %9d', [N]);
|
|
||||||
lReport.Add('Standard error of proportion: %9.3f', [stderr]);
|
|
||||||
lReport.Add('z test statistic: %9.3f', [z]);
|
|
||||||
lReport.Add(' with probability > P: %9.3f', [zprobability]);
|
|
||||||
lReport.Add('z value required for rejection: %9.3f', [zreject]);
|
|
||||||
lReport.Add('Confidence Interval: (%.3f ... %.3f)', [LCL, UCL]);
|
|
||||||
end;
|
|
||||||
2 : begin
|
|
||||||
sampcor := StrToFloat(Statistic.Text);
|
|
||||||
popcor := StrToFloat(Parameter.Text);
|
|
||||||
zconf := abs(inversez((1.0 - confidence) / 2.0));
|
|
||||||
samptrans := ln((1.0 + sampcor) / (1.0 - sampcor)) / 2.0;
|
|
||||||
poptrans := ln((1.0 + popcor) / (1.0 - popcor)) / 2.0;
|
|
||||||
stderr := sqrt(1.0 / (N - 3.0));
|
|
||||||
z := (samptrans - poptrans) / stderr;
|
|
||||||
zprobability := probz(z);
|
|
||||||
alpha := (1.0 - confidence) / 2.0;
|
|
||||||
zreject := inversez(1.0 - alpha);
|
|
||||||
UCL := samptrans + (zconf * stderr);
|
|
||||||
LCL := samptrans - (zconf * stderr);
|
|
||||||
UCL := (exp(2.0 * UCL) - 1.0) / (exp(2.0 * UCL) + 1.0);
|
|
||||||
LCL := (exp(2.0 * LCL) - 1.0) / (exp(2.0 * LCL) + 1.0);
|
|
||||||
lReport.Add('ANALYSIS OF A SAMPLE CORRELATION');
|
|
||||||
lReport.Add('');
|
|
||||||
lReport.Add('Sample Correlation: %9.3f', [sampcor]);
|
|
||||||
lReport.Add('Population Correlation: %9.3f', [popcor]);
|
|
||||||
lReport.Add('Sample Size: %9d', [N]);
|
|
||||||
lReport.Add('z Transform of sample correlation: %9.3f', [samptrans]);
|
|
||||||
lReport.Add('z Transform of population correlation: %9.3f', [poptrans]);
|
|
||||||
lReport.Add('Standard error of transform: %9.3f', [stderr]);
|
|
||||||
lReport.Add('z test statistic: %9.3f', [z]);
|
|
||||||
lReport.Add(' with probability: %9.3f', [zprobability]);
|
|
||||||
lReport.Add('z value required for rejection: %9.3f', [zreject]);
|
|
||||||
lReport.Add('Confidence Interval for sample correlation: (%.3f ... %.3f)', [LCL, UCL]);
|
|
||||||
end;
|
|
||||||
3 : begin
|
|
||||||
sampvar := StrToFloat(Statistic.Text);
|
|
||||||
popvar := StrToFloat(Parameter.Text);
|
|
||||||
alpha := 1.0 - confidence;
|
|
||||||
chisqrval := ((N - 1.0) * sampvar) / Popvar;
|
|
||||||
chiprob := 1.0 - chisquaredprob(chisqrval,N-1);
|
|
||||||
lowchi := inversechi((1.0 - alpha / 2.0),N-1);
|
|
||||||
hichi := inversechi((alpha / 2.0),N-1);
|
|
||||||
LCL := ((N - 1.0) * sampvar) / lowchi;
|
|
||||||
UCL := ((N - 1.0) * sampvar) / hichi;
|
|
||||||
if sampvar > popvar then
|
|
||||||
testchi := lowchi
|
|
||||||
else
|
|
||||||
testchi := hichi;
|
|
||||||
lReport.Add('ANALYSIS OF A SAMPLE VARIANCE');
|
|
||||||
lReport.Add('');
|
|
||||||
lReport.Add('Sample Variance: %9.3f', [sampvar]);
|
|
||||||
lReport.Add('Population Variance: %9.3f', [popvar]);
|
|
||||||
lReport.Add('Sample Size: %9d', [N]);
|
|
||||||
lReport.Add('Chi-square statistic %9.3f', [chisqrval]);
|
|
||||||
lReport.Add(' with probability > chisquare %9.3f', [chiprob]);
|
|
||||||
lReport.Add(' and D.F. %9d', [N-1]);
|
|
||||||
lReport.Add('Chi-square value required for rejection: %9.3f', [testchi]);
|
|
||||||
lReport.Add('Chi-square Confidence Interval: (%.3f ... %.3f)', [lowchi, hichi]);
|
|
||||||
lReport.Add('Variance Confidence Interval: (%.3f ... %.3f)', [LCL, UCL]);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
DisplayReport(lReport);
|
|
||||||
finally
|
|
||||||
lReport.Free;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TOneSampFrm.Validate(out AMsg: String; out AControl: TWinControl): Boolean;
|
|
||||||
var
|
|
||||||
x: Double;
|
|
||||||
n: Integer;
|
|
||||||
begin
|
|
||||||
Result := false;
|
|
||||||
|
|
||||||
if Statistic.Text = '' then
|
|
||||||
begin
|
|
||||||
AMsg := 'Value of sample proportion missing.';
|
|
||||||
AControl := Statistic;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if not TryStrtoFloat(Statistic.Text, x) then
|
|
||||||
begin
|
|
||||||
AMsg := 'Sample proportion is not a valid number.';
|
|
||||||
AControl := Statistic;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
|
|
||||||
if Parameter.Text = '' then
|
|
||||||
begin
|
|
||||||
AMsg := 'Value of population parameter is missing.';
|
|
||||||
AControl := Parameter;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if not TryStrToFloat(Parameter.Text, x) then
|
|
||||||
begin
|
|
||||||
AMsg := 'Population parameter is not a valid number.';
|
|
||||||
AControl := Parameter;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
|
|
||||||
if Size.Text = '' then
|
|
||||||
begin
|
|
||||||
AMsg := 'Value of sample size is missing.';
|
|
||||||
AControl := Size;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if not TryStrToInt(Size.Text, n) then
|
|
||||||
begin
|
|
||||||
AMsg := 'Sample size is not a valid number.';
|
|
||||||
AControl := Size;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
|
|
||||||
if RadioGroup1.ItemIndex = 0 then
|
|
||||||
begin
|
|
||||||
if StdDev.Text = '' then
|
|
||||||
begin
|
|
||||||
AMsg := 'Sample standard deviation is not specified.';
|
|
||||||
AControl := StdDev;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if not TryStrToFloat(StdDev.Text, x) then
|
|
||||||
begin
|
|
||||||
AMsg := 'Sample standard deviation is not a valid number.';
|
|
||||||
AControl := StdDev;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
if CInterval.Text = '' then
|
|
||||||
begin
|
|
||||||
AMsg := 'Confidence level is not specified.';
|
|
||||||
AControl := CInterval;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if not TryStrToFloat(CInterval.Text, x) then
|
|
||||||
begin
|
|
||||||
AMsg := 'Confidence level is not a valid number.';
|
|
||||||
AControl := CInterval;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
|
|
||||||
Result := true;
|
|
||||||
end;
|
|
||||||
|
|
||||||
initialization
|
|
||||||
{$I onesampunit.lrs}
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@ -19,7 +19,7 @@ object OS3MainFrm: TOS3MainFrm
|
|||||||
OnCreate = FormCreate
|
OnCreate = FormCreate
|
||||||
OnDestroy = FormDestroy
|
OnDestroy = FormDestroy
|
||||||
OnShow = FormShow
|
OnShow = FormShow
|
||||||
LCLVersion = '2.1.0.0'
|
LCLVersion = '2.0.10.0'
|
||||||
object PanelTop: TPanel
|
object PanelTop: TPanel
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 35
|
Height = 35
|
||||||
|
@ -566,7 +566,7 @@ uses
|
|||||||
Utils, BasicStatsFormUnit,
|
Utils, BasicStatsFormUnit,
|
||||||
OptionsUnit, OutputUnit, LicenseUnit, TransFrmUnit, DescriptiveUnit,
|
OptionsUnit, OutputUnit, LicenseUnit, TransFrmUnit, DescriptiveUnit,
|
||||||
FreqUnit, CrossTabUnit, BreakDownUnit, BoxPlotUnit, NormalityUnit, Rot3DUnit,
|
FreqUnit, CrossTabUnit, BreakDownUnit, BoxPlotUnit, NormalityUnit, Rot3DUnit,
|
||||||
PlotXYUnit, BubblePlotUnit, StemLeafUnit, MultXvsYUnit, OneSampUnit,
|
PlotXYUnit, BubblePlotUnit, StemLeafUnit, MultXvsYUnit, OneSampleUnit,
|
||||||
TwoCorrsUnit, TwoPropUnit, TtestUnit, BlkAnovaUnit, WithinANOVAUnit,
|
TwoCorrsUnit, TwoPropUnit, TtestUnit, BlkAnovaUnit, WithinANOVAUnit,
|
||||||
AxSAnovaUnit, ABRAnovaUnit, ANCOVAUNIT, LatinSqrsUnit, RMatUnit, PartialsUnit,
|
AxSAnovaUnit, ABRAnovaUnit, ANCOVAUNIT, LatinSqrsUnit, RMatUnit, PartialsUnit,
|
||||||
AutoCorUnit, CanonUnit, GLMUnit, StepFwdMRUnit, BlkMRegUnit, BackRegUnit,
|
AutoCorUnit, CanonUnit, GLMUnit, StepFwdMRUnit, BlkMRegUnit, BackRegUnit,
|
||||||
@ -902,9 +902,9 @@ end;
|
|||||||
// Menu "Analysis" > "One sample tests"
|
// Menu "Analysis" > "One sample tests"
|
||||||
procedure TOS3MainFrm.mnuAnalysisOneSampleTestsClick(Sender: TObject);
|
procedure TOS3MainFrm.mnuAnalysisOneSampleTestsClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if OneSampFrm = nil then
|
if OneSampleForm = nil then
|
||||||
Application.CreateForm(TOneSampFrm, OneSampFrm);
|
Application.CreateForm(TOneSampleForm, OneSampleForm);
|
||||||
OneSampFrm.ShowModal;
|
OneSampleForm.Show;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user