Вертикальная линия подходит с использованием полифита

Это просто основной вопрос. Я использую линии для разброса точек с помощью polyfit. У меня есть некоторые случаи, когда мои точки разброса имеют одинаковые значения X и polyfit не могут соответствовать строкам. Должно быть что-то, что может справиться с этой ситуацией. В конце концов, его просто линия подходит.

Я могу попробовать заменить X и Y, а затем на строку. Любой более простой метод, потому что у меня есть множество наборов точек разброса и вы хотите, чтобы общий метод проверял линии.

Основная цель - найти хорошие линии и отказаться от нелинейных функций.

Ответ 1

Прежде всего, это происходит из-за метода подгонки, который вы используете. При выполнении polyfit вы используете метод наименьших квадратов на расстоянии Y от линии.


(источник: une.edu.au)

Очевидно, это не будет работать для вертикальных линий. Кстати, даже если у вас что-то близко к вертикальным линиям, вы можете получить численно нестабильные результаты.

Есть 2 решения:

  1. Поменяйте местами x и y, как вы сказали, если вы знаете, что линия почти вертикальная. Затем вычислите обратную линейную функцию.
  2. Используйте наименьшие квадраты на перпендикулярном расстоянии от линии, а не по вертикали (см. изображение ниже) (более подробное объяснение в здесь)


(из MathWorld - веб-ресурс Wolfram: wolfram.com)

Ответ 2

Polyfit использует линейную обычную аппроксимацию наименьших квадратов и не допускает повторной абсциссы, поскольку результирующая матрица Вандермонда будет ранга недостаточной. Я бы предложил попытаться найти нечто более статистическое. Если вы хотите исследовать метод Андрея, это обычно происходит по именам Всего наименьших квадратов или ортогональной дистанционной регрессии http://en.wikipedia.org/wiki/Total_least_squares

Я бы предположительно также предложил возможность обнаружения, когда у вас есть одновременные значения x, затем вращение ваших данных о происхождении, установка линии, а затем преобразование линии назад. Я не мог сказать, насколько это будет плохо, и только вы могли бы решить, был ли это вариант, основанный на ваших требованиях к точности.