You've already forked lazarus-ccr
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7885 8e941d3f-bd1b-0410-a28a-d453659cc2b4
227 lines
9.7 KiB
ObjectPascal
227 lines
9.7 KiB
ObjectPascal
unit OneSampUnit;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
|
|
ExtCtrls, StdCtrls;
|
|
|
|
type
|
|
|
|
{ TOneSampFrm }
|
|
|
|
TOneSampFrm = class(TForm)
|
|
ComputeBtn: TButton;
|
|
ResetBtn: TButton;
|
|
CancelBtn: TButton;
|
|
OKBtn: 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 FormShow(Sender: TObject);
|
|
procedure RadioGroup1Click(Sender: TObject);
|
|
procedure ResetBtnClick(Sender: TObject);
|
|
private
|
|
{ private declarations }
|
|
public
|
|
{ public declarations }
|
|
end;
|
|
|
|
var
|
|
OneSampFrm: TOneSampFrm;
|
|
|
|
implementation
|
|
uses OutPutUnit, FunctionsLib;
|
|
|
|
{ TOneSampFrm }
|
|
|
|
procedure TOneSampFrm.ResetBtnClick(Sender: TObject);
|
|
begin
|
|
Statistic.Text := '';
|
|
Parameter.Text := '';
|
|
Size.Text := '';
|
|
CInterval.Text := '95.0';
|
|
StdDev.Text := '';
|
|
RadioGroup1.ItemIndex := 0;
|
|
end;
|
|
|
|
procedure TOneSampFrm.FormShow(Sender: TObject);
|
|
begin
|
|
ResetBtnClick(self);
|
|
end;
|
|
|
|
procedure TOneSampFrm.RadioGroup1Click(Sender: TObject);
|
|
begin
|
|
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
|
|
i, N : integer;
|
|
sampmean, sampprop, sampcor, sampvar, Confidence, alpha, df : double;
|
|
sampsize, 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;
|
|
outline : string;
|
|
|
|
begin
|
|
// Initialize output form
|
|
OutPutFrm.RichEdit.Clear;
|
|
// OutPutFrm.RichEdit.ParaGraph.Alignment := taLeftJustify;
|
|
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;
|
|
OutPutFrm.RichEdit.Lines.Add('ANALYSIS OF A SAMPLE MEAN');
|
|
OutPutFrm.RichEdit.Lines.Add('');
|
|
outline := format('Sample Mean = %6.3f',[sampmean]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('Population Mean = %6.3f',[popmean]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('Sample Size = %d',[N]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('Standard error of Mean = %6.3f',[stderr]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('t test statistic = %6.3f with probability %6.3f',[t,tprobability]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('t value required for rejection = %6.3f',[testt]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('Confidence Interval = (%6.3f,%6.3f)',[LCL,UCL]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
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);
|
|
OutPutFrm.RichEdit.Lines.Add('ANALYSIS OF A SAMPLE PROPORTION');
|
|
OutPutFrm.RichEdit.Lines.Add('');
|
|
outline := format('Sample Proportion = %6.3f',[sampprop]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('Population Proportion = %6.3f',[popprop]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('Sample Size = %d',[N]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('Standard error of proportion = %6.3f',[stderr]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('z test statistic = %6.3f with probability > P = %6.3f',[z,zprobability]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('z value required for rejection = %6.3f',[zreject]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('Confidence Interval = (%6.3f,%6.3f)',[LCL,UCL]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
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);
|
|
OutPutFrm.RichEdit.Lines.Add('ANALYSIS OF A SAMPLE CORRELATION');
|
|
OutPutFrm.RichEdit.Lines.Add('');
|
|
outline := format('Sample Correlation = %6.3f',[sampcor]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('Population Correlation = %6.3f',[popcor]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('Sample Size = %d',[N]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('z Transform of sample correlation = %6.3f',[samptrans]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('z Transform of population correlation = %6.3f',[poptrans]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('Standard error of transform = %6.3f',[stderr]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('z test statistic = %6.3f with probability %6.3f',[z,zprobability]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('z value required for rejection = %6.3f',[zreject]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('Confidence Interval for sample correlation = (%6.3f,%6.3f)',[LCL,UCL]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
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;
|
|
OutPutFrm.RichEdit.Lines.Add('ANALYSIS OF A SAMPLE VARIANCE');
|
|
OutPutFrm.RichEdit.Lines.Add('');
|
|
outline := format('Sample Variance = %6.3f',[sampvar]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('Population Variance = %6.3f',[popvar]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('Sample Size = %d',[N]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('Chi-square statistic = %6.3f with probability > chisquare = %6.3f and D.F. = %d',[chisqrval,chiprob, N-1]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('Chi-square value required for rejection = %6.3f',[testchi]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('Chi-square Confidence Interval = (%6.3f,%6.3f)',[lowchi,hichi]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
outline := format('Variance Confidence Interval = (%6.3f,%6.3f)',[LCL,UCL]);
|
|
OutPutFrm.RichEdit.Lines.Add(outline);
|
|
end;
|
|
end;
|
|
OutPutFrm.ShowModal;
|
|
end;
|
|
|
|
initialization
|
|
{$I onesampunit.lrs}
|
|
|
|
end.
|
|
|