2024-05-16 19:59:31 发布
网友
有人能解释一下如何使用numpy.polyfit获得Chi^2/doF吗?
假设你有一些数据点
x = numpy.array([0.0, 1.0, 2.0, 3.0]) y = numpy.array([3.6, 1.3, 0.2, 0.9])
要将抛物线拟合到这些点,请使用numpy.polyfit():
numpy.polyfit()
p = numpy.polyfit(x, y, 2)
若要获取此拟合的卡方值,请计算数据点的x值处的多项式,减去y值,平方和:
x
y
chi_squared = numpy.sum((numpy.polyval(p, x) - y) ** 2)
如果你愿意,你可以用这个数字除以自由度。
Numpy的polyfit至少在1.3版之后支持full参数。如果设置为True,polyfit将返回更多的值,包括残差的平方。它是卡方(不受自由度的规范化)。
polyfit
full
True
一个简单的例子是
p, residuals, _, _, _ = numpy.polyfit(x, y, 2, full=True) chisq_dof = residuals / (len(x) - 3)
我自己并没有尝试使用权重,但是我假设polyfit在这里做的是正确的(因为numpy 1.7,polyfit接受一个参数w来提供适合的权重)。
w
假设你有一些数据点
要将抛物线拟合到这些点,请使用
numpy.polyfit()
:若要获取此拟合的卡方值,请计算数据点的
x
值处的多项式,减去y
值,平方和:如果你愿意,你可以用这个数字除以自由度。
Numpy的
polyfit
至少在1.3版之后支持full
参数。如果设置为True
,polyfit
将返回更多的值,包括残差的平方。它是卡方(不受自由度的规范化)。一个简单的例子是
我自己并没有尝试使用权重,但是我假设
polyfit
在这里做的是正确的(因为numpy 1.7,polyfit
接受一个参数w
来提供适合的权重)。相关问题 更多 >
编程相关推荐