\CPP
Linear Regression.cpp
/*
Josh Santomieri
Santomieri Systems
Line of best fit - Linear Regression
Calculates the line of best fit given a group of (x,y) points.
Function Prototype:
void CreateLineOfBestFit(int *x, int *y, int points, TCHAR *eq, rsize_t maxLen);
Usage:
int x[] = {1, 2, 3, 4, 5};
int y[] = {11100, 10910, 11450, 11520, 11420};
TCHAR eq[100];
CreateLineOfBestFit(x, y, sizeof(x)/sizeof(int), (TCHAR*)&eq, sizeof(eq)/sizeof(TCHAR));
*/
void CreateLineOfBestFit(int *x, int *y, int points, TCHAR *eq, rsize_t maxLen)
{
int ix1;
double xAvg = 0, yAvg = 0;
double b1 = 0, b2 = 0;
if(points < 2)
{
wcscpy_s(eq, maxLen, L"2 or more points needed.");
return;
}
for(ix1 = 0; ix1 < points; ix1++)
{
xAvg += *(x+ix1);
yAvg += *(y+ix1);
}
xAvg /= points;
yAvg /= points;
for(ix1 = 0; ix1 < points; ix1++)
{
b1 += (*(x+ix1) - xAvg) * (*(y+ix1) - yAvg);
b2 += pow((*(x+ix1) - xAvg), 2);
}
if(b2 > 0)
{
b1 = b1/b2;
b2 = yAvg - (b1 * xAvg);
}
else
{
b1 = 0;
b2 = 0;
}
swprintf_s(eq, maxLen, L"y = %.3f * x + %.3f", b1, b2);
return;
}