Может ли кто-нибудь объяснить, как получить Chi ^ 2/doF с помощью numpy.polyfit?
Хи-квадрат numpy.polyfit (numpy)
Ответы (2)
Предположим, у вас есть некоторые точки данных
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)
Вы можете разделить это число на количество степеней свободы, если хотите.
sum of squared error
(не хи-квадрат)? или я ошибаюсь?
- person Trevor Boyd Smith; 21.11.2019
what is chi squared
против what is sum of squared errors
.
- person Trevor Boyd Smith; 22.11.2019
polyfit
Numpy, по крайней мере, начиная с версии 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
для предоставления весов для подгонки).