python不确定性和相关性

2024-10-02 04:36:41 发布

您现在位置:Python中文网/ 问答频道 /正文

有了“不确定性”包,python在通过计算传播不确定性方面非常强大。是否有可能也包括相关性?比方说,我用scipy.optimize.curve_fit拟合一些数据,它返回最佳拟合参数及其相关矩阵,通常称为poptpcov。现在我想计算一个函数f(popt)

在没有相关性的情况下,可以按如下方式进行(2D)

f(p0, p1):
    return p0 * unumpy.exp(p1)

p0 = ufloat(popt[0], pcov[0,0]**0.5)
p1 = ufloat(popt[1], pcov[1,1]**0.5)
result = f(p0, p1)

使用whataver函数f。这忽略了p0和p1的相关性。在“不确定性”的文档中提到了相关性,但我真的不明白是否以及如何将其应用于我的问题

编辑:这似乎有效,但老实说,我真的不明白它的作用,以及这是否真的是正确的解决方案

import numpy as np
import uncertainties
from uncertainties import ufloat, unumpy

def f(p0, p1):
    return p0 * unumpy.exp(p1)

popt = np.array([1, 2])
pcov = np.array([[1, 2], [3, 4]])

p0, p1 = uncertainties.correlated_values(popt, pcov)
print(f(p0, p1))  # 7+/-25

p0 = ufloat(popt[0], pcov[0,0]**0.5)
p1 = ufloat(popt[1], pcov[1,1]**0.5)
print(f(p0, p1))  # 7+/-17

Tags: 函数importreturnnpscipyarrayprint不确定性
1条回答
网友
1楼 · 发布于 2024-10-02 04:36:41

User Guide示例中:

(u2, v2, sum2) = uncertainties.correlated_values([1, 10, 21], cov_matrix)

在你的情况下,我想你可以写:

p0, p1 = uncertainties.correlated_values(popt, pcov)

相关问题 更多 >

    热门问题