Линейная регрессия
Jan. 23rd, 2008 10:35 amВнимание, вопрос! Требуется помощь зала!
У меня есть набор точек на плоскости, я прошу Excel провести через них прямую, выходяющую из нуля. Хотя у меня все точки важны одинаково, Excel придает наибольший вес точке с наибольшими (x, y). В какой-то мере это понятно - он минимизирует абсолютное значение residuals.
Пример:
2, 2
20, 20
200, 400
Получившийся график:

Excel тупо проводит линию как можно ближе к точке (200, 400) не обращая внимание на то, что две нижние точки оказываются существенно ниже этой линии. Я хочу, чтобы в учет брались не абсолютные, а нормализированные residuals. Можно ли это (без особых сложностей) сделать в Excel? Если нет, то какая программа это сделает без большой мороки? Или скажите хотя бы, как такой способ называется "по-умному", чтобы я мог в гугле поискать.
У меня есть набор точек на плоскости, я прошу Excel провести через них прямую, выходяющую из нуля. Хотя у меня все точки важны одинаково, Excel придает наибольший вес точке с наибольшими (x, y). В какой-то мере это понятно - он минимизирует абсолютное значение residuals.
Пример:
2, 2
20, 20
200, 400
Получившийся график:

Excel тупо проводит линию как можно ближе к точке (200, 400) не обращая внимание на то, что две нижние точки оказываются существенно ниже этой линии. Я хочу, чтобы в учет брались не абсолютные, а нормализированные residuals. Можно ли это (без особых сложностей) сделать в Excel? Если нет, то какая программа это сделает без большой мороки? Или скажите хотя бы, как такой способ называется "по-умному", чтобы я мог в гугле поискать.
no subject
Date: 2008-01-23 07:11 pm (UTC)Что Вы имеете в виду под "нормализированные residuals" ?
если dy/y , то используйте LS regression для графика ln(y) vs. ln(x) .
no subject
Date: 2008-01-23 07:22 pm (UTC)Я сначала тоже решил строить ln(y) vs ln(x), но потом сообразил что прямая в этих координатах не является прямой в обычных x vs. y. В ней мы получаем ln(y)=a*ln(x), то есть y=x^(a) (x в степени a).
no subject
Date: 2008-01-23 07:37 pm (UTC)no subject
Date: 2008-01-23 07:56 pm (UTC)no subject
Date: 2008-01-23 07:48 pm (UTC)Directly:
Вы ищете a : a = arg min sum((y - а * x)^2 / y^2) =
arg min sum((1 - а * p)^2) , where p_i = x_i / y_i
after (derivation by a) =0 you get:
a = sum(p) / sum(p^2)
- easy to find in Excel.
no subject
Date: 2008-01-23 08:07 pm (UTC)Получающийся график выглядит гораздо лучше:
Спасибо!
no subject
Date: 2008-01-23 08:10 pm (UTC)no subject
Date: 2008-01-23 07:27 pm (UTC)Например, логарифмируйте y, потом сделайте exp()
2, 0.69
20, 3.00
200, 6.00
Получится, вероятно, y=0.0312x, экспонента -> y=1.032x
no subject
Date: 2008-01-23 08:54 pm (UTC)no subject
Date: 2008-01-26 01:07 am (UTC)