Как Лгать, Используя Статистику

«Есть три типа лжи:

  • ложь;
  • наглая ложь;
  • пропагандистская статистика;
  • источник цитаты в Интернете».

    Марк Твен (или нет) Он ).

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

  • Лошади бегут против часовой стрелки быстрее, чем по часовой стрелке.

  • Лошади бегут на длинные дистанции быстрее (с более высокой скоростью), чем на короткие.

  • Лошади бегут на длинные дистанции медленнее (с меньшей скоростью), чем на короткие.



Данные

Мы рассмотрим набор данных на скачках в Бельмонте.

Он содержит информацию об имени лошади, году, скорости, дистанции, времени и направлении скачек.

Мы будем анализировать, используя Python, библиотеки pandas и seaborn. Сначала прочитаем данные:

  
  
  
  
  
  
  
  
   

import pandas as pd import seaborn as sns data = pd.read_csv("path", sep="\t") df = data[["Length", "Seconds", "Speed"]]

Попробуем выяснить, в каком направлении лошади бегут быстрее (по часовой стрелке или против часовой стрелки).

Очень быстрый и простой способ сравнить два распределения — построить «ящики с усами» или коробчатый сюжет

Как лгать, используя статистику

Результат 3.7 «Характеристика сетей низкого напряжения» — научный деятель на ResearchGate. Доступна с: https://www.researchgate.net/figure/Box-plot-vs-normal-PDF-By-examining-the-box-plots-key-differences-and-equivalencies_fig5_283569547 [по состоянию на 11 апреля 2022 г.

] На этом рисунке вы можете увидеть коробчатую диаграмму нормального распределения:

  • жирная линия в центре — медиана;
  • «ящик» включает 50% результатов, слева от него находится 25% результатов с наименьшим значением, справа — 25% с самым большим;
  • «усы» иногда покрывают все распределение, иногда не включают выбросы, каждый из которых рисуется отдельно.



Сравнение скорости бега лошади по часовой стрелке и против часовой стрелки.

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

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



sns.boxplot(x="Speed", y="Direction", data=data)



Как лгать, используя статистику

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



Доказательства того, что лошади бегут медленнее на длинные дистанции

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



df = (df - df.mean()) / df.abs().

max() corr = df.corr() sns.heatmap(corr, cmap=sns.color_palette("coolwarm", 19))

Длина Секунды Скорость
Длина 1.000000 0.832878 -0.055649
Секунды 0.832878 1.000000 -0.597803
Скорость -0.055649 -0.597803 1.000000


Как лгать, используя статистику

Как мы видим, скорость отрицательно коррелирует с длиной маршрута.

Удивительное открытие №1: время, необходимое для прохождения курса, сильно коррелирует с его продолжительностью.



Доказательства того, что лошади бегут быстрее на длинные дистанции

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

sns.lmplot(data=data, y="Speed", x="Length", hue="Direction")



Как лгать, используя статистику

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

Удивительное открытие №2: лошади бегут быстрее на длинные дистанции, но только если они бегут против часовой стрелки.



Доказательство того, что лошади бегут быстрее по часовой стрелке

Давайте подробнее посмотрим на данные:

data["clock"] = (data["Direction"] == "Clockwise").

astype(int) data["counter"] = (data["Direction"] == "counter-clockwise").

astype(int) data.plot(x="Year", y=["clock", "counter"])



Как лгать, используя статистику

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



sns.lmplot(data=data, y="Speed", x="Year", hue="Direction")



Как лгать, используя статистику

Пока лошади бежали по часовой стрелке, их скорость возрастала гораздо сильнее: с 1860-х по 1920-е годы она увеличивалась на 4 мили в час (~6,5 км/ч), то есть прирост на 1 км/ч каждые десять лет, и, если бы не заговор часовщиков против часовой стрелки, за последнее столетие они бы разогнались аж на 10 км/ч, вместо того жалкого топтания времени, которое мы видим в правой части графика.

Если вас не убедил этот аргумент и вы считаете, что медленный рост можно объяснить тем, что возможности лошадей вышли на плато (см.

КДПВ)

sns.regplot(data=data, y="Speed", x="Year", order=3)



Как лгать, используя статистику

Потом подумайте, выгодно ли это лошадям и заплатили ли они за это; давайте сравним данные за несколько лет до и после смены направления.



sns.scatterplot(data=df, x="Year", y="Length", hue="Direction")



Как лгать, используя статистику

Видно, что лошади пробежали одну и ту же дистанцию 5 лет до и после смены направления, поэтому сравнение будет справедливым.

Возьмем 4 года, потому что кажется, что 5 — это слишком много, а 3 — слишком мало.

(Ну не такой красивый результат они дают).



n_years = 4 df = data[(data["Year"] >= 1921 - n_years) & (data["Year"] <= 1920 + n_years)] sns.boxplot(x="Speed", y="Direction", data=df, ax=axs[ax_idx])



Как лгать, используя статистику

Синий – по часовой стрелке.

Оранжевый – против.

Существует значительная разница; лошади бегут по часовой стрелке быстрее.



выводы

На этом примере я попытался показать, что когда кто-то представляет вам статистические данные и предлагает на их основе какие-то выводы, не спешите соглашаться, спросите:
  • Как были получены эти данные.

  • Есть ли другое объяснение видимым закономерностям?
  • Сохранится ли эта закономерность, если вы измените период/страну наблюдения?
  • Являются ли данные однородными и не были ли они реализованы? выбор вишни при выборе данных или статистики, рассчитанной на их основе.

Если вы беретесь за анализ данных самостоятельно, тщательно проверяйте свои гипотезы и не спешите с выводами:
  • просмотрите другие данные, чтобы убедиться, что обнаруженные вами закономерности верны;
  • Есть ли другое объяснение обнаруженным особенностям?
Теги: #python #программирование #визуализация данных #анализ данных #статистика
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.