我有一些时间序列慢慢增加,但在很短的时间内,它们是非常波动的。例如,时间序列可能如下所示:
[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)]
我想把时间序列的绘制重点放在大势上,而不是小浪上。是否有方法绘制一段时间内的平均值,并用一条指示波的条纹包围(条纹应表示置信区间,数据点可能在该时刻)?
简单的情节如下:
我想要的,带置信区间的曲线图如下:
在Python中有一种优雅的方式来实现它吗?
可以使用
pandas
函数rolling(n)
生成连续点上的平均值和标准偏差值。对于置信区间的阴影(用标准差之间的空格表示),可以使用
fill_between()
中的函数matplotlib.pyplot
。有关更多信息,您可以查看here,从中可以获得以下代码的灵感。通过上面的代码,您可以获得如下结果:
可以用多种方法生成平滑曲线。
一个简单的方法是使用移动平均值(滑动窗口中点的平均值)。如果您将数据存储在Pandas数据框中,则可以很容易地绘制出来。你也可以计算每个点的标准误差来得到你的置信区间。
另一种方法是将模型与数据拟合,并使用该方法生成平滑曲线。例如,可以使用高斯过程来实现这一点。该模型还可以为每个点产生期望的置信区间。有关详细信息,请参阅此Scikit-learn example。
看起来,你的性病加倍了两次。我想应该是这样的:
相关问题 更多 >
编程相关推荐