Биномиальный тест для данных с 3 переменными

Вопрос или проблема

Я собрал данные, которые выглядят так:

                Компания А           Компания Б           Компания В
Отдел           Женщины Мужчины     Женщины Мужчины    Женщины Мужчины
Искусство       98       2           95       5          80       20
Инженерия       2        98          30       70         10       90
Уборка         100      0           90       10         70       30

Теперь мой учитель попросил провести биномиальный тест (за которым последует тест хи-квадрат), чтобы определить, отличается ли соотношение полов от 1:1 на статистически значимом уровне. Как я могу сделать это на Python? Я прочитал о концепции здесь:

https://www.ncl.ac.uk/webtemplate/ask-assets/external/maths-resources/statistics/hypothesis-testing/hypothesis-testing-with-the-binomial-distribution.html

но я не уверен, как именно это реализовать и какие поля/параметры использовать. Поскольку у меня есть 3 разные переменные: пол, название компании и отдел. Или мне следует пропустить отделы и провести общее сравнение соотношений между разными компаниями?

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

Ответ или решение

Для анализа данных, которые вы предоставили, можно использовать биномиальный тест, чтобы проверить, отличается ли соотношение полов в каждой компании от равного соотношения 1:1. Данные включают три переменные: компания, пол и отдел. Прежде чем погрузиться в код, давайте рассмотрим, как подойти к этой задаче.

Шаг 1: Упрощение задачи

Можно провести биномиальный тест как для каждой компании по отдельности, так и объединить данные по отделам для каждой компании. Если вас интересует анализ по компаниям, то следует сосредоточиться на соотношении полов внутри каждой из них. Это даст вам более четкое представление об определенных различиях.

Шаг 2: Подготовка данных

Поскольку ваш набор данных организован в виде таблицы, периодически стоит его преобразовать в формат, пригодный для анализа. Вы можете использовать библиотеку pandas для обработки этих данных.

import pandas as pd

# Создание DataFrame из ваших данных
data = {
    ('Arts', 'Female'): 98,
    ('Arts', 'Male'): 2,
    ('Engineering', 'Female'): 2,
    ('Engineering', 'Male'): 98,
    ('Housekeeping', 'Female'): 100,
    ('Housekeeping', 'Male'): 0,
    ('Arts', 'Female Company A'): 98,
    ('Arts', 'Male Company A'): 2,
    ('Engineering', 'Female Company A'): 2,
    ('Engineering', 'Male Company A'): 98,
    ('Housekeeping', 'Female Company A'): 100,
    ('Housekeeping', 'Male Company A'): 0,
    ('Arts', 'Female Company B'): 95,
    ('Arts', 'Male Company B'): 5,
    ('Engineering', 'Female Company B'): 30,
    ('Engineering', 'Male Company B'): 70,
    ('Housekeeping', 'Female Company B'): 90,
    ('Housekeeping', 'Male Company B'): 10,
    ('Arts', 'Female Company C'): 80,
    ('Arts', 'Male Company C'): 20,
    ('Engineering', 'Female Company C'): 10,
    ('Engineering', 'Male Company C'): 90,
    ('Housekeeping', 'Female Company C'): 70,
    ('Housekeeping', 'Male Company C'): 30,
}

# Преобразуем в DataFrame
df = pd.DataFrame(data).T
df.columns = ['Company A', 'Company B', 'Company C']
df

Шаг 3: Выполнение биномиального теста

Теперь используем библиотеку scipy для выполнения биномиального теста. Например, для компании A мы увидим, сколько всего женщин и мужчин, и проведем тест.

from scipy.stats import binom_test

# Функция для выполнения биномиального теста
def perform_binomial_test(females, males):
    total = females + males
    p_value = binom_test(females, total, p=0.5, alternative='two-sided')
    return p_value

# Проведем тест для каждой компании
results = {}
for company in df.columns:
    females = df[company]['Female']
    males = df[company]['Male']
    p_value = perform_binomial_test(females, males)
    results[company] = p_value

results

Шаг 4: Электронная таблица

После выполнения теста вам следует записать результаты тестового анализа. Помимо биномиального теста, рекомендуется провести хи-квадрат тест на независимость для более глубокого анализа.

from scipy.stats import chi2_contingency

# Создание матрицы для хи-квадрат теста
contingency_table = df.values.T  # Транспонируем, чтобы первая строка была полами, а вторая — компаниями
chi2, p_chi2, dof, expected = chi2_contingency(contingency_table)

# Запись результатов
chi_square_result = {'chi2': chi2, 'p_value': p_chi2, 'dof': dof, 'expected': expected}
chi_square_result

Заключение

С помощью вышеописанных шагов вы можете провести статистический анализ ваших данных. Биномиальный тест поможет вам определить, отличается ли соотношение полов в каждой компании от 1:1, а хи-квадрат тест позволит вам оценить, существуют ли статистически значимые различия в распределении полов между компаниями. Убедитесь, что вы обрабатываете результаты тестов общеизвестным образом, например, интерпретируя значения p-уровня и их выводы.

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

Капча загружается...