2014-02-26 5 views
1

Есть ли простой способ сделать многомерную устойчивую полиномиальную регрессию в Python? Например.Надежная многомерная полиномиальная регрессия в Python

y = a + bx_1 + cx_2 + dx_1x_2 + ex_1^2 + fx_2^2 

и, возможно, более высокие термины степени, где a,b,c,d,e,f являются постоянными и x_i являются зависимыми переменными (не может быть больше, чем 2).

У меня есть набор данных, изгнанных выбросами, поэтому предположение о нормальности не выполняется. Я не очень хорошо разбираюсь в регрессиях, но я обнаружил, что существуют «надежные» методы решения этой проблемы. К сожалению, я не смог найти простой способ сделать это на Python, не имея необходимости кодировать весь метод. Я что-то упустил? Или я могу использовать еще один подходящий язык, такой как R? (Так как я ничего не знаю о R, и это часть большей проблемы, которую я закодировал в Python, я бы предпочел сделать это на Python. Но, может быть, обучение R более эффективно, чем пытаться делать такие вещи в Python.)

Заранее спасибо.

+0

надежные линейные модели доступны в statsmodels см [здесь] (http://statsmodels.sourceforge.net/stable/examples/generated/example_rlm.html) –

+0

я уже видел, что один, но он с мне кажется, что он только регрессии типа y = a + bx_1 + cx_2 + dx_3 + .... Или есть способ включить более высокую степень и смешанные термины? – user1162809

+0

Как насчет numpy.polyfit? http://docs.scipy.org/doc/numpy/reference/generated/numpy.polyfit.html – joel3000

ответ

2

R очень хорошо подходит для этого, и есть библиотеки, которые позволяют говорить с R от Python, как RPy2

http://rpy.sourceforge.net/rpy2.html

А вот учебник по надежной регрессии с R:

http://www.ats.ucla.edu/stat/r/dae/rreg.htm

+0

Какую функцию я должен искать, чтобы сделать полиномиальную регрессию в Rpy (а не только константу и условия степени 1)? И существует ли взаимно однозначное соответствие Rpy и R? – user1162809

+0

Возможно, вы использовали бы rlm (надежную линейную модель) из пакета MASS. Полиномиальная регрессия - это только самые предсказательные времена, если я помню из линейной регрессии, я считаю, что полифункция - это то, что вы использовали бы в R на предсказателях. RPy2 обеспечивает более высокий уровень и интерфейс с нижним рычагом с R, это в основном оболочка для R, вот введение: http://rpy.sourceforge.net/rpy2/doc-dev/html/introduction.html –

+0

Если я это сделаю это (используя RLM и просто умножая предсказатели сами), я получаю числовые проблемы. «Предупреждения: [1] Номер условия большой, 2.41e + 10. Это может указывать на сильную мультиколлинеарность или другие числовые проблемы». Даже если я центрирую предикторов, вычитая среднее значение, я все равно получаю это. Странно, что он работал, когда я использовал полифит .... argh! – user1162809

Смежные вопросы