Как визуализировать 95% доверительный интервал в matplotlib?

6

Я узнал, как найти 95% -ный доверительный интервал с scipy.stats.t таким образом

In [1]: from scipy.stats import t
In [2]: t.interval(0.95, 10, loc=1, scale=2)  # 95% confidence interval
Out[2]: (-3.4562777039298762, 5.4562777039298762)
In [3]: t.interval(0.99, 10, loc=1, scale=2)  # 99% confidence interval
Out[3]: (-5.338545334351676, 7.338545334351676)

Однако визуализация важна для меня. Мне интересно, как я могу показать строку доверительного интервала на каждой node моей кривой в matplotlib?

То, что я ожидаю, это что-то вроде этого

Изображение 83886

  • 0
    errorbar ? Вы пробовали что-нибудь? Вы смотрели в галерее?
  • 0
    @tcaswell на панели ошибок я имею в виду формы в каждой точке на графике.
Показать ещё 2 комментария
Теги:
matplotlib
statistics

2 ответа

7

Вам не нужен метод .interval, чтобы получить размер доверительного интервала, вам просто нужен метод .ppf.

import numpy as np
import scipy.stats as ss
data_m=np.array([1,2,3,4])   #(Means of your data)
data_df=np.array([5,6,7,8])   #(Degree-of-freedoms of your data)
data_sd=np.array([11,12,12,14])   #(Standard Deviations of your data)
import matplotlib.pyplot as plt
plt.errorbar([0,1,2,3], data_m, yerr=ss.t.ppf(0.95, data_df)*data_sd)
plt.xlim((-1,4))

ss.t.ppf(0.95, data_df)*data_sd - это полностью векторизованный способ получить (половину) размер интервала, учитывая степени свободы и стандартное отклонение.

Изображение 162043

  • 1
    Разве вы не должны также делить стандартные отклонения на квадратный корень из степеней свободы: т.е. ss.t.ppf(0.95, data_df)*data_sd/np.sqrt(data_df) ?
-2

Я не могу комментировать из-за низкой репутации, поэтому я прокомментирую ответ. Во-первых, я также думаю, что вам нужно разделить стандартное отклонение, и, во-вторых, если ваши данные двусторонние (как предполагает сюжет), вам нужно разрешить 2,5% промахов по каждой стороне гауссова, то есть:

ss.t.ppf(0.975, data_df)/np.sqrt(data_df)

Поскольку вы пропустите 2,5% с обеих сторон, вы получаете общую 5% -ную пропущенность.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню