gpt4 book ai didi

python - 如何在python中绘制时间序列数组,并显示置信区间?

转载 作者:行者123 更新时间:2023-12-03 14:36:04 28 4
gpt4 key购买 nike

我有一些缓慢增加的时间序列,但在短时间内它们非常波浪形。例如,时间序列可能如下所示:

[10 + np.random.rand() for i in range(100)] + [12 + np.random.rand() for i in range(100)] + [14 + np.random.rand() for i in range(100)] 

我想绘制时间序列,重点关注总体趋势,而不是小波。有没有办法绘制一段时间内的平均值,周围有一条指示波浪的条纹(条纹应该代表置信区间,数据点可能在那一刻)?

一个简单的情节如下所示:

enter image description here

我想要的带有置信区间的图如下所示:

enter image description here

有没有一种优雅的方法可以在 Python 中做到这一点?

最佳答案

您可以使用 pandas功能 rolling(n)生成超过 n 的均值和标准差值连续点。

对于置信区间的阴影(由标准差之间的空间表示),您可以使用函数 fill_between()来自 matplotlib.pyplot .有关更多信息,您可以查看 here ,从中启发了以下代码。

import numpy             as np
import pandas as pd
import matplotlib.pyplot as plt

#Declare the array containing the series you want to plot.
#For example:
time_series_array = np.sin(np.linspace(-np.pi, np.pi, 400)) + np.random.rand((400))
n_steps = 15 #number of rolling steps for the mean/std.

#Compute curves of interest:
time_series_df = pd.DataFrame(time_series_array)
smooth_path = time_series_df.rolling(n_steps).mean()
path_deviation = 2 * time_series_df.rolling(n_steps).std()

under_line = (smooth_path-path_deviation)[0]
over_line = (smooth_path+path_deviation)[0]

#Plotting:
plt.plot(smooth_path, linewidth=2) #mean curve.
plt.fill_between(path_deviation.index, under_line, over_line, color='b', alpha=.1) #std curves.

使用上面的代码,您将获得如下内容:
enter image description here

关于python - 如何在python中绘制时间序列数组,并显示置信区间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50161140/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com