Очень часто при подготовке к соревнованиям по пауэрлифтингу или в процессе любительских тренировок полезно (а иногда и необходимо) оценить свои текущие возможности, не делая “проходку”, так как “проходка” оказывает сильное воздействие на нервную систему, её нежелательно делать часто и к ней нужно сначала подготавливаться, затем от неё отдыхать (чтобы суметь мобилизовать больше ресурсов и уменьшить риск травм), что занимает много времени и сил — и всё ради того, чтобы просто узнать, какой именно вес ты способен пожать, присесть или потянуть конкретно сейчас. Гораздо разумнее было бы оценить эти величины (повторные максимумы, ПМ1), основываясь на результатах, которые ты показывал совсем недавно в процессе обычных тренировок или которые намного проще продемонстрировать2 (многоповторные максимумы, МПМ). Кроме того, если удастся построить такую модель, способную оценить силу человека, исходя из его последних достижений, можно будет сделать более явной связь между тренировками и реальными результатами, предотвращая перетренированность и временные потери на тренировки по программам, не дающим эффекта.
Итак. Зачем нужно предсказывать повторные максимумы? Регрессионные модели, которые требуется построить, помогут:
адекватно оценить свои возможности перед соревнованиями и заказать веса, очень близкие к реальному максимуму; кроме того, знать свой ПМ, не делая проходку, очень важно не только для тех, кто занимается пауэрлифтингом (см. статью);
в период подготовки оценивать скорость своего прогресса (или вообще его наличие), предотвращая перетренированность; сравнивать свои результаты с результатами предыдущих циклов, даже если тогда использовалось другое число повторений;
более обоснованно планировать программу тренировок: пытаясь чередовать разные упражнения и разные диапазоны повторений, легко сделать программу, которая на самом деле не будет давать значимого эффекта или потребует неподъёмных усилий;
обосновать действенность разных методик и выразить различия между ними (этому посвящён последний раздел статьи);
более точно замерять силовые качества групп мышц-антагонистов (очень редко для этого вообще возможно измерять 1ПМ у обеих групп, как и МПМ при одном и том же числе повторений);
выявить математические закономерности в силовых показателях человека.
К сожалению, многие люди отнеслись к этому исследованию очень скептически, поскольку уверены, что здесь имеется слишком сложная зависимость, чтобы её можно было описывать3; другие утверждали, что знание такой информации принесёт больше вреда, чем пользы, если спортсмен не имеет большого опыта или не тренируется с тренером. Во многом они правы, но на самом деле, как я считаю, такое мнение обусловлено достаточно большим количеством разных калькуляторов и формул в Интернете, которые дают разные результаты и не ясно на чём основываются (на каких формулах либо откуда полученных).
Примеры:
формула из книги Брендона Лилли, с которой началось исследование. За более чем месяц я так и не получил ответа от руководства сайта Juggernaut, откуда взялась эта формула (чуть позже я выяснил, что это округлённая формула Вендлера);
калькулятор на (весьма хорошем) сайте Symmetric Strength, аналогичная ситуация;
формулы Мориса и Райдина, которые, как позже будет показано, нерабочие и, скорее всего, получены из слишком маленьких выборок;
формулы О Коннора, Бжицки (Бржыки), Лэндера и другие;
также этот калькулятор, этот, этот и разные клоны одних и тех же калькуляторов.
По-видимому, многие люди пытались составить формулы для вычисления повторного максимума, но теперь, помимо самих формул, об этих исследованиях мало что известно.
Цель же этой статьи – предоставить формулу, полученную в согласовании с концепциями машинного обучения, которая будет хорошо работать на многих людях, а не на десяти. Здесь написано, как она получена и почему.
Для сбора наблюдений был создан опрос в Google Forms на русском языке и его англоязычный аналог.
Русскоязычный опрос распространялся через соц. сеть ВКонтакте преимущественно4 в следующих группах: Пауэрлифтинг | Тяжелая атлетика, Я ♥ ПАУЭРЛИФТИНГ, ПАУЭРЛИФТИНГ И ЖИМ ЛЁЖА 18+, Твой Тренер; аналогично англоязычный опрос распространялся на Facebook преимущественно здесь: Powerlifting Motivation, International Powerlifting League (IPL), Powerlifting Motivation Chat, Powerlifting Memes. Кроме того, несколько наблюдений я собрал лично.
Спустя два месяца от создания опросов данные были выгружены и началась их обработка. Теперь эти данные и всё, связанное с ними (в том числе последняя версия этого документа), хранятся в моём репозитории.
Для обработки данных и создания отчёта использовалась среда RStudio и язык R версии 3.6.3.
В книге “Система тренировок КУБ” на странице 23 (34 в оригинальной версии) приводится формула для определения повторного максимума: \[предполагаемый\ повторный\ максимум = вес * (1 + 0.0333 * повторения),\]
где берётся некоторый рабочий вес и максимально возможное число повторений с ним. В оригинальных обозначениях:
\[RM=WEIGHT \cdot (1+0.0333\cdot REPS).\]
К примеру, если вы можете пожать 100 кг на 5 раз, то из этой формулы следует, что вы сможете пожать 115 на раз и 90 на 9 раз (звучит правдоподобно).
К слову, примерно такая модель с некоторыми поправками на диапазон повторений используется на сайте Symmetric Strength. Там максимально возможное количество повторений равно 10.
Лично на мне эта формула хорошо работает и мне захотелось уточнить её для других людей разной комплекции и уровня подготовки. Также интересно то, что здесь имеется, по сути, очень простая линейная модель с двумя предикторами : рабочим весом и взаимодействием рабочего веса с числом повторений, и нет зависимости от самого упражнения, опыта человека и других характеристик, то есть в перспективе возможно с большой точностью описать наши возможности одной простой формулой, и это будет верно почти для всех людей, невзирая на все различия между ними.
Сила человека в одном повторении зависит от пяти составляющих:
Количество миофибрилл в мышечном волокне. Чем их больше, тем большую силу может развить волокно.
Запасы АТФ и креатинфосфата и уровень ферментации, поддерживающий быстрое преобразование креатинфосфата в АТФ. Если эти запасы малы, спортсмен не сможет поддерживать максимальное усилие нужные несколько секунд. Сам по себе уровень ферментации для силовых нагрузок можно не учитывать, поскольку после нескольких минут хорошей разминки он становится достаточно высоким.
Соотношение красных и белых мышечных волокон в работающей мышце: чем больше белых волокон, тем большую силу способна развить мышца на короткий промежуток времени. Это соотношение является разным для разных мышц и разных людей (определяется генетикой) и, как пока считается, плохо поддаётся коррекции5.
Количество вовлечённых в работу волокон. Чем их больше, тем больше сила мышцы. Количество задействованных волокон зависит от импульса ЦНС и порога действия органов Гольджи : чем сильнее импульс, тем больше волокон может вовлечься в работу, однако импульсы выше некоторого порога подавляются органами Гольджи, чтобы человек не мог сознательно применить силу, способную привести к разрыву сухожилий. Тренировки с субмаксимальными и запредельными весами способны воздействовать как на способность генерировать импульс, так и на порог его подавления6.
Естественные рычаги человека и техника выполнения упражнения. У каждого человека есть свои рычаги, дающие ему преимущества в тех или иных типах движений. Кроме того, можно откорректировать технику выполнения упражнения так, что амплитуда движения уменьшится в несколько раз, вдобавок при движении основную работу будут выполнять наиболее сильные пучки мышц. Этот фактор не относится конкретно к силе, но фактически его учёт поможет увеличить демонстрируемые результаты.
Подытожив, можно сказать, что сила спортсмена зависит от генетики (в плане соотношения мышечных волокон, рычагов и т. п.), опыта тренировок (чем больше опыт, тем больше может быть как импульс ЦНС, так и порог его подавления, так и запасы креатинфосфата и т. п.) и конституции (типа телосложения, роста как такового, соотношения роста и функционального веса). Сама техника упражнений учитываться не будет.
Гипотеза исследования состоит в том, что одноповторный максимум можно с небольшими ошибками предсказать через многоповторный при помощи модели вида
\[RM=MRM \cdot (x+y\cdot REPS)+f(MRM,HEIGHT,WEIGHT)+\varepsilon\] с поправками на телосложение, опыт тренировок, диапазон повторений или некоторые другие факторы.
Здесь \(x, y\) – некоторые числа, \(f\) – функция, которую ещё придётся подобрать, \(\varepsilon\) – ошибка, вносимая неучтёнными факторами. При этом предполагается, что искомая зависимость очень близка к линейной, то есть первое слагаемое вносит основной вклад в сумму; это объясняется тем, что интуитивно ясно логическое заключение: из \(50*6 \approx 60\) (вес 50 на 6 раз примерно значит 60 на раз) должно следовать \(100*6 \approx 120\) с, возможно, небольшими поправками (до 10%) на другие факторы (функция \(f\)). С другой стороны, формула должна быть верна независимо от того, указывается вес в килограммах или фунтах.
Поправка на диапазон повторений имеет следующие соображения. Ввиду физиологии в разных диапазонах повторений проявляются разные мышечные способности, не все из которых тесно связаны с целевыми мышечными качествами – абсолютной силой и мощностью. Почти очевидно, что сила человека в одном повторении хорошо коррелирует с силой в двух-пяти повторениях, но то, поднимет ли человек указанный вес на 12 раз или на 20, зависит от его силовой выносливости, которая не вносит большого вклада при работе на одно повторение. Если не вдаваться в подробности, это объясняется тем, что в малом числе повторений основную роль играют запасы креатинфосфата и АТФ, ферментация, напряжение нервного импульса, количество задействованных белых волокон и их сечение, а в большом числе повторений (больше 10-15) существенную роль играет тренированность красных волокон и способность мышц быстро утилизировать продукты метаболических реакций7 (если утилизация быстрая, спортсмен сможет сделать на 3-5 повторений больше, а если медленная, то даже огромная сила воли не поможет сделать 2-3 лишних повторения из-за чувствительности к падению pH).
Согласно Хетфилду, сила развивается исключительно при работе с весами не меньше 80% от ПМ и при этом спортсмены среднего уровня способны выполнить 10-15 повторений с 80% от своего ПМ; то, какой вес человек поднимает на более чем (предположительно) 15 раз, мало говорит о том, какой вес он способен взять на раз.
Кроме того, в статье Вадима Протасенко прослеживается такая идея: разное число повторений требует своего времени на выполнение, а в зависимости от времени работы мышцы включается свой режим энергообмена: примерно через 7 секунд работы запасы креатинфосфата израсходованы больше чем наполовину, алаклатный режим работы (за счёт креатина) завершается через 12 секунд, потом начинается гликолиз (за счёт гликогена), а через 30-60 секунд работы начинается окисление. При этом, если учитывать, что за 30 секунд обычно делается 10 повторений в жиме и 8 в приседе/тяге, можно сделать выводы, что чисто силовые качества проявляют себя (конечно, приблизительно) в первых пяти повторениях, а силовая выносливость заканчивает оказывать влияние на 15-м повторении; всё, что выше 15-20-ти повторений – вообще не имеет отношения к силе8.
К сожалению, планируемая модель априори не сможет идеально точно предсказывать результаты конкретных спортсменов. Существует также множество причин, почему модель, возможно, не выявит реальные закономерности в генеральной совокупности:
Опрос проводился почти полностью в Интернете, точность и честность ответов остаются на совести испытуемых. Быть может, кто-то грубо округлил свои данные или назвал данные, которые нельзя считать идентичными (например, разница между выявлением ПМ и МПМ составляла большой срок, отчего уже нельзя говорить, что исследуемые возможности принадлежат одному и тому же телу ) либо не совсем понял целей опроса и назвал заниженные результаты (например, тяжёлый разминочный подход на 3 повторения, когда в действительности возможно сделать 5).
Через опрос невозможно выявить, предположительно, такие имеющие большое значение факторы как естественные рычаги, процент жира в организме (процент веса, который условно не имеет вклада в результаты, зато может испортить статистику), особенности техники и качества выполнения движений. По этой причине многие люди, которые в рамках опроса имеют идентичные параметры, могут иметь совершенно разные результаты, поскольку при одинаковом росте, весе и возрасте у одного больше функциональной массы, у другого ноги длиннее, один использовал бинты (дающие прибавку 5-15 кг и не считающиеся экипировкой), другой нет, один жал по всем правилам, другой в отбив и т. п.
Есть множество факторов, оказывающих большое влияние, трудно измеримых и при этом варьирующихся у одного и того же человека. Например, при одних и тех же мышцах человек может поднять один и тот же вес на 3 или 5 раз в зависимости от уровня креатинфосфата и психологического настроя; при следующей тренировке эти параметры могут быть уже значимо другими, отчего правила, хорошо работавшие недавно, перестанут хорошо работать сейчас.
В то же время имеются доводы в пользу модели:
ПМ предсказывается не только на основе роста или веса, но и на основе многоповторного максимума, то есть не многим меньшего веса и числа повторений с ним. Нельзя отрицать, что при каких-то условиях МПМ всё же содержит немалую информацию о ПМ.
Существует модель Вендлера (и схожие подели), которая приемлемо работает для многих спортсменов. Сам факт наличия такой модели говорит о том, что ПМ можно описать через МПМ в какой-то степени или хотя бы для какой-то группы людей.
Можно долго рассуждать о том, будет работать модель или нет и почему, но для того и проводится исследование, чтобы найти математически обоснованный ответ.
Сперва будет произведён разведочных анализ собранных данных с целью выявить в них некоторые закономерности, подтвердить или опровергнуть некоторые простые гипотезы, обнаружить выбросы, принять решение о включении тех или иных факторов в модель.
После этого будет построена серия моделей, среди которых будет выбрана лучшая. По правилам машинного обучения лучшей моделью считается та, что даёт наименьшую ошибку при перекрёстной проверке и (согласно принципу бритвы Оккама) наиболее проста в объяснении. Параллельно будем проверять достоверность уже известных моделей.
В конце я сделаю выводы и опишу возможности применения полученной модели.
С помощью опроса было получено всего 174 достоверных наблюдения (исключая явные аномалии), принадлежащие предположительно 157 людям9; они содержатся в файле data(rus).tsv.
Все наблюдения содержат информацию о нескольких переменных. После некоторых преобразований над этими переменными получаем следующий набор предикторов:
RM – собственно повторный максимум
MRM – многоповторный максимум
Count – количество повторений для многоповторного максимума
Action – движение для которого верны измерения (Жим, Тяга, Присед – самые базовые упражнения)
Sex – пол испытуемого
Experience – группа опыта (До двух лет, 2-3 года, 4-5 лет, 6-10 лет, больше 10 лет)
Age – возраст
Weight – собственный вес
Height – рост
BodyType – тип телосложения (Эктоморф, Мезоморф, Эндоморф). Типы телосложения в целом различаются скоростью обмена веществ и строением скелета, рычагами (хотя различия в строении скелета во многом являются следствием скорости обмена веществ)
CountGroup – группа по диапазону повторений (2-3, 4-6, 7-10, 11-20, >20)
AgeGroup – возрастная группа (<20, 20-27, 28-35, >35)
Index – индекс массы тела, ИМТ
IndexGroup – группа по индексу массы тела (выраженный дефицит, дефицит, норма, избыток, ожирение1, ожирение2, ожирение3 в соответствии с рекомендациями ВОЗ)
Основные статистики по данным переменным:
numcols = sapply(data, is.numeric)
# для числовых переменных
tt = data[, numcols] %>% psych::describe()
tt[, c(3, 4, 5, 7, 8, 9, 10)] %>% kable(digits = 3)
| mean | sd | median | mad | min | max | range | |
|---|---|---|---|---|---|---|---|
| RM | 154.121 | 51.089 | 147.500 | 48.184 | 20.000 | 300.000 | 280.000 |
| MRM | 127.158 | 42.675 | 120.000 | 40.771 | 15.000 | 250.000 | 235.000 |
| Count | 8.144 | 7.071 | 6.000 | 4.448 | 2.000 | 35.000 | 33.000 |
| Age | 28.017 | 8.990 | 27.000 | 8.896 | 15.000 | 62.000 | 47.000 |
| Weight | 89.608 | 18.883 | 87.000 | 17.050 | 47.000 | 160.000 | 113.000 |
| Height | 176.931 | 8.252 | 177.000 | 8.896 | 155.000 | 198.000 | 43.000 |
| Index | 28.474 | 5.011 | 27.767 | 4.708 | 18.827 | 45.269 | 26.442 |
# для факторных переменных
data[, !numcols] %>% select(-Mail) %>% summary() %>% xtable(caption = "Количество наблюдений в каждой группе по факторным переменным")
Сама таблица data (используемый датасет), отсортированная по некоторым столбцам:
Сделаем некоторые выводы о выборке. Почти все испытуемые – мужчины, поэтому результаты, которые будут получены, не следует обобщать на женщин. Возможно даже, что позднее придётся удалить принадлежащие женщинам наблюдения из выборки, если окажется, что те сильно выделяются.
Среди испытуемый почти половину составляли эндоморфы:
и тест хи-квадрат говорит, что это отличие статистически значимо, то есть среди пауэрлифтеров эндоморфы встречаются чаще эктоморфов или мезоморфов:
| Test statistic | df | P value |
|---|---|---|
| 16.28 | 2 | 0.0002914 * * * |
Больше половины наблюдений относятся к жиму лёжа. Я думаю, это связано с тем, что большинство спортсменов просто предпочитают это упражнение двум другим, вдобавок на жиме лёжа относительно проще замерять МПМ и, скорее всего, многие из ответивших специализировались именно на жиме лёжа (жимовики).
Распределение по другим факторам:
Распределение по индексу массы тела:
| выраженный дефицит | дефицит | норма | избыток | ожирение1 | ожирение2 | ожирение3 | |
|---|---|---|---|---|---|---|---|
| Эктоморф | 0 | 0 | 12 | 18 | 3 | 0 | 0 |
| Мезоморф | 0 | 0 | 19 | 23 | 5 | 1 | 0 |
| Эндоморф | 0 | 0 | 3 | 26 | 33 | 8 | 6 |
Видно, что среди ответивших нет людей с дефицитом веса и немалая часть имеет нормальный вес, немалая – “избыток” (предположительно за счёт мышечной массы), но так называемое “ожирение1” (с большой вероятностью связанное с жировыми отложениями) у эндоморфов встречается чаще, чем в других телосложениях. Это подтверждает тест пропорций:
tb = data.unique %>% mutate(Obees = ifelse(IndexGroup == "ожирение1", "да", "нет")) %>%
select(Obees, BodyType) %>% table()
tb %>% t() %>% prop.test() %>% pander() #для всех
| Test statistic | df | P value | Alternative hypothesis | prop 1 |
|---|---|---|---|---|
| 22.88 | 2 | 1.073e-05 * * * | two.sided | 0.09091 |
| prop 2 | prop 3 |
|---|---|
| 0.1042 | 0.4342 |
data.unique %>% mutate(Obees = ifelse(IndexGroup == "ожирение1", "да", "нет"), Bd = ifelse(BodyType ==
"Эндоморф", 1, 0)) %>% select(Obees, Bd) %>% table() %>% t() %>% prop.test() %>%
pander() # eсли разделить на эндоморфов и всех остальных
| Test statistic | df | P value | Alternative hypothesis | prop 1 | prop 2 |
|---|---|---|---|---|---|
| 21.16 | 1 | 4.223e-06 * * * | two.sided | 0.09877 | 0.4342 |
Аналогично дисперсионный анализ показывает, что эндоморфы имеют больший ИМТ:
aov(Index ~ BodyType, data) %>% summary() %>% pander()
| Df | Sum Sq | Mean Sq | F value | Pr(>F) | |
|---|---|---|---|---|---|
| BodyType | 2 | 1231 | 615.6 | 33.82 | 4.201e-13 |
| Residuals | 171 | 3112 | 18.2 | NA | NA |
t.test(data %>% filter(BodyType != "Эндоморф") %>% select(Index) %>% t() %>% as.numeric(),
data %>% filter(BodyType == "Эндоморф") %>% select(Index) %>% t() %>% as.numeric()) %>%
pander()
| Test statistic | df | P value | Alternative hypothesis | mean of x |
|---|---|---|---|---|
| -8.105 | 152.2 | 1.608e-13 * * * | two.sided | 25.87 |
| mean of y |
|---|
| 31.14 |
Иллюстрация некоторых парных взаимодействий:
Корреляции количественных переменных:
Зависимость повторного максимума от индекса массы тела:
Оценка коэффициента простой регрессионной модели в зависимости от числа повторений:
Из следующего графика может следовать, что начиная с 8-9 повторений зависимость между МПМ и ПМ ослабевает:
Либо здесь имеется проблема с данными, так как на 9-м повторении корреляция резко уменьшается (мало наблюдений):
tibble(`Число повторений` = 2:10, `Корреляция MRM & RM` = sapply(2:10, function(x) data %>%
filter(Count == x) %$% cor(RM, MRM)), `Нижняя граница` = sapply(2:10, function(x) data %>%
filter(Count == x) %$% cor.test(RM, MRM)$conf.int[1]), `Верхняя граница` = sapply(2:10,
function(x) data %>% filter(Count == x) %$% cor.test(RM, MRM)$conf.int[2]), `Всего наблюдений` = sapply(2:10,
function(x) data %>% filter(Count == x) %>% nrow())) %>% kable(caption = "Корреляция между MRM & RM для каждого повторения",
align = "ccccc")
| Число повторений | Корреляция MRM & RM | Нижняя граница | Верхняя граница | Всего наблюдений |
|---|---|---|---|---|
| 2 | 0.9980117 | 0.9949986 | 0.9992103 | 21 |
| 3 | 0.9919420 | 0.9818449 | 0.9964336 | 26 |
| 4 | 0.9947569 | 0.9838325 | 0.9983060 | 15 |
| 5 | 0.9891096 | 0.9734436 | 0.9955548 | 22 |
| 6 | 0.9942644 | 0.9814191 | 0.9982374 | 14 |
| 7 | 0.9936119 | 0.9687446 | 0.9987074 | 9 |
| 8 | 0.9964144 | 0.9876689 | 0.9989606 | 13 |
| 9 | 0.9581086 | 0.4902757 | 0.9973273 | 5 |
| 10 | 0.9890079 | 0.9645992 | 0.9966159 | 14 |
Есть ли разница в этих процентах для разных движений или телосложений? Дисперсионный анализ показывает, что нет, значимых различий не обнаружено (все p-значения больше 0.05):
# есть ли разница в проценте в зависимости от чего-то
# cat('p-значения для телосложений:\n')
pvalues1 = sapply(2:10, function(x) data %>% filter(Count == x) %$% aov(MRM/RM ~
BodyType, .) %>% summary() %$% .[[1]][["Pr(>F)"]][1])
names(pvalues1) = paste(2:10, "repeats")
# cat('p-значения для типа движения:\n')
pvalues2 = sapply(2:6, function(x) data %>% filter(Count == x) %$% aov(MRM/RM ~ Action,
.) %>% summary() %$% .[[1]][["Pr(>F)"]][1]) %>% round(7)
names(pvalues2) = paste(2:6, "repeats")
# cat('p-значения для групп по индексу массы:\n')
pvalues3 = sapply(2:10, function(x) data %>% filter(Count == x) %$% aov(MRM/RM ~
IndexGroup, .) %>% summary() %$% .[[1]][["Pr(>F)"]][1])
names(pvalues3) = paste(2:10, "repeats")
tibble(`Число повторений` = 2:10, `p-значения для телосложений` = pvalues1, `p-значения для типа движения` = c(pvalues2,
rep("мало данных", 4)), `p-значения для групп по индексу массы` = pvalues3) %>%
kable(caption = "p-значения для разных факторных переменных на каждом числе повторений",
align = "cccc")
| Число повторений | p-значения для телосложений | p-значения для типа движения | p-значения для групп по индексу массы |
|---|---|---|---|
| 2 | 0.9458770 | 0.7730952 | 0.8959581 |
| 3 | 0.8956176 | 0.1384093 | 0.2062476 |
| 4 | 0.9985364 | 0.279419 | 0.8345974 |
| 5 | 0.3427142 | 0.9919357 | 0.5228145 |
| 6 | 0.7269629 | 0.2637337 | 0.3154734 |
| 7 | 0.8204683 | мало данных | 0.9085377 |
| 8 | 0.6248755 | мало данных | 0.7177698 |
| 9 | 0.2564939 | мало данных | 0.4490970 |
| 10 | 0.0878330 | мало данных | 0.7676728 |
Применим тест Стьюдента для определения предсказываемых процентов и доверительных интервалов для них:
df = data %>% mutate(perc = 100 * MRM/RM) %>% filter((Count <= 12 & Count%%2 == 0) |
Count == 15 | Count == 20) %>% group_by(factor(Count)) %>% summarise(mean = t.test(perc,
conf.level = 0.99)$estimate, down = t.test(perc, conf.level = 0.99)$conf.int[1],
up = t.test(perc, conf.level = 0.99)$conf.int[2])
names(df) = c("Число повторений", "Ожидаемый %", "Нижняя граница", "Верхняя граница")
df %>% kable(caption = "Какой % составляет МПМ от ПМ", align = "ccc")
| Число повторений | Ожидаемый % | Нижняя граница | Верхняя граница |
|---|---|---|---|
| 2 | 93.54267 | 92.03110 | 95.05425 |
| 4 | 89.07451 | 86.50007 | 91.64895 |
| 6 | 85.58991 | 81.56746 | 89.61236 |
| 8 | 80.55848 | 78.43606 | 82.68090 |
| 10 | 77.84473 | 74.63339 | 81.05607 |
| 12 | 75.48574 | 68.66088 | 82.31060 |
| 15 | 74.47497 | 64.50324 | 84.44670 |
| 20 | 72.62619 | 54.19540 | 91.05698 |
В целом эти данные согласуются с тем, что используются National Strength and Conditioning Association (NSCA):
Хотя есть и отличия: вес на 2 повторения скорее равен 94% от максимума, а не 95%, а вес на 12 повторений – это скорее 70% от максимума, а не 67%.
Теперь посмотрим на зависимость повторного максимума от многоповторного:
Очевидно, что здесь будет близкая к линейной зависимость (учитывая высокую корреляцию). Оказывается, если предварительно разбить наблюдения на группы по повторениями, линейность станет намного более выраженной для числа повторений не больше 10 (для большего числа повторений не прослеживается явной линейности либо из-за недостатка данных, либо по физиологическим причинам, озвученным ранее; для диапазона 11-20 возможна квадратичная зависимость, но мало данных, чтобы что-то подтвердить):
Сказанное выше значит, что для каждого диапазона повторений нужен отдельный анализ.
Есть ли зависимость между отношением \(\frac{RM}{MRM}\) в зависимости от опыта тренировок и других факторов? Дисперсионный анализ показывает, что в целом нет:
# есть ли значимые различия в разных возрастных группах для фиксированного
# диапазона
tibble(`Диапозон повторений` = levels(data$CountGroup), Опыт = sapply(levels(data$CountGroup),
function(x) aov(RM/MRM ~ Experience, data %>% filter(CountGroup == x)) %>% summary() %$%
.[[1]][["Pr(>F)"]][1]), Возраст = sapply(levels(data$CountGroup), function(x) aov(RM/MRM ~
AgeGroup, data %>% filter(CountGroup == x)) %>% summary() %$% .[[1]][["Pr(>F)"]][1]),
ИМТ = sapply(levels(data$CountGroup), function(x) aov(RM/MRM ~ IndexGroup, data %>%
filter(CountGroup == x)) %>% summary() %$% .[[1]][["Pr(>F)"]][1]), Телосложение = sapply(levels(data$CountGroup),
function(x) aov(RM/MRM ~ BodyType, data %>% filter(CountGroup == x)) %>%
summary() %$% .[[1]][["Pr(>F)"]][1])) %>% kable(caption = "Значимость различий отношения ПМ к МПМ в каждом диапазоне повторений при разных уровнях факторных переменных",
align = "ccccc")
| Диапозон повторений | Опыт | Возраст | ИМТ | Телосложение |
|---|---|---|---|---|
| 2-3 | 0.6506219 | 0.7671962 | 0.5516303 | 0.7779869 |
| 4-6 | 0.6178563 | 0.6907457 | 0.6655732 | 0.5432097 |
| 7-10 | 0.1237067 | 0.8407336 | 0.8969795 | 0.3628399 |
| 11-20 | 0.7293524 | 0.0354352 | 0.0304071 | 0.6845562 |
| >20 | 0.8249503 | 0.5901704 | 0.2511299 | 0.3736225 |
Единственное: обнаружилась разница в зависимости от возраста и индекса массы тела для диапазона повторений 11-20. Возможно, это связано с тем, что в целом с увеличением возраста увеличивается уровень подготовки, отчего на более чем 10 раз удаётся поднимать больший процент от максимального веса.
Кроме того, возможна разница между самими упражнениями (движениями):
# p-значения в зависимости от типа телосложения
(sapply(levels(data$CountGroup), function(x) aov(RM/MRM ~ Action, data %>% filter(CountGroup ==
x)) %>% summary() %$% .[[1]][["Pr(>F)"]][1])) %>% pander()
| 2-3 | 4-6 | 7-10 | 11-20 | >20 |
|---|---|---|---|---|
| 0.06367 | 0.2752 | 0.006814 | 0.7637 | 0.1085 |
ggplot(data %>% filter(Count <= 20), aes(x = Action, y = RM/MRM)) + geom_boxplot() +
facet_grid(vars(CountGroup)) + theme_bw() + labs(x = "Движение") + coord_flip()
Дополнительные закономерности:
Часто при сборе данных возникают ненормальные наблюдения, полученные из-за опечаток или недопониманий. В этот раз таких наблюдений накопилось около 10%. Если поразмыслить над их причинностью, то чаще всего испытуемый забывал поставить цифру “1” перед числом, в результате вместо роста 175 получался рост 75 и т. п.
В то же время могло быть и так, что испытуемый неверно понял суть эксперимента и в анкете описывал просто подход, который был выполнен, а не подход для многоповторного максимума (то есть на пределе усилий), либо при проходке использовал экипировку или другую технику упражнения, либо, опять же, опечатался; в итоге жим 170х5 оказывался равным 220, хотя ясно, что тут должны стоять 170х5 и 200 либо 170х15 и 220.
С такими выбросами можно сделать только две вещи:
В итоге некоторые данные были исправлены на более вероятный вариант, а явные непонятные аномалии были удалены из выборки. В файле с исходными данными содержатся комментарии, где и что я исправил и почему.
Перед построением модели из обучающей выборки заранее были исключены следующие наблюдения:
некоторые выбросы, в том числе несколько наблюдений, которые изначально не вписывались в модель и по логике очень сомнительны; речь идёт о наблюдениях типа \(120*3=140\), хотя интуитивно понятно, что 140 – это как минимум 120 на 5; возможно, подход 120 на 3 был сделан в достаточно отдалённый от проходки период либо во время проходки в качестве разминочного, то есть его нельзя считать многоповторным максимумом, эквивалентным повторному максимуму; конечно, здесь может играть роль какой-то особый случай11, который является выбросом (потому должен быть исключён) либо не может быть выявлен по тому набору признаков, которые доступны в нашем случае;
наблюдения с числом повторений больше 20, так как сама идея предсказать 1ПМ по, например, 30 ПМ – абсурдна, поскольку здесь имеют место в корне разные нагрузки, задействуются разные типы мышечных волокон и имеет место разный энергетический обмен; по этой причине использование таких данных при создании моделей приводит к искажениям, а для самих этих наблюдений модель предсказывает лишь какую-то нижнюю границу 1ПМ, в чём нет смысла12; вдобавок, для таких предсказаний сложнее определить аномальные наблюдения в смысле предыдущего пункта; кроме того, даже на графиках видно, что диапазон выше 20 очень сильно отличается от остальных диапазонов.
Как итог, теперь для данных верны следующие статистики:
## RM MRM Count Action Sex
## Min. : 20.0 Min. : 15 Min. : 2.000 Жим :116 Мужчина:153
## 1st Qu.:120.0 1st Qu.:100 1st Qu.: 3.000 Тяга : 22 Женщина: 9
## Median :145.0 Median :125 Median : 5.000 Присед: 24
## Mean :152.6 Mean :129 Mean : 6.636
## 3rd Qu.:190.0 3rd Qu.:150 3rd Qu.: 9.000
## Max. :300.0 Max. :250 Max. :20.000
##
## Experience Age Weight Height BodyType
## До двух лет :31 Min. :15 Min. : 47.00 Min. :155 Эктоморф:34
## 2-3 года :28 1st Qu.:21 1st Qu.: 78.00 1st Qu.:170 Мезоморф:46
## 4-5 лет :45 Median :27 Median : 87.00 Median :177 Эндоморф:82
## 6-10 лет :32 Mean :28 Mean : 89.59 Mean :177
## больше 10 лет:26 3rd Qu.:33 3rd Qu.:102.75 3rd Qu.:183
## Max. :62 Max. :160.00 Max. :198
##
## CountGroup AgeGroup Index IndexGroup
## 2-3 :47 <20 :30 Min. :18.83 выраженный дефицит: 0
## 4-6 :51 20-27:55 1st Qu.:25.17 дефицит : 0
## 7-10 :41 28-35:50 Median :27.76 норма :36
## 11-20:23 >35 :27 Mean :28.44 избыток :66
## >20 : 0 3rd Qu.:31.39 ожирение1 :42
## Max. :45.27 ожирение2 :12
## ожирение3 : 6
Перечислим основные идеи об особенностях данных, сказанные ранее:
Любые полученные результаты следует обобщать на женщин, так как в опросе они почти не участвовали. Возможно, ради точности вычислений даже придётся убрать женщин из выборки;
Эндоморфы среди пауэрлифтеров встречаются чаще мезоморфов или эктоморфов. При этом у эндоморфов значимо чаще встречается “ожирение первой стадии”, чем у представителей других телосложений;
Результаты в приседе и тяге растут с увеличением индекса массы тела лишь до некоторого порога. Увеличение индекса массы тела выше “ожирения первой стадии” не будет полезным;
Сильная корреляция между индексом массы тела и повторным максимумом наблюдается у мезофорфов – в жиме, у эктоморфов – в тяге, у эндоморфов – в приседе;
Не обнаружено значимой разницы значений \(\frac{MRM}{RM}\) для разных телосложений, движений, групп по индексу массы, опыта, возраста для любого конкретного числа повторений или диапазона повторений (но при этом обнаружилась разница между движениями для диапазонов повторений до 10); процентовки от National Strength and Conditioning Association (NSCA) с небольшими погрешностями верны для всех спортсменов и всех движений;
Разбиение наблюдений на группы по диапазону повторений (который сделан согласовано с физиологическими соображениями) должно значительно повысить точность модели, причем для числа повторений до 10-20 эта модель крайне близка к линейной;
Наблюдения свыше 20 повторений не будут учитываться, так как их мало, вдобавок этот диапазон слабо коррелирует с абсолютной силой;
При более чем 10 повторений опытные спортсмены способны поднимать более близкие к максимальным веса, чем неопытные.
Соображения о предикторах для модели:
\(RM\) (повторный максимум) обязательно зависит как от \(MRM\) (многоповторный максимум) и \(Count\) (числа повторений), так и от \(CountGroup\) – группы по числу повторений;
\(RM\) может зависеть также от \(BodyType\) (типа телосложения) и \(Action\) (упражнения) либо от их бинарных модификаций (например, если людей разделить не на 3 телосложения, а на эндоморфов и нет); возможно, стоит также попробовать учесть индекс массы тела или собственно вес, имеющие корреляцию с \(RM\) не меньше 0.5.
Дальнейшие действия:
Просмотреть, как работает модель Вендлера, и на её примере ознакомиться с шаблоном по оценке качества, который будет использоваться для оценки следующих моделей.
Построить разные модели для оценки конкретно \(RM\) и выбрать ту, которая более проста и даёт меньшую ошибку кросс-валидации.
Аналогично построить модели для \(\frac{MRM}{RM}\) и выбрать лучшую.
Сравнить две выбранные модели и определить лучшую из них.
Вычислительные возможности позволяют создать и проверить огромное количество моделей. Цель исследователя – предложить несколько вариантов и выбрать среди них лучший. Кроме этого, нужно посмотреть, как работает модель на разных группах данных, чтобы обнаружить выбросы или обнаружить, что на такой-то группе модель вообще не может работать, из-за чего такую группу придётся исключить (эта работа уже проделана при самом исследовании, чтобы не нагружать статью).
Итак, в модели представляют интерес следующие показатели:
ошибки в разных группах данных;
выбросы и влиятельные наблюдения;
статистическая значимость модели;
оценки кросс-валидации.
Применив формулу \(RM=MRM \cdot(1+0.0333 \cdot Count)\) ко всем наблюдениям, получим оценки \(RM\) (Fact), которые будут отличаться от истинного \(RM\) (Target). Разница между этими величинами – остатки. Для модели Вендлера остатки будут следующие:
Здесь такая логика: чем лучше модель, тем “ящики” тоньше и тем их середины ближе к 0.
В данном случае видно, что модель Вендлера хорошо работает почти на всех данных из диапазона 2-3 и на немалой части данных из диапазона 4-6. Для большего числа повторений модель даёт завышенные оценки.
Если посмотреть на численные ошибки
## Ошибки модели (выведены 15 элементов с наибольшими ошибками):
##
##
## Fact Target ERROR ErrorPercent MRM Count Action Sex Weight CountGroup Index
## ----- ------- -------- ------------- ---- ------ ------- -------- ------- ----------- ---------
## 283 230 53.2200 23.139130 170 20 Тяга Мужчина 82 11-20 25.88057
## 333 290 43.2000 14.896552 200 20 Тяга Мужчина 107 11-20 31.26370
## 200 160 39.9200 24.950000 120 20 Жим Мужчина 115 11-20 30.24326
## 255 220 34.9150 15.870454 170 15 Присед Мужчина 90 11-20 32.27079
## 240 205 34.9100 17.029268 150 18 Жим Мужчина 110 11-20 38.06228
## 262 230 32.4125 14.092391 175 15 Присед Мужчина 92 11-20 27.17391
## 180 150 29.9400 19.960000 120 15 Жим Мужчина 87 11-20 28.40816
## 154 130 23.9560 18.427692 110 12 Присед Мужчина 80 11-20 26.42357
## 157 135 21.6100 16.007407 100 17 Жим Мужчина 75 11-20 25.35154
## 210 190 19.9400 10.494737 150 12 Жим Мужчина 105 11-20 32.40741
## 220 200 19.9300 9.965000 150 14 Жим Мужчина 83 11-20 28.38480
## 198 215 17.0180 7.915349 180 3 Присед Мужчина 84 2-3 30.11940
## 147 130 16.6300 12.792308 110 10 Жим Мужчина 100 7-10 28.29335
## 187 170 16.6200 9.776471 140 10 Тяга Мужчина 77 7-10 24.57787
## 156 140 15.9640 11.402857 120 9 Жим Мужчина 77 7-10 28.62879
##
## ------------> Наибольшая ошибка в большую сторону: 53.22
## ------------> Наибольшая ошибка в меньшую сторону: 17.018
## Модель ошиблась более чем на 5 % в 48 случаях из 162 ( 29.62963 %)
## Модель ошиблась более чем на 5 кг в 69 случаях из 162 ( 42.59259 %)
## ----------------> Статистика по ошибкам в процентах:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.009091 1.466058 2.895000 4.466610 6.231771 24.950000
## -------------------> Среднеквадратичная ошибка: 10.79902
увидим, что модель заметно ошибается в 30% случаев и в среднем на почти 5%. Первые формулы Мориса и Райдина показывают худший результат:
## Ошибки модели (выведены 15 элементов с наибольшими ошибками):
##
##
## Fact Target ERROR ErrorPercent MRM Count Action Sex Weight CountGroup Index
## ----- ------- --------- ------------- ------ ------ ------- -------- ------- ----------- ---------
## 214 160.0 54.49607 34.060045 120.0 20 Жим Мужчина 115 11-20 30.24326
## 252 205.0 47.21174 23.030117 150.0 18 Жим Мужчина 110 11-20 38.06228
## 245 285.0 40.32727 14.149919 220.0 8 Присед Мужчина 90 7-10 30.07117
## 172 210.0 38.08000 18.133332 150.0 10 Присед Мужчина 100 7-10 29.86055
## 185 220.0 34.64382 15.747191 150.0 15 Присед Мужчина 100 11-20 29.53686
## 184 150.0 34.08110 22.720734 120.0 15 Жим Мужчина 87 11-20 28.40816
## 209 242.5 33.06764 13.636140 180.0 11 Тяга Мужчина 78 11-20 25.18079
## 194 225.0 30.74906 13.666249 180.0 6 Тяга Мужчина 90 4-6 26.29657
## 270 300.0 30.20703 10.069009 250.0 6 Присед Мужчина 117 4-6 31.41024
## 180 210.0 29.87365 14.225546 152.5 12 Тяга Мужчина 85 11-20 25.10633
## 186 215.0 29.32444 13.639276 180.0 3 Присед Мужчина 84 2-3 30.11940
## 163 135.0 28.07674 20.797583 100.0 17 Жим Мужчина 75 11-20 25.35154
## 173 200.0 27.33250 13.666249 160.0 6 Тяга Мужчина 120 4-6 34.68609
## 237 262.0 24.58218 9.382513 220.0 6 Тяга Мужчина 89 4-6 26.28781
## 186 210.0 24.32444 11.583069 180.0 3 Присед Мужчина 125 2-3 36.13134
##
## ------------> Наибольшая ошибка в большую сторону: 54.49607
## ------------> Наибольшая ошибка в меньшую сторону: 40.32727
## Модель ошиблась более чем на 5 % в 71 случаях из 162 ( 43.82716 %)
## Модель ошиблась более чем на 5 кг в 92 случаях из 162 ( 56.79012 %)
## ----------------> Статистика по ошибкам в процентах:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.03358 1.89439 4.28278 5.81013 8.61114 34.06004
## -------------------> Среднеквадратичная ошибка: 13.73176
На самом деле это две формулы вида
\[\log \left(\frac{RM}{MRM}\right)= a+b \cdot Count,\]
где \(a,b\) зависят от того, к какой части тела относится упражнение. Сама идея сделать логарифмическое преобразование используется нередко, но здесь это имеет негативный эффект: \(R^2\) равен далеко не 0.99, как сказано на сайте:
| Estimate | Std. Error | t value | Pr(>|t|) | |
|---|---|---|---|---|
| (Intercept) | 0.06472 | 0.01162 | 5.57 | 1.071e-07 |
| Action2Up | -0.02185 | 0.01395 | -1.567 | 0.1191 |
| Action2Down:Count | 0.01701 | 0.001341 | 12.69 | 7.031e-26 |
| Action2Up:Count | 0.01823 | 0.001013 | 17.99 | 4.325e-40 |
| Observations | Residual Std. Error | \(R^2\) | Adjusted \(R^2\) |
|---|---|---|---|
| 162 | 0.04448 | 0.7585 | 0.7539 |
Скорее всего, формулы Мориса и Райдина подгонялись на маленькой выборке или на выборке, в которой почти все данные принадлежали нескольким людям.
Теперь возьмём модель вида \(RM=MRM \cdot(a+b \cdot Count)\) и подберём коэффициенты \(a,b\) лучшим образом. В итоге:
## Ошибки модели (выведены 15 элементов с наибольшими ошибками):
##
##
## Fact Target ERROR ErrorPercent MRM Count Action Sex Weight CountGroup Index
## ----- ------- --------- ------------- ------ ------ ------- -------- ------- ----------- ---------
## 189 210.0 21.46997 10.223794 150.0 10 Присед Мужчина 100 7-10 29.86055
## 249 230.0 19.33226 8.405329 170.0 20 Тяга Мужчина 82 11-20 25.88057
## 267 285.0 17.72020 6.217613 220.0 8 Присед Мужчина 90 7-10 30.07117
## 176 160.0 15.99924 9.999525 120.0 20 Жим Мужчина 115 11-20 30.24326
## 204 220.0 15.73546 7.152481 150.0 15 Присед Мужчина 100 11-20 29.53686
## 100 115.0 15.27088 13.279030 70.0 18 Жим Мужчина 70 11-20 24.22145
## 200 215.0 15.19793 7.068807 180.0 3 Присед Мужчина 84 2-3 30.11940
## 211 225.0 13.86909 6.164039 180.0 6 Тяга Мужчина 90 4-6 26.29657
## 163 150.0 13.41163 8.941089 120.0 15 Жим Мужчина 87 11-20 28.40816
## 143 130.0 12.87081 9.900626 110.0 12 Присед Мужчина 80 11-20 26.42357
## 230 242.5 12.48768 5.149558 180.0 11 Тяга Мужчина 78 11-20 25.18079
## 188 200.0 12.32808 6.164039 160.0 6 Тяга Мужчина 120 4-6 34.68609
## 88 100.0 12.01932 12.019318 70.0 10 Тяга Мужчина 63 7-10 19.23018
## 198 210.0 11.92910 5.680523 152.5 12 Тяга Мужчина 85 11-20 25.10633
## 103 115.0 11.73280 10.202438 85.0 8 Жим Мужчина 76 7-10 25.10239
##
## ------------> Наибольшая ошибка в большую сторону: 19.33226
## ------------> Наибольшая ошибка в меньшую сторону: 21.46997
## Модель ошиблась более чем на 5 % в 39 случаях из 162 ( 24.07407 %)
## Модель ошиблась более чем на 5 кг в 66 случаях из 162 ( 40.74074 %)
## ----------------> Статистика по ошибкам в процентах:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.001034 1.344302 3.072494 3.463881 4.816583 13.279030
## -------------------> Среднеквадратичная ошибка: 6.656834
## Оценка кросс-валидации для всего набора данных 45.73245
## Оценка кросс-валидации для не более чем 10 повторений 32.74441
## Оценка кросс-валидации для не более чем 6 повторений 30.14845
## -----> ОБЩАЯ ИНФОРМАЦИЯ О МОДЕЛИ:
##
##
## Call:
## lm(formula = RM ~ MRM + MRM:Count - 1, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -19.3323 -4.3200 -0.4872 3.9362 21.4700
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## MRM 1.0470734 0.0067757 154.53 <2e-16 ***
## MRM:Count 0.0209793 0.0008774 23.91 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.698 on 160 degrees of freedom
## Multiple R-squared: 0.9983, Adjusted R-squared: 0.9983
## F-statistic: 4.664e+04 on 2 and 160 DF, p-value: < 2.2e-16
##
##
## ASSESSMENT OF THE LINEAR MODEL ASSUMPTIONS
## USING THE GLOBAL TEST ON 4 DEGREES-OF-FREEDOM:
## Level of Significance = 0.05
##
## Call:
## gvlma::gvlma(x = mdl)
##
## Value p-value Decision
## Global Stat 15.1022 0.004494 Assumptions NOT satisfied!
## Skewness 3.1467 0.076078 Assumptions acceptable.
## Kurtosis 1.9628 0.161218 Assumptions acceptable.
## Link Function 0.2725 0.601627 Assumptions acceptable.
## Heteroscedasticity 9.7202 0.001823 Assumptions NOT satisfied!
## Value p-value Decision
## Global Stat 15.1022329 0.004493809 Assumptions NOT satisfied!
## Skewness 3.1467476 0.076078463 Assumptions acceptable.
## Kurtosis 1.9627685 0.161217544 Assumptions acceptable.
## Link Function 0.2725495 0.601626657 Assumptions acceptable.
## Heteroscedasticity 9.7201673 0.001822569 Assumptions NOT satisfied!
##
## -----> БАЗОВЫЕ ГРАФИКИ:
##
## -----> ТЕСТ НА НОРМАЛЬНОСТЬ РАСПРЕДЕЛЕНИЯ ОСТАТКОВ
##
##
## Shapiro-Wilk normality test
##
## data: mdl$residuals
## W = 0.98782, p-value = 0.1726
## -----> ФАКТОР ИНФЛЯЦИИ ДИСПЕРСИЙ:
##
## MRM MRM:Count
## 3.057194 3.057194
##
## -----> ТЕСТ НА АВТОКОРРЕЛЯЦИЮ:
##
## lag Autocorrelation D-W Statistic p-value
## 1 0.07681102 1.839824 0.294
## Alternative hypothesis: rho != 0
##
## -----> ТЕСТ НА ВЫБРОСЫ И ВЛИЯТЕЛЬНЫЕ НАБЛЮДЕНИЯ:
##
## No Studentized residuals with Bonferroni p < 0.05
## Largest |rstudent|:
## rstudent unadjusted p-value Bonferroni p
## 118 3.325731 0.0010952 0.17741
## -----> ВЫБРОСЫ И ВЛИЯТЕЛЬНЫЕ НАБЛЮДЕНИЯ:
##
##
## RM MRM Count Action Sex Experience Age Weight Height BodyType IndexGroup
## ---- ---- ------ ------- -------- -------------- ---- ------- ------- --------- -----------
## 290 200 20 Тяга Мужчина 6-10 лет 28 107 185 Эндоморф ожирение1
## 230 170 20 Тяга Мужчина 6-10 лет 25 82 178 Эндоморф избыток
## 210 150 10 Присед Мужчина больше 10 лет 42 100 183 Мезоморф избыток
## 160 120 20 Жим Мужчина 4-5 лет 22 115 195 Эндоморф ожирение1
Выше приведена вся необходимая информация о качестве модели (назовём эту модель \(b_1\)). Из неё важнее всего следующее:
На выборочных данных модель ошибается максимум на 21кг и 13%;
В среднем модель ошибается на 3%;
В 75% случаев ошибка не превышала 5%;
Наибольший разброс ошибок приходится на диапазон 11-20;
Модель статистически значима и удовлетворяет всем нужным требованиям, кроме гетероскедастичности;
Немало больших ошибок приходится на диапазон 11-20 повторений, содержащий меньше всего наблюдений.
Теперь сделаем поправку для коэффициентов \(a,b\) в зависимости от факторных переменных.
Путём подбора удалось найти две схожие модели (назовём их \(b_2\) и \(b_3\)), немного отличающиеся оценками кросс-валидации на разных диапазонах. Поскольку на диапазоне повторений 11-20 по-прежнему сохранялись сильные ошибки, было принято решение удалить этот диапазон (также это можно обосновать тем, что на этом диапазоне меньше данных и сложнее отлавливать выбросы, да и физиологически он не так тесно связан с силой, как другие, о чём уже было сказано).
Далее приведён анализ для модели \(RM=MRM \cdot(a+b \cdot Count)\), в которой и \(a\) и \(b\) имеют поправку на диапазон повторений.
## Ошибки модели (выведены 15 элементов с наибольшими ошибками):
##
##
## Fact Target ERROR ErrorPercent MRM Count Action Sex Weight CountGroup Index
## ----- ------- ---------- ------------- ------ ------ ------- -------- ------- ----------- ---------
## 192 210 18.248827 8.689918 150.0 10 Присед Мужчина 100 7-10 29.86055
## 199 215 15.665296 7.286184 180.0 3 Присед Мужчина 84 2-3 30.11940
## 271 285 14.260782 5.003783 220.0 8 Присед Мужчина 90 7-10 30.07117
## 142 130 12.462268 9.586360 120.0 6 Жим Мужчина 98 4-6 27.72748
## 237 225 12.437114 5.527606 200.0 6 Жим Мужчина 102 4-6 30.12760
## 107 95 11.846701 12.470212 90.0 6 Жим Мужчина 74 4-6 23.62029
## 214 225 11.306598 5.025155 180.0 6 Тяга Мужчина 90 4-6 26.29657
## 199 210 10.665296 5.078712 180.0 3 Присед Мужчина 125 2-3 36.13134
## 141 130 10.617527 8.167328 110.0 10 Жим Мужчина 100 7-10 28.29335
## 151 140 10.538438 7.527456 120.0 9 Жим Мужчина 77 7-10 28.62879
## 89 100 10.516119 10.516119 70.0 10 Тяга Мужчина 63 7-10 19.23018
## 105 115 10.396211 9.040184 85.0 8 Жим Мужчина 76 7-10 25.10239
## 162 172 10.219244 5.941421 140.0 5 Жим Мужчина 83 4-6 27.73230
## 190 200 10.050309 5.025155 160.0 6 Тяга Мужчина 120 4-6 34.68609
## 174 165 9.417866 5.707798 157.5 3 Жим Мужчина 87 2-3 26.85185
##
## ------------> Наибольшая ошибка в большую сторону: 12.46227
## ------------> Наибольшая ошибка в меньшую сторону: 18.24883
## Модель ошиблась более чем на 5 % в 28 случаях из 139 ( 20.14388 %)
## Модель ошиблась более чем на 5 кг в 44 случаях из 139 ( 31.65468 %)
## ----------------> Статистика по ошибкам в процентах:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00977 0.91712 2.53843 2.98739 4.29788 12.47021
## -------------------> Среднеквадратичная ошибка: 5.529521
## Оценка кросс-валидации для всего набора данных 34.00845
## Оценка кросс-валидации для не более чем 10 повторений 34.80294
## Оценка кросс-валидации для не более чем 6 повторений 31.81374
## -----> ОБЩАЯ ИНФОРМАЦИЯ О МОДЕЛИ:
##
##
## Call:
## lm(formula = RM ~ MRM:Count:CountGroup + MRM:CountGroup - 1,
## data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -12.4623 -3.6210 -0.1014 2.5825 18.2488
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## MRM:CountGroup2-3 0.988699 0.029669 33.324 < 2e-16 ***
## MRM:CountGroup4-6 0.997533 0.035651 27.981 < 2e-16 ***
## MRM:CountGroup7-10 1.039799 0.055896 18.603 < 2e-16 ***
## MRM:Count:CountGroup2-3 0.039572 0.011331 3.492 0.000650 ***
## MRM:Count:CountGroup4-6 0.031609 0.007065 4.474 1.63e-05 ***
## MRM:Count:CountGroup7-10 0.023854 0.006434 3.708 0.000306 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.653 on 133 degrees of freedom
## Multiple R-squared: 0.9987, Adjusted R-squared: 0.9987
## F-statistic: 1.768e+04 on 6 and 133 DF, p-value: < 2.2e-16
##
##
## ASSESSMENT OF THE LINEAR MODEL ASSUMPTIONS
## USING THE GLOBAL TEST ON 4 DEGREES-OF-FREEDOM:
## Level of Significance = 0.05
##
## Call:
## gvlma::gvlma(x = mdl)
##
## Value p-value Decision
## Global Stat 8.359 0.07929 Assumptions acceptable.
## Skewness 2.795 0.09455 Assumptions acceptable.
## Kurtosis 2.394 0.12180 Assumptions acceptable.
## Link Function -2.689 1.00000 Assumptions acceptable.
## Heteroscedasticity 5.858 0.01550 Assumptions NOT satisfied!
## Value p-value Decision
## Global Stat 8.358530 0.07929330 Assumptions acceptable.
## Skewness 2.795168 0.09454886 Assumptions acceptable.
## Kurtosis 2.394055 0.12179736 Assumptions acceptable.
## Link Function -2.689003 1.00000000 Assumptions acceptable.
## Heteroscedasticity 5.858310 0.01550367 Assumptions NOT satisfied!
##
## -----> БАЗОВЫЕ ГРАФИКИ:
##
## -----> ТЕСТ НА НОРМАЛЬНОСТЬ РАСПРЕДЕЛЕНИЯ ОСТАТКОВ
##
##
## Shapiro-Wilk normality test
##
## data: mdl$residuals
## W = 0.98086, p-value = 0.0484
## -----> ФАКТОР ИНФЛЯЦИИ ДИСПЕРСИЙ:
##
## GVIF Df GVIF^(1/(2*Df))
## MRM:CountGroup 60763.96 3 6.270098
## MRM:Count:CountGroup 60763.96 3 6.270098
##
## -----> ТЕСТ НА АВТОКОРРЕЛЯЦИЮ:
##
## lag Autocorrelation D-W Statistic p-value
## 1 -0.0176863 2.032798 0.912
## Alternative hypothesis: rho != 0
##
## -----> ТЕСТ НА ВЫБРОСЫ И ВЛИЯТЕЛЬНЫЕ НАБЛЮДЕНИЯ:
##
## No Studentized residuals with Bonferroni p < 0.05
## Largest |rstudent|:
## rstudent unadjusted p-value Bonferroni p
## 107 3.53666 0.00055969 0.077797
## -----> ВЫБРОСЫ И ВЛИЯТЕЛЬНЫЕ НАБЛЮДЕНИЯ:
##
##
## RM MRM Count Action Sex Experience Age Weight Height BodyType IndexGroup
## ---- ---- ------ ------- -------- -------------- ---- ------- ------- --------- -----------
## 300 250 6 Присед Мужчина больше 10 лет 28 117 193 Эктоморф ожирение1
## 285 220 8 Присед Мужчина больше 10 лет 35 90 173 Эктоморф ожирение1
## 230 180 10 Присед Мужчина 4-5 лет 24 104 182 Эндоморф ожирение1
## 215 180 3 Присед Мужчина 4-5 лет 20 84 167 Эндоморф ожирение1
## 210 150 10 Присед Мужчина больше 10 лет 42 100 183 Мезоморф избыток
Аналогичные выводы:
На выборочных данных модель ошибается максимум на 18кг и 13%;
В среднем модель ошибается на 3%;
В 80% случаев ошибка не превышала 5%;
Наибольший разброс ошибок приходится на диапазон 4-6;
Модель статистически значима и удовлетворяет всем нужным требованиям, кроме гетероскедастичности;
Путём пошагового отбора переменных были найдены ещё две равнозначные модели (\(b_4\) и \(b_5\)), которые, несмотря на большую сложность в сравнении с предыдущими, имеют лучшие оценки при кросс-валидации.
Статистика для модели \(b_5\):
## Ошибки модели (выведены 15 элементов с наибольшими ошибками):
##
##
## Fact Target ERROR ErrorPercent MRM Count Action Sex Weight CountGroup Index
## ----- ------- ---------- ------------- ---- ------ ------- -------- ------- ----------- ---------
## 196 210.0 13.900432 6.619254 150 10 Присед Мужчина 100 7-10 29.86055
## 142 130.0 12.097350 9.305654 120 6 Жим Мужчина 98 4-6 27.72748
## 107 95.0 11.628844 12.240888 90 6 Жим Мужчина 74 4-6 23.62029
## 161 172.0 11.494330 6.682750 140 5 Жим Мужчина 83 4-6 27.73230
## 104 115.0 11.002650 9.567522 85 8 Жим Мужчина 76 7-10 25.10239
## 205 215.0 10.097807 4.696655 180 3 Присед Мужчина 84 2-3 30.11940
## 100 110.0 9.891911 8.992646 90 4 Жим Мужчина 60 4-6 21.25850
## 90 100.0 9.795772 9.795772 70 10 Тяга Мужчина 63 7-10 19.23018
## 137 127.5 9.766699 7.660156 120 3 Присед Женщина 72 2-3 26.76978
## 235 225.0 9.598310 4.265916 200 6 Жим Мужчина 102 4-6 30.12760
## 180 170.0 9.526585 5.603874 140 10 Тяга Мужчина 77 7-10 24.57787
## 216 225.0 9.425832 4.189259 180 6 Тяга Мужчина 90 4-6 26.29657
## 276 285.0 9.331980 3.274379 220 8 Присед Мужчина 90 7-10 30.07117
## 149 140.0 8.921184 6.372274 120 9 Жим Мужчина 77 7-10 28.62879
## 139 130.0 8.573017 6.594628 110 10 Жим Мужчина 100 7-10 28.29335
##
## ------------> Наибольшая ошибка в большую сторону: 12.09735
## ------------> Наибольшая ошибка в меньшую сторону: 13.90043
## Модель ошиблась более чем на 5 % в 21 случаях из 139 ( 15.10791 %)
## Модель ошиблась более чем на 5 кг в 44 случаях из 139 ( 31.65468 %)
## ----------------> Статистика по ошибкам в процентах:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.01759 0.94961 2.08660 2.83833 3.94832 12.31595
## -------------------> Среднеквадратичная ошибка: 5.026615
## Оценка кросс-валидации для всего набора данных 30.09514
## Оценка кросс-валидации для не более чем 10 повторений 29.05487
## Оценка кросс-валидации для не более чем 6 повторений 28.64018
## -----> ОБЩАЯ ИНФОРМАЦИЯ О МОДЕЛИ:
##
##
## Call:
## lm(formula = RM ~ I((MRM/Index)^6) + MRM:CountGroup + MRM:Action +
## MRM:CountGroup:Count - 1, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -12.0974 -3.2898 -0.1568 3.0781 13.9004
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## I((MRM/Index)^6) -2.989e-05 1.125e-05 -2.657 0.00887 **
## MRM:CountGroup2-3 9.963e-01 2.848e-02 34.984 < 2e-16 ***
## MRM:CountGroup4-6 9.711e-01 3.401e-02 28.558 < 2e-16 ***
## MRM:CountGroup7-10 1.077e+00 5.195e-02 20.738 < 2e-16 ***
## MRM:ActionТяга 2.893e-02 1.014e-02 2.854 0.00502 **
## MRM:ActionПрисед 4.984e-02 9.648e-03 5.166 8.78e-07 ***
## MRM:CountGroup2-3:Count 3.325e-02 1.067e-02 3.116 0.00226 **
## MRM:CountGroup4-6:Count 3.578e-02 6.842e-03 5.229 6.62e-07 ***
## MRM:CountGroup7-10:Count 1.833e-02 6.011e-03 3.050 0.00278 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.198 on 130 degrees of freedom
## Multiple R-squared: 0.999, Adjusted R-squared: 0.9989
## F-statistic: 1.395e+04 on 9 and 130 DF, p-value: < 2.2e-16
##
##
## ASSESSMENT OF THE LINEAR MODEL ASSUMPTIONS
## USING THE GLOBAL TEST ON 4 DEGREES-OF-FREEDOM:
## Level of Significance = 0.05
##
## Call:
## gvlma::gvlma(x = mdl)
##
## Value p-value Decision
## Global Stat 2.19263 0.7004 Assumptions acceptable.
## Skewness 0.36972 0.5432 Assumptions acceptable.
## Kurtosis 0.02639 0.8710 Assumptions acceptable.
## Link Function 1.38357 0.2395 Assumptions acceptable.
## Heteroscedasticity 0.41295 0.5205 Assumptions acceptable.
## Value p-value Decision
## Global Stat 2.19262765 0.7003792 Assumptions acceptable.
## Skewness 0.36971780 0.5431581 Assumptions acceptable.
## Kurtosis 0.02639011 0.8709512 Assumptions acceptable.
## Link Function 1.38356953 0.2394941 Assumptions acceptable.
## Heteroscedasticity 0.41295021 0.5204759 Assumptions acceptable.
##
## -----> БАЗОВЫЕ ГРАФИКИ:
##
## -----> ТЕСТ НА НОРМАЛЬНОСТЬ РАСПРЕДЕЛЕНИЯ ОСТАТКОВ
##
##
## Shapiro-Wilk normality test
##
## data: mdl$residuals
## W = 0.99366, p-value = 0.7982
## -----> ФАКТОР ИНФЛЯЦИИ ДИСПЕРСИЙ:
##
## GVIF Df GVIF^(1/(2*Df))
## I((MRM/Index)^6) 2.561915 1 1.600598
## MRM:CountGroup 72443.114733 3 6.456535
## MRM:Action 2.898866 2 1.304839
## MRM:CountGroup:Count 72727.913065 3 6.460759
##
## -----> ТЕСТ НА АВТОКОРРЕЛЯЦИЮ:
##
## lag Autocorrelation D-W Statistic p-value
## 1 0.05025135 1.898978 0.51
## Alternative hypothesis: rho != 0
##
## -----> ТЕСТ НА ВЫБРОСЫ И ВЛИЯТЕЛЬНЫЕ НАБЛЮДЕНИЯ:
##
## No Studentized residuals with Bonferroni p < 0.05
## Largest |rstudent|:
## rstudent unadjusted p-value Bonferroni p
## 107 2.939544 0.003896 0.54155
## -----> ВЫБРОСЫ И ВЛИЯТЕЛЬНЫЕ НАБЛЮДЕНИЯ:
##
##
## RM MRM Count Action Sex Experience Age Weight Height BodyType IndexGroup
## ---- ---- ------ ------- -------- -------------- ---- ------- ------- --------- -----------
## 285 220 8 Присед Мужчина больше 10 лет 35 90 173 Эктоморф ожирение1
## 262 220 6 Тяга Мужчина больше 10 лет 33 89 184 Эктоморф избыток
## 240 225 3 Тяга Мужчина больше 10 лет 36 87 180 Эктоморф избыток
## 210 150 10 Присед Мужчина больше 10 лет 42 100 183 Мезоморф избыток
## 130 120 6 Жим Мужчина 2-3 года 21 98 188 Эндоморф избыток
Аналогичные выводы:
На выборочных данных модель ошибается максимум на 13кг и 12%;
В среднем модель ошибается на менее 3%;
В 85% случаев ошибка не превышала 5%;
В целом, на каждом диапазоне имеется почти одинаковый разброс;
Модель статистически значима и удовлетворяет всем нужным требованиям.
kn = c(5, 6, 7, 8, 9, 10, 11, 12)
ct = c(8, 11)
gr = rep(c("2-10", "2-7"), length(kn)) %>% sort(decreasing = T)
m = matrix(nrow = length(kn) * length(ct), ncol = 5)
lst = list(b1, b2, b3, b4, b5)
for (i in 1:5) {
model = lst[[i]]
for (j in 1:length(ct)) {
dt = data %>% filter(Count < ct[j])
gl = glm(formula = model$call$formula, data = dt)
getval = function(k) {
boot::cv.glm(dt, gl, K = k)$delta[1] %>% return()
}
getval.mean = function(k, count) {
map_dbl(1:count, function(x) getval(k)) %>% mean() %>% return()
}
beg = (j - 1) * length(kn)
for (s in 1:length(kn)) {
m[beg + s, i] = getval.mean(kn[s], 30)
}
# print(m)
}
}
colnames(m) = paste0("b", 1:5)
kp = rep(kn, length(ct))
vals = data.frame(kp = rep(kp, 5), b = as.numeric(m), gr = factor(rep(gr, 5)), n = factor(rep(colnames(m),
length(kn) * length(ct)) %>% sort())) %>% tbl_df()
В результате перекрёстной проверки для всех моделей при числе блоков 5, 6, 7, 8, 9, 10, 11, 12 было обнаружено, что модель \(b_5\) значительно превосходит остальные модели, причём это верно, если делать проверку как на всём диапазоне повторений (2-10), так и на более близком к силовому диапазоне 2-7:
На втором месте после модели \(b_5\) идёт более простая модель \(b_3\).
Что это за модели? Посмотрим на модель \(b_3\):
##
## Call:
## lm(formula = RM ~ MRM:Count:CountGroup + MRM:Action - 1, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.1658 -3.3898 0.0727 3.0208 13.5361
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## MRM:ActionЖим 0.998895 0.019934 50.111 < 2e-16 ***
## MRM:ActionТяга 1.012918 0.020963 48.320 < 2e-16 ***
## MRM:ActionПрисед 1.036228 0.021859 47.406 < 2e-16 ***
## MRM:Count:CountGroup2-3 0.031222 0.007776 4.015 9.86e-05 ***
## MRM:Count:CountGroup4-6 0.029581 0.004048 7.308 2.26e-11 ***
## MRM:Count:CountGroup7-10 0.027353 0.002420 11.301 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.31 on 133 degrees of freedom
## Multiple R-squared: 0.9989, Adjusted R-squared: 0.9988
## F-statistic: 2.004e+04 on 6 and 133 DF, p-value: < 2.2e-16
Она имеет вид \[RM=MRM \cdot (Action_{coef}+CountGroup_{coef} \cdot Count),\] где \(Action_{coef}\) равен 0.9988949 для жима, 1.0129181 для тяги и 1.0362281 для приседа, а \(CountGroup_{coef}\) есть поправка на диапазон повторений, равная 0.0312223 для диапазона 2-3, 0.0295811 – для 4-6 и 0.0273531 – для 7-10. Как видно, первые три коэффициента близки к единице, однако различия между ними имеют значение; заметим также, что поправка на диапазон повторений 2-3 довольно близка к коэффициенту Вендлера (0.0333).
Кстати, по точности модель \(b_3\) превосходит вторую модель Мориса (ту, что выражена таблицами для каждого движения):
# модель Мориса
sq = c(1, 1.0475, 1.13, 1.1575, 1.2, 1.242, 1.284, 1.326, 1.368, 1.41)
pr = c(1, 1.035, 1.08, 1.115, 1.15, 1.18, 1.22, 1.255, 1.29, 1.325)
lf = c(1, 1.065, 1.13, 1.147, 1.164, 1.181, 1.198, 1.232, 1.236, 1.24)
rlt = data$MRM * (sq[data$Count] * ifelse(data$Action == "Жим", 1, 0) + pr[data$Count] *
ifelse(data$Action == "Присед", 1, 0) + lf[data$Count] * ifelse(data$Action ==
"Тяга", 1, 0))
Show(rlt)
## Ошибки модели (выведены 15 элементов с наибольшими ошибками):
##
##
## Fact Target ERROR ErrorPercent MRM Count Action Sex Weight CountGroup Index
## ----- ------- ------ ------------- ---- ------ ------- -------- ------- ----------- ---------
## 155 130 25.10 19.307692 110 10 Жим Мужчина 100.0 7-10 28.29335
## 164 140 24.16 17.257143 120 9 Жим Мужчина 77.0 7-10 28.62879
## 248 225 23.40 10.400000 200 6 Жим Мужчина 102.0 4-6 30.12760
## 183 160 23.30 14.562500 130 10 Жим Мужчина 130.0 7-10 41.96798
## 194 215 20.60 9.581395 180 3 Присед Мужчина 84.0 2-3 30.11940
## 149 130 19.04 14.646154 120 6 Жим Мужчина 98.0 4-6 27.72748
## 239 220 18.68 8.490909 180 8 Жим Мужчина 160.0 7-10 45.26935
## 123 105 18.12 17.257143 90 9 Жим Мужчина 54.0 7-10 19.36247
## 197 180 17.40 9.666667 140 10 Жим Мужчина 105.0 7-10 31.01371
## 162 145 17.15 11.827586 115 10 Жим Мужчина 84.0 7-10 28.39373
## 167 150 16.92 11.280000 130 7 Жим Мужчина 100.0 7-10 31.56167
## 137 120 16.80 14.000000 100 9 Жим Мужчина 82.0 7-10 23.20054
## 112 95 16.78 17.663158 90 6 Жим Мужчина 74.0 4-6 23.62029
## 141 125 16.00 12.800000 100 10 Жим Мужчина 82.5 7-10 25.18238
## 141 125 16.00 12.800000 100 10 Жим Мужчина 104.0 7-10 38.66746
##
## ------------> Наибольшая ошибка в большую сторону: 25.1
## ------------> Наибольшая ошибка в меньшую сторону: 20.6
## Модель ошиблась более чем на 5 % в 60 случаях из 139 ( 43.16547 %)
## Модель ошиблась более чем на 5 кг в 80 случаях из 139 ( 57.55396 %)
## ----------------> Статистика по ошибкам в процентах:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 2.006 4.325 5.282 7.386 19.308
## -------------------> Среднеквадратичная ошибка: 9.482539
# модель b3
b3 = lm(RM ~ MRM:Count:CountGroup + MRM:Action - 1, data)
b3 %>% predict(data) %>% Show()
## Ошибки модели (выведены 15 элементов с наибольшими ошибками):
##
##
## Fact Target ERROR ErrorPercent MRM Count Action Sex Weight CountGroup Index
## ----- ------- ---------- ------------- ---- ------ ------- -------- ------- ----------- ---------
## 196 210 13.536141 6.445781 150 10 Присед Мужчина 100 7-10 29.86055
## 203 215 11.618877 5.404129 180 3 Присед Мужчина 84 2-3 30.11940
## 104 115 11.493825 9.994631 85 8 Жим Мужчина 76 7-10 25.10239
## 161 172 11.447911 6.655762 140 5 Жим Мужчина 83 4-6 27.73230
## 141 130 11.165813 8.589087 120 6 Жим Мужчина 98 4-6 27.72748
## 106 95 10.874360 11.446694 90 6 Жим Мужчина 74 4-6 23.62029
## 214 225 10.727107 4.767603 180 6 Тяга Мужчина 90 4-6 26.29657
## 235 225 10.276355 4.567269 200 6 Жим Мужчина 102 4-6 30.12760
## 180 170 10.102872 5.942866 140 10 Тяга Мужчина 77 7-10 24.57787
## 140 130 9.966849 7.666807 110 10 Жим Мужчина 100 7-10 28.29335
## 90 100 9.948564 9.948564 70 10 Тяга Мужчина 63 7-10 19.23018
## 220 210 9.734556 4.635503 200 2 Присед Мужчина 83 2-3 25.61728
## 190 200 9.535206 4.767603 160 6 Тяга Мужчина 120 4-6 34.68609
## 101 110 9.450246 8.591133 90 4 Жим Мужчина 60 4-6 21.25850
## 149 140 9.408736 6.720526 120 9 Жим Мужчина 77 7-10 28.62879
##
## ------------> Наибольшая ошибка в большую сторону: 11.16581
## ------------> Наибольшая ошибка в меньшую сторону: 13.53614
## Модель ошиблась более чем на 5 % в 21 случаях из 139 ( 15.10791 %)
## Модель ошиблась более чем на 5 кг в 44 случаях из 139 ( 31.65468 %)
## ----------------> Статистика по ошибкам в процентах:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.02251 1.03594 2.41179 2.89557 4.13407 11.44670
## -------------------> Среднеквадратичная ошибка: 5.194366
Тогда аналогичная таблица, на сколько нужно умножить свой вес для разного числа повторений, выглядит так:
| Повторы | Присед | Жим | Тяга |
|---|---|---|---|
| 1 | 1.000000 | 1.000000 | 1.000000 |
| 2 | 1.098673 | 1.061340 | 1.075363 |
| 3 | 1.129895 | 1.092562 | 1.106585 |
| 4 | 1.154553 | 1.117220 | 1.131243 |
| 5 | 1.184134 | 1.146801 | 1.160824 |
| 6 | 1.213715 | 1.176382 | 1.190405 |
| 7 | 1.227700 | 1.190367 | 1.204390 |
| 8 | 1.255053 | 1.217720 | 1.231743 |
| 9 | 1.282406 | 1.245073 | 1.259096 |
| 10 | 1.309759 | 1.272426 | 1.286449 |
Модель \(b_5\) имеет два дополнительных слагаемых:
##
## Call:
## lm(formula = RM ~ I((MRM/Index)^6) + MRM:CountGroup + MRM:Action +
## MRM:CountGroup:Count - 1, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -12.0974 -3.2898 -0.1568 3.0781 13.9004
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## I((MRM/Index)^6) -2.989e-05 1.125e-05 -2.657 0.00887 **
## MRM:CountGroup2-3 9.963e-01 2.848e-02 34.984 < 2e-16 ***
## MRM:CountGroup4-6 9.711e-01 3.401e-02 28.558 < 2e-16 ***
## MRM:CountGroup7-10 1.077e+00 5.195e-02 20.738 < 2e-16 ***
## MRM:ActionТяга 2.893e-02 1.014e-02 2.854 0.00502 **
## MRM:ActionПрисед 4.984e-02 9.648e-03 5.166 8.78e-07 ***
## MRM:CountGroup2-3:Count 3.325e-02 1.067e-02 3.116 0.00226 **
## MRM:CountGroup4-6:Count 3.578e-02 6.842e-03 5.229 6.62e-07 ***
## MRM:CountGroup7-10:Count 1.833e-02 6.011e-03 3.050 0.00278 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.198 on 130 degrees of freedom
## Multiple R-squared: 0.999, Adjusted R-squared: 0.9989
## F-statistic: 1.395e+04 on 9 and 130 DF, p-value: < 2.2e-16
Её вид, аналогично:
\[RM=MRM \cdot (CountGroup_{coef_2} +Action_{coef}+CountGroup_{coef_1} \cdot Count)+coef \cdot\left(\frac{MRM}{Index}\right)^6\] Здесь \(coef\) при последнем слагаемом равен -0.0000299, \(Index\) – индекс массы тела. Дробь внутри последнего слагаемого можно упростить:
\[\frac{MRM}{Index}=\frac{MRM \cdot (0.01 \cdot Height)^2}{Weight}=\frac{MRM \cdot Height^2}{10000\cdot Weight}\] Вообще существование этого слагаемого (с шестой степенью) кажется чем-то очень сомнительным, но математика показывает, что это имеет смысл. Результаты дисперсионного анализа говорят о том, что включение указанного коэффициента создаёт значимое отличие между моделями с ним и без него:
anova(lm(RM ~ MRM:CountGroup + MRM:Action + MRM:CountGroup:Count - 1, data = data),
lm(RM ~ I((MRM/Index)^6) + MRM:CountGroup + MRM:Action + MRM:CountGroup:Count -
1, data = data)) %>% pander()
| Res.Df | RSS | Df | Sum of Sq | F | Pr(>F) |
|---|---|---|---|---|---|
| 131 | 3703 | NA | NA | NA | NA |
| 130 | 3512 | 1 | 190.7 | 7.059 | 0.008874 |
Очень интересно, что в этих двух моделях нет зависимости от возраста, типа телосложения, опыта и пола13. Конечно, нельзя рассмотреть всевозможные вариации таких моделей, но среди сотни рассмотренных (в том числе с помощью пакета caret) не было обнаружено доказательств значимости включения этих факторов в модель.
Как итог, для определения ПМ нужны лишь следующие данные:
МПМ;
Число повторений;
Движение;
Рост и вес спортсмена.
В этом разделе происходит построение нелинейных моделей для предсказания повторных максимумов, проверяются формулы МакГлотина, Ломбарди и другие нелинейные формулы. Оценка качества моделей происходит по аналогичным принципам, то есть значение имеют:
точность моделей при перекрёстной проверке, чтобы их можно было сравнить и выбрать лучшую;
точность модели на обучающих данных, поскольку неточные модели не имеют пользы, даже если превосходят другие при перекрёстной проверке;
простота модели.
Сначала рассматриваются отдельные классы моделей из указанной выше ссылки и мои предложения, затем они сравниваются друг с другом и делаются выводы.
Модели Эпли, Вендлера и О’Коннора – это одна и та же модель вида \(RM=MRM \cdot(1+c \cdot Count)\) с разными значениями коэффициента \(c\). Как выяснилось, эти отличия обусловлены только тем, на каком разбросе повторений происходил подбор \(c\): значение из формулы О’Коннора наиболее оптимально, если формула должна примерно одинаково хорошо работать на не более чем 20 повторениях, а значение из формулы Эпли, предположительно, оптимально для 2-5 повторений:
vc = sapply(c(4, 8, 11, 21, 50), function(p) nls(RM ~ MRM * (1 + Count * coef), data = data.backup %>%
filter(Count < p), start = list(coef = 1/30)) %>% coef())
names(vc) = c(paste(rep("не более чем", 4), levels(data$CountGroup)[1:4]), "любой")
tibble(`Используемый диапазон повторений` = names(vc), `Оценка параметра` = vc) %>%
kable(align = "cc")
| Используемый диапазон повторений | Оценка параметра |
|---|---|
| не более чем 2-3 | 0.0353338 |
| не более чем 4-6 | 0.0314487 |
| не более чем 7-10 | 0.0299178 |
| не более чем 11-20 | 0.0259797 |
| любой | 0.0247547 |
Обучив такую модель (с названием \(n_1\)) для диапазона повторений 2-10, получим следующие результаты:
##
## Formula: RM ~ MRM * (1 + Count * coef)
##
## Parameters:
## Estimate Std. Error t value Pr(>|t|)
## coef 0.035334 0.001879 18.8 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.96 on 46 degrees of freedom
##
## Number of iterations to convergence: 1
## Achieved convergence tolerance: 6.963e-09
##
## Ошибки модели (выведены 15 элементов с наибольшими ошибками):
##
##
## Fact Target ERROR ErrorPercent MRM Count Action Sex Weight CountGroup Index
## ----- ------- --------- ------------- ---- ------ ------- -------- ------- ----------- ---------
## 189 170 19.46739 11.451405 140 10 Тяга Мужчина 77 7-10 24.57787
## 149 130 18.86723 14.513257 110 10 Жим Мужчина 100 7-10 28.29335
## 158 140 18.16056 12.971826 120 9 Жим Мужчина 77 7-10 28.62879
## 242 225 17.40062 7.733608 200 6 Жим Мужчина 102 4-6 30.12760
## 176 160 15.93400 9.958752 130 10 Жим Мужчина 130 7-10 41.96798
## 199 215 15.91972 7.404522 180 3 Присед Мужчина 84 2-3 30.11940
## 145 130 15.44037 11.877209 120 6 Жим Мужчина 98 4-6 27.72748
## 109 95 14.08028 14.821346 90 6 Жим Мужчина 74 4-6 23.62029
## 119 105 13.62042 12.971826 90 9 Жим Мужчина 54 7-10 19.36247
## 244 230 13.60093 5.913447 180 10 Присед Мужчина 104 7-10 31.39717
## 112 100 12.26032 12.260325 90 7 Жим Мужчина 95 7-10 26.04095
## 162 150 12.15380 8.102535 130 7 Жим Мужчина 100 7-10 31.56167
## 132 120 11.80046 9.833720 100 9 Жим Мужчина 82 7-10 23.20054
## 164 152 11.62042 7.645012 135 6 Жим Мужчина 90 4-6 31.14187
## 171 160 11.20031 7.000193 150 4 Жим Мужчина 84 4-6 25.92593
##
## ------------> Наибольшая ошибка в большую сторону: 19.46739
## ------------> Наибольшая ошибка в меньшую сторону: 15.91972
## Модель ошиблась более чем на 5 % в 42 случаях из 139 ( 30.21583 %)
## Модель ошиблась более чем на 5 кг в 64 случаях из 139 ( 46.04317 %)
## ----------------> Статистика по ошибкам в процентах:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0624 1.5126 3.1115 3.9177 5.2597 14.8213
## -------------------> Среднеквадратичная ошибка: 7.006946
Модели Бжицки и МакГлотина – это тоже одна и та же модель вида
\[RM=MRM \cdot \frac{a}{b-Count}\] с разными \(a, b\). Обучив такую модель (с названием \(n_2\)) для диапазона повторений 2-10, получим более точную модель:
##
## Formula: RM ~ MRM * a/(b - Count)
##
## Parameters:
## Estimate Std. Error t value Pr(>|t|)
## a 53.332 2.905 18.36 <2e-16 ***
## b 51.364 2.507 20.49 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.676 on 137 degrees of freedom
##
## Number of iterations to convergence: 4
## Achieved convergence tolerance: 3.629e-07
##
## Ошибки модели (выведены 15 элементов с наибольшими ошибками):
##
##
## Fact Target ERROR ErrorPercent MRM Count Action Sex Weight CountGroup Index
## ----- ------- ---------- ------------- ---- ------ ------- -------- ------- ----------- ---------
## 193 210 16.596545 7.903116 150 10 Присед Мужчина 100 7-10 29.86055
## 198 215 16.507020 7.677684 180 3 Присед Мужчина 84 2-3 30.11940
## 271 285 14.424394 5.061191 220 8 Присед Мужчина 90 7-10 30.07117
## 212 225 13.380213 5.946761 180 6 Тяга Мужчина 90 4-6 26.29657
## 188 200 11.893523 5.946761 160 6 Тяга Мужчина 120 4-6 34.68609
## 142 130 11.829201 9.099385 110 10 Жим Мужчина 100 7-10 28.29335
## 198 210 11.507020 5.479533 180 3 Присед Мужчина 125 2-3 36.13134
## 141 130 11.079858 8.522968 120 6 Жим Мужчина 98 4-6 27.72748
## 151 140 11.070505 7.907504 120 9 Жим Мужчина 77 7-10 28.62879
## 161 172 10.956886 6.370282 140 5 Жим Мужчина 83 4-6 27.73230
## 106 95 10.809893 11.378835 90 6 Жим Мужчина 74 4-6 23.62029
## 181 170 10.509892 6.182289 140 10 Тяга Мужчина 77 7-10 24.57787
## 105 115 10.459425 9.095152 85 8 Жим Мужчина 76 7-10 25.10239
## 235 225 10.133096 4.503598 200 6 Жим Мужчина 102 4-6 30.12760
## 90 100 9.745054 9.745054 70 10 Тяга Мужчина 63 7-10 19.23018
##
## ------------> Наибольшая ошибка в большую сторону: 11.8292
## ------------> Наибольшая ошибка в меньшую сторону: 16.59654
## Модель ошиблась более чем на 5 % в 26 случаях из 139 ( 18.70504 %)
## Модель ошиблась более чем на 5 кг в 47 случаях из 139 ( 33.81295 %)
## ----------------> Статистика по ошибкам в процентах:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.02678 0.96765 2.70607 3.04275 4.42815 11.37884
## -------------------> Среднеквадратичная ошибка: 5.634673
Аналогично модели Мэйхью и Ватана — это вариации модели
\[RM=\frac{100 \cdot MRM}{a+b\cdot e^{-c\cdot Count}}\] Обучив такую модель (\(n_3\)), получим примерно такие же результаты, как у \(n_2\):
##
## Formula: RM ~ 100 * MRM/(a + b * exp(-c * Count))
##
## Parameters:
## Estimate Std. Error t value Pr(>|t|)
## a 64.58492 10.60647 6.089 1.09e-08 ***
## b 34.58499 9.09511 3.803 0.000215 ***
## c 0.09229 0.04784 1.929 0.055807 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.619 on 136 degrees of freedom
##
## Number of iterations to convergence: 4
## Achieved convergence tolerance: 1.653e-06
##
## Ошибки модели (выведены 15 элементов с наибольшими ошибками):
##
##
## Fact Target ERROR ErrorPercent MRM Count Action Sex Weight CountGroup Index
## ----- ------- ---------- ------------- ---- ------ ------- -------- ------- ----------- ---------
## 192 210 18.496701 8.807953 150 10 Присед Мужчина 100 7-10 29.86055
## 198 215 16.774220 7.801963 180 3 Присед Мужчина 84 2-3 30.11940
## 271 285 13.775104 4.833370 220 8 Присед Мужчина 90 7-10 30.07117
## 142 130 12.072191 9.286301 120 6 Жим Мужчина 98 4-6 27.72748
## 213 225 11.891714 5.285206 180 6 Тяга Мужчина 90 4-6 26.29657
## 237 225 11.786985 5.238660 200 6 Жим Мужчина 102 4-6 30.12760
## 198 210 11.774220 5.606771 180 3 Присед Мужчина 125 2-3 36.13134
## 107 95 11.554143 12.162256 90 6 Жим Мужчина 74 4-6 23.62029
## 151 140 10.647156 7.605111 120 9 Жим Мужчина 77 7-10 28.62879
## 89 100 10.631794 10.631794 70 10 Тяга Мужчина 63 7-10 19.23018
## 189 200 10.570412 5.285206 160 6 Тяга Мужчина 120 4-6 34.68609
## 140 130 10.435752 8.027502 110 10 Жим Мужчина 100 7-10 28.29335
## 105 115 10.208563 8.877011 85 8 Жим Мужчина 76 7-10 25.10239
## 162 172 9.936892 5.777263 140 5 Жим Мужчина 83 4-6 27.73230
## 220 230 9.749133 4.238753 200 3 Тяга Мужчина 125 2-3 36.13134
##
## ------------> Наибольшая ошибка в большую сторону: 12.07219
## ------------> Наибольшая ошибка в меньшую сторону: 18.4967
## Модель ошиблась более чем на 5 % в 27 случаях из 139 ( 19.42446 %)
## Модель ошиблась более чем на 5 кг в 42 случаях из 139 ( 30.21583 %)
## ----------------> Статистика по ошибкам в процентах:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.007849 1.083213 2.518431 2.997736 4.243552 12.162256
## -------------------> Среднеквадратичная ошибка: 5.55823
Наконец, модель Ломбарди имеет вид \[RM=MRM \cdot Count^a\] Обучив её (\(n_4\)), получим примерно те же результаты (с параметром, очень близким к 0.1, предложенным Ломбарди):
##
## Formula: RM ~ MRM * Count^a
##
## Parameters:
## Estimate Std. Error t value Pr(>|t|)
## a 0.096835 0.001982 48.85 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.799 on 138 degrees of freedom
##
## Number of iterations to convergence: 2
## Achieved convergence tolerance: 1.583e-06
##
## Ошибки модели (выведены 15 элементов с наибольшими ошибками):
##
##
## Fact Target ERROR ErrorPercent MRM Count Action Sex Weight CountGroup Index
## ----- ------- ---------- ------------- ------ ------ ------- -------- ------- ----------- ---------
## 187 210 22.532379 10.729704 150.0 10 Присед Мужчина 100 7-10 29.86055
## 269 285 15.924963 5.587706 220.0 8 Присед Мужчина 90 7-10 30.07117
## 200 215 14.795172 6.881475 180.0 3 Присед Мужчина 84 2-3 30.11940
## 238 225 12.893338 5.730372 200.0 6 Жим Мужчина 102 4-6 30.12760
## 143 130 12.736003 9.796925 120.0 6 Жим Мужчина 98 4-6 27.72748
## 87 100 12.515110 12.515110 70.0 10 Тяга Мужчина 63 7-10 19.23018
## 107 95 12.052002 12.686318 90.0 6 Жим Мужчина 74 4-6 23.62029
## 172 160 11.550404 7.219002 150.0 4 Жим Мужчина 84 4-6 25.92593
## 104 115 11.039190 9.599296 85.0 8 Жим Мужчина 76 7-10 25.10239
## 214 225 10.895996 4.842665 180.0 6 Тяга Мужчина 90 4-6 26.29657
## 250 240 10.256035 4.273348 225.0 3 Тяга Мужчина 87 2-3 26.85185
## 175 165 10.179225 6.169227 157.5 3 Жим Мужчина 87 2-3 26.85185
## 200 210 9.795172 4.664368 180.0 3 Присед Мужчина 125 2-3 36.13134
## 190 200 9.685330 4.842665 160.0 6 Тяга Мужчина 120 4-6 34.68609
## 149 140 8.677017 6.197869 130.0 4 Жим Мужчина 100 4-6 35.01278
##
## ------------> Наибольшая ошибка в большую сторону: 12.89334
## ------------> Наибольшая ошибка в меньшую сторону: 22.53238
## Модель ошиблась более чем на 5 % в 28 случаях из 139 ( 20.14388 %)
## Модель ошиблась более чем на 5 кг в 50 случаях из 139 ( 35.97122 %)
## ----------------> Статистика по ошибкам в процентах:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.01727 1.28387 2.44399 3.13536 4.80735 12.68632
## -------------------> Среднеквадратичная ошибка: 5.778451
Кроме этого, я попробую модель \(n_5\): \[RM=MRM^a \cdot \frac{b}{c-Count+d \cdot Count^2}\]
##
## Formula: RM ~ (MRM^d) * (coef1)/(coef2 - Count + c * Count^2)
##
## Parameters:
## Estimate Std. Error t value Pr(>|t|)
## coef1 30.974358 5.911066 5.240 6.03e-07 ***
## coef2 33.722462 5.640670 5.978 1.90e-08 ***
## d 1.019050 0.010444 97.575 < 2e-16 ***
## c 0.028978 0.009796 2.958 0.00366 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.574 on 135 degrees of freedom
##
## Number of iterations to convergence: 4
## Achieved convergence tolerance: 1.445e-07
##
## Ошибки модели (выведены 15 элементов с наибольшими ошибками):
##
##
## Fact Target ERROR ErrorPercent MRM Count Action Sex Weight CountGroup Index
## ----- ------- ---------- ------------- ---- ------ ------- -------- ------- ----------- ---------
## 192 210 17.984513 8.564054 150 10 Присед Мужчина 100 7-10 29.86055
## 199 215 16.339491 7.599763 180 3 Присед Мужчина 84 2-3 30.11940
## 238 225 13.228263 5.879228 200 6 Жим Мужчина 102 4-6 30.12760
## 88 100 11.684390 11.684390 70 10 Тяга Мужчина 63 7-10 19.23018
## 142 130 11.552720 8.886708 120 6 Жим Мужчина 98 4-6 27.72748
## 199 210 11.339491 5.399758 180 3 Присед Мужчина 125 2-3 36.13134
## 274 285 11.157402 3.914878 220 8 Присед Мужчина 90 7-10 30.07117
## 104 115 11.096698 9.649303 85 8 Жим Мужчина 76 7-10 25.10239
## 214 225 11.024479 4.899768 180 6 Тяга Мужчина 90 4-6 26.29657
## 106 95 10.584300 11.141368 90 6 Жим Мужчина 74 4-6 23.62029
## 150 140 10.421311 7.443793 120 9 Жим Мужчина 77 7-10 28.62879
## 190 200 10.225833 5.112917 160 6 Тяга Мужчина 120 4-6 34.68609
## 162 172 10.201250 5.930960 140 5 Жим Мужчина 83 4-6 27.73230
## 140 130 9.981814 7.678318 110 10 Жим Мужчина 100 7-10 28.29335
## 101 110 9.384062 8.530965 90 4 Жим Мужчина 60 4-6 21.25850
##
## ------------> Наибольшая ошибка в большую сторону: 13.22826
## ------------> Наибольшая ошибка в меньшую сторону: 17.98451
## Модель ошиблась более чем на 5 % в 28 случаях из 139 ( 20.14388 %)
## Модель ошиблась более чем на 5 кг в 45 случаях из 139 ( 32.3741 %)
## ----------------> Статистика по ошибкам в процентах:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.003659 0.930472 2.493836 2.990744 4.306580 11.684390
## -------------------> Среднеквадратичная ошибка: 5.492923
и \(n_6\): \[RM=MRM^a \cdot \left(b+c \cdot Count^d \right),\]
##
## Formula: RM ~ MRM^vk * (s + coef * Count^kk)
##
## Parameters:
## Estimate Std. Error t value Pr(>|t|)
## coef 0.04831 0.03312 1.459 0.14699
## vk 1.01908 0.01044 97.635 < 2e-16 ***
## kk 0.75447 0.23096 3.267 0.00138 **
## s 0.88968 0.06713 13.252 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.569 on 135 degrees of freedom
##
## Number of iterations to convergence: 4
## Achieved convergence tolerance: 4.267e-07
##
## Ошибки модели (выведены 15 элементов с наибольшими ошибками):
##
##
## Fact Target ERROR ErrorPercent MRM Count Action Sex Weight CountGroup Index
## ----- ------- ---------- ------------- ---- ------ ------- -------- ------- ----------- ---------
## 192 210 17.858515 8.504055 150 10 Присед Мужчина 100 7-10 29.86055
## 199 215 16.184108 7.527492 180 3 Присед Мужчина 84 2-3 30.11940
## 238 225 13.174225 5.855211 200 6 Жим Мужчина 102 4-6 30.12760
## 88 100 11.628428 11.628428 70 10 Тяга Мужчина 63 7-10 19.23018
## 142 130 11.518476 8.860366 120 6 Жим Мужчина 98 4-6 27.72748
## 274 285 11.496235 4.033767 220 8 Присед Мужчина 90 7-10 30.07117
## 104 115 11.228175 9.763631 85 8 Жим Мужчина 76 7-10 25.10239
## 199 210 11.184108 5.325766 180 3 Присед Мужчина 125 2-3 36.13134
## 214 225 11.073681 4.921636 180 6 Тяга Мужчина 90 4-6 26.29657
## 106 95 10.557860 11.113537 90 6 Жим Мужчина 74 4-6 23.62029
## 150 140 10.302535 7.358954 120 9 Жим Мужчина 77 7-10 28.62879
## 190 200 10.270131 5.135065 160 6 Тяга Мужчина 120 4-6 34.68609
## 162 172 10.099896 5.872032 140 5 Жим Мужчина 83 4-6 27.73230
## 140 130 10.072385 7.747988 110 10 Жим Мужчина 100 7-10 28.29335
## 250 240 9.580212 3.991755 225 3 Тяга Мужчина 87 2-3 26.85185
##
## ------------> Наибольшая ошибка в большую сторону: 13.17422
## ------------> Наибольшая ошибка в меньшую сторону: 17.85852
## Модель ошиблась более чем на 5 % в 26 случаях из 139 ( 18.70504 %)
## Модель ошиблась более чем на 5 кг в 41 случаях из 139 ( 29.4964 %)
## ----------------> Статистика по ошибкам в процентах:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.001064 1.029645 2.513181 2.991682 4.300770 11.628428
## -------------------> Среднеквадратичная ошибка: 5.488704
а также версии предыдущих шести моделей с поправкой коэффициентов на разные факторные переменные и с включением/отсутствием слагаемого \(\left( \frac{MRM}{Index} \right)^6\) (для линейных моделей оно играло роль).
n7 = nls(RM ~ (MRM^d) * (coef1[Action])/(coef2[CountGroup] - Count + c * Count^2),
data = data, start = list(coef1 = rep(50, 3), coef2 = rep(40, 3), d = 1, c = 0))
n8 = nls(RM ~ MRM^vk[CountGroup] * (s[Action] + coef * sqrt(Count)), data = data,
start = list(coef = 0.0333, vk = rep(1, 3), s = rep(1, 3)))
n9 = nls(RM ~ MRM * (a[BodyType]/(b[Action] - Count)), data, start = list(a = rep(36,
3), b = rep(37, 3)))
n10 = nls(RM ~ MRM * (a[BodyType]/(b[Action] - Count)) + d * (MRM/Index)^6, data,
start = list(a = rep(36, 3), b = rep(37, 3), d = 0))
n11 = nls(RM ~ MRM * (a[Action]/(b[CountGroup] - Count)), data, start = list(a = rep(36,
3), b = rep(37, 3)))
n12 = nls(RM ~ MRM * (a[Action]/(b[CountGroup] - Count)) + d * (MRM/Index)^6, data,
start = list(a = rep(36, 3), b = rep(37, 3), d = 0))
n13 = nls(RM ~ MRM * (Count^a[CountGroup]) + b[Action] * MRM * Count^2, data, start = list(a = rep(0.1,
3), b = rep(0.1, 3)))
n14 = nls(RM ~ 100 * MRM/(a[Action] + b * exp(-c[CountGroup] * Count)) + d * (MRM/Index)^6,
data, start = list(a = rep(52, 3), b = 42, c = rep(0.0555, 3), d = 0))
# cv for nls including errors sample
cv.my2 = function(df = data, fit, start, k = 10, repets = 1) {
sm = 0
r = 0
RM = df$RM
repeat {
b = T
while (b) {
val = tryCatch({
b = F
blocks = sample.int(k, nrow(df), replace = T)
future.apply::future_sapply(seq(k), function(i) {
ft = nls(formula = fit$call$formula, data = df[blocks != i, ],
start = start)
sum((RM[blocks == i] - predict(ft, df[blocks == i, ]))^2) %>% return()
}) %>% sum()
}, error = function(cond) {
# print(cond)
b = T
})
}
sm = sm + val/k
r = r + 1
if (r == repets) {
break
}
}
return(sm/repets)
}
kn = c(5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
ct = c(8, 11)
gr = rep(c("2-10", "2-7"), length(kn)) %>% sort(decreasing = T)
m = matrix(nrow = length(kn) * length(ct), ncol = 14)
lst = list(n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14)
sts = list(list(coef = 1/30), list(a = 36, b = 37), list(a = 52, b = 42, c = 0.055),
list(a = 0.1), list(coef1 = 50, coef2 = 40, d = 1, c = 0), list(coef = 0.0333,
vk = 1, kk = 1, s = 1), list(coef1 = rep(50, 3), coef2 = rep(40, 3), d = 1,
c = 0), list(coef = 0.0333, vk = rep(1, 3), s = rep(1, 3)), list(a = rep(36,
3), b = rep(37, 3)), list(a = rep(36, 3), b = rep(37, 3), d = 0), list(a = rep(36,
3), b = rep(37, 3)), list(a = rep(36, 3), b = rep(37, 3), d = 0), list(a = rep(0.1,
3), b = rep(0.1, 3)), list(a = rep(52, 3), b = 42, c = rep(0.0555, 3), d = 0))
for (i in 1:length(lst)) {
model = lst[[i]]
for (j in 1:length(ct)) {
dt = data %>% filter(Count < ct[j])
getval.mean = function(k, count) {
cv.my2(dt, model, sts[[i]], k, count)
}
beg = (j - 1) * length(kn)
for (s in 1:length(kn)) {
m[beg + s, i] = getval.mean(kn[s], 30)
}
}
}
colnames(m) = paste0("n", 1:length(lst))
kp = rep(kn, length(ct))
m[m < 100] = NA
vals = data.frame(kp = rep(kp, length(lst)), b = as.numeric(m), gr = factor(rep(gr,
length(lst))), n = factor(paste0("n", rep(1:14, length(kn) * length(ct)) %>%
sort()))) %>% tbl_df()
Сравним названные модели, сделав перекрёстную проверку на диапазоне повторений 2-10:
Как видно, самой лучшей моделью оказалась \(n_{14}\) (основанная на моделях Мэйхью и Ватана), на втором месте идёт \(n_8\) (моё предложение):
n14 %>% ShowSummary()
##
## Formula: RM ~ 100 * MRM/(a[Action] + b * exp(-c[CountGroup] * Count)) +
## d * (MRM/Index)^6
##
## Parameters:
## Estimate Std. Error t value Pr(>|t|)
## a1 7.259e+01 6.392e+00 11.357 < 2e-16 ***
## a2 7.032e+01 6.319e+00 11.128 < 2e-16 ***
## a3 6.903e+01 6.329e+00 10.907 < 2e-16 ***
## b 3.037e+01 5.168e+00 5.877 3.27e-08 ***
## c1 1.665e-01 7.683e-02 2.167 0.0320 *
## c2 1.499e-01 6.309e-02 2.376 0.0190 *
## c3 1.487e-01 7.233e-02 2.056 0.0418 *
## d -2.667e-05 1.062e-05 -2.511 0.0133 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.157 on 131 degrees of freedom
##
## Number of iterations to convergence: 6
## Achieved convergence tolerance: 2.642e-06
##
## Ошибки модели (выведены 15 элементов с наибольшими ошибками):
##
##
## Fact Target ERROR ErrorPercent MRM Count Action Sex Weight CountGroup Index
## ----- ------- ---------- ------------- ---- ------ ------- -------- ------- ----------- ---------
## 197 210.0 12.793536 6.092160 150 10 Присед Мужчина 100 7-10 29.86055
## 161 172.0 11.426898 6.643545 140 5 Жим Мужчина 83 4-6 27.73230
## 104 115.0 11.176032 9.718288 85 8 Жим Мужчина 76 7-10 25.10239
## 141 130.0 11.083290 8.525607 120 6 Жим Мужчина 98 4-6 27.72748
## 106 95.0 10.862282 11.433981 90 6 Жим Мужчина 74 4-6 23.62029
## 180 170.0 10.477645 6.163321 140 10 Тяга Мужчина 77 7-10 24.57787
## 205 215.0 10.410998 4.842325 180 3 Присед Мужчина 84 2-3 30.11940
## 215 225.0 10.018458 4.452648 180 6 Тяга Мужчина 90 4-6 26.29657
## 137 127.5 9.486217 7.440170 120 3 Присед Женщина 72 2-3 26.76978
## 91 100.0 9.367758 9.367758 70 10 Тяга Мужчина 63 7-10 19.23018
## 101 110.0 9.335602 8.486911 90 4 Жим Мужчина 60 4-6 21.25850
## 141 150.0 8.904091 5.936061 120 6 Жим Мужчина 85 4-6 28.07504
## 149 140.0 8.811834 6.294167 120 9 Жим Мужчина 77 7-10 28.62879
## 138 130.0 8.342842 6.417571 110 10 Жим Мужчина 100 7-10 28.29335
## 104 112.5 8.270229 7.351315 95 3 Жим Мужчина 66 2-3 22.83737
##
## ------------> Наибольшая ошибка в большую сторону: 11.08329
## ------------> Наибольшая ошибка в меньшую сторону: 12.79354
## Модель ошиблась более чем на 5 % в 22 случаях из 139 ( 15.82734 %)
## Модель ошиблась более чем на 5 кг в 46 случаях из 139 ( 33.09353 %)
## ----------------> Статистика по ошибкам в процентах:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000241 1.128472 2.286958 2.852151 4.173735 11.686076
## -------------------> Среднеквадратичная ошибка: 5.006509
n8 %>% ShowSummary()
##
## Formula: RM ~ MRM^vk[CountGroup] * (s[Action] + coef * sqrt(Count))
##
## Parameters:
## Estimate Std. Error t value Pr(>|t|)
## coef 0.12172 0.01986 6.129 9.54e-09 ***
## vk1 0.99792 0.01191 83.772 < 2e-16 ***
## vk2 0.99660 0.01163 85.696 < 2e-16 ***
## vk3 0.99746 0.01208 82.538 < 2e-16 ***
## s1 0.89421 0.06704 13.338 < 2e-16 ***
## s2 0.91171 0.07199 12.664 < 2e-16 ***
## s3 0.93403 0.07337 12.730 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.299 on 132 degrees of freedom
##
## Number of iterations to convergence: 3
## Achieved convergence tolerance: 1.565e-06
##
## Ошибки модели (выведены 15 элементов с наибольшими ошибками):
##
##
## Fact Target ERROR ErrorPercent MRM Count Action Sex Weight CountGroup Index
## ----- ------- ---------- ------------- ---- ------ ------- -------- ------- ----------- ---------
## 195 210 14.663986 6.982851 150 10 Присед Мужчина 100 7-10 29.86055
## 161 172 11.427162 6.643699 140 5 Жим Мужчина 83 4-6 27.73230
## 204 215 11.135175 5.179151 180 3 Присед Мужчина 84 2-3 30.11940
## 214 225 11.036144 4.904953 180 6 Тяга Мужчина 90 4-6 26.29657
## 104 115 10.911632 9.488376 85 8 Жим Мужчина 76 7-10 25.10239
## 141 130 10.773031 8.286947 120 6 Жим Мужчина 98 4-6 27.72748
## 106 95 10.683093 11.245361 90 6 Жим Мужчина 74 4-6 23.62029
## 90 100 10.211872 10.211872 70 10 Тяга Мужчина 63 7-10 19.23018
## 250 240 9.747364 4.061402 225 3 Тяга Мужчина 87 2-3 26.85185
## 190 200 9.733728 4.866864 160 6 Тяга Мужчина 120 4-6 34.68609
## 149 140 9.295207 6.639434 120 9 Жим Мужчина 77 7-10 28.62879
## 179 170 9.259949 5.447029 140 10 Тяга Мужчина 77 7-10 24.57787
## 141 150 9.226969 6.151312 120 6 Жим Мужчина 85 4-6 28.07504
## 234 225 9.214583 4.095370 200 6 Жим Мужчина 102 4-6 30.12760
## 101 110 9.166253 8.332958 90 4 Жим Мужчина 60 4-6 21.25850
##
## ------------> Наибольшая ошибка в большую сторону: 10.77303
## ------------> Наибольшая ошибка в меньшую сторону: 14.66399
## Модель ошиблась более чем на 5 % в 21 случаях из 139 ( 15.10791 %)
## Модель ошиблась более чем на 5 кг в 47 случаях из 139 ( 33.81295 %)
## ----------------> Статистика по ошибкам в процентах:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000994 1.063430 2.315090 2.877282 4.113872 11.245361
## -------------------> Среднеквадратичная ошибка: 5.164286
Обе модели имеют одинаковую среднюю ошибку в менее чем 2.9%. По точности они схожи с линейными моделями \(b_3,b_5\).
cv.my3 = function(df = data, fit, start = NULL, k = 10, repets = 1) {
sm = 0
r = 0
RM = df$RM
repeat {
b = T
while (b) {
val = tryCatch({
b = F
blocks = sample.int(k, nrow(df), replace = T)
if (is.null(start)) {
future.apply::future_sapply(seq(k), function(i) {
ft = lm(formula = fit$call$formula, data = df[blocks != i, ])
sum((RM[blocks == i] - predict(ft, df[blocks == i, ]))^2) %>%
return()
}) %>% sum()
} else {
future.apply::future_sapply(seq(k), function(i) {
ft = nls(formula = fit$call$formula, data = df[blocks != i, ],
start = start)
sum((RM[blocks == i] - predict(ft, df[blocks == i, ]))^2) %>%
return()
}) %>% sum()
}
}, error = function(cond) {
b = T
})
}
sm = sm + val/k
r = r + 1
if (r == repets) {
break
}
}
return(sm/repets)
}
kn = c(5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
ct = c(8, 11)
gr = rep(c("2-10", "2-7"), length(kn)) %>% sort(decreasing = T)
m = matrix(nrow = length(kn) * length(ct), ncol = 4)
lst = list(n8, n14, b3, b5)
sts = list(list(coef = 0.0333, vk = rep(1, 3), s = rep(1, 3)), list(a = rep(52, 3),
b = 42, c = rep(0.0555, 3), d = 0), NULL, NULL)
for (i in 1:length(lst)) {
model = lst[[i]]
for (j in 1:length(ct)) {
dt = data %>% filter(Count < ct[j])
getval.mean = function(k, count) {
cv.my3(dt, model, sts[[i]], k, count)
}
beg = (j - 1) * length(kn)
for (s in 1:length(kn)) {
m[beg + s, i] = getval.mean(kn[s], 40)
}
}
}
colnames(m) = c("n8", "n14", "b3", "b5")
kp = rep(kn, length(ct))
# m[m<100]=NA
vals = data.frame(kp = rep(kp, length(lst)), b = as.numeric(m), gr = factor(rep(gr,
length(lst))), n = factor(c("n8" %>% rep(length(ct) * length(kn)), "n14" %>%
rep(length(ct) * length(kn)), "b3" %>% rep(length(ct) * length(kn)), "b5" %>%
rep(length(ct) * length(kn))))) %>% tbl_df()
Если сравнить лучшие найденные линейные и нелинейные модели, окажется, что модели \(n_8\) и \(b_3\) в целом неотличимы, а модель \(n_{14}\) немного превосходит \(b_5\):
В результате проведённого исследования была найдена модель, не зависящая от типа телосложения, опыта тренировок и многих других характеристик, но при этом дающая хорошие результаты на 85% данных.
Я уверен, что большие погрешности в единичных случаях – это та часть закономерности, зависящая от человека и многих неучтённых характеристик. Тем не менее, влияние этих неучтённых факторов далеко не так велико, как предполагали многие: намного больше повторный максимум зависит от обычной математики.
Было продемонстрировано, что для числа повторений выше 10 нельзя построить достаточно точную модель (по крайней мере, при текущем наборе данных), но для диапазона 2-10 – ещё как можно.
Диапазон выше 10 повторений был отсеян по следующим причинам:
физиологически менее сильная связь между 1ПМ и большим числом повторений;
меньшая детерминированность между 1ПМ и большим числом повторений, обнаруженная при разведочном анализе данных, отчего трудно выявить достоверность данных и построить достаточно точную модель;
маленький объём данных, разбросанных очень неравномерно на большом диапазоне (от 11 до 35).
Посчитать собственные результаты при помощи найденной модели можно здесь.
Теперь практически в любой момент тренировочного процесса14 спортсмен может оценить свой ПМ, не делая проходку. Отслеживание ПМ помогает оценить близость к намеченной цели и вообще наличие прогресса: иногда обстоятельства мешают уложиться в цикл (особенно если это третий цикл подряд) и вместо семи повторений спортсмен может сделать только 5 — считаются ли эти пять повторений прогрессом? Так или иначе, можно сделать перерыв и начать новый цикл, основываясь уже на новых данных15.
Здесь всё интуитивно понятно. Для человека, например, моей комплекции (рост 170, вес 70) для приседа можно составить такую таблицу (исходя из модели \(b_5\)):
В этой таблице каждая строка обозначает одно и то же усилие, выраженное разным числом повторений. Если для человека верна какая-то ячейка (вес на число повторений), должна быть верна и вся строка.
Также тут можно проследить такую возможность: если в режиме на, например, 5 повторений вы взяли 80кг (80х5 эквивалентно 95.9485356), но смогли сделать с этим весом 8 повторений (что эквивалетно 101.8705815), то какой вес нужно взять, чтобы делать прежние 5 повторений? Из формулы следует, что 84.9497114.
Если вы ходите поднять свой \(RM\) на 15 кг, не обязательно ставить цель “в конце цикла поднять \(RM+15\) кг на раз”. Зная \(RM+15\), можно рассчитать свой целевой 2ПМ, 3ПМ или 4ПМ и стремиться к концу цикла достичь именно тех величин.
Известно, что невозможно постоянно увеличивать вес отягощений, так как рано или поздно спортсмен упрётся в тренировочное плато и может дойти до перетренированности, истощиться, заболеть, а то и получить травму, в результате чего произойдёт снижение силовых показателей. Основной способ обойти эту проблему и многие годы увеличивать силовые показатели — это циклирование (периодизация нагрузок). При этом даже сейчас циклы строятся больше на основе опыта (методом проб и ошибок) и интуиции, чем с использованием каких-то научных знаний. И хоть за последние полвека уже тысячи спортсменов доказали пользу нескольких моделей циклирования и разнообразия нагрузок, текущая ситуация далека от идеальной. Я считаю, что построенная ранее модель (или аналогичная ей) может сделать в этом направлении шаг вперёд.
Если раньше многие циклы записывались от силы таблицами в Excel и не всегда были понятны, то использование модели, отождествляющей повторный максимум с многоповторным, позволяет визуализировать зависимость “максимального усилия” от дня тренировки, то есть отождествить цикл с временным рядом. Дальнейшие исследования таких временных рядов позволит разработать циклы, близкие к идеальным, или хотя бы обнаружить ту составляющую в циклах, за счёт которых они работают, и отсеять те программы тренировок, которые не будут работать.
Таким образом, в будущем тренировочный процесс можно будет представить как последовательность нагрузок в разных режимах (в основном для тренировки разных мышечных волокон), которые требуют усилий, подчиняющихся определённым математически выраженным закономерностям.
Далее приводятся примеры визуализации нескольких циклов.
library(tidyverse)
library(magrittr)
library(ggformula)
library(ggalt)
mx = function(vals, count, withcomp = T) {
t = 1:length(vals) %>% map_dbl(function(i) f(MRM = vals[i], Count = count[i],
Action = "Жим")[1])
# t=vals*(1+0.0333*count)
t[count == 1] = vals[count == 1]
if (withcomp) {
s = t[length(t)] * (1 + runif(1, 0, 0.005))
return(c(t, s))
}
return(t)
}
x = c(100, 120, 115, 105, 130, 120, 125)
y = c(10, 4, 6, 10, 3, 6, 5)
vc = c(mx(x, y), mx(x + 4, y), mx(x + 9, y))
lb = paste0(c(x, vc[8], x + 4, vc[16], x + 9, vc[24]) %>% round(), "x", c(y, 1, y,
1, y, 1))
Возьмём очень простой цикл из тех, которые можно иногда применять в межсезонье. Он состоит из 7 тренировок, на которых самый тяжёлый подход составляет (при конкретных цифрах) 100x10, 120x4, 115x6, 105x10, 130x3, 120x6, 125x5 соответственно.
Если прогнать такой цикл через модель (в случае с приседом), получим такую динамику:
Сайт, где можно опробовать модель на себе
Русскоязычный опрос, англоязычный опрос. Если данных станет значительно больше, исследование повторится.
Раздел этой статьи на GitHub, исходные датасеты, коды
Книги и материалы по пауэрлифтингу
Моя электронная почта: qtckpuhdsa@gmail.com
[1] Хэтфилд Ф. К., Всестороннее руководство по развитию силы // Красноярск: Союзспорт, 1992. - 284 с.
[2] Вадим Протасенко. Думай! Или «Супертренинг» без заблуждений.
[3] Уикем Х., Гроулмунд Г. Язык R в задачах науки о данных: импорт, обработка, визуализация и моделирование данных. : Пер. с англ. — СПб. : ООО “Диалектика”, 2018. — 592 с.
[4] Мастицкий С. Э., Шитиков В. К. Сатистический анализ и визуализация данных с помощью R. – М.: ДМК Пресс, 2015. – 496 с.
[5] Роберт И. Кабаков. R в действии. Анализ и визуализация данных в программе R. / пер. с англ. Полины А. Волковой. – М: ДМК Пресс, 2016. – 588 с.
[6] Джеймс Г., Уиттон Дм Хасти Т., Тибширани Р. Введение в статистическое обучение с примерами на языке R. Пер. с англ. С. Э. Мастицкого - М.: ДМК Пресс, 2016. - 450 с:
[7] Крупкина, Т. В. Математическая статистика [Электронный ресурс] : курс лекций / Т. В. Крупкина, А. К. Гречкосеев. – Электрон. дан. (3 Мб). – Красноярск : ИПК СФУ, 2009.
[8] Brandon Lilly «The Cube method» (2012)
иногда их называют разовыми максимумами, РМ↩
имеется ввиду, что нетрудно и более безопасно на следующей тренировке взять достаточно большой вес и сделать с ними максимальное число повторений (около 4-8)↩
зачастую так думают, люди, которые своему опыту доверяют намного больше, чем научному знаю, тем более в спортивном мире часто всплывают разные псевдонаучные методики, которые приносят спортсменам только вред↩
“преимущественно” означает, что предположительно именно из этих группы поступила основная масса опрошенных↩
если будет доказано наличие гиперплазии (деления мышечных волокон) в скелетных мышцах человека, можно будет утверждать, что силовые тренировки увеличивают количество белых волокон в работающих мышцах↩
речь идёт о тренировках с более чем 90% от ПМ или с более чем 100% от ПМ в частичной амплитуде, а также об изометрических упражнениях; во многом такие упражнения выполняются для того, чтобы приучить организм поднимать огромные веса, что и значит – тренировка способности генерировать больший импульс и увеличение порога его подавления↩
в некотором смысле это одно и то же↩
конечно, это лишь условные размышления без учёта особенностей отдельных частей тела и того, что ввиду усталости каждое следующее повторение делается дольше предыдущего. Важно лишь усвоить, что разные диапазоны повторений по-разному связаны с силой.↩
дело в том, что одни и те же люди могли вносить более одного ответа. В итоге два наблюдения считаются принадлежащими одному человеку, если они совпадают по переменным AgeGroup, Height, BodyType, Experience, Sex, IndexGroup (которые вряд ли изменятся за время между фиксацией разных наблюдений)↩
к сожалению, этого не получилось сделать, так как испытуемые редко пользуются электронной почтой, видимо↩
например, высокий импульс ЦНС, не соответствующий уровню креатинфосфата. В таком случае человек может на раз пожать большой вес, но на несколько раз уже недостаточно большой: при ПМ в 140 на 3 раза жмётся не почти 130, а 120↩
такую нижнюю границу можно предсказать, просто умножив вес примерно на 1.5, исследование же рассчитано на поиск верхней границы↩
по крайней мере, наблюдения от женщин, прошедших опрос, не становились выбросами для этих моделей, а хорошо вписывались во многие наблюдения, принадлежавшие мужчинам↩
разумеется, после тех тренировок, где происходит максимальное усилие: часто силовые циклы делят тренировки на тяжёлые и лёгкие, силовые и скоростные и т. п., но максимальное усилие, позволяющее оценить ПМ, совершается именно на тяжёлых силовых тренировках (и то – не всегда)↩
но также можно несколько тренировок уделить подсобным или родственным упражнениям, а потом вернуться к прежнему циклу↩