首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >卡方numpy.polyfit (numpy)

卡方numpy.polyfit (numpy)
EN

Stack Overflow用户
提问于 2011-03-30 02:43:50
回答 2查看 10.5K关注 0票数 10

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

EN

回答 2

Stack Overflow用户

发布于 2011-03-30 16:57:29

假设你有一些数据点

代码语言:javascript
复制
x = numpy.array([0.0, 1.0, 2.0, 3.0])
y = numpy.array([3.6, 1.3, 0.2, 0.9])

要将抛物线拟合到这些点,请使用numpy.polyfit()

代码语言:javascript
复制
p = numpy.polyfit(x, y, 2)

要获得此拟合的卡方值,请计算数据点的x值处的多项式,减去y值、平方和:

代码语言:javascript
复制
chi_squared = numpy.sum((numpy.polyval(p, x) - y) ** 2)

如果愿意,可以将此数字除以自由度数。

票数 17
EN

Stack Overflow用户

发布于 2016-04-18 14:59:47

至少从1.3版本开始,Numpy的polyfit就支持full参数。如果设置为Truepolyfit将返回更多的值,包括残差的平方。它是卡方的(未按自由度归一化)。

所以一个简单的例子是

代码语言:javascript
复制
p, residuals, _, _, _ = numpy.polyfit(x, y, 2, full=True)
chisq_dof = residuals / (len(x) - 3)

我自己没有尝试过使用权重,但我假设polyfit在这里做了正确的事情(从numpy 1.7开始,polyfit接受参数w来提供拟合的权重)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5477359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档