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


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

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

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

куда:

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

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

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

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

В следующем примере показано, как рассчитать доверительный интервал для истинной средней высоты популяции (в дюймах) определенного вида растений, используя выборку из 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 дюйма.