Стандартные регрессионные формулы для наименьших квадратов для x по y или y по x предполагают, что в одной координате нет ошибки, и минимизируют отклонения в координате от линии.
Однако, вполне возможно установитьдо вычисления наименьших квадратов так, чтобы минимизированное значение было суммой квадратов перпендикулярных расстояний точек от линий.Я не уверен, смогу ли я найти тетради, где я делал математику - это было более двадцати лет назад - но я нашел код, который написал в то время для реализации алгоритма.
С:
- n = ∑ 1
- sx = ∑ x
- sx2 = ∑ x 2
- sy = ∑ y
- sy2 = ∑ y 2
- sxy = ∑ x · y
Вы можете рассчитать дисперсию x и y и ковариацию:
- v x = sx2 - ((sx * sx) / n)
- v y = sy2 - ((sy * sy) / n)
- v xy = sxy - ((sx * sy) / n)
Теперь, если ковариация равна 0, то естьнет подобия линии.В противном случае наклон и перехват могут быть найдены из:
- наклон = четырехугольник ((vx - vy) / vxy, vxy)
- intcpt = (sy - slope * sx) / n
Где quad () - функция, которая вычисляет корень квадратного уравнения x 2 + b · x - 1 с тем же знаком, что и c.В Си это будет:
double quad(double b, double c)
{
double b1;
double q;
b1 = sqrt(b * b + 4.0);
if (c < 0.0)
q = -(b1 + b) / 2;
else
q = (b1 - b) / 2;
return (q);
}
Отсюда вы можете легко найти угол наклона вашей линии.