"Существуют три вида лжи:
ложь;
наглая ложь;
пропагандастатистика;-
источник цитаты в интернете".
Марк Твен(ну или не он).
В данной статье мы рассмотрим, как можно быстро доказать следующие утверждения, смотря на один и тот же источник данных:
Лошади бегают по часовой стрелке быстрее чем против.
Лошади бегают против часовой стрелки быстрее чем по часовой.
Лошади бегают на более дальние дистанции быстрее (с большей скоростью), чем на короткие.
Лошади бегают на более дальние дистанции медленнее (с меньшей скоростью), чем на короткие.
Данные
Будем рассматривать датасет по скáчкам в Белмонте. В нём содержится информация о имени лошади, году, скорости, дистанции, времени и направлении забега. Анализировать будем с помощью python и библиотек pandas и seaborn.
Для начала прочитаем данные:
import pandas as pd
import seaborn as sns
data = pd.read_csv("path", sep="\t")
df = data[["Length", "Seconds", "Speed"]]
Постараемся узнать, в какую сторону лошади бегают быстрее (по часовой или против часовой стрелки). Очень быстрый и простой способ сравнить два распределения - построить "ящики с усами" или box plot
На данной картинке можно рассмотреть box plot для нормального распределения:
жирная черта в центре - медиана;
"коробка" включает в себя 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))
Length |
Seconds |
Speed |
|
---|---|---|---|
Length |
1.000000 |
0.832878 |
-0.055649 |
Seconds |
0.832878 |
1.000000 |
-0.597803 |
Speed |
-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])
Синий - по часовой.
Оранжевый - против.
Существует значимая разница, лошади бегают по часовой быстрее.
Выводы
В данном примере я пытался показать, что, когда вам кто-то представляет статистические данные и предлагает какие-то выводы на их основе, не спешите соглашаться, спросите:
Как эти данные получены.
Нет ли другого объяснения видимым закономерностям.
Сохраняется ли закономерность, если изменить период наблюдения/страну.
Однородны ли данные и не осуществлён ли cherry-pick при выборе данных или посчитанных на их основании статистик.
Если же вы сами берётесь за анализ данных внимательно проверяйте свои гипотезы и не спешите с выводами:
посмотрите на других данных, сохраняется ли найденные вами закономерности;
нет ли другого объяснения найденным особенностям.
Комментарии (23)
iingvaar
12.04.2022 12:11+10Ничего не понял, больше, меньше, по часовой, опять по часовой. Вычитайте, пожалуйста и поправьте формулировки, это невозможно читать. А вообще идея довольно тривиальна - измеряя параметр желательно исключить влияние всех остальных параметров. Если вы хотите действительных чудес, обратитесь к медицинской статистике.
maxkomp
12.04.2022 13:03+12Таких примеров очень много. Когда берутся исходные данные из объективной реальности, обрабатываются в полном соответствии с законами математической статистики, и на этом основании делается в корне неверный вывод.
Иногда такое происходит просто по глупости, (типа, в рамках защиты диссертации), а иногда и с умыслом. Например, чтобы подвести "теоретическую базу" под непопулярное решение.
В конце 80х мне дали поглядеть "научный труд" одного должностного лица из МВД. Там на полном серьезе исследовалась корреляция между количеством тяжких преступлений против личности (типа всяких убийств-грабежей и т.п.), совершенных в населенном пункте, с наличием уличного освещения в этом населенном пункте. Брались реальные данные по разным городам Советского Союза, приводились математические формулы, таблицы, графики. (Без обработки на компьютере тоже, конечно, не обошлось. Программа на фортране для ЕС-ки прилагалась). И делался ошеломляющий вывод: в населенных пунктах без уличного освещения преступность оказывается меньше! То есть автор реально вносил предложение уменьшить количество освещенных улиц, с целью не только экономии электроэнергии и улучшения криминогенной обстановки. (И это не первоапрельская шутка была, а попытка защитить диссертацию). Вроде как неудачная, и то хорошо.
Собственно, мне эту работу и дали почитать со словами "ты типа математик, ошибку найдешь?". Причем я был молодой, глупый, и ошибок в обработке данных с ходу не нашел. Все вроде правильно, не подкопаешься.
Я тогда промямлил что-то на тему того, что "населенные пункты с уличным освещением- они разные бывают. Одно дело наукоград, и совсем другое - городок рядом с исправительной колонией. А вот как раз по этому признаку в работе никаких данных нет и сравнений не проводится, что не совсем правильно."
А потом мы попросили прокомментировать сей "научный труд" пенсионера, бывшего участкового милиционера, который проработал в МВД на разных должностях больше 40 лет в разных регионах нашей страны. Он долго смеялся, а потом разгромил всю эту наукообразную ахинею одним ударом. Его аргумент был простой: населенные пункты без уличного освещения - это на самом деле, небольшие деревни где-то на отшибе цивилизации, куда фиг доберешься после дождей или снегопадов. Людей там мало, все работают вместе и очень хорошо друг друга знают. И самое главное - все живут примерно в одних и тех же условиях, им делить нечего. Потому и тяжких преступлений совершается очень мало. Украсть курицу - это там могут. А самое страшное правонарушение против личности - когда мужики с получки напьются, матом друг друга начнут крыть и за грудки хватать. В самом худшем случае, на мелкое хулиганство потянет, но не более того).
А в крупных городах (с уличным освещением) ситуация другая. Когда множество приезжих случайных людей, а жители многоэтажки не знают в лицо соседей по подъезду, там с криминогенной обстановкой все гораздо хуже получается.LinearLeopard Автор
12.04.2022 13:22Таких примеров очень много. Когда берутся исходные данные из объективной реальности, обрабатываются в полном соответствии с законами математической статистики, и на этом основании делается в корне неверный вывод.
Спасибо, да, примерно это я и имел ввиду)
SuAlUr
12.04.2022 17:16+2Основной пример - если просто с улицы набрать людей (выборка будет полностью репрезентативной), измерить длину стопы, то выяснится, что есть прямая корреляция между длиной стопы и величиной IQ.
ОТВЕТ: длина стопы коррелирует также с возрастом, чем меньше возраст, тем меньше IQ.
z3apa3a
12.04.2022 19:11+4Все обоснованные тесты IQ обязательно нормируются по возрасту, поэтому возраст не может влиять на величину IQ.
Hlad
13.04.2022 08:09+6Гораздо проще пример: если выйти часов в 11 утра, и начать спрашивать у людей 30-50 лет, как у них с работой, то выяснится, что безработных в стране процентов 30, не меньше. Потому что те, у кого есть нормальная работа, в 11 часов утра как раз на ней.
goldrobot
12.04.2022 22:50+2Либо все еще проще.
Люди меньше шароходятся в кромешной темноте, зато с удовольствием пьют пивасик и конфликтуют на лавочке освещенной
Butterfly_M
12.04.2022 14:10это просто примеры неверного применения статистики- технология придания наукообразности некорректным выводам. А перлы о крокодиле к статистике не имеют отношения вообще. Вот прекрасный пример мухляжа со статистикой, который был, есть и будет. "на завтра вероятность дождя 50%". Что тут, собственно, предсказано? Где критерий проверки такого прогноза? И чем это отличатется от "дождь то ли будет то ли нет"?
PanDubls
12.04.2022 15:00+2Ну вообще критерий проверки такого прогноза - собираем все разы, когда предсказывалась такая вероятность дождя, потом смотрим для каждого из них, пошел дождь или нет. Доля дождливых дней должна стремиться к 50% при увеличении количества наблюдений. Нет?
А на одном наблюдении статистическую гипотезу (вероятность дождя равна 50%) и правда не проверить
dzhiharev
12.04.2022 20:19ровно так же как и не проверишь гипотезу о 99% вероятности дождя. На одном наблюдении вообще не проверишь ни одну гипотезу :)
OlegIva
12.04.2022 22:48На одном наблюдении вообще не проверишь ни одну гипотезу :)
Постойте, а как же доказательство от противного? Даже одно наблюдение в грамотно построенном опыте может опровергнуть гипотезу (и по идее именно такие наблюдения и стоит проводить). Впрочем, это опять приводит нас к началу: а что же мы собственно проверяем-то? ;-)
dzhiharev
12.04.2022 22:52Это же не чистые математические выкладки. В наблюдениях необходимо делать какие-то замеры, там будет погрешность. Для того, чтобы повысить достоверность эксперимента его следует повторить какое-то количество раз, чтобы убедиться что результат устойчивый.
Gutt
13.04.2022 13:05Вот прекрасный пример мухляжа со статистикой, который был, есть и будет. "на завтра вероятность дождя 50%". Что тут, собственно, предсказано?
Насколько я понимаю, это означает, что с 00:00 до 24:00 завтрашнего дня матожидание величины "доля общей площади территории, для которой указан прогноз, на которой выпало указанное количество осадков в виде дождя" будет равно 50 % от общей площади указанной территории. Обратите внимание, прогноз даётся для определённого участка и с указанием объёма осадков. Дисперсию, правда, не указывают, как и вид распределения, но для природного явления разумно предположить нормальное. А дисперсия может быть любая, терпите :-)
Yuriks111
12.04.2022 20:46+2InternetStalker
13.04.2022 10:03Вообще, по мнению некоторых аналитиков, маргарин, похоже, влияет на всё на свете.
Ivan22
14.04.2022 13:08корреляция - не означает причинно-следственную связь.
Вообще я примерно для подтасовки статистики вижу такой самый распространенный способ: Так как на любой исследуемый параметр потенциально влияют десятки, сотни или даже тысячи других параметров - то в 99% случаев всегда можно подобрать такое подмножество подходящих параметров которое подтвердит любой заране поставленный вывод
squaremirrow
15.04.2022 01:23Да, в социальных (и не только) науках манипулировать статистикой очень просто. Поэтому в серьезных эмпирических статьях по экономике, добрая половина работы может быть посвящена доказательству отсутствия эндогенности в используемых регрессиях, попыткам опровергнуть свои собственные выводы.
Очень просто ошибиться в выводе причинно-следственной связи из данных, даже если тщательно пытаешься этого избежать.
tetelevm
Вспомнилась вот эта картинка: