如何计算Seaborn tsplot中的“​​错误带”?

时间:2015-04-06 23:07:02

标签: python statistics seaborn

我试图了解如何在tsplot中计算错误带。错误带的示例显示为here

当我绘制像

这样简单的东西时
sns.tsplot(np.array([[0,1,0,1,0,1,0,1], [1,0,1,0,1,0,1,0], [.5,.5,.5,.5,.5,.5,.5,.5]]))

我按预期在y=0.5得到一条垂直线。顶部错误带也是y=0.665附近的垂直线,底部错误带是y=0.335附近的垂直线。有人可以解释这些是如何衍生出来的吗?

2 个答案:

答案 0 :(得分:10)

我不是统计学家,但我仔细阅读了seaborn代码,以便确切了解发生了什么。有三个步骤:

  1. Bootstrap重新取样。 Seaborn会创建重新采样的数据版本。每个都是 像你这样的3x8矩阵,但每行都是从中随机选择的 三行输入。例如,一个可能是:

    [[ 0.5  0.5  0.5  0.5  0.5  0.5  0.5  0.5]
     [ 0.5  0.5  0.5  0.5 0.5 0.5  0.5  0.5]
     [ 0.5  0.5  0.5  0.5  0.5  0.5  0.5  0.5]]
    

    另一个可能是:

    [[ 1.   0.   1.   0.   1.   0.   1.   0. ]
     [ 0.5  0.5  0.5  0.5 0.5  0.5  0.5  0.5]
     [ 0.   1.   0.   1.   0.   1.   0.   1. ]]
    

    它会创建n_boot这些(默认为10000)。

  2. 集中趋势估算。 Seaborn会在10000个重采样版本的数据的每一列上运行一个函数。由于您没有指定此参数(estimator),因此它会将列提供给均值函数(numpy.meanaxis=0)。你的bootstrap迭代中的很多列的平均值为0.5,因为它们会像[0,0.5,1],[0.5,1,0],[0.5,0.5,0.5]等那样,但是你也会有一些[1,1,0]甚至一些[1,1,1]会带来更高的收益。

  3. 置信区间确定。对于每一列,seaborn对从最小到最大的每个重采样版本的数据计算的均值的1000个估计值进行排序,并选择代表上层的数据并降低CI。默认情况下,它使用68%CI,因此如果排列所有1000个均值估计值,那么它将选择第160个和第840个。 (840-160 = 680,或1000的68%)。

  4. 几点说明:

    • 实际上只有3 ^ 3或27个可能的重新采样版本的数组,如果你使用像函数那样的函数,那么顺序并不重要,那么只有3个!或6.因此,所有10000个引导程序迭代将与这27个版本中的一个相同,或者在无序情况下为6个版本。这意味着在这种情况下进行10000次迭代可能很愚蠢。

    • 平均值为0.3333 ...和0.6666 ...显示为您的置信区间是[1,1,0]和[1,0,0]或其重新排列版本的平均值。< / p>

答案 1 :(得分:6)

它们显示一个自举置信区间,由重采样单元(二维数组输入形式的行)计算。默认情况下,它显示68%的置信区间,相当于标准错误,但可以使用ci参数进行更改。