Голосование за Закон о гражданских правах 1964 года
Закон о гражданских правах 1964 года стал одним из самых значимых законодательных актов в истории США. Не считая голосов «воздержался» и «отсутствовал», 153 демократа и 136 республиканцев в Палате представителей проголосовали «за». При этом 91 демократ и 35 республиканцев проголосовали «против». Повлияла ли партийная принадлежность на исход голосования?
Чтобы ответить на этот вопрос, вы проверите гипотезу о том, что партийная принадлежность члена Палаты представителей никак не влияла на его голос. В качестве тестовой статистики используйте долю демократов, проголосовавших «за», и оцените вероятность наблюдать долю, не превышающую 153/244. (Именно так — не превышающую. В 1964 году именно демократы занимали менее прогрессивную позицию по вопросам гражданских прав.) Для этого переставьте партийные метки членов Палаты в случайном порядке, произвольно разделите их на «демократов» и «республиканцев» и вычислите долю демократов, проголосовавших «за».
Это упражнение является частью курса
Статистическое мышление на Python (часть 2)
Инструкции к упражнению
- Создайте булевы массивы
demsиreps, содержащие голоса соответствующих партий: например,demsдолжен содержать 153 значенияTrueи 91 значениеFalse. - Напишите функцию
frac_yea_dems(dems, reps), которая возвращает долю демократов, проголосовавших «за». Первый аргумент — массив булевых значений. Функция принимает два аргумента, поскольку этого требуетdraw_perm_reps(), однако второй аргумент не используется. - С помощью функции
draw_perm_reps()получите 10 000 перестановочных реплик доли голосов «за» среди демократов. - Вычислите и выведите p-значение.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Construct arrays of data: dems, reps
dems = np.array([True] * 153 + [False] * 91)
reps = ____
def frac_yea_dems(dems, reps):
"""Compute fraction of Democrat yea votes."""
frac = ____ / ____
return frac
# Acquire permutation samples: perm_replicates
perm_replicates = ____(____, ____, frac_yea_dems, ____)
# Compute and print p-value: p
p = np.sum(____ <= 153/244) / len(____)
print('p-value =', p)