смешанный полифит с данными, которые имеют различные уровни статистической значимости - PullRequest
4 голосов
/ 10 декабря 2011

Polyfit - отличный инструмент для подгонки линии к набору точек.Однако мои данные имеют разные уровни статистической значимости.

Например, для одной точки (x1, y2) у меня может быть только 10 наблюдений, а для другой точки (x2, y2) у меня может быть 10 000 наблюдений.У меня обычно есть по крайней мере 10 баллов, и я хотел бы взвесить каждый в соответствии со статистической значимостью при использовании полифита.Есть ли способ (или аналогичная функция), который позволяет это?

Ответы [ 3 ]

3 голосов
/ 10 декабря 2011

Одна из возможностей - использовать взвешенные наименьшие квадраты в statsmodels

примерно

y - ответ или эндогенная переменная (endog)

x - это ваша одномерная пояснительная переменная

чем больше вес, тем больше вес на этом наблюдении

для получения полиномиальной матрицы и подгонки

import numpy as np
import statsmodels.api as sm
exog = np.vander(x, degree+1)
result = sm.WLS(y, exog, weight=w).fit()

параметры в result.params. Установленные значения в result.fittedvalues

Прогноз изменился между версиями. С версией 0.4 вы можете использовать

result.predict(np.vander(x_new, degree+1))
2 голосов
/ 17 декабря 2012

более просто:

import numpy as np
result = np.polynomial.polynomial.polyfit(x,y,deg,w=weight of each observation)
1 голос
/ 10 декабря 2011

Я не знаю про numpy, но вы можете написать свою собственную функцию polyfit.Polyfit - это просто решение линейного уравнения.

http://en.wikipedia.org/wiki/Polynomial_regression#Matrix_form_and_calculation_of_estimates
(в вашем случае epsilon, вероятно, равен 0)

Вы можете видеть, что все, что вам нужно сделать, это умножить каждую строку в y и каждую строку в x на ваш коэффициент.
Это должно быть как 10 строк кода (я помню, что мне потребовалось 4 часа, чтобы заново изобрести уравнение минимальной площади, но только 2 строки кода в MATLAB)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...