File: ucorrel.pas

package info (click to toggle)
mricron 0.20140804.1~dfsg.1-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 13,508 kB
  • sloc: pascal: 114,876; sh: 49; makefile: 35
file content (53 lines) | stat: -rwxr-xr-x 1,007 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
{ ******************************************************************
  Correlation coefficient
  ****************************************************************** }

unit ucorrel;

interface

uses
  utypes;

function Correl(X, Y : PVector; Lb, Ub : Integer) : Float;
{ Correlation coefficient between samples X and Y }

implementation

function Correl(X, Y : PVector; Lb, Ub : Integer) : Float;
var
  SX, SY, Xbar, Ybar, DX, DY, SSX, SSY, SP : Float;
  N, I                                     : Integer;
begin
  N := Ub - Lb + 1;

  SX := 0.0;
  SY := 0.0;

  for I := Lb to Ub do
    begin
      SX := SX + X^[I];
      SY := SY + Y^[I];
    end;

  Xbar := SX / N;
  Ybar := SY / N;

  SSX := 0.0;
  SSY := 0.0;
  SP  := 0.0;

  for I := Lb to Ub do
    begin
      DX := X^[I] - Xbar;
      DY := Y^[I] - Ybar;

      SSX := SSX + DX * DX;
      SSY := SSY + DY * DY;
      SP  := SP  + DX * DY;
    end;

  Correl := SP / Sqrt(SSX * SSY);
end;

end.