Я хочу прогнозировать будущую посещаемость, используя месячную посещаемость.
Язык программирования не имеет значения. Я хотел бы знать, где мой подход или математика неверны.
Мои данные выглядят так:
days = [1,2,3,4,5]
attendance = [1,0,1,1,0]
1 - присутствует 0 - отсутствует
Я пытался преобразование посещаемости в определенный день в совокупный процент. Как:
days = [1,2,3,4,5]
attendance = [100,50,66,75,60]
Затем снова запустили линейную регрессию. Я все еще получаю отрицательные значения при расчете.
JS КОД:
sum_x = summation(days);
sum_y = summation(percent_attendance);
mean_x = sum_x/days.length;
mean_y = sum_y/percent_attendance.length;
//-------differences----multiplications-----
days.forEach(function(x){ x_xb.push(x - mean_x); }); //x - xb loaded
percent_attendance.forEach(function(y){ y_yb.push(y - mean_y); }); //y - yb loaded
//-----------------------------------------------------------
//-------summations----------------
summation__x_xby_yb = summation(mulArray(x_xb,y_yb));
summation__x_xb2 = summation(mulArray(x_xb,x_xb));
summation__y_yb2 = summation(mulArray(y_yb,y_yb));
//-----------------------------------------------------------
//----------Calculation of slope---------------
//b = r * (Sy/Sx)
r = (summation__x_xby_yb/Math.sqrt(summation__x_xb2*summation__y_yb2));
Sy = Math.sqrt(summation__y_yb2/percent_attendance.length);
Sx = Math.sqrt(summation__x_xb2/days.length);
b = r*(Sy/Sx);
//-----------------------------------------------------------
//----------Calculation of intercept-----------------
a = mean_y - (b*mean_x);
//-----------------------------------------------------------
//-------prediction-------------------------------------
for (var i = 0; i < percent_attendance.length; i++) {
pred.push(percent_attendance[i]);
}
pred.push(b*(days.length)+a);
pred.push(b*(days.length+1)+a);
//-----------------------------------------------------------
console.log(r, Sy, Sx, a, b);
Должен ли я использовать иной подход, чем линейная регрессия?