2015-04-06 4 views
4

Я пытаюсь понять, как полосы ошибок вычисляются в tsplot. Примеры полос ошибок показаны here.Как рассчитываются «полосы ошибок» в Seaborn tsplot?

Когда я сюжет что-то простое, как

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. Может кто-нибудь объяснить, как они получены?

ответ

4

Они отображают доверительный интервал начальной загрузки, вычисленный блоками передискретизации (строки в форме ввода 2-го массива). По умолчанию он показывает 68-процентный доверительный интервал, который эквивалентен стандартной ошибке, но это можно изменить с помощью параметра ci.

+0

Не могли бы вы рассказать об этом? Я не знаком с загрузкой, но я хотел бы понять это на этом простом примере. – theQman

+0

Bootstrapping - очень общая концепция в статистике, и есть ряд лучших примеров, чем я мог бы дать. [This] (http://stats.stackexchange.com/questions/26088/explaining-to-laypeople-why-bootstrapping-works) вопрос и ответ на статистику stackexchange кажется красиво сформулированным. – mwaskom

+0

seaborn показывает интервал 95% conf по умолчанию на морском берегу 0.8.1 – cyniphile

7

Я не специалист по статистике, но я прочитал код морского кода, чтобы точно увидеть, что происходит. Существует три этапа:

  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.mean с axis=0). Многие ваши столбцы в ваших итерациях бутстрапа будут иметь значение 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 или 68% от 1000).

Несколько примечаний:

  • Есть на самом деле только 3^3, или 27, возможные повторно подобранные версии вашего массива, и если вы используете функцию, например, среднее значение, где порядок Безразлично «Имеет значение только 3!» или «6. Таким образом, все итерации 10000 бутстрапов будут идентичны одной из этих 27 версий или 6 версий в неупорядоченном случае. Это означает, что в этом случае, вероятно, глупо делать 10000 итераций.

  • Средство 0,3333 ... и 0,6666 ...которые появляются, поскольку ваши доверительные интервалы являются средством для [1,1,0] и [1,0,0] или переупорядоченных версий этих.

+0

Wow большое вам спасибо за это. Это действительно помогло. –

Смежные вопросы