Как построить доверительный интервал в python
Перейти к содержимому

Как построить доверительный интервал в python

Вычислить доверительный интервал из выборочных данных

У меня есть выборочные данные, для которых я хотел бы рассчитать доверительный интервал, предполагая нормальное распределение.

Я нашел и установил пакеты numpy и scipy и получил numpy для возврата среднего и стандартного отклонения (numpy.mean (data) со списком данных). Любой совет по получению доверительного интервала образца будет принята с благодарностью.

4 ответа

Вы можете рассчитать так

Вот сокращенная версия кода Шасана, рассчитывающего 95% доверительный интервал среднего значения массива a :

Но использование tconfint_mean StatsModels, возможно, даже лучше :

Основополагающие предположения для обоих — то, что образец (массив a ) был взят независимо от нормального распределения с неизвестным стандартным отклонением (см. MathWorld или Википедия).

Для большого размера выборки n среднее значение выборки обычно распределяется, и можно рассчитать его доверительный интервал, используя st.norm.interval() (как предложено в комментарии Хайме). Но приведенные выше решения верны и для малых n, где st.norm.interval() дает слишком узкие доверительные интервалы (т. Е. «Ложная достоверность»). См. Мой ответ на аналогичный вопрос для получения дополнительной информации (и одного из комментариев Русса здесь).

Вот пример, где правильные параметры дают (по существу) идентичные доверительные интервалы:

И наконец, неверный результат с использованием st.norm.interval() :

Начиная Python 3.8 , стандартная библиотека предоставляет < > объект как часть statistics модуль:

Создает объект NormalDist из образца данных ( NormalDist.from_samples(data) , который дает нам доступ к среднему значению и стандартному отклонению с помощью NormalDist.mean и NormalDist.stdev .

Вычислить Z-score на основе стандартного нормального распределения (представленного NormalDist() ) для данной достоверности, используя обратную кумулятивную функцию распределения ( inv_cdf ).

Создает доверительный интервал на основе стандартного отклонения выборки и среднего значения.

Это предполагает, что размер выборки достаточно велик (скажем, более

100 баллов), чтобы использовать стандартное нормальное распределение, а не t-распределение Стьюдента, для вычисления значения z .

Начните с поиска z-значения для желаемого доверительного интервала из справочная таблица. Тогда доверительный интервал равен mean +/- z*sigma , где sigma — это оценочное стандартное отклонение среднего значения для вашей выборки, выраженное как sigma = s / sqrt(n) , где s — стандартное отклонение, рассчитанное на основе ваших выборочных данных. n — ваш размер выборки.

Как построить доверительный интервал в Python?

Доверительный интервал — это тип оценки, вычисляемый на основе статистики наблюдаемых данных, который дает диапазон значений, который, вероятно, будет содержать параметр генеральной совокупности с определенным уровнем достоверности.

Доверительный интервал для среднего — это диапазон значений, между которыми, возможно, находится среднее значение генеральной совокупности. Если бы я сделал прогноз погоды на завтра где-то между -100 градусов и +100 градусов, я могу быть на 100% уверен, что это будет правильно. Однако, если я сделаю прогноз между 20,4 и 20,5 градусами Цельсия, я буду менее уверен. Обратите внимание, как достоверность уменьшается с уменьшением интервала. То же самое относится к статистическим доверительным интервалам, но они также зависят от других факторов.

95% доверительный интервал скажет мне, что если мы возьмем бесконечное количество выборок из моей совокупности, каждый раз вычислим интервал, то в 95% этих интервалов интервал будет содержать истинное среднее значение по совокупности. Итак, с одной выборкой мы можем вычислить выборочное среднее и оттуда получить интервал вокруг него, который, скорее всего, будет содержать истинное среднее значение генеральной совокупности.

Область под двумя черными линиями показывает доверительный интервал 95%.

Доверительный интервал как концепция была выдвинута Ежи Нейманом в статье, опубликованной в 1937 году. Существуют различные типы доверительных интервалов, некоторые из наиболее часто используемых: ДИ для среднего, ДИ для медианы, ДИ для разницы между означает CI для пропорции и CI для разницы в пропорциях.

Давайте посмотрим, как это происходит с Python.

Вычисление CI с учетом базового распределения с использованием lineplot ()

Функция Lineplot (), доступная в Seaborn, библиотеке визуализации данных для Python, лучше всего подходит для отображения тенденций за определенный период времени, однако она также помогает при построении доверительного интервала.

Синтаксис:

  • x, y: Input data variables; must be numeric. Can pass data directly or reference columns in data.
  • hue: Grouping variable that will produce lines with different colors. Can be either categorical or numeric, although color mapping will behave differently in latter case.
  • style: Grouping variable that will produce lines with different dashes and/or markers. Can have a numeric dtype but will always be treated as categorical.
  • data: Tidy (“long-form”) dataframe where each column is a variable and each row is an observation.
  • markers: Object determining how to draw the markers for different levels of the style variable.
  • legend: How to draw the legend. If “brief”, numeric “hue“ and “size“ variables will be represented with a sample of evenly spaced values.

По умолчанию график агрегируется по нескольким значениям y при каждом значении x и показывает оценку центральной тенденции и доверительный интервал для этой оценки.

How to plot confidence interval in Python?

I recently started to use Python and I can’t understand how to plot a confidence interval for a given datum (or set of data). I already have a function that computes, given a set of measurements, a higher and lower bound depending on the confidence level that I pass to it, but I don’t know how to use those two values to plot a confidence interval. I know that this question have been already asked here but I did not find the answers useful.

4 Answers 4

There are several ways to accomplish what you asking for:

Using only matplotlib

fill_between does what you are looking for. For more information on how to use this function, see: https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.fill_between.html

Output

enter image description here

Alternatively, go for seaborn , which supports this using lineplot or regplot , see: https://seaborn.pydata.org/generated/seaborn.lineplot.html

Let’s assume that we have three categories and lower and upper bounds of confidence intervals of a certain estimator across these three categories:

You can plot the confidence interval for each of these categories using the following code:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *