Малыш из рода великанов. Защитник «Авто» Андрей Великанов – самый маленький игрок в МХЛ. Когда размер не главное

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

9 – , «Витязь» – 172 см

В конце 2000-х в связи с запретом на безразмерную амуницию из клубов НХЛ стали постепенно исчезать голкиперы-«недоросли» (в прошлом сезоне ниже 180 см был только Крис Осгуд из «Детройта»), но именно тогда в составе «Трактора» появился Данила Алистратов. На сегодняшний день он самый низкорослый вратарь и, пожалуй, самый легкий игрок КХЛ (всего 73 кг). Если Кошечкину и другим гигантам, занимающих собою около 90% всей площади ворот, в большинстве случаев для сэйва хватает грамотно выбранной позиции, то юному челябинцу приходится чаще полагаться на свою реакцию и технику. Пока высокие авансы Алистратов отрабатывать не спешит, но к 20 годам за его плечами уже более 100 матчей на уровне Pro, а вратари, как известно, расцветают позже полевых игроков.

Звание самого низкого игрока «Трактора» после ухода Алистратова перешло к Антону Глинкину – те же 172 сантиметра.

8 – , «Югра» – 174 см

Нападение ханты-мансийского клуба – одно из самых низкорослых во всей лиге. Рост технаря Магогина всего 172 сантиметра, у Ситникова и Бардина – 174, а ведь есть еще невысокие Евгений Федоров, чех Булик, Муратов и Скороходов. Среди прочих не выделяется и Иван Хлынцев, лучший бомбардир югорчан в сезоне-2010/11. Большую часть карьеры 30-летний форвард провел во второй и третьей лигах, поиграв даже в Белоруссии, но, как показал прошлый год и на уровне КХЛ он смотрится очень достойно. «С моим телосложением и ростом я все-таки считаюсь более техничным, поэтому, видимо, и создан отдавать и забивать. А для драк есть парни побольше и пошире», – замечает Хлынцев, набравший солидные для дебютанта 30 (11+19) очков. Если и в систематичной «Югре» и есть незаменимые игроки, то бывший нападающий «Салавата» – один из них.

7 – , «Автомобилист» – 173 см

Самый маленький защитник КХЛ, что не мешает ему вот уже более 15 лет выступать на высшем уровне. Лучшие годы Соколова прошли в «Нефтехимике», где он играл в первой паре и выходил на реализацию большинства, но в его домашней коллекции есть пара серебряных медалей, завоеванных с «Ак Барсом» и «Локомотивом». В атаке от защитника «Автомобилиста» можно ждать чего угодно. Он может мощно приложиться к шайбе от синей линии, но не удивляйтесь, если увидите его проходы за чужими воротами. Если на внутренней арене спрос на миниатюрного игрока находился всегда, то проявить себя в сборной уральцу не удалось.

«Я не раз и не два призы лучшего защитника на чемпионатах получал, но в юношескую сборную даже в качестве кандидата не вызывали… Было обидно. Тренеру виднее – с него спрос за результат. Считал, значит, что с канадцами, например, при таких данных сложно будет справиться», – рассказывал Денис в интервью «Областной газете». Всего в чемпионатах России он провел 870 матчей, в которых набрал 272 (76+196) очков. Орел, Соколов!

6 – , «Нефтехимик» – 168 см

На протяжении долгого времени считался самым грозным «малышом» суперлиги, хотя в юности Симакове многие тренеры ставили крест, приговаривая «ну куда ему с таким ростом». Дверь в высший свет быстроногому нападающему открыл Владимир Крикунов, с которым Алексей работал в Екатеринбурге и Нижнекамске. В 2005-м Симакова пригласили в сборную России, а еще через 3 года он лихо зажигал в тройке с Епанчинцевым и Сапрыкиным, набрав рекордные в карьере 43 очка за ЦСКА. «Рост и вес сейчас ничего не решают. Только ум и владение собственным телом с техникой катания определяют, какую нишу займет спортсмен. Маленький хоккеист, если он юркий, – головная боль для соперника», – объяснял форвард в одном из интервью. Остановить набравшего скорость Симакова без фола действительно очень сложно.

5 – , «Торпедо» – 172 см

С такими данными шансов заиграть в НХЛ у Веске было мало изначально. Примеры Сен-Луи и Флери, конечно, добавляют уверенности в завтрашнем дне невысоким форвардам, мечтающим о лучшей лиге мира, но закрепиться надолго там удается немногим. Но уроки североамериканского хоккея не прошли для нападающего «Торпедо» бесследно. Он без труда нашел работу в Европе, где ему и платят лучше, и дают играть в первом, а не четвертом звене, как это было в «Шаркс». В дебютном сезоне в КХЛ Веске набрал 48 (25+23) очков, быстро став любимцем нижегородских фанатов.

4 – , «Северсталь» – 171 см

По закону природы, если где-то убыло, значит где-то должно прибыть. В случае с лидером «Северстали» Алексеем Цветковым это «что-то» добавилось к его хоккейному интеллекту. В КХЛ найдется в лучшем случае с десяток хоккеистов хитрее его, а в умении сделать тонкий пас или обыграть соперника один в один с ним сравнятся лишь избранные. Раскрыть свой диспетчерский талант полностью Цветкову удалось в ХК МВД, где он провел несколько отличных сезонов, и остается удивляться решению руководства «Динамо», не ставшего цепляться за игрока всеми силами. «Он был лидером нашего звена, и с его уходом что-то пропало из игры. Алексей это хороший центральный нападающий и тот человек, который может повести за собой», – сетовал Денис Угаров, игра которого после ухода напарника в «Северсталь» заметно потускнела.

В каждом из шести последних сезонах техничный Цветков делал не менее 20 голевых передач.

3 – , СКА – 174 см

Российский Тео Флери в хорошем понимании этого слова. Такому мальцу пальчик в рот не клади – откусит вместе с рукой, да еще бросит на борт так, что ребра будут трещать. Боевое крещение воспитанник спартаковской школы прошел в североамериканской ОХЛ, где не только забивал по 30-35 голов, но и дрался. Полученный опыт пригодился Рыбину в России, где его колючих силовых приемов и крепких кулаков побаиваются даже высокорослые хоккеисты. «Максим – игрок небольшого роста, но с огромным сердцем», – отметил как-то Дарюс Каспарайтис (179 см), которому в свое время также пришлось доказывать, что размер в НХЛ не самое главное. На сегодняшний день на счету Рыбина более 500 матчей в чемпионатах России, две сотни очков, почти 600 штрафных минут и несколько запоминающихся драк. В одной из них он легко завалил более рослого канадца Джеффа Улмера.

2 – , «Авангард» – 174 см

Встретив игрока омичей на улице, вы никогда не скажете, что перед вами профессиональный хоккеист, да еще и защитник, которым по роду профессии приходится много толкаться и отнимать шайбу. На фоне коллег из «Ак Барса» образца 2008/09 человеку несведущему Первышин мог показаться инородным звеном, ведь оборонцев ниже 183-185 сантиметров в команде Билялетдинова, кроме Андрея и не было. Впрочем, все это касается жизни вне площадки. На льду сравниться с Первышиным могут немногие, а недостаток роста он с лихвой компенсирует грамотным видением игры, классным первым пасом и верблюжьей выносливостью. Если кто-то и мог решить исходы двух затяжных овертаймов в серии «Авангарда» с «Магниткой», то это был Первышин, которому скромные габариты не помешали 4 раза стать чемпионом России. Правда, в сборную России его, как и Соколова, пока не вызывали.

Интересно, что одним из любимых защитников Первышина в юности был богатырь Карел Рахунек, который почти на 15 сантиметров выше его.

1 – , «Салават Юлаев» – 174 см

Вполне возможно, что путь к национальной команде для Первышина был бы короче, если бы в детстве он не сменил амплуа и остался нападающим. Результативным малышам в российском хоккее живется неплохо, а самым настойчивым и пробивным даже очень сладко. Один из первых тренеров Сушинского едва не забраковал субтильного пацана из-за его телосложения, но после перехода в группу Александра Балаева карьера будущей звезды «Авангарда» и СКА стала налаживаться. «В одной из первых игр шайба попала Максиму в лицо: кровь, зуб выбит... Так он приложил комок снега и уже через десять минут вышел на площадку, да еще и гол забил! Бойцовский характер у него с детства!» – рассказывал воспитавший хоккеиста специалист «Советскому спорту».

Помимо характера, игровой арсенал Сушинского состоит из классного дриблинга, голевого чутья, меткого кистевого, филигранного катания и скорости, которой, несмотря на возраст, на внутренней и европейской арене все еще хватает. Звезда сегодняшнего «Авангарда» Антон Курьянов тоже далеко не дядя Степа. Он выше СУ-33 всего на сантиметр.

    МХЛ уже несколько лет держит пальму первенства в номинации «Самый маленький хоккеист в мире». До нынешнего сезона героем был Илья Баскаков из «Омских ястребов», которому его 162 сантиметра роста не помешали стать двукратным чемпионом МХЛ. Но стоило парню в силу возраста покинуть лигу, как в ней дебютировал 17‑летний защитник «Авто», который всего на сантиметр выше. Да уж, парадоксальнее фамилии, чем у Андрея Великанова, в такой ситуации и не придумаешь…

    ГОРМОНАЛЬНЫЙ СБОЙ

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

    – Не думаю, что имел место прикол, – считает Андрей. – Скорее всего просто где-то в нашем роду случился гормональный сбой. Потому что у меня и дедушки, и бабушки, и мама с папой – все невысокие.

    – И как вы смотритесь на их фоне?

    – Только папу пока не догнал. У него рост 172 сантиметра. Но мне ж только 17 лет, еще есть время вырасти. А папа рассказывал, что вымахал серьезно – сантиметров на десять – уже в 20 лет.

    – Он на перекладину вас случаем не загоняет, чтобы тянулись?

    – Было дело. Я месяц повисел да бросил. Эффекта никакого.

    – Похоже, именно про такую семью, как у вас, в народе гуляет анекдот: «В семью, где рост папы 163 см, а мамы – 161 см, 160‑сантиметровый сын приводит невесту ростом 158 см. На это отец замечает: «Мы так скоро до мышей дорастем…».

    – Смешно, – улыбается Великанов. – Но я невесту, правда, домой еще не приводил. Слишком тяжелый график – учеба, тренировки. Надо сначала добиться хоть какого-то результата. Сдать ЕГЭ в школе и поступить в физкультурный институт, закрепиться в МХЛ. Так что пока не до девушек…

    «СЛЕЖУ ЗА АНИСИНЫМ»

    – Какое у вас прозвище в команде?

    – Великан, конечно! – улыбается Андрей. – Без приколов, естественно, не обходится, но все по-доброму. Поэтому смеюсь вместе с ребятами.

    – В прошлом году в «Авто» играл 201‑сантиметровый защитник Никита Трямкин – самый высокий защитник в МХЛ…

    – Я недавно пересекся с ним. Оказались рядом, стоим, смотрим друг на друга. И тут я замечаю, как партнеры начинают сползать под стол от смеха. Я ж ему как раз чуть выше пояса оказался…

    – Прямо как Давид с Голиафом или Тарапунька со Штепселем?

    – Так нас не называли. Да и какая разница, какого роста человек? Можно же быть невысоким и сильным, как Давид. А у того же Тарапуньки, как я слышал, был очень высокий голос при его огромном росте. А Штепсель при этом, наоборот, басом говорил. Хотя, может, прикалывались так, они же юмористами были…

    – Невысоким и сильным быть, конечно, можно. Но не секрет, что с вашим ростом удобнее играть в атаке.

    – Да мне и в защите рост не мешает. Не вижу никакого преимущества у форвардов, которые выше меня.

    – А если на вас несется 100‑килограммовый «шкаф»?

    – Все равно буду пытаться остановить. Никаких проблем! Хотя в чем-то вы правы, в атаке с невысоким ростом – сподручнее. Тот же Михаил Анисин в КХЛ это доказывает. Слежу за его судьбой. Парень – просто красавчик! Рост совершенно не мешает ему приносить пользу в любой команде. Уверен, он и в «Донбассе» много назабивает.

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

    – Это вы про тот кадр на сайте «Авто», на котором я отошел от синей линии? Все просто – не видел российский флаг

    – Мешали спины высоких партнеров?

    – Нет, всего лишь видеокуб, – смеется Великанов.




    На днях завершился очередной чемпионат мира по хоккею.


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



    И я задался вопросами. Действительно ли хоккеисты выше обычных людей? Как изменяется рост хоккеистов со временем в сравнении с обычными людьми? Есть ли устойчивые межстрановые различия?

    Данные

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


    Я собрал вместе данные всех чемпионатов мира с 2001 по 2016 годы. От года к году формат предоставления данных слегка меняется, что требует некоторых усилий по их очистке. Не представляя, как грамотно автоматизировать процесс, все данные копировал вручную, что заняло чуть больше 3 часов. Объединенный датасет выложил в открытый доступ .


    # load required packages require(dplyr) # data manipulation require(lubridate) # easy manipulations with dates require(ggplot2) # visualization require(ggthemes) # themes for ggplot2 require(cowplot) # nice alignment of the ggplots require(RColorBrewer) # generate color palettes require(texreg) # easy export of regression tables require(xtable) # export a data frame into an html table # download the IIHF data set; if there are some problems, you can download manually # using the stable URL (https://dx.doi.org/10.6084/m9.figshare.3394735.v2) df <- read.csv("https://ndownloader.figshare.com/files/5303173") # color palette brbg11 <- brewer.pal(11,"BrBG")

    Растут ли хоккеисты? Грубое (периодное) сравнение

    Для начала сравним средний рост игроков на всех 16 чемпионатах мира.



    R code. Рисунок 1. Изменение среднего роста хоккеистов на чемпионатах мира, 2001-2016 гг.

    # mean height by championship df_per <- df %>% group_by(year) %>% summarise(height=mean(height)) gg_period_mean <- ggplot(df_per, aes(x=year,y=height))+ geom_point(size=3,color=brbg11)+ stat_smooth(method="lm",size=1,color=brbg11)+ ylab("height, cm")+ xlab("year of competition")+ scale_x_continuous(breaks=seq(2005,2015,5),labels=seq(2005,2015,5))+ theme_few(base_size = 15)+ theme(panel.grid=element_line(colour = "grey75",size=.25)) gg_period_jitter <- ggplot(df, aes(x=year,y=height))+ geom_jitter(size=2,color=brbg11,alpha=.25,width = .75)+ stat_smooth(method="lm",size=1,se=F,color=brbg11)+ ylab("height, cm")+ xlab("year of competition")+ scale_x_continuous(breaks=seq(2005,2015,5),labels=seq(2005,2015,5))+ theme_few(base_size = 15)+ theme(panel.grid=element_line(colour = "grey75",size=.25)) gg_period <- plot_grid(gg_period_mean,gg_period_jitter)


    Положительный тренд очевиден. За полтора десятилетия средний рост хоккеиста на чемпионате мира увеличился почти на 2 сантиметра (левая панель). Как будто бы незначительный прирост на фоне довольно большой вариации (правая панель). Много это или мало? Чтобы ответить на вопрос, надо корректно сравнить с населением (но об этом ближе к концу статьи).

    Когортный анализ

    Более корректный способ изучения изменения в росте подразумевает сравнение по когортам рождения. Тут мы сталкиваемся с любопытным нюансом - некоторые хоккеисты участвовали не в одном чемпионате мира. Вопрос: вычищать ли повторные записи для одних и тех же людей? Если нам интересен средний рост хоккеиста на чемпионате (как на картинке выше), пожалуй, не имеет смысла зачищать. Но если мы хотим проследить изменение роста хоккеистов как таковое, на мой взгляд, было бы неправильно присваивать больший вес тем игрокам, которые регулярнее попадали на чемпионаты мира. Поэтому для дальнейшего анализа я очистил данные от повторных записей одних и тех же игроков.


    R code. Подготовка данных к когортному анализу

    # remove double counts dfu_h <- df %>% select(year,name,country,position,birth,cohort,height) %>% spread(year,height) dfu_h$av.height <- apply(dfu_h[,6:21],1,mean,na.rm=T) dfu_h$times_participated <- apply(!is.na(dfu_h[,6:21]),1,sum) dfu_w <- df %>% select(year,name,country,position,birth,cohort,weight) %>% spread(year,weight) dfu_w$av.weight <- apply(dfu_w[,6:21],1,mean,na.rm=T) dfu <- left_join(dfu_h %>% select(name,country,position,birth,cohort,av.height,times_participated), dfu_w %>% select(name,country,position,birth,cohort,av.weight), by = c("name","country","position","birth","cohort")) %>% mutate(bmi = av.weight/(av.height/100)^2)


    Общее количество наблюдений сократилось с 6292 до 3333. Если хоккеист участвовал более чем в одном чемпионате мира, данные о росте и весе я усреднял, поскольку рост и (в особенности) вес отдельно взятого хоккеиста мог меняться со временем. Сколько же раз хоккеисты удостаиваются чести сыграть за национальные сборные на чемпионатах мира? В среднем чуть менее 2 раз.



    R code. Рисунок 2. Гистограмма распределения хоккеистов по количеству участий в ЧМ

    # frequencies of participation in world championships mean(dfu$times_participated) df_part <- as.data.frame(table(dfu$times_participated)) gg_times_part <- ggplot(df_part,aes(y=Freq,x=Var1))+ geom_bar(stat="identity",fill=brbg11)+ ylab("# of players")+ xlab("times participated (out of 16 possible)")+ theme_few(base_size = 15)


    Но есть и уникумы. Посмотрим, кто из игроков принял участие как минимум в 10 чемпионатах мира. Таких игроков оказалось 14.


    R code. Таблица 1. Лидеры участия в чемпионатах мира

    # the leaders of participation in world championships # save the table to html leaders <- dfu %>% filter(times_participated > 9) View(leaders) print(xtable(leaders), type="html", file="table_leaders.html")


    name country position birth cohort av.height times_participated av.weight bmi
    1 ovechkin alexander RUS F 1985-09-17 1985 188.45 11 98.36 27.70
    2 nielsen daniel DEN D 1980-10-31 1980 182.27 11 79.73 24.00
    3 staal kim DEN F 1978-03-10 1978 182.00 10 87.80 26.51
    4 green morten DEN F 1981-03-19 1981 183.00 12 85.83 25.63
    5 masalskis edgars LAT G 1980-03-31 1980 176.00 12 79.17 25.56
    6 ambuhl andres SUI F 1983-09-14 1983 176.80 10 83.70 26.78
    7 granak dominik SVK D 1983-06-11 1983 182.00 10 79.50 24.00
    8 madsen morten DEN F 1987-01-16 1987 189.82 11 86.00 23.87
    9 redlihs mikelis LAT F 1984-07-01 1984 180.00 10 80.40 24.81
    10 cipulis martins LAT F 1980-11-29 1980 180.70 10 82.10 25.14
    11 holos jonas NOR D 1987-08-27 1987 180.18 11 91.36 28.14
    12 bastiansen anders NOR F 1980-10-31 1980 190.00 11 93.64 25.94
    13 ask morten NOR F 1980-05-14 1980 185.00 10 88.30 25.80
    14 forsberg kristian NOR F 1986-05-05 1986 184.50 10 87.50 25.70

    Александр Овечкин, 11 раз! Но тут надо отметить, что не для всех хоккеистов в принципе возможно было поучаствовать во всех 16 чемпионатах: зависит когорты рождения (насколько игровая карьера пересеклась именно с этим периодом наблюдения), от того, участвовала ли сборная игрока во всех чемпионатах мира (см. рисунок 3) и попадал ли игрок стабильно в сборную; наконец есть еще НХЛ, стабильно отвлекающий лучших из лучших от участия в чемпионатах мира.



    R code. Рисунок 3. Участие сборных в чемпионатах мира по хоккею в 2001-2016 гг.

    # countries times participated df_cnt_part <- df %>% select(year,country,no) %>% mutate(country=factor(paste(country))) %>% group_by(country,year) %>% summarise(value=sum(as.numeric(no))) %>% mutate(value=1) %>% ungroup() %>% mutate(country=factor(country, levels = rev(levels(country))), year=factor(year)) d_cnt_n <- df_cnt_part %>% group_by(country) %>% summarise(n=sum(value)) gg_cnt_part <- ggplot(data = df_cnt_part, aes(x=year,y=country))+ geom_point(color=brbg11,size=7)+ geom_text(data=d_cnt_n,aes(y=country,x=17.5,label=n,color=n),size=7,fontface=2)+ geom_text(data=d_cnt_n,aes(y=country,x=18.5,label=" "),size=7)+ scale_color_gradientn(colours = brbg11)+ xlab(NULL)+ ylab(NULL)+ theme_bw(base_size = 25)+ theme(legend.position="none", axis.text.x = element_text(angle = 90, hjust = 1,vjust=0.5))

    Растут ли хоккеисты? Регрессионный анализ

    Регрессионный анализ позволяет более корректно ответить на вопрос об изменении роста игроков. В данном случаем с помощью мультиноминальной линейной регрессии предсказыватся рост хоккеиста в зависимость от когорты рождения. Включая в спецификацию регресиионной модели различные дополнительные (контрольные) переменные, мы получаем значение наиболее интересующего нас коэффициента "при прочих равных". Например, добавляя к объясняющим переменным помимо когорты рождения позицию игрока на поле, мы получаем взаимосвязь роста и когорты, очищенную от эффекта различий в зависимости от позиции; добавляя в контрольны переменные страны, получаем результат, очищенный от межстрановых различий. Разумеется, если контрольные переменные сами оказываются значимыми, на это тоже стоит обратить внимание.
    Регрессионные модели (особенно линейные регрессии) очень чувствительны к выбросам (см., например, ). Не вдаваясь глубоко в эту обширную тему, я лишь убрал из анализа когорты, для которых мы имеем слишком небольшое количество представителей.


    R code. Убираем маленькие когорты

    # remove small cohorts table(dfu$cohort) dfuc <- dfu %>% filter(cohort<1997,cohort>1963)


    Не желая резать данные сильно, я убрал только когорты 1963, 1997 и 1998 годов рождения, для которых у нас есть менее 10 игроков.


    Итак, результаты рагрессионного анализа. В каждой следующей модели я добавляю одну переменную.
    Зависимая переменная : рост хоккеиста.
    Объясняющие перемеенные : 1) когорта рождения; 2) + позиция на поле (сравнение с защитниками); 3) + страна (сравнение с Россией).


    R code. Таблица 2. Результаты регрессионного анализа

    # relevel counrty variable to compare with Russia dfuc$country <- relevel(dfuc$country,ref = "RUS") # regression models m1 <- lm(data = dfuc,av.height~cohort) m2 <- lm(data = dfuc,av.height~cohort+position) m3 <- lm(data = dfuc,av.height~cohort+position+country) # export the models to html htmlreg(list(m1,m2,m3),file = "models_height.html",single.row = T)


    Statistical models
    Model 1 Model 2 Model 3
    (Intercept) -10.17 (27.67) -18.64 (27.01) 32.59 (27.00)
    cohort 0.10 (0.01) *** 0.10 (0.01) *** 0.08 (0.01) ***
    positionF -2.59 (0.20) *** -2.59 (0.20) ***
    positionG -1.96 (0.31) *** -1.93 (0.30) ***
    countryAUT -0.94 (0.55)
    countryBLR -0.95 (0.53)
    countryCAN 1.13 (0.46) *
    countryCZE 0.56 (0.49)
    countryDEN -0.10 (0.56)
    countryFIN 0.20 (0.50)
    countryFRA -2.19 (0.69) **
    countryGER -0.61 (0.51)
    countryHUN -0.61 (0.86)
    countryITA -3.58 (0.61) ***
    countryJPN -5.24 (0.71) ***
    countryKAZ -1.16 (0.57) *
    countryLAT -1.38 (0.55) *
    countryNOR -1.61 (0.62) **
    countryPOL 0.06 (1.12)
    countrySLO -1.55 (0.58) **
    countrySUI -1.80 (0.53) ***
    countrySVK 1.44 (0.50) **
    countrySWE 1.18 (0.48) *
    countryUKR -1.82 (0.59) **
    countryUSA 0.54 (0.45)
    R 2 0.01 0.06 0.13
    Adj. R 2 0.01 0.06 0.12
    Num. obs. 3319 3319 3319
    RMSE 5.40 5.27 5.10
    *** p < 0.001, ** p < 0.01, * p < 0.05

    Интерпретация моделей

    Модель 1 . Увеличение когорты на один год соответсвует увеличению роста хоккеистов на 0.1 см. Коэффициент статистически значим, но при этом модель объясняет лишь 1% вариации зависимой переменной. В принципе это не проблема, поскольку моделирование носит объясняющий характер, задача предсказания не ставится. Тем не менее, низкий коэффициент детерминации показывает, что должны быть другие переменные, гораздо лучше объясняющие различия между хоккеистами в росте.


    Модель 2 . Защитники - самые высокие игроки в хоккее. Вратари ниже на 2 см, нападающие - на 2.6 см. Все коэффициенты статистически значимы. Объясненная вариация зависимой переменной возрастает до 6%. При этом коэффициент при переменной когорта рождения не изменяется.


    Модель 3 . Добавление контрольных переменных для стран любопытно по двум причинам. Во-первых, некоторые различия статистически значимы и интересны сами по себе. Так, например, шведы, словаки и канадцы статистически значимо выше наших игроков. Большинство же наций значительно ниже нас, японцы аж на 5.2 см, итальянцы - на 3.6 см, французы - на 2.2 см (см. также рисунок 4). Во-вторых, введение контрольных переменных для стран значительно уменьшает коэффициент при переменной когорта рождения - до 0.08. Это значит, что межстрановые различия объясняют часть различий по когортам рождения. Коэффициент детерминации модели возрастает до 13%.


    R code. Рисунок 4. Рост хоккеистов по странам


    # players" height by country gg_av.h_country <- ggplot(dfuc ,aes(x=factor(cohort),y=av.height))+ geom_point(color="grey50",alpha=.25)+ stat_summary(aes(group=country),geom="line",fun.y = mean,size=.5,color="grey50")+ stat_smooth(aes(group=country,color=country),geom="line",size=1)+ #geom_hline(yintercept = mean(height),color="red",size=.5)+ facet_wrap(~country,ncol=4)+ coord_cartesian(ylim = c(170,195))+ scale_x_discrete(labels=paste(seq(1965,1995,10)),breaks=paste(seq(1965,1995,10)))+ theme_few(base_size = 15)+ theme(legend.position="none", panel.grid=element_line(colour = "grey75",size=.25))


    Наиболее полная модель показывает, что увеличение роста хоккеистов происходит со скоростью 0.08 см в год. Это означает прирост 0.8 см за десятилетие или на 2.56 см за 32 года с 1964 по 1996. Обратите внимание, что при учете контрольных переменных скорость увеличения роста хоккеистов оказывается примерно в полтора раза ниже, чем при более грубом анализе средних значений (рисунок 1): 0.8 см за десятилетие против примерно 1.2 см.


    Прежде чем мы, наконец, постараемся понять, насколько значительным оказывается увеличение роста, хочу обратить внимание еще на один любопытный момент. Введение контрольных переменных подразумевает фиксацию различий между категориями при едином наклоне регрессионной линии (единый коэффициент при главной объясняющей переменной). Это не всегда хорошо и может замаскировать значительные различия в тесноте связи между исследуемыми переменными в подвыборках. Так, например, раздельное моделирование зависимости роста игроков от амплуа (рисунок 5) показывает, что взаимосвязь наиболее ярко выражена для вратарей и наименее заметна для защитников.




    R code. Рисунок 5. Корреляция между ростом и когортой раздельно для защитников, форвардов и вратарей

    dfuc_pos <- dfuc levels(dfuc_pos$position) <- c("Defenders","Forwards","Goalkeeprs") gg_pos <- ggplot(dfuc_pos ,aes(x=cohort,y=av.height))+ geom_jitter(aes(color=position),alpha=.5)+ stat_smooth(method = "lm", se = T,color=brbg11,size=1)+ scale_x_continuous(labels=seq(1965,1995,5),breaks=seq(1965,1995,5))+ scale_color_manual(values = brbg11)+ facet_wrap(~position,ncol=3)+ xlab("birth cohort")+ ylab("height, cm")+ theme_few(base_size = 20)+ theme(legend.position="none", panel.grid=element_line(colour = "grey75",size=.25))


    R code. Таблица 3. Модель 3 раздельно для подвыборок защитников, форвардов и вратарей

    # separate models for positions m3d <- lm(data = dfuc %>% filter(position=="D"),av.height~cohort+country) m3f <- lm(data = dfuc %>% filter(position=="F"),av.height~cohort+country) m3g <- lm(data = dfuc %>% filter(position=="G"),av.height~cohort+country) htmlreg(list(m3d,m3f,m3g),file = "2016/160500 Hockey players/models_height_pos.html",single.row = T, custom.model.names = c("Model 3 D","Model 3 F","Model 3 G"))


    Statistical models
    Model 3 D Model 3 F Model 3 G
    (Intercept) 108.45 (46.46) * 49.32 (36.73) -295.76 (74.61) ***
    cohort 0.04 (0.02) 0.07 (0.02) *** 0.24 (0.04) ***
    countryAUT 0.14 (0.96) -2.01 (0.75) ** 0.47 (1.47)
    countryBLR 0.30 (0.87) -1.53 (0.73) * -2.73 (1.55)
    countryCAN 1.55 (0.78) * 0.39 (0.62) 3.45 (1.26) **
    countryCZE 0.87 (0.84) 0.30 (0.67) 0.63 (1.36)
    countryDEN -0.60 (0.95) 0.10 (0.75) -0.19 (1.62)
    countryFIN -0.55 (0.89) -0.04 (0.67) 2.40 (1.32)
    countryFRA -3.34 (1.15) ** -2.06 (0.93) * 1.39 (2.07)
    countryGER 0.48 (0.85) -1.40 (0.72) -0.65 (1.33)
    countryHUN -1.32 (1.47) -0.70 (1.16) 0.65 (2.39)
    countryITA -2.08 (1.08) -4.78 (0.82) *** -2.02 (1.62)
    countryJPN -4.13 (1.26) ** -6.52 (0.94) *** -2.27 (1.98)
    countryKAZ -1.23 (0.95) -1.82 (0.79) * 1.79 (1.58)
    countryLAT -0.73 (0.95) -1.39 (0.75) -3.42 (1.49) *
    countryNOR -3.25 (1.07) ** -1.06 (0.85) -0.10 (1.66)
    countryPOL 0.82 (1.89) -0.58 (1.55) 0.37 (2.97)
    countrySLO -1.57 (0.99) -1.54 (0.79) -2.25 (1.66)
    countrySUI -1.98 (0.91) * -2.36 (0.71) *** 1.12 (1.47)
    countrySVK 2.94 (0.87) *** 0.81 (0.67) -0.70 (1.50)
    countrySWE 0.75 (0.81) 1.24 (0.65) 1.37 (1.33)
    countryUKR -1.37 (1.01) -1.77 (0.80) * -3.71 (1.66) *
    countryUSA 0.76 (0.78) -0.08 (0.62) 2.58 (1.26) *
    R 2 0.09 0.10 0.24
    Adj. R 2 0.07 0.09 0.20
    Num. obs. 1094 1824 401
    RMSE 5.08 5.08 4.87
    *** p < 0.001, ** p < 0.01, * p < 0.05

    Раздельное моделирование показывает, что в когортах 1964-1996 годов рождения, средний рост хоккеистов, участвовавших в чемпионатах мира в 2001-2016 годах, увеличивался со скоростью 0.4 см за десятиление для защитников, 0.7 см - для нападающих и (!) 2.4 см - для вратарей. За три десятиления средний рост вратарей увеличился на 7 см!


    Пришло время сравнить эти изменения со средними значениями для населения.

    Сравнение с населением

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


    Для сравнения роста хоккеистов со средними показателями мужского населения я использовал данные из релевантной научной статьи (PDF). Данные я скопировал из статьи (использовав замечательную программку tabula) и тоже разместил в открытом доступе .


    R code. Загрузка данных Hatton, T. J., & Bray, B. E. (2010) и подготовка к анализу

    # download the data from Hatton, T. J., & Bray, B. E. (2010). # Long run trends in the heights of European men, 19th–20th centuries. # Economics & Human Biology, 8(3), 405–413. # http://doi.org/10.1016/j.ehb.2010.03.001 # stable URL, copied data (https://dx.doi.org/10.6084/m9.figshare.3394795.v1) df_hb <- read.csv("https://ndownloader.figshare.com/files/5303878") df_hb <- df_hb %>% gather("country","h_pop",2:16) %>% mutate(period=paste(period)) %>% separate(period,c("t1","t2"),sep = "/")%>% transmute(cohort=(as.numeric(t1)+as.numeric(t2))/2,country,h_pop) # calculate hockey players" cohort height averages for each country df_hoc <- dfu %>% group_by(country,cohort) %>% summarise(h_hp=mean(av.height)) %>% ungroup()


    К сожалению, данные о динамике роста населения пересекаются лишь с 8 странами из моего хоккейного датасета: Австрия, Дания, Финляндия, Франция, Германия, Италия, Норвегия, Швеция.


    R code. Пересекающиеся данные

    # countries in both data sets both_cnt <- levels(factor(df_hb$country)) both_cnt




    R code. Рисунок 6. Сравнение динамики увеличения роста мужского населения и хоккеистов. Примечание: зеленый цвет - мужское население; коричневый цвет - хоккеисты.

    gg_hoc_vs_pop <- ggplot()+ geom_path(data = df_hb %>% filter(country %in% both_cnt), aes(x=cohort,y=h_pop), color=brbg11,size=1)+ geom_point(data = df_hb %>% filter(country %in% both_cnt), aes(x=cohort,y=h_pop), color=brbg11,size=2)+ geom_point(data = df_hb %>% filter(country %in% both_cnt), aes(x=cohort,y=h_pop), color="white",size=1.5)+ geom_point(data = df_hoc %>% filter(country %in% both_cnt), aes(x=cohort,y=h_hp), color=brbg11,size=2,pch=18)+ stat_smooth(data = df_hoc %>% filter(country %in% both_cnt), aes(x=cohort,y=h_hp), method="lm",se=F,color=brbg11,size=1)+ facet_wrap(~country,ncol=2)+ ylab("height, cm")+ xlab("birth cohort")+ theme_few(base_size = 15)+ theme(panel.grid=element_line(colour = "grey75",size=.25))


    Во всех проанализировнных странах хоккеисты выше стеднестатистических мужчин на 2-5 см. Но это не удивительно - в спорте значительная селекция.
    Примечательно другое. В развитых странах мира особенно бурное увеличение роста мужского населения происходило в первой середине 20 века. В когортах примерно 1960-х годов рождения рост мужчин приблизился к плато и пеерстал бурно увеличиваться. Тренд среднего роста хоккеистов во всех странах (кроме почему-то Дании) как будто бы продолжил приостановившийся многолетний тренд всего мужского населения.
    Для когорт европейцев, родившихся в первой половине 20 века, темпы увеличения среднего роста варьировались от 1.18 до 1.74 см за десятилетие в зависимости от страны (рисунок 7). Начиная с 1960-х годов этот показатель опустился до уровня 0.15-0.80 за 10 лет.




    На днях завершился очередной чемпионат мира по хоккею.


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



    И я задался вопросами. Действительно ли хоккеисты выше обычных людей? Как изменяется рост хоккеистов со временем в сравнении с обычными людьми? Есть ли устойчивые межстрановые различия?

    Данные

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


    Я собрал вместе данные всех чемпионатов мира с 2001 по 2016 годы. От года к году формат предоставления данных слегка меняется, что требует некоторых усилий по их очистке. Не представляя, как грамотно автоматизировать процесс, все данные копировал вручную, что заняло чуть больше 3 часов. Объединенный датасет выложил в открытый доступ .


    # load required packages require(dplyr) # data manipulation require(lubridate) # easy manipulations with dates require(ggplot2) # visualization require(ggthemes) # themes for ggplot2 require(cowplot) # nice alignment of the ggplots require(RColorBrewer) # generate color palettes require(texreg) # easy export of regression tables require(xtable) # export a data frame into an html table # download the IIHF data set; if there are some problems, you can download manually # using the stable URL (https://dx.doi.org/10.6084/m9.figshare.3394735.v2) df <- read.csv("https://ndownloader.figshare.com/files/5303173") # color palette brbg11 <- brewer.pal(11,"BrBG")

    Растут ли хоккеисты? Грубое (периодное) сравнение

    Для начала сравним средний рост игроков на всех 16 чемпионатах мира.



    R code. Рисунок 1. Изменение среднего роста хоккеистов на чемпионатах мира, 2001-2016 гг.

    # mean height by championship df_per <- df %>% group_by(year) %>% summarise(height=mean(height)) gg_period_mean <- ggplot(df_per, aes(x=year,y=height))+ geom_point(size=3,color=brbg11)+ stat_smooth(method="lm",size=1,color=brbg11)+ ylab("height, cm")+ xlab("year of competition")+ scale_x_continuous(breaks=seq(2005,2015,5),labels=seq(2005,2015,5))+ theme_few(base_size = 15)+ theme(panel.grid=element_line(colour = "grey75",size=.25)) gg_period_jitter <- ggplot(df, aes(x=year,y=height))+ geom_jitter(size=2,color=brbg11,alpha=.25,width = .75)+ stat_smooth(method="lm",size=1,se=F,color=brbg11)+ ylab("height, cm")+ xlab("year of competition")+ scale_x_continuous(breaks=seq(2005,2015,5),labels=seq(2005,2015,5))+ theme_few(base_size = 15)+ theme(panel.grid=element_line(colour = "grey75",size=.25)) gg_period <- plot_grid(gg_period_mean,gg_period_jitter)


    Положительный тренд очевиден. За полтора десятилетия средний рост хоккеиста на чемпионате мира увеличился почти на 2 сантиметра (левая панель). Как будто бы незначительный прирост на фоне довольно большой вариации (правая панель). Много это или мало? Чтобы ответить на вопрос, надо корректно сравнить с населением (но об этом ближе к концу статьи).

    Когортный анализ

    Более корректный способ изучения изменения в росте подразумевает сравнение по когортам рождения. Тут мы сталкиваемся с любопытным нюансом - некоторые хоккеисты участвовали не в одном чемпионате мира. Вопрос: вычищать ли повторные записи для одних и тех же людей? Если нам интересен средний рост хоккеиста на чемпионате (как на картинке выше), пожалуй, не имеет смысла зачищать. Но если мы хотим проследить изменение роста хоккеистов как таковое, на мой взгляд, было бы неправильно присваивать больший вес тем игрокам, которые регулярнее попадали на чемпионаты мира. Поэтому для дальнейшего анализа я очистил данные от повторных записей одних и тех же игроков.


    R code. Подготовка данных к когортному анализу

    # remove double counts dfu_h <- df %>% select(year,name,country,position,birth,cohort,height) %>% spread(year,height) dfu_h$av.height <- apply(dfu_h[,6:21],1,mean,na.rm=T) dfu_h$times_participated <- apply(!is.na(dfu_h[,6:21]),1,sum) dfu_w <- df %>% select(year,name,country,position,birth,cohort,weight) %>% spread(year,weight) dfu_w$av.weight <- apply(dfu_w[,6:21],1,mean,na.rm=T) dfu <- left_join(dfu_h %>% select(name,country,position,birth,cohort,av.height,times_participated), dfu_w %>% select(name,country,position,birth,cohort,av.weight), by = c("name","country","position","birth","cohort")) %>% mutate(bmi = av.weight/(av.height/100)^2)


    Общее количество наблюдений сократилось с 6292 до 3333. Если хоккеист участвовал более чем в одном чемпионате мира, данные о росте и весе я усреднял, поскольку рост и (в особенности) вес отдельно взятого хоккеиста мог меняться со временем. Сколько же раз хоккеисты удостаиваются чести сыграть за национальные сборные на чемпионатах мира? В среднем чуть менее 2 раз.



    R code. Рисунок 2. Гистограмма распределения хоккеистов по количеству участий в ЧМ

    # frequencies of participation in world championships mean(dfu$times_participated) df_part <- as.data.frame(table(dfu$times_participated)) gg_times_part <- ggplot(df_part,aes(y=Freq,x=Var1))+ geom_bar(stat="identity",fill=brbg11)+ ylab("# of players")+ xlab("times participated (out of 16 possible)")+ theme_few(base_size = 15)


    Но есть и уникумы. Посмотрим, кто из игроков принял участие как минимум в 10 чемпионатах мира. Таких игроков оказалось 14.


    R code. Таблица 1. Лидеры участия в чемпионатах мира

    # the leaders of participation in world championships # save the table to html leaders <- dfu %>% filter(times_participated > 9) View(leaders) print(xtable(leaders), type="html", file="table_leaders.html")


    name country position birth cohort av.height times_participated av.weight bmi
    1 ovechkin alexander RUS F 1985-09-17 1985 188.45 11 98.36 27.70
    2 nielsen daniel DEN D 1980-10-31 1980 182.27 11 79.73 24.00
    3 staal kim DEN F 1978-03-10 1978 182.00 10 87.80 26.51
    4 green morten DEN F 1981-03-19 1981 183.00 12 85.83 25.63
    5 masalskis edgars LAT G 1980-03-31 1980 176.00 12 79.17 25.56
    6 ambuhl andres SUI F 1983-09-14 1983 176.80 10 83.70 26.78
    7 granak dominik SVK D 1983-06-11 1983 182.00 10 79.50 24.00
    8 madsen morten DEN F 1987-01-16 1987 189.82 11 86.00 23.87
    9 redlihs mikelis LAT F 1984-07-01 1984 180.00 10 80.40 24.81
    10 cipulis martins LAT F 1980-11-29 1980 180.70 10 82.10 25.14
    11 holos jonas NOR D 1987-08-27 1987 180.18 11 91.36 28.14
    12 bastiansen anders NOR F 1980-10-31 1980 190.00 11 93.64 25.94
    13 ask morten NOR F 1980-05-14 1980 185.00 10 88.30 25.80
    14 forsberg kristian NOR F 1986-05-05 1986 184.50 10 87.50 25.70

    Александр Овечкин, 11 раз! Но тут надо отметить, что не для всех хоккеистов в принципе возможно было поучаствовать во всех 16 чемпионатах: зависит когорты рождения (насколько игровая карьера пересеклась именно с этим периодом наблюдения), от того, участвовала ли сборная игрока во всех чемпионатах мира (см. рисунок 3) и попадал ли игрок стабильно в сборную; наконец есть еще НХЛ, стабильно отвлекающий лучших из лучших от участия в чемпионатах мира.



    R code. Рисунок 3. Участие сборных в чемпионатах мира по хоккею в 2001-2016 гг.

    # countries times participated df_cnt_part <- df %>% select(year,country,no) %>% mutate(country=factor(paste(country))) %>% group_by(country,year) %>% summarise(value=sum(as.numeric(no))) %>% mutate(value=1) %>% ungroup() %>% mutate(country=factor(country, levels = rev(levels(country))), year=factor(year)) d_cnt_n <- df_cnt_part %>% group_by(country) %>% summarise(n=sum(value)) gg_cnt_part <- ggplot(data = df_cnt_part, aes(x=year,y=country))+ geom_point(color=brbg11,size=7)+ geom_text(data=d_cnt_n,aes(y=country,x=17.5,label=n,color=n),size=7,fontface=2)+ geom_text(data=d_cnt_n,aes(y=country,x=18.5,label=" "),size=7)+ scale_color_gradientn(colours = brbg11)+ xlab(NULL)+ ylab(NULL)+ theme_bw(base_size = 25)+ theme(legend.position="none", axis.text.x = element_text(angle = 90, hjust = 1,vjust=0.5))

    Растут ли хоккеисты? Регрессионный анализ

    Регрессионный анализ позволяет более корректно ответить на вопрос об изменении роста игроков. В данном случаем с помощью мультиноминальной линейной регрессии предсказыватся рост хоккеиста в зависимость от когорты рождения. Включая в спецификацию регресиионной модели различные дополнительные (контрольные) переменные, мы получаем значение наиболее интересующего нас коэффициента "при прочих равных". Например, добавляя к объясняющим переменным помимо когорты рождения позицию игрока на поле, мы получаем взаимосвязь роста и когорты, очищенную от эффекта различий в зависимости от позиции; добавляя в контрольны переменные страны, получаем результат, очищенный от межстрановых различий. Разумеется, если контрольные переменные сами оказываются значимыми, на это тоже стоит обратить внимание.
    Регрессионные модели (особенно линейные регрессии) очень чувствительны к выбросам (см., например, ). Не вдаваясь глубоко в эту обширную тему, я лишь убрал из анализа когорты, для которых мы имеем слишком небольшое количество представителей.


    R code. Убираем маленькие когорты

    # remove small cohorts table(dfu$cohort) dfuc <- dfu %>% filter(cohort<1997,cohort>1963)


    Не желая резать данные сильно, я убрал только когорты 1963, 1997 и 1998 годов рождения, для которых у нас есть менее 10 игроков.


    Итак, результаты рагрессионного анализа. В каждой следующей модели я добавляю одну переменную.
    Зависимая переменная : рост хоккеиста.
    Объясняющие перемеенные : 1) когорта рождения; 2) + позиция на поле (сравнение с защитниками); 3) + страна (сравнение с Россией).


    R code. Таблица 2. Результаты регрессионного анализа

    # relevel counrty variable to compare with Russia dfuc$country <- relevel(dfuc$country,ref = "RUS") # regression models m1 <- lm(data = dfuc,av.height~cohort) m2 <- lm(data = dfuc,av.height~cohort+position) m3 <- lm(data = dfuc,av.height~cohort+position+country) # export the models to html htmlreg(list(m1,m2,m3),file = "models_height.html",single.row = T)


    Statistical models
    Model 1 Model 2 Model 3
    (Intercept) -10.17 (27.67) -18.64 (27.01) 32.59 (27.00)
    cohort 0.10 (0.01) *** 0.10 (0.01) *** 0.08 (0.01) ***
    positionF -2.59 (0.20) *** -2.59 (0.20) ***
    positionG -1.96 (0.31) *** -1.93 (0.30) ***
    countryAUT -0.94 (0.55)
    countryBLR -0.95 (0.53)
    countryCAN 1.13 (0.46) *
    countryCZE 0.56 (0.49)
    countryDEN -0.10 (0.56)
    countryFIN 0.20 (0.50)
    countryFRA -2.19 (0.69) **
    countryGER -0.61 (0.51)
    countryHUN -0.61 (0.86)
    countryITA -3.58 (0.61) ***
    countryJPN -5.24 (0.71) ***
    countryKAZ -1.16 (0.57) *
    countryLAT -1.38 (0.55) *
    countryNOR -1.61 (0.62) **
    countryPOL 0.06 (1.12)
    countrySLO -1.55 (0.58) **
    countrySUI -1.80 (0.53) ***
    countrySVK 1.44 (0.50) **
    countrySWE 1.18 (0.48) *
    countryUKR -1.82 (0.59) **
    countryUSA 0.54 (0.45)
    R 2 0.01 0.06 0.13
    Adj. R 2 0.01 0.06 0.12
    Num. obs. 3319 3319 3319
    RMSE 5.40 5.27 5.10
    *** p < 0.001, ** p < 0.01, * p < 0.05

    Интерпретация моделей

    Модель 1 . Увеличение когорты на один год соответсвует увеличению роста хоккеистов на 0.1 см. Коэффициент статистически значим, но при этом модель объясняет лишь 1% вариации зависимой переменной. В принципе это не проблема, поскольку моделирование носит объясняющий характер, задача предсказания не ставится. Тем не менее, низкий коэффициент детерминации показывает, что должны быть другие переменные, гораздо лучше объясняющие различия между хоккеистами в росте.


    Модель 2 . Защитники - самые высокие игроки в хоккее. Вратари ниже на 2 см, нападающие - на 2.6 см. Все коэффициенты статистически значимы. Объясненная вариация зависимой переменной возрастает до 6%. При этом коэффициент при переменной когорта рождения не изменяется.


    Модель 3 . Добавление контрольных переменных для стран любопытно по двум причинам. Во-первых, некоторые различия статистически значимы и интересны сами по себе. Так, например, шведы, словаки и канадцы статистически значимо выше наших игроков. Большинство же наций значительно ниже нас, японцы аж на 5.2 см, итальянцы - на 3.6 см, французы - на 2.2 см (см. также рисунок 4). Во-вторых, введение контрольных переменных для стран значительно уменьшает коэффициент при переменной когорта рождения - до 0.08. Это значит, что межстрановые различия объясняют часть различий по когортам рождения. Коэффициент детерминации модели возрастает до 13%.


    R code. Рисунок 4. Рост хоккеистов по странам


    # players" height by country gg_av.h_country <- ggplot(dfuc ,aes(x=factor(cohort),y=av.height))+ geom_point(color="grey50",alpha=.25)+ stat_summary(aes(group=country),geom="line",fun.y = mean,size=.5,color="grey50")+ stat_smooth(aes(group=country,color=country),geom="line",size=1)+ #geom_hline(yintercept = mean(height),color="red",size=.5)+ facet_wrap(~country,ncol=4)+ coord_cartesian(ylim = c(170,195))+ scale_x_discrete(labels=paste(seq(1965,1995,10)),breaks=paste(seq(1965,1995,10)))+ theme_few(base_size = 15)+ theme(legend.position="none", panel.grid=element_line(colour = "grey75",size=.25))


    Наиболее полная модель показывает, что увеличение роста хоккеистов происходит со скоростью 0.08 см в год. Это означает прирост 0.8 см за десятилетие или на 2.56 см за 32 года с 1964 по 1996. Обратите внимание, что при учете контрольных переменных скорость увеличения роста хоккеистов оказывается примерно в полтора раза ниже, чем при более грубом анализе средних значений (рисунок 1): 0.8 см за десятилетие против примерно 1.2 см.


    Прежде чем мы, наконец, постараемся понять, насколько значительным оказывается увеличение роста, хочу обратить внимание еще на один любопытный момент. Введение контрольных переменных подразумевает фиксацию различий между категориями при едином наклоне регрессионной линии (единый коэффициент при главной объясняющей переменной). Это не всегда хорошо и может замаскировать значительные различия в тесноте связи между исследуемыми переменными в подвыборках. Так, например, раздельное моделирование зависимости роста игроков от амплуа (рисунок 5) показывает, что взаимосвязь наиболее ярко выражена для вратарей и наименее заметна для защитников.




    R code. Рисунок 5. Корреляция между ростом и когортой раздельно для защитников, форвардов и вратарей

    dfuc_pos <- dfuc levels(dfuc_pos$position) <- c("Defenders","Forwards","Goalkeeprs") gg_pos <- ggplot(dfuc_pos ,aes(x=cohort,y=av.height))+ geom_jitter(aes(color=position),alpha=.5)+ stat_smooth(method = "lm", se = T,color=brbg11,size=1)+ scale_x_continuous(labels=seq(1965,1995,5),breaks=seq(1965,1995,5))+ scale_color_manual(values = brbg11)+ facet_wrap(~position,ncol=3)+ xlab("birth cohort")+ ylab("height, cm")+ theme_few(base_size = 20)+ theme(legend.position="none", panel.grid=element_line(colour = "grey75",size=.25))


    R code. Таблица 3. Модель 3 раздельно для подвыборок защитников, форвардов и вратарей

    # separate models for positions m3d <- lm(data = dfuc %>% filter(position=="D"),av.height~cohort+country) m3f <- lm(data = dfuc %>% filter(position=="F"),av.height~cohort+country) m3g <- lm(data = dfuc %>% filter(position=="G"),av.height~cohort+country) htmlreg(list(m3d,m3f,m3g),file = "2016/160500 Hockey players/models_height_pos.html",single.row = T, custom.model.names = c("Model 3 D","Model 3 F","Model 3 G"))


    Statistical models
    Model 3 D Model 3 F Model 3 G
    (Intercept) 108.45 (46.46) * 49.32 (36.73) -295.76 (74.61) ***
    cohort 0.04 (0.02) 0.07 (0.02) *** 0.24 (0.04) ***
    countryAUT 0.14 (0.96) -2.01 (0.75) ** 0.47 (1.47)
    countryBLR 0.30 (0.87) -1.53 (0.73) * -2.73 (1.55)
    countryCAN 1.55 (0.78) * 0.39 (0.62) 3.45 (1.26) **
    countryCZE 0.87 (0.84) 0.30 (0.67) 0.63 (1.36)
    countryDEN -0.60 (0.95) 0.10 (0.75) -0.19 (1.62)
    countryFIN -0.55 (0.89) -0.04 (0.67) 2.40 (1.32)
    countryFRA -3.34 (1.15) ** -2.06 (0.93) * 1.39 (2.07)
    countryGER 0.48 (0.85) -1.40 (0.72) -0.65 (1.33)
    countryHUN -1.32 (1.47) -0.70 (1.16) 0.65 (2.39)
    countryITA -2.08 (1.08) -4.78 (0.82) *** -2.02 (1.62)
    countryJPN -4.13 (1.26) ** -6.52 (0.94) *** -2.27 (1.98)
    countryKAZ -1.23 (0.95) -1.82 (0.79) * 1.79 (1.58)
    countryLAT -0.73 (0.95) -1.39 (0.75) -3.42 (1.49) *
    countryNOR -3.25 (1.07) ** -1.06 (0.85) -0.10 (1.66)
    countryPOL 0.82 (1.89) -0.58 (1.55) 0.37 (2.97)
    countrySLO -1.57 (0.99) -1.54 (0.79) -2.25 (1.66)
    countrySUI -1.98 (0.91) * -2.36 (0.71) *** 1.12 (1.47)
    countrySVK 2.94 (0.87) *** 0.81 (0.67) -0.70 (1.50)
    countrySWE 0.75 (0.81) 1.24 (0.65) 1.37 (1.33)
    countryUKR -1.37 (1.01) -1.77 (0.80) * -3.71 (1.66) *
    countryUSA 0.76 (0.78) -0.08 (0.62) 2.58 (1.26) *
    R 2 0.09 0.10 0.24
    Adj. R 2 0.07 0.09 0.20
    Num. obs. 1094 1824 401
    RMSE 5.08 5.08 4.87
    *** p < 0.001, ** p < 0.01, * p < 0.05

    Раздельное моделирование показывает, что в когортах 1964-1996 годов рождения, средний рост хоккеистов, участвовавших в чемпионатах мира в 2001-2016 годах, увеличивался со скоростью 0.4 см за десятиление для защитников, 0.7 см - для нападающих и (!) 2.4 см - для вратарей. За три десятиления средний рост вратарей увеличился на 7 см!


    Пришло время сравнить эти изменения со средними значениями для населения.

    Сравнение с населением

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


    Для сравнения роста хоккеистов со средними показателями мужского населения я использовал данные из релевантной научной статьи (PDF). Данные я скопировал из статьи (использовав замечательную программку tabula) и тоже разместил в открытом доступе .


    R code. Загрузка данных Hatton, T. J., & Bray, B. E. (2010) и подготовка к анализу

    # download the data from Hatton, T. J., & Bray, B. E. (2010). # Long run trends in the heights of European men, 19th–20th centuries. # Economics & Human Biology, 8(3), 405–413. # http://doi.org/10.1016/j.ehb.2010.03.001 # stable URL, copied data (https://dx.doi.org/10.6084/m9.figshare.3394795.v1) df_hb <- read.csv("https://ndownloader.figshare.com/files/5303878") df_hb <- df_hb %>% gather("country","h_pop",2:16) %>% mutate(period=paste(period)) %>% separate(period,c("t1","t2"),sep = "/")%>% transmute(cohort=(as.numeric(t1)+as.numeric(t2))/2,country,h_pop) # calculate hockey players" cohort height averages for each country df_hoc <- dfu %>% group_by(country,cohort) %>% summarise(h_hp=mean(av.height)) %>% ungroup()


    К сожалению, данные о динамике роста населения пересекаются лишь с 8 странами из моего хоккейного датасета: Австрия, Дания, Финляндия, Франция, Германия, Италия, Норвегия, Швеция.


    R code. Пересекающиеся данные

    # countries in both data sets both_cnt <- levels(factor(df_hb$country)) both_cnt




    R code. Рисунок 6. Сравнение динамики увеличения роста мужского населения и хоккеистов. Примечание: зеленый цвет - мужское население; коричневый цвет - хоккеисты.

    gg_hoc_vs_pop <- ggplot()+ geom_path(data = df_hb %>% filter(country %in% both_cnt), aes(x=cohort,y=h_pop), color=brbg11,size=1)+ geom_point(data = df_hb %>% filter(country %in% both_cnt), aes(x=cohort,y=h_pop), color=brbg11,size=2)+ geom_point(data = df_hb %>% filter(country %in% both_cnt), aes(x=cohort,y=h_pop), color="white",size=1.5)+ geom_point(data = df_hoc %>% filter(country %in% both_cnt), aes(x=cohort,y=h_hp), color=brbg11,size=2,pch=18)+ stat_smooth(data = df_hoc %>% filter(country %in% both_cnt), aes(x=cohort,y=h_hp), method="lm",se=F,color=brbg11,size=1)+ facet_wrap(~country,ncol=2)+ ylab("height, cm")+ xlab("birth cohort")+ theme_few(base_size = 15)+ theme(panel.grid=element_line(colour = "grey75",size=.25))


    Во всех проанализировнных странах хоккеисты выше стеднестатистических мужчин на 2-5 см. Но это не удивительно - в спорте значительная селекция.
    Примечательно другое. В развитых странах мира особенно бурное увеличение роста мужского населения происходило в первой середине 20 века. В когортах примерно 1960-х годов рождения рост мужчин приблизился к плато и пеерстал бурно увеличиваться. Тренд среднего роста хоккеистов во всех странах (кроме почему-то Дании) как будто бы продолжил приостановившийся многолетний тренд всего мужского населения.
    Для когорт европейцев, родившихся в первой половине 20 века, темпы увеличения среднего роста варьировались от 1.18 до 1.74 см за десятилетие в зависимости от страны (рисунок 7). Начиная с 1960-х годов этот показатель опустился до уровня 0.15-0.80 за 10 лет.