Доверительный интервал среднего значения - реализация scipy не соответствует математической формуле - PullRequest
0 голосов
/ 19 июня 2019

Доверительный интервал среднего значения имеет следующее аналитическое решение:

enter image description here

Предполагая, что мой набор данных нормально распределен, и я не знаю стандартного отклонения популяции, я могу использовать t-показатель для вычисления КИ среднего. Итак, я сделал:

from scipy import stats
import numpy as np

arr = np.array([4, 4, 1, 6, 6, 8, 1, 2, 3, 2, 2, 3, 4, 7, 6, 8, 0, 2, 8, 6, 5])

alpha = 0.05                       # significance level = 5%
df = len(arr) - 1                  # degress of freedom = 20
t = stats.t.ppf(1 - alpha/2, df)   # 95% confidence t-score = 2.086
s = np.std(arr, ddof=1)            # sample standard deviation = 2.502
n = len(arr)

lower = np.mean(arr) - (t * s / np.sqrt(n))
upper = np.mean(arr) + (t * s / np.sqrt(n))

print((lower, upper))
>>> (3.0514065531195387, 5.329545827832843)

print(stats.t.interval(1 - alpha/2, df, loc=np.mean(arr), scale=s / np.sqrt(n)))
>>> (2.8672993716475763, 5.513653009304806)

И интервал, который я вычислял вручную с использованием уравнения, не согласуется со скупой реализацией КИ. Откуда эта ошибка?

1 Ответ

1 голос
/ 19 июня 2019

Ваш уровень значимости равен 0,05, поэтому уровень достоверности равен 0,95.Передайте это значение stats.t.interval.Не делите на 2;функция сделает это за вас:

In [62]: print(stats.t.interval(1 - alpha, df, loc=np.mean(arr), scale=s / np.sqrt(n)))              
(3.0514065531195387, 5.329545827832843)
...