python拟合函数并置信区间代码csdn
时间: 2023-09-03 14:04:38 浏览: 176
在Python中拟合函数并计算置信区间可以使用scipy库中的curve_fit函数来实现。curve_fit函数是一个非线性最小二乘拟合的优化函数,可以通过给定的数据拟合出一个函数模型,并返回拟合参数的估计值和协方差矩阵。
以下是一个使用curve_fit函数拟合指数函数并计算置信区间的示例代码:
```python
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
# 定义指数函数模型
def exponential(x, a, b, c):
return a * np.exp(-b * x) + c
# 生成模拟数据
x_data = np.linspace(0, 10, 100)
y_data = exponential(x_data, 2, 0.5, 1) + np.random.normal(0, 0.2, len(x_data))
# 使用curve_fit函数拟合指数函数
params, cov = curve_fit(exponential, x_data, y_data)
# 得到拟合参数的估计值和协方差矩阵
a_fit, b_fit, c_fit = params
cov_matrix = cov
# 计算置信区间
perr = np.sqrt(np.diag(cov_matrix)) # 参数估计值的标准误差
confidence_interval = 1.96 * perr # 95% 置信区间
print("拟合参数: a =", a_fit, ", b =", b_fit, ", c =", c_fit)
print("置信区间: a =", a_fit - confidence_interval[0], "-", a_fit + confidence_interval[0])
print("置信区间: b =", b_fit - confidence_interval[1], "-", b_fit + confidence_interval[1])
print("置信区间: c =", c_fit - confidence_interval[2], "-", c_fit + confidence_interval[2])
# 绘制拟合曲线和原数据
x_fit = np.linspace(0, 10, 100)
y_fit = exponential(x_fit, a_fit, b_fit, c_fit)
plt.scatter(x_data, y_data, label="Data")
plt.plot(x_fit, y_fit, label="Fitted curve")
plt.legend()
plt.show()
```
运行以上代码,将会得到拟合参数的估计值和置信区间,并绘制出拟合曲线和原始数据的图像。
阅读全文