2015-04-09 5 views
1

У меня возникла странная проблема с выполнением полиномиальной регрессии в Excel. Как и раньше, я пытаюсь получить правильные коэффициенты, используемые Excel, когда он создает полиномиальную линию тренда на графике. Я читал, как это сделать с помощью LINEST, и я смог получить ответы, соответствующие формуле линии тренда, когда выполнял регрессию 2-го и 3-го порядка ... но когда я пытаюсь 4 или 5, ответы дико отличаются от того, что Excel показывает мне формулу линии тренда.Полиномиальная регрессия 4-го и 5-го порядка не работает в Excel

Вот данные с графика и моя попытка на 5-ом порядке регресса: Click for Excel Workbook

Кто-нибудь есть какие-либо идеи о том, что может быть причиной мне неприятности?

Спасибо!

-Jon

+0

Только некоторые дополнительные подробности, которые я только что заметил: когда я выполняю регрессию 4-го или 5-го порядка, 4-й и 5-й коэффициенты равны нулю. Если я действительно запускаю формулу, предсказание будет таким же, как регрессия 3-го порядка (даже если отдельные коэффициенты различны). – Vadaar

+0

Кажется, проблема с вашим Excel. Если я загружу ваш файл и откройте его, то результатом «LINEST» будет «-1.06569E-14 \t 1.0973E-09 \t -3.01287E-05 210463020.6'. Теперь я могу изменить значение в 'B2' до 34 и обратно 35. Листовые начисляет и теперь показывает:' 1.52874E-09 \t \t -0,000314866 +25,94049994 \t \t -1068559,361 22008335073 \t -1.81315E + 14'what почти точная что диаграмма показывает. –

+0

Конечно, поскольку вы используете даты как значения x (самое низкое - 40980), x^5 действительно большое число. Там будут затронуты ограничения точности Excel. –

ответ

1

Нулевые значения в выходе являются следствием (мульти-) коллинеарности. Из справки по функции MS:

«... Функция LINEST проверяет коллинеарность и удаляет любые избыточные столбцы X из модели регрессии, когда она идентифицирует их. Удаленные столбцы X могут быть распознаны в выводе LINEST как имеющие 0 коэффициентов в дополнение к 0 se values ​​.... "

Для более точных оценок применяют ЛИНЕЙН со среднецентровыми значениями х и после умножения на матрицу биномиальных коэффициентов. Так вместо:

=LINEST(B2:B31,A2:A31^{1,2,3,4,5}) 

попробуйте вместо этого:

=MMULT(LINEST(B2:B31,(A2:A31-AVERAGE(A2:A31))^{1,2,3,4,5}),IFERROR(COMBIN({5;4;3;2;1;0},{5,4,3,2,1,0})*(-AVERAGE(A2:A31))^({5;4;3;2;1;0}-{5,4,3,2,1,0}),0))

, которые согласуются со значениями линий тренда.

Также см: https://newtonexcelbach.wordpress.com/2011/02/04/fitting-high-order-polynomials/ (пост и комментарии)

+0

Ужасно, что отлично работает для меня. Огромное спасибо. – Nova

0

Вы можете быть переобучения; на самом деле, я бы сказал, что вы, вероятно, используете, если используете полином 5-го порядка. Если полиномы выше, чем порядок 3 (даже выше, чем порядок 1 иногда!), Вы рискуете, что ваша «линия тренда» будет стрелять в космос в конечных точках. Когда вы преодолеваете определенный уровень сложности, вы подгоняете модель к случайным изменениям в точках данных, а не к основному механизму, который генерировал данные.

Одним из способов избежать проблемы является использование механизма регуляризации, такого как регрессия гребня. Книга Кристофера Бишопа Распознавание образов и машинное обучение имеет прекрасное обсуждение этой темы и дает хороший пример того, как упорядочить полиномиальную регрессию.

BTW, я бы не использовал Excel для статистического анализа. Вот статья о статистических возможностях Excel от Вычислительная статистика и анализ данных журнал (я впервые увидел ссылку на это в другой записи stackoverflow, но я не помню, откуда, извиняюсь за исходный плакат за то, что не дал соответствующего кредита): http://www.pages.drexel.edu/~bdm25/excel2007.pdf

+0

Это выглядит весьма полезным, но это должен был быть комментарий, а не ответ, поскольку он касается только того, пытаться ли это в первую очередь, не решая проблему. С немного больше rep, [вы сможете оставлять комментарии] (http://stackoverflow.com/privileges/comment). –