Простая функция, которая считает коэффициент корреляции двух наборов данных: 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); }