我必须从一个拟合函数中计算出两个参数之间的协方差。我在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-y)^2替换x^2+y^2,我将获得
协方差:(250.24975024975475,249.75024975025426),(249.75024975025426,250.24975024975475)
我很困惑,为什么我的协方差大于1(我不擅长统计,但据我所知,它必须在-1到1之间),所以知道iminuit的人可以帮助我?另外,在第一种情况下,矩阵意味着什么?为什么x和y之间有0的相关性,对角的意思是1?
发布于 2016-06-12 16:04:27
你把协方差和相关性搞混了。相关性是协方差的规范化版本,它确实总是在-1和1之间。
要从协方差矩阵中获得相关值,请计算:
correlation = cov[0, 1] / np.sqrt(cov[0, 0] * cov[1, 1])https://stackoverflow.com/questions/37776275
复制相似问题