[Overview][Constants][Types][Classes][Procedures and functions][Index] | Reference for unit 'Math' (#rtl)

# 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

totalvariance |  | Return total variance of values
stddev |  | Return standard deviation of data
mean |  | Return mean value of array

## 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.

Documentation generated on: May 14 2021