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

Date: 2008-01-23 07:11 pm (UTC)
From: [identity profile] azzo27.livejournal.com
Excel не причем, он просто реализует http://en.wikipedia.org/wiki/Least_squares

Что Вы имеете в виду под "нормализированные residuals" ?

если dy/y , то используйте LS regression для графика ln(y) vs. ln(x) .

Date: 2008-01-23 07:22 pm (UTC)
From: [identity profile] shvarz.livejournal.com
Ну я имею в виду, что least squares должные считаться не в абсолютных цифрах, а в процентах от величины для каждой точки. В примере выше прямая проходит в ~2 единицах от точки (200,400) - то есть отклонение всего 0.5-1%; она также отклоняется примерно на 1.5-2 единицы от точки (2,2) - это отклонение на 60-100%.

Я сначала тоже решил строить ln(y) vs ln(x), но потом сообразил что прямая в этих координатах не является прямой в обычных x vs. y. В ней мы получаем ln(y)=a*ln(x), то есть y=x^(a) (x в степени a).

Date: 2008-01-23 07:27 pm (UTC)
From: [identity profile] v-v.livejournal.com
Сначала нормализуйте исходные данные как больше нравится, потом делайте регрессию по нормализованным данным, потом де-нормализуйте обратно

Например, логарифмируйте y, потом сделайте exp()

2, 0.69
20, 3.00
200, 6.00

Получится, вероятно, y=0.0312x, экспонента -> y=1.032x

Date: 2008-01-23 07:37 pm (UTC)
From: [identity profile] v-v.livejournal.com
Ну и пусть она не является прямой при обратном преобразовании. В этом и будет отражено то, что Вам нужна не совсем линейная регрессия

Date: 2008-01-23 07:48 pm (UTC)
From: [identity profile] azzo27.livejournal.com
В ln - ln через 0 проводить не надо, но чтоб получить прямую, надо фиксировать slope=1.


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.

Edited Date: 2008-01-23 07:51 pm (UTC)

Date: 2008-01-23 07:56 pm (UTC)
From: [identity profile] shvarz.livejournal.com
Эксперимент устроен так, что зависимость y от x должна быть линейной. Нелинейная зависимость (теоретически) может быть, но это означает привлечение дополнительных факторов, которые надо как-то объяснять и о которых мне ничего не известно.

Date: 2008-01-23 08:07 pm (UTC)
From: [identity profile] shvarz.livejournal.com
ОК, кажется это работает! В примере выше получилось y=1.111x
Получающийся график выглядит гораздо лучше:
9,19 КБ

Спасибо!

Date: 2008-01-23 08:10 pm (UTC)

Date: 2008-01-23 08:54 pm (UTC)
From: [identity profile] worldtensor.livejournal.com
Возможно Вам поможет информация вот здесь (http://www.itl.nist.gov/div898/handbook/pmd/section4/pmd452.htm). Такие weighted curve fittings точно можно делать в программе IgorPro (http://www.wavemetrics.com/Products/igorpro/dataanalysis/curvefitting.htm).

Date: 2008-01-26 01:07 am (UTC)
From: [identity profile] shvarz.livejournal.com
Спасибо, но большая часть того, что там написано мне непонятна. Igor крут, но тоже нетривиален. То есть я, наверно, разберусь и сделаю, но результат не будет стоить потраченных усилий :)

March 2022

S M T W T F S
  12345
6789101112
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 24th, 2026 11:04 am
Powered by Dreamwidth Studios