誰かが numpy.polyfit を使用して Chi^2/doF を取得する方法を説明できますか?
10678 次
2 に答える
17
いくつかのデータ ポイントがあるとします。
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)
このフィットのカイ 2 乗値を取得するにx
は、データ ポイントの値で多項式を評価し、値を減算しy
、2 乗して合計します。
chi_squared = numpy.sum((numpy.polyval(p, x) - y) ** 2)
必要に応じて、この数を自由度の数で割ることができます。
于 2011-03-30T08:57:29.410 に答える
4
Numpypolyfit
は、少なくともリリース 1.3 以降、full
パラメーターをサポートしています。それが に設定されている場合True
、polyfit
残差の 2 乗を含む、さらにいくつかの値が返されます。これはカイ二乗です (自由度によって正規化されていません)。
したがって、簡単な例は次のようになります
p, residuals, _, _, _ = numpy.polyfit(x, y, 2, full=True)
chisq_dof = residuals / (len(x) - 3)
私は重みでこれを自分で試したことはありませんがpolyfit
、ここで正しいことをすると思います(numpy 1.7以降、フィットの重みを提供するpolyfit
パラメーターを受け入れます)。w
于 2016-04-18T06:59:46.853 に答える