Чи-квадрат numpy.polyfit (numpy) - PullRequest
8 голосов
/ 29 марта 2011

Может кто-нибудь объяснить, как получить Chi ^ 2 / doF, используя numpy.polyfit?

Ответы [ 2 ]

16 голосов
/ 30 марта 2011

Предположим, у вас есть несколько точек данных

x = numpy.array([0.0, 1.0, 2.0, 3.0])
y = numpy.array([3.6, 1.3, 0.2, 0.9])

Чтобы подогнать параболу к этим точкам, используйте numpy.polyfit():

p = numpy.polyfit(x, y, 2)

Чтобы получить значение хи-квадрат для этой подгонкиоцените полином по x значениям ваших точек данных, вычтите y значения, квадрат и сумму:

chi_squared = numpy.sum((numpy.polyval(p, x) - y) ** 2)

Вы можете разделить это число на количество степеней свободы, если хотите.

1 голос
/ 18 апреля 2016

Numpy's polyfit, по крайней мере, начиная с версии 1.3, поддерживает параметр full. Если для этого параметра установлено значение True, polyfit вернет еще несколько значений, включая квадрат невязок. Что является хи-квадратом (ненормализованным степенями свободы).

Итак, простой пример будет

p, residuals, _, _, _ = numpy.polyfit(x, y, 2, full=True)
chisq_dof = residuals / (len(x) - 3)

Я сам не пробовал это с весами, но я предполагаю, что polyfit делает все правильно (поскольку numpy 1.7, polyfit принимает параметр w для предоставления весов для подгонки).

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