У меня есть набор данных, который определяет набор точек на двумерной декартовой плоскости. Теоретически, эти точки должны образовывать линию, но эта линия может быть совершенно горизонтальной, совершенно вертикальной и что-либо между ними.
Я хотел бы разработать алгоритм, который оценивает «прямолинейность» этой линии.
Например, следующие наборы данных будут совершенно прямыми:
Y = 2/3x + 4
X | Y
---------
-3 | 2
0 | 4
3 | 6
Y = 4
X | Y
---------
1 | 4
2 | 4
3 | 4
X = -1
X | Y
---------
-1 | 7
-1 | 8
-1 | 9
Хотя этот не будет:
X | Y
---------
-3 | 2
0 | 5
3 | 6
Я думаю, это будет работать, чтобы минимизировать сумму квадратов расстояний каждой точки от линии (обычно называемой линией регрессии), а затем определить среднее расстояние каждой точки до линии. Таким образом, идеально прямая линия будет иметь среднее расстояние 0.
Поскольку данные могут представлять собой вертикальную линию, насколько я понимаю, обычная линия регрессии наименьших квадратов не будет работать для этого набора данных. Перпендикулярная линия регрессии наименьших квадратов может сработать, но мне не повезло найти ее реализацию.
Я работаю в Excel 2010 VBA, но у меня должна быть возможность перевести любой разумный алгоритм.
Спасибо,
PaulH
Причина, по которой такие вещи, как RSQ и LinEst, не будут работать для этого, заключается в том, что мне нужно универсальное измерение, которое включает вертикальные линии. Когда наклон линии приближается к бесконечности (вертикали), их RSQ приближается к 0, даже если линия совершенно прямая или почти такая.
-PaulH