在平滑趋势时捕获方差 - 我可以改变线的粗细吗?

时间:2018-03-15 09:33:36

标签: python matplotlib plot smoothing trend

以下是我尝试使用指数平滑进行平滑的趋势示例:

import numpy as np
import matplotlib.pyplot as plt

y1 = np.random.randn(100)
y2 = np.random.randn(100)+2
y3 = 2*np.random.randn(100)+2
y4 = np.random.randn(100)
y = np.append(np.append(np.append(y1,y2),y3),y4)

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(y)

def exp_smoothing(y, alpha):
    s=np.zeros(len(y))
    s[0] = y[0]
    for i in range(1,len(y)):
        s[i] = alpha*y[i]+(1-alpha)*s[i-1]
    return np.array(s)

ax.plot(exp_smoothing(y,.05), c='r')
plt.show()

这给出了以下输出:

enter image description here

红线很好地了解了正在发生的平均值的变化,但没有关于方差的变化。

我想改变线条的厚度,因此较厚的部分表示原始趋势的部分具有较高的方差,而较薄的部分表示原始趋势的部分具有较低的方差。

我能想到的唯一方法是不使用set_lw来绘制不是一行,而是绘制许多较小的行,每个行的宽度(参见documentation)。

有没有更好的方法来解决这个问题?

0 个答案:

没有答案