степенной фитинг инструментариями линейного

Lena35

ЗАДАЧА:
надо пофитить данные (два столбца [X;Y]) функцией
f(x) = k*x^p + b
т.е. отыскать оптимальные k,p,b.
ПОПЫТКА РЕШЕНИЯ:
Поскольку опускаться до уровня поиска наименьших квадратов не хотелось бы, а с другой стороны в используемом ПО имеется инструментарий линейного фиттинга (но не имеется степенного то хотелось бы использовать его (линейный). Соответственно первые шаги по сведению к линейному виду достаточно очевидны. Преобразуем исходную функцию к виду:
(y-b)/k = x^p;
LN( (y-b)/k ) / LN(x) = p
Затем ищем когда новая функция G(x) = LN( (y-b)/k ) / LN(x) фитится линейной с нулевым наклоном (p=const). Пока проблем нет, алгоритм работает и всЁ отыскивается (k,p,b). Проблемы начинаются когда у точек Y появляется разнополярный шум и шумы определенного знака выливаются в необходимость вычислять логарифм отрицательного числа. В результате точки приходится выкидывать из рассмотрения. Просто так выкидывать не хорошо, ибо это уже будет фитинг по другому набору точек.
В общем суть проблемы не в том как записано в сабдже (перейти от фитинга линией к степеному фитингу а в том как правильно работать с нулевыми или отрицательными Y. Ведь даже в экселе, где степенной фитинг имеется, он уходит в несознанку, когда ему предлагаешь Y <= 0

Nefertyty

напомнило чем-то:

в общем, нужны другие данные

griz_a

Если помнить, что задача стоит об аппроксимации, то есть выглядит как
y_i = k x_i^p + b + e_i,
то твоя формула дает
ln y_i - b)/k)/ln x_i = ln (x_i^p + e_i/k)/ln x_i = p + ln (1+e_i/(k x_i^p/ ln x_i
И тогда видно, что это несколько не самая хорошая идея если вдруг x_i недостаточно большие.
Кроме того, это не очень хорошая идея изначально потому, что если раньше ошибки были с нулевым средним, то у этих логарифмов есть смещение, все оценка будет смещена.
МНК не самый хороший метод зачастую, плюс тут придется численно решать эту систему уравнений. Но это точно не хуже, чем пытаться засунуть квадратный ключ в круглую дырку.
Если хочется чего-то более заточенного под конкретную проблему, то неплохо бы представлять структуру данных и цель аппроксимаии.
Оставить комментарий
Имя или ник:
Комментарий: