卡方核聚合体(核)

2024-05-16 19:59:31 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能解释一下如何使用numpy.polyfit获得Chi^2/doF吗?


Tags: numpydofchipolyfit
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)

如果你愿意,你可以用这个数字除以自由度。

Numpy的polyfit至少在1.3版之后支持full参数。如果设置为Truepolyfit将返回更多的值,包括残差的平方。它是卡方(不受自由度的规范化)。

一个简单的例子是

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

我自己并没有尝试使用权重,但是我假设polyfit在这里做的是正确的(因为numpy 1.7,polyfit接受一个参数w来提供适合的权重)。

相关问题 更多 >