Variance
Return variance of values
Declaration
Source position: math.pp line 525
function Variance(const data: Array of Single) : Float;
function Variance(const data: PSingle; const N: Integer) : Float;
function Variance(const data: Array of Double) : Float;
function Variance(const data: PDouble; const N: Integer) : Float;
function Variance(const data: Array of Extended) : Float;
function Variance(const data: PExtended; const N: Integer) : Float;
Description
Variance returns the variance of the values in the data array. It returns zero if there is only one value.
The second form of the function accepts a pointer to an array of N values.
Errors
None.
See also
Name | Description |
---|---|
mean | Return mean value of array |
stddev | Return standard deviation of data |
totalvariance | Return total variance of values |
Example
Program Example50;
{ Program to demonstrate the Variance function. }
{ @ should return typed pointer }
{$T+}
Uses math;
Var
I : 1..100;
ExArray : Array[1..100] of Float;
V : float;
begin
Randomize;
for I:=low(ExArray) to high(ExArray) do
ExArray[i]:=(Random-Random)*100;
V:=Variance(ExArray);
Writeln('Variance : ',V:8:4);
V:=Variance(@ExArray[1],100);
Writeln('Variance (b) : ',V:8:4);
end.
Example
Program Example51;
{
Program to demonstrate the Variance function.
It demonstrates the absence of large errors in the calculation.
}
Uses math;
const
Size = 1000000;
var
dataS: array of Single;
dataD: array of Double;
dataE: array of Extended;
i,n: longint;
begin
WriteLn('Each run should return a value near unity.');
WriteLn('Single:');
SetLength( dataS, Size );
for n := 1 to 4 do
begin
for i := 0 to Size - 1 do
begin
dataS[i] := 10000000 + RandG(0,1);
end;
WriteLn( Math.Variance( dataS ):5:3 );
end;
WriteLn('Double:');
SetLength( dataD, Size );
for n := 1 to 4 do
begin
for i := 0 to Size - 1 do
begin
dataD[i] := 1000000000000000 + RandG(0,1);
end;
WriteLn( Math.Variance( dataD ):5:3 );
end;
WriteLn('Extended:');
SetLength( dataE, Size );
for n := 1 to 4 do
begin
for i := 0 to Size - 1 do
begin
dataE[i] := 1000000000000000000 + RandG(0,1);
end;
WriteLn( Math.Variance( dataE ):5:3 );
end;
end.