Корреляция по Пирсону

Простая функция, которая считает коэффициент корреляции двух наборов данных: X и Y.

Примечание: размерность набора данных X должна быть равна размерности набора данных Y!

Код на D:

import std.math;

// среднее арифметическое
float mean(float[] var)
  {
    float sum = 0.0; // переменная-накопитель под сумму
    for (uint i = 0; i < var.length; i++)
    {
       sum += var[i];
    }
    return sum / var.length;
}


// корреляция по Пирсону
float pearsonCorrelation(float[] X, float[] Y)
{

  // средние значения для наборов данных
  float xmean = mean(X), ymean = mean(Y);
  // cov - это нечто иное, как ковариация
  float cov = 0.0, a = 0.0, b = 0.0;

  for (uint i = 0; i < X.length; i++)
  {
    cov += (X[i] - xmean) * (Y[i] - ymean);
    a += (X[i] - xmean) ^^ 2;
    b += (Y[i] - ymean) ^^ 2;
  }
  return cov / sqrt(a * b);
}

Добавить комментарий