You've already forked lazarus-ccr
Lazstats: Massive refactoring of DescriptiveUnits: Move calculation to new TDescriptiveStats class. More user-friendly interface.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7730 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -24,7 +24,7 @@ function poly(const c: Array of double; nord: integer; x: double): double; // RE
|
||||
procedure swilk (var init : boolean; const x: DblDyneVec; n, n1, n2: integer;
|
||||
const a: DblDyneVec; var w, pw: double; out ifault: integer);
|
||||
procedure SVDinverse(VAR a : DblDyneMat; N : integer);
|
||||
function inverset(Probt, DF : double) : double;
|
||||
function InverseT(Prob, DF: double): double;
|
||||
function inversechi(p : double; k : integer) : double;
|
||||
function STUDENT(q,v,r : real) : real;
|
||||
function realraise(base,power : double ): double;
|
||||
@ -43,10 +43,12 @@ function UniStats(N : integer; VAR X : DblDyneVec; VAR z : DblDyneVec;
|
||||
VAR SESkew : double; VAR SEkurtosis : double; VAR min : double;
|
||||
VAR max : double; VAR Range : double; VAR MissValue : string) :
|
||||
integer;
|
||||
function WholeValue(value : double) : double;
|
||||
function FractionValue(value : double) : double;
|
||||
function Quartiles(TypeQ : integer; pcntile : double; N : integer;
|
||||
VAR values : DblDyneVec) : double;
|
||||
|
||||
//function WholeValue(value : double) : double;
|
||||
//function FractionValue(value : double) : double;
|
||||
|
||||
function Quartiles(TypeQ: integer; Percentile: double; N: integer;
|
||||
const Values: DblDyneVec): double;
|
||||
|
||||
function KolmogorovProb(z: double): double;
|
||||
function KolmogorovTest(na: integer; const a: DblDyneVec; nb: integer;
|
||||
@ -944,15 +946,14 @@ begin
|
||||
Result := prob;
|
||||
end;
|
||||
|
||||
function inverset(Probt, DF : double) : double;
|
||||
{ Returns the t value corresponding to a two-tailed t test probability. }
|
||||
function InverseT(Prob, DF: double): double;
|
||||
var
|
||||
z, W, tValue: double;
|
||||
z, W: double;
|
||||
begin
|
||||
// Returns the t value corresponding to a two-tailed t test probability.
|
||||
z := inversez(Probt);
|
||||
W := z * ((8.0 * DF + 3.0) / (1.0 + 8.0 * DF));
|
||||
tValue := sqrt(DF * (exp(W * W / DF) - 1.0));
|
||||
inverset := tValue;
|
||||
z := InverseZ(Prob);
|
||||
W := z * ((8.0 * DF + 3.0) / (1.0 + 8.0 * DF));
|
||||
Result := sqrt(DF * (exp(W * W / DF) - 1.0));
|
||||
end;
|
||||
//---------------------------------------------------------------------
|
||||
|
||||
@ -1644,11 +1645,11 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
function Quartiles(TypeQ : integer; pcntile : double; N : integer;
|
||||
VAR values : DblDyneVec) : double;
|
||||
VAR
|
||||
whole, fraction, Myresult, np, avalue, avalue1 : double;
|
||||
subscript : integer;
|
||||
function Quartiles(TypeQ: integer; Percentile: double; N: integer;
|
||||
const Values: DblDyneVec): double;
|
||||
var
|
||||
whole, fraction, np, lValue, lValue1: double;
|
||||
subscript: integer;
|
||||
begin
|
||||
{ for i := 0 to N - 1 do // this is for debugging
|
||||
begin
|
||||
@ -1656,46 +1657,52 @@ begin
|
||||
OutPutFrm.RichEdit.Lines.Add(outline);
|
||||
end;
|
||||
OutPutFrm.ShowModal;
|
||||
OutPutFrm.RichEdit.Clear; }
|
||||
case TypeQ of
|
||||
1 : np := pcntile * N;
|
||||
2 : np := pcntile * (N + 1);
|
||||
3 : np := pcntile * N;
|
||||
4 : np := pcntile * N;
|
||||
5 : np := pcntile * (N - 1);
|
||||
6 : np := pcntile * N + 0.5;
|
||||
7 : np := pcntile * (N + 1);
|
||||
8 : np := pcntile * (N + 1);
|
||||
OutPutFrm.RichEdit.Clear;
|
||||
}
|
||||
case TypeQ of
|
||||
1 : np := Percentile * N;
|
||||
2 : np := Percentile * (N + 1);
|
||||
3 : np := Percentile * N;
|
||||
4 : np := Percentile * N;
|
||||
5 : np := Percentile * (N - 1);
|
||||
6 : np := Percentile * N + 0.5;
|
||||
7 : np := Percentile * (N + 1);
|
||||
8 : np := Percentile * (N + 1);
|
||||
end;
|
||||
|
||||
whole := WholeValue(np);
|
||||
fraction := FractionValue(np);
|
||||
subscript := Trunc(whole) - 1;
|
||||
lValue := Values[subscript];
|
||||
lValue1 := Values[subscript + 1];
|
||||
|
||||
case TypeQ of
|
||||
1 : Result := ((1.0 - fraction) * values[subscript]) + fraction * values[subscript + 1];
|
||||
2 : Result := ((1.0 - fraction) * lValue) + fraction * lValue1; // values[subscript + 1];
|
||||
3 : if (fraction = 0.0) then
|
||||
Result := values[subscript]
|
||||
else
|
||||
Result := values[subscript + 1];
|
||||
4 : if (fraction = 0.0) then
|
||||
Result := 0.5 * (values[subscript] + values[subscript + 1])
|
||||
else
|
||||
Result := values[subscript + 1];
|
||||
5 : if (fraction = 0.0) then
|
||||
Result := values[subscript + 1]
|
||||
else
|
||||
Result := Values[subscript + 1] + fraction * (Values[subscript + 2] - values[subscript + 1]);
|
||||
6 : Result := values[subscript];
|
||||
7 : if (fraction = 0.0) then
|
||||
Result := values[subscript]
|
||||
else
|
||||
Result := fraction * Values[subscript] + (1.0 - fraction) * Values[subscript + 1];
|
||||
8 : begin
|
||||
if (fraction = 0.0) then Result := values[subscript];
|
||||
if (fraction = 0.5) then Result := 0.5 * (values[subscript] + values[subscript + 1]);
|
||||
if (fraction < 0.5) then Result := values[subscript];
|
||||
if (fraction > 0.5) then Result := values[subscript + 1];
|
||||
end;
|
||||
whole := WholeValue(np);
|
||||
fraction := FractionValue(np);
|
||||
subscript := Trunc(whole) - 1;
|
||||
avalue := values[subscript];
|
||||
avalue1 := values[subscript + 1];
|
||||
case TypeQ of
|
||||
1 : Myresult := ((1.0 - fraction) * values[subscript]) +
|
||||
fraction * values[subscript + 1];
|
||||
2 : Myresult := ((1.0 - fraction) * avalue) +
|
||||
fraction * avalue1; // values[subscript + 1];
|
||||
3 : if (fraction = 0.0) then Myresult := values[subscript]
|
||||
else Myresult := values[subscript + 1];
|
||||
4 : if (fraction = 0.0) then Myresult := 0.5 * (values[subscript] + values[subscript + 1])
|
||||
else Myresult := values[subscript + 1];
|
||||
5 : if (fraction = 0.0) then Myresult := values[subscript + 1]
|
||||
else Myresult := values[subscript + 1] + fraction * (values[subscript + 2] -
|
||||
values[subscript + 1]);
|
||||
6 : Myresult := values[subscript];
|
||||
7 : if (fraction = 0.0) then Myresult := values[subscript]
|
||||
else Myresult := fraction * values[subscript] +
|
||||
(1.0 - fraction) * values[subscript + 1];
|
||||
8 : begin
|
||||
if (fraction = 0.0) then Myresult := values[subscript];
|
||||
if (fraction = 0.5) then Myresult := 0.5 * (values[subscript] + values[subscript + 1]);
|
||||
if (fraction < 0.5) then Myresult := values[subscript];
|
||||
if (fraction > 0.5) then Myresult := values[subscript + 1];
|
||||
end;
|
||||
end;
|
||||
Result := Myresult;
|
||||
end;
|
||||
end;
|
||||
|
||||
function KolmogorovProb(z : double) : double;
|
||||
|
Reference in New Issue
Block a user