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))

但是,如果我用 (xy)^2 替换 x^2+y^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 回答