added support for equidistant x

This commit is contained in:
Ahmet Inan 2020-04-25 00:07:56 +02:00
commit 05ea242ae3

View file

@ -32,6 +32,23 @@ public:
slope_ = covXY / varX;
yint_ = avgY - slope_ * avgX;
}
SimpleLinearRegression(TYPE *y, int l, TYPE x0 = 0, TYPE dx = 1)
{
TYPE midL((l-1) / TYPE(2));
TYPE avgX(x0 + dx*midL);
TYPE avgY(0);
for (int i = 0; i < l; ++i)
avgY += y[i];
avgY /= l;
TYPE varX(0), covXY(0);
for (int i = 0; i < l; ++i) {
varX += (dx * (i - midL)) * (dx * (i - midL));
covXY += (dx * (i - midL)) * (y[i] - avgY);
}
xint_ = avgX - avgY * varX / covXY;
slope_ = covXY / varX;
yint_ = avgY - slope_ * avgX;
}
TYPE xint()
{
return xint_;