Тест пропорции: Z-тест против начальной загрузки / перестановки - разные результаты - PullRequest
0 голосов
/ 01 марта 2019

Я изучаю проверку гипотез и изучаю следующий пример:

Генеральный директор крупного предприятия электроснабжения утверждает, что 80 процентов его 1 000 000 клиентов очень довольныс услугой, которую они получают.Чтобы проверить это утверждение, местная газета опросила 100 клиентов, используя простую случайную выборку.Среди опрошенных клиентов 73 процента говорят, что они очень довольны.Основываясь на этих выводах, можем ли мы отвергнуть гипотезу генерального директора о том, что 80% клиентов очень довольны?Используйте уровень значимости 0,05.

Я получаю разные результаты при вычислении значения p с использованием z-критерия для одной выборки по сравнению с методом начальной загрузки в python.

Метод Z-теста:

σ = sqrt [(0,8 * 0,2) / 100] = sqrt (0,0016) = 0,04 z = (p - P) / σ= (.73 - .80) /0.04 = -1.75

Двусторонний тест, поэтому P (z <-1.75) = 0,04 и P (z> 1,75) = 0,04.

Таким образом, P-значение = 0,04 + 0,04 = 0,08.

Метод начальной загрузки (в Python):

Общий метод состоит в том, чтобы взятьслучайная выборка размером 100 от населения (1 000 000), из которых 80% удовлетворяются

repeat 5000 times:
    take random sample of size 100 from population (1,000,000, 80% of which are satisfied)
    count the number of satisfied customers in sample, and append count to list satisfied_counts
calculate number of times that a value of 73 or more extreme (<73) occurs. Divide this by the number of items in satisfied_counts

Since it's a two-tailed test, double the result to get the p-value.

С помощью этого метода p-значение 0,11.

Здеськод:

population = np.array(['satisfied']*800000+['not satisfied']*200000)     # 80% satisfied (1M population)
num_runs = 5000
sample_size = 100
satisfied_counts = []

for i in range(num_runs):
    sample = np.random.choice(population, size=sample_size, replace = False)
    hist = pd.Series(sample).value_counts()
    satisfied_counts.append(hist['satisfied'])

p_val = sum(i <= 73 for i in satisfied_counts) / len(satisfied_counts) * 2

Почему два результата отличаются?Любая помощь / точка в правильном направлении приветствуется!

1 Ответ

0 голосов
/ 06 марта 2019

Разница представляет собой форму ошибки фехтования / округления.

Нормальное приближение говорит о том, что шансы на получение 0,73 примерно равны шансам соответствующего нормального распределения в диапазоне от 0,725 до 0,735.Поэтому вы должны использовать 0,735 для отсечки.Это сделает два числа намного ближе.

...