0

フィット関数から 2 つのパラメーター間の共分散を計算する必要があります。Python で iminuit と呼ばれるこのパッケージを見つけました。これは適切に適合し、パラメーターの共分散行列も計算します。簡単な関数でパッケージをテストしました。これはコードです:

from iminuit import Minuit, describe, Struct

def func(x,y):
    f=x**2+y**2
    return f

m = Minuit(func,pedantic=False,print_level=0)
m.migrad()

print("Covariance:")
print(m.matrix())

これは出力です:

共分散: ((1.0, 0.0), (0.0, 1.0))

ただし、 x^2+y^2 を (xy)^2 に置き換えると、

共分散: ((250.24975024975475, 249.75024975025426), (249.75024975025426, 250.24975024975475))

なぜ共分散が1より大きいのか混乱しています(統計は得意ではありませんが、理解したところでは-1と1の間でなければなりません)ので、iminuitを知っている人が助けてくれますか?また、最初のケースでは、行列は何を意味するのでしょうか? x と y の間に 0 の相関があるのはなぜですか?対角線上の 1 は何を意味するのですか?

4

1 に答える 1

0

共分散と相関を混同しています。相関は共分散の正規化されたバージョンであり、実際には常に -1 と 1 の間です。

共分散行列から相関を取得するには、次を計算します。

correlation = cov[0, 1] / np.sqrt(cov[0, 0] * cov[1, 1])
于 2016-06-12T16:04:27.723 に答える