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

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

  • автор:

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

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

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

В этом руководстве объясняется, как построить доверительный интервал для набора данных в Python с помощью библиотеки визуализации Seaborn .

Построение доверительных интервалов с использованием lineplot()

Первый способ построить доверительный интервал — использоватьфункцию lineplot() , которая соединяет все точки данных в наборе данных линией и отображает доверительный интервал вокруг каждой точки:

import numpy as np import seaborn as sns import matplotlib.pyplot as plt #create some random data np.random.seed(0) x = np.random.randint(1, 10, 30) y = x+np.random.normal(0, 1, 30) #create lineplot ax = sns.lineplot(x, y) 

График доверительного интервала в Python

По умолчанию функция lineplot() использует доверительный интервал 95%, но может указать уровень достоверности для использования с командой ci .

Чем меньше уровень достоверности, тем более узким будет доверительный интервал вокруг линии. Например, вот как выглядит доверительный интервал 80% для точно такого же набора данных:

#create lineplot ax = sns.lineplot(x, y, ci= 80 ) 

Доверительный интервал в Python с использованием Seaborn

Построение доверительных интервалов с использованием regplot()

Вы также можете построить доверительные интервалы с помощью функции regplot() , которая отображает диаграмму рассеяния набора данных с доверительными диапазонами вокруг оценочной линии регрессии:

import numpy as np import seaborn as sns import matplotlib.pyplot as plt #create some random data np.random.seed(0) x = np.random.randint(1, 10, 30) y = x+np.random.normal(0, 1, 30) #create regplot ax = sns.regplot(x, y) 

Диаграмма рассеяния с доверительным интервалом в Python

Подобно функции lineplot(), функция regplot() по умолчанию использует доверительный интервал 95%, но может указать уровень достоверности для использования с командой ci .

Опять же, чем меньше уровень достоверности, тем более узким будет доверительный интервал вокруг линии регрессии. Например, вот как выглядит доверительный интервал 80% для точно такого же набора данных:

#create regplot ax = sns.regplot(x, y, ci= 80 ) 

Как рассчитать доверительный интервал как в R, так и в Python

В статистике частот доверительный интервал (CI) — это диапазон оценок для неизвестного параметра. CI вычисляется как заданный уровень достоверности, при чем наиболее распространенным является уровень достоверности 95%. Факторы, влияющие на ширину CI, включают уровень достоверности, размер выборки и вариабельность выборки. При неизменности всех остальных факторов большая выборка привела бы к более узкому CI, большая вариабельность в выборке приводит к более широкому CI, а более высокий уровень достоверности потребовал бы более широкого CI.

Ниже приведем формулу доверительного интервала:

где, CI — доверительный интервал,

x — выборочное среднее значение,

z — значение уровня достоверности,

s — стандартное отклонение выборки,

n — размер выборки.

Намерения данного поста рассчитать доверительный интервал как в R, так и в Python. Был написан код R в Replit, бесплатном онлайн-интерпретаторе/компиляторе. Код Python был переведен с помощью Google Colab, который представляет собой бесплатный онлайн-блокнот Jupyter, размещенный Google.

Постановка задачи для этого вопроса такова:

Уровень насильственных преступлений за 2000 год по 50 штатам США (+округ Колумбия) приведен в файле данных по преступлениям.

Каков 95%-ный центральный доверительный интервал для среднего уровня насильственных преступлений?

На этот вопрос был дан ответ с использованием функции qnorm от R, где указаны верхний и нижний диапазоны доверительного интервала. Это приводит к нижнему и верхнему диапазонам CI, составляющим 375,2841 и 507,8159 соответственно:

Библиотека scipy.stats на самом деле имеет функцию для вычисления доверительного интервала, который можно увидеть ниже:-

Подводя итог, поскольку в библиотеке scipy в Python есть функция, которая конкретно работает с доверительными интервалами, я чувствую, что в данном случае с языком легче работать.

Сильно удивляет, что R не создал такую ​​функцию в своем языке программирования.

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

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

Он рассчитывается как:

Доверительный интервал = x +/- t*(s/√n)

  • x : выборочное среднее
  • t: t-значение, соответствующее доверительному уровню
  • s: стандартное отклонение выборки
  • n: размер выборки

В этом руководстве объясняется, как рассчитать доверительные интервалы в Python.

Доверительные интервалы с использованием t-распределения

В следующем примере показано, как рассчитать доверительный интервал для истинной средней высоты популяции (в дюймах) определенного вида растений, используя выборку из 15 растений:

import numpy as np import scipy.stats as st #define sample data data = [12, 12, 13, 13, 15, 16, 17, 22, 23, 25, 26, 27, 28, 28, 29] #create 95% confidence interval for population mean weight st.t.interval(alpha=0.95, df=len(data)-1, loc=np.mean(data), scale=st.sem(data)) (16.758, 24.042) 

95% доверительный интервал для истинного среднего роста населения составляет (16,758, 24,042) .

Вы заметите, что чем выше уровень достоверности, тем шире доверительный интервал. Например, вот как рассчитать 99% ДИ для тех же самых данных:

#create 99% confidence interval for same sample st.t.interval(alpha= 0.99 , df=len(data)-1, loc=np.mean(data), scale=st.sem(data)) (15.348, 25.455) 

99% доверительный интервал для истинного среднего роста населения составляет (15,348, 25,455).Обратите внимание, что этот интервал шире, чем предыдущий 95% доверительный интервал.

Доверительные интервалы с использованием нормального распределения

Если мы работаем с большими выборками (n≥30), мы можем предположить, что выборочное распределение выборочного среднего нормально распределено (благодаря центральной предельной теореме ), и вместо этого можем использовать функцию norm.interval() из scipy библиотека .stats.

В следующем примере показано, как рассчитать доверительный интервал для истинной средней высоты популяции (в дюймах) определенного вида растений, используя выборку из 50 растений:

import numpy as np import scipy.stats as st #define sample data np.random.seed(0) data = np.random.randint(10, 30, 50) #create 95% confidence interval for population mean weight st.norm.interval(alpha=0.95, loc=np.mean(data), scale=st.sem(data)) (17.40, 21.08) 

95% доверительный интервал для истинного среднего роста населения составляет (17,40, 21,08) .

Как и в случае с t-распределением, более высокие уровни достоверности приводят к более широким доверительным интервалам. Например, вот как рассчитать 99% ДИ для тех же самых данных:

#create 99% confidence interval for same sample st.norm.interval(alpha= 0.99 , loc=np.mean(data), scale=st.sem(data)) (16.82, 21.66) 

95% доверительный интервал для истинного среднего роста населения составляет (17,82, 21,66) .

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

Предположим, что наш 95-процентный доверительный интервал для истинной средней высоты популяции вида растения составляет:

95% доверительный интервал = (16,758, 24,042)

Способ интерпретации этого доверительного интервала следующий:

Существует вероятность 95%, что доверительный интервал [16,758, 24,042] содержит истинную среднюю высоту растений.

Другой способ сказать то же самое состоит в том, что существует только 5%-ная вероятность того, что истинное среднее значение генеральной совокупности лежит за пределами 95%-го доверительного интервала. То есть существует только 5% вероятность того, что истинная средняя высота растений в популяции меньше 16,758 дюйма или больше 24,042 дюйма.

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

Скачай курс
в приложении

Перейти в приложение
Открыть мобильную версию сайта

© 2013 — 2023. Stepik

Наши условия использования и конфиденциальности

Get it on Google Play

Public user contributions licensed under cc-wiki license with attribution required

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

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