Упражнения. Питание. Диеты. Тренировки. Спорт

Самый маленький хоккеист. Рост хоккеистов: анализируем данные всех чемпионатов мира в текущем веке

10. Лео Бойвин

Рожденный в 32 году в Онтарио Бойвин стал одним из символов послевоенной НХЛ. Несмотря на скромные габариты (170 см, 80 кг), Лео вошел в число легенд НХЛ благодаря своему жесткому стилю. Любимый прием Бойвина – «бросок через бедро» – в своей книге описывал Бобби Орр :

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

Одним из самых известных силовых приемов Бойвина считают его хит против Фрэнка Маховлича, случившийся во времена выступления Лео за «Бостон». Слово великому канадскому комментатору Фостеру Хьюитту :

«Маховлич убегает в отрыв, он на синей линии «Бостона», только Бойвин между ним и воротами. Большой Фрэнк убирает шайбу влево, затем вправо и пытается объехать защитника «Брюинс». БЭМ! Ой-ой! Бойвин мощно принял двадцать седьмого номера на бедро. Маховлич дал колеса. Теперь шайба у Бойвина…»

8. Эрик Линдрос

В начале девяностых крупногабаритный канадец по праву считался будущей звездой лиги и поначалу оправдывал надежды специалистов и руководства «Филадельфии», отдавшей в 1992 году за Эрика, отказавшегося играть в задрафтовавшем его «Квебеке», колоссальную компенсацию – 6 игроков (в том числе Питера Форсберга), два права выбора в первых раундах драфта и колоссальную денежную компенсацию. Но многочисленные сотрясения мозга свели на нет все попытки Линдроса выйти на прежний уровень. Сезон-2006/07 в составе «Далласа» стал последним в НХЛ для обладателя «Харт Трофи»-95.

7. Здено Хара

Словацкий гренадер, обладатель самого мощного броска в НХЛ, литеры «С» в «Бостоне» и Кубка Стэнли-2011, был бы просто не понят если бы при таких выдающихся габаритах не играл в жесткий и контактный хоккей.

6. Александр Овечкин

Один из лучших хоккеистов современности вряд ли нуждается в представлениях . Его силовой стиль и спортивная наглость стали такой же визитной карточкой Александра Великого как и голы, которых за шесть лет в НХЛ набралось уже больше 300.

5. Дарюс Каспарайтис

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

4. Кэм Нили

Задрафтованный под общим 9-м номером «Ванкувер Кэнакс» стал настоящей легендой «Бостона», проведя в составе «Брюинс» 10 сезонов. В 1996 году его номер был изъят из обращения – ни один игрок медведей с той поры не носил восьмерку на спине. Также стоит отметить, что участник нашего рейтинга стал одним из четырех хоккеистов, сумевших повторить рекорд Уэйна Гретцки, забив 50 голов в 44 первых матчах регулярного сезона.

3. Дени Потвен

Великий защитник, всю карьеру проведший в «Нью-Йорк Айлендерс» был одним из тех, кто великолепно играл как в обороне, так и в атаке. Перечислять его регалии бессмысленно, говорить о головокружительной для защитника статистике тоже. Выдающийся бомбардир, великий капитан и настоящий лидер открывает тройку рейтинга самых жестких хоккеистов НХЛ.

2. Дион Фанюф

Первый выбор «Калгари Флэймс» на драфте 2003 года несмотря на свою не самую плохую статистику считается одним из самых переоцененных игроков в современной НХЛ. Однако в умении вести силовую борьбу канадскому капитану «Торонто» отказать невозможно.

1. Скотт Стивенс

Седьмой по количеству сыгранных в НХЛ матчей защитник стал настоящим символом побед «Нью-Джерси» на стыке веков. Жесткий, неуступчивый Стивенс по праву считался олицетворением того хоккея «Девилс», который принес им два Кубка Стэнли за четыре года.




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


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



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

Данные

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 лет.

Здено родился 18 марта 1977 году в городе Тренчине, Чехословакия. Выступает за хоккейный клуб «Бостон Брюинз» и является его капитаном. Играет в клубе с 1 июля 1996 года. Имеет амплуа защитника. Он многократный участник матчей всех звезд НХЛ. В 2009 году получил приз «Джеймс Норрис Трофи», который вручается самому лучшему защитнику сезона в НХЛ. В 2011 году вместе с другими участниками клуба стал обладателем «Кубка Стенли».

Кроме того, Хара обладатель самого сильного броска в НХЛ. Его рекорд составляет 175 км/ч. 25 марта 2012 году хоккеист сыграл тысячный матч в национальной лиге. Вместе со словацкой сборной выиграл серебряные медали в Чемпионатах мира 2000 и 2012 года. Хара разговаривает на таких языках, как словацкий, русский, английский, чешский, немецкий, шведский и польский.

Василий Кошечкин

Василий родился 27 марта 1983 году в Тольятти. Является воспитанником хоккейного клуба «Лада». Профессиональную карьеру начал в 2002 году. Выступал за хоккейные клубы «Ак барс» и «Северсталь». С 1 мая 2013 года играет за магнитогорский «Металлург». Контракт был подписан на 4 года. Кошечкин - вратарь.

Василий участвовал в пяти чемпионатах мира и стал обладателем всех видов медалей первенства. Он в 2006 и 2008 годах вместе со своим клубом выиграл «Континентальный кубок». А 2014 году вместе с другими хоккеистами «Металлурга» победил «Кубок Гагарина». Имеет такие звания и награды, как заслуженный мастер, мастер спорта России международного класса и благодарность президента РФ.

Общая информация

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

НХЛ - национальная хоккейная лига, объединяющая клубы Канады и США. Лига была создана в 1917 году. Главным трофеем НХЛ является «Кубок Стенли». В лиге играет тридцать команд из 29 городов Канады и США.

КХЛ - континентальная хоккейная лига, в которой играют клубы из России, Казахстана, Словакии, Финляндии, Беларуси, Хорватии и Латвии. В сезоне 2014-2015 в КХЛ будут играть 28 клубов из 27 городов. В будущем планируется расширение лиги до 32 команд. Первый чемпионат прошел в 2008 году. Трофеем лиги является «Кубок Гагарина». Первым его обладателем стал казанский «Ак барс». КХЛ, из-за финансовых трудностей, покинули пражский хоккейный клуб «Лев», украинский «Донбасс» и московский «Спартак».




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


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



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

Данные

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 лет.



Понравилась статья? Поделитесь с друзьями!
Была ли эта статья полезной?
Да
Нет
Спасибо, за Ваш отзыв!
Что-то пошло не так и Ваш голос не был учтен.
Спасибо. Ваше сообщение отправлено
Нашли в тексте ошибку?
Выделите её, нажмите Ctrl + Enter и мы всё исправим!