Как протестировать гипотезу правдоподобия на наборе данных?

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

Как проверить следующую гипотезу?
Чем больше плата, тем вероятнее, что клиент путешествует один.

Используя данные ниже, как можно протестировать гипотезу?

import seaborn as sns

# набор данных
df= sns.load_dataset('titanic')
df[['fare','alone']].head()

    fare    alone
0   7.2500  False
1   71.2833 False
2   7.9250  True
3   53.1000 False
4   8.0500  True


ОБНОВЛЕНИЕ

# подмножество для alone = True
alone = df['fare'].loc[df['alone'] == True]

#import Wilcoxon test
from scipy.stats import wilcoxon  

# выполнить тест Уилкоксона
wilcoxon(alone, not_alone)

> WilcoxonResult(statistic=10173.0, pvalue=2.8669052202786427e-28)

Ответ на этот вопрос, оставленный в комментарии, предлагает попробовать логистическую регрессию “один/много” по плате. Это может быть хорошей первой мыслью, но она имеет несколько проблем.

  1. Если вы не будете осторожны (даже более осторожны, чем многие могли бы быть), вы позволите вашему анализу проверить противоположное соотношение: что большие тарифы связаны с меньшей вероятностью того, что путешественник будет один.

  2. Он тестирует строго линейное (в логарифмических шансах) соотношение.

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

(Я мог бы утверждать, что стоит исследовать, существует ли область, где увеличение платы приводит к снижению вероятности путешествовать в одиночку, но это не ваш вопрос.)

Я бы предложил провести односторонний тест Уилкоксона, чтобы увидеть, склонны ли люди, путешествующие одни, иметь более высокие тарифы, что логически эквивалентно вашему вопросу.

Тест Уилкоксона устраняет проблемы, связанные со строго линейным отношением (просто линейный сдвиг), и односторонний тест легко выполнить. Если бы вы использовали корреляцию Спирмена, чтобы изучить аналогичный вопрос, но с непрерывной или порядковой переменной вместо вашей переменной один/много, то Уилкоксона был бы идеальным вариантом, так как и тест Уилкоксона, и корреляция Спирмена являются частными случаями модели пропорциональных шансов порядковой логистической регрессии.

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

Чтобы протестировать гипотезу о том, что "чем больше цена билета, тем более вероятно, что пассажир путешествует один", мы можем использовать статистические методы, которые позволяют выявить связь между количеством проведенных отдельно и ценами на билеты. В данном случае будем опираться на выбор между регрессионным анализом и непараметрическими тестами, и я кратко объясню оба подхода.

1. Исходные данные

Вы используете набор данных о Титанике, доступный через библиотеку Seaborn. Данные содержат информацию о ценах на билеты ("fare") и о том, путешеует ли пассажир один ("alone").

import seaborn as sns

# загрузка набора данных
df = sns.load_dataset('titanic')
df[['fare', 'alone']].head()

2. Подходы к тестированию

a. Логистическая регрессия

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

  • Проверка противоречивой гипотезы: При использовании логистической регрессии будет важно тщательно построить модель, чтобы не позволить анализу проверить противоположную гипотезу.
  • Линейность в логит-оддсах: Логистическая регрессия предполагает линейную взаимосвязь между независимой переменной (ценой) и логитом зависимой переменной (был ли пассажир один).
  • Неприятие нелинейности: Стандартные методы могут не выявить нелинейные зависимости, если они существуют.

b. Непараметрический тест Вилкоксона

Другим подходом является использование одностороннего теста Вилкоксона, который позволяет нам проверить, склонен ли один набор данных (цены на билеты для одиночек) быть больше другого (цены на билеты для тех, кто путешествует с другими). Это позволяет избежать некоторых ограничений логистической регрессии:

  • Отсутствие предположений о распределении: Тест не требует того, чтобы данные соответствовали нормальному распределению, что делает его более универсальным.
  • Мониторинг роста или снижения: Позволяет исследовать, увеличивается ли вероятность того, что пассажир будет один, с увеличением цены на билет.
Пример выполнения теста Вилкоксона

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

# Подсчет цен на билеты для пассажиров, путешествующих в одиночку
alone = df['fare'].loc[df['alone'] == True]

# Подсчет цен на билеты для пассажиров, путешествующих с кем-то
not_alone = df['fare'].loc[df['alone'] == False]

# Импорт теста Вилкоксона
from scipy.stats import wilcoxon

# Выполнение теста
wilcoxon_result = wilcoxon(alone, not_alone)
print(wilcoxon_result)

3. Интерпретация результатов

Результат теста Вилкоксона даст вам статистику и p-значение. Низкое p-значение (например, p < 0.05) указывает на то, что существует статистически значимая разница между двумя группами, что позволяет сделать вывод о том, что пассажиры, путешествующие одни, склонны платить больше за свои билеты.

Заключение

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

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

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