1 Введение

Как известно, научные исследования, развитие Интернета и компьютерной техники открыли нам возможность создавать и использовать искусственный интеллект в огромном множестве прикладных задач, начиная с простейших моделей предсказания цен на дома и фильтров спама, продолжая распознаванием лиц и очень качественными переводчиками, а заканчивая машинами с автопилотом и генеративными моделями, позволяющими исследовать такие удивительные и, казалось бы, присущие только человеческому мозгу свойства как воображение и индуктивное мышление. Одна из ключевых математических закономерностей, почему это стало возможным, заключается в возможности представления многих задач через пространства низкой размерности, правильные признаки [9]. Иными словами, зачастую огромная часть на самом деле очень сложной закономерности описывается подпространством низкой размерности, коротким набором чисел. Эта идея напрямую реализуется во многих моделях обработки естественного языка, автокодировщиках и даже сжатии изображений вейвлет-преобразованиями; многие алгоритмы классического машинного обучения, в том числе дискриминантный анализ и машины опорных векторов, сводятся к тому, чтобы представить исходные признаки в таком пространстве, в котором решение задачи сильно упростится; нейронные сети хороши в основном тем, что сами генерируют оптимальные признаки, часто непонятные человеку. Сложнейшие задачи социологии, предсказания результатов матчей и, как далее будет показано, задачи предсказания повторных максимумов для человека вполне реально решать с хорошим качеством, если обладать полезными признаками.

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

1.1 Зачем предсказывать повторные максимумы?

При подготовке к соревнованиям по пауэрлифтингу и даже в процессе любительских тренировок полезно (а иногда и необходимо) оценить свои текущие возможности, не делая “проходку”, так как “проходка” оказывает сильное воздействие на нервную систему (стресс) и с немалой вероятностью чревата травмами, её нежелательно делать часто и к ней нужно сначала циклически подготавливаться, затем отдыхать (чтобы суметь мобилизовать больше ресурсов и уменьшить риск травм), что занимает много времени и сил — и всё ради того, чтобы просто узнать, какой именно вес ты способен пожать, присесть или потянуть конкретно сейчас. Гораздо разумнее было бы оценить эти величины (повторные максимумы, ПМ1), основываясь на результатах, которые ты показывал совсем недавно в процессе обычных тренировок или которые намного проще продемонстрировать2 (многоповторные максимумы, МПМ), то есть используя уже доступную или с меньшими рисками добываемую информацию. Кроме того, если удастся построить такую модель, способную оценить силу человека, исходя из его последних достижений, можно будет сделать более явной связь между тренировками и реальными результатами, предотвращая перетренированность и временные потери на тренировки по программам, не дающим эффекта.

Итак. Зачем же нужно предсказывать повторные максимумы? Регрессионные модели, которые требуется построить, помогут:

  1. адекватно оценить свои возможности перед соревнованиями и заказать веса, очень близкие к реальному максимуму; кроме того, знать свой ПМ, не делая проходку, очень важно не только для тех, кто занимается пауэрлифтингом (см. статью);

  2. в период подготовки оценивать скорость своего прогресса (или вообще его наличие), предотвращая перетренированность; сравнивать свои результаты с результатами предыдущих циклов, даже если тогда использовалось другое число повторений;

  3. более обоснованно планировать программу тренировок: пытаясь чередовать разные упражнения и разные диапазоны повторений, легко сделать программу, которая на самом деле не будет давать значимого эффекта или потребует неподъёмных усилий; чтобы снизить вероятность подобных свойств, программу можно составлять в согласии с дополнительными инструментами, основанными больше чем на опыте нескольких человек

  4. обосновать действенность разных методик и выразить различия между ними (этому посвящён последний раздел статьи);

  5. более точно замерять силовые качества групп мышц-антагонистов (очень редко для этого вообще возможно измерять 1ПМ у обеих групп, как и МПМ при одном и том же числе повторений);

  6. выявить математические закономерности в силовых показателях человека.

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

1.2 О калькуляторах

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

Примеры:

  • формула из книги Брендона Лилли, с которой началось исследование. За более чем месяц я так и не получил ответа от руководства сайта Juggernaut, откуда взялась эта формула (чуть позже я выяснил, что это округлённая формула Вендлера);

  • калькулятор на (весьма хорошем) сайте Symmetric Strength, аналогичная ситуация;

  • формулы Мориса и Райдина, которые, как позже будет показано, нерабочие и, скорее всего, получены из слишком маленьких выборок;

  • формулы О Коннора, Бжицки (Бржыки), Лэндера и другие;

  • также этот калькулятор, этот, этот и разные клоны одних и тех же калькуляторов.

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

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

1.3 О данных и ресурсах

Для сбора наблюдений был создан опрос в Google Forms на русском языке и его англоязычный аналог.

Русскоязычный опрос распространялся через соц. сеть ВКонтакте преимущественно4 в следующих группах: Пауэрлифтинг | Тяжелая атлетика, Я ♥ ПАУЭРЛИФТИНГ, ПАУЭРЛИФТИНГ И ЖИМ ЛЁЖА 18+, Твой Тренер; аналогично англоязычный опрос распространялся на Facebook преимущественно здесь: Powerlifting Motivation, International Powerlifting League (IPL), Powerlifting Motivation Chat, Powerlifting Memes. Кроме того, несколько наблюдений я собрал лично.

Спустя два месяца от создания опросов данные были выгружены и началась их обработка. Теперь эти данные и всё, связанное с ними (в том числе последняя версия этого документа), хранятся в репозитории.

Для обработки данных и создания отчёта использовалась среда RStudio и язык R версии 3.6.3. Скачав некоторые документы, вы сможете воспроизвести все результаты, о которых будет рассказано далее.

1.4 Отправная точка

В книге “Система тренировок КУБ” на странице 23 (34 в оригинальной версии) приводится формула для определения повторного максимума: \[предполагаемый\ повторный\ максимум = вес * (1 + 0.0333 * повторения),\]

где берётся некоторый рабочий вес и максимально возможное число повторений с ним. В оригинальных обозначениях:

\[RM=WEIGHT \cdot (1+0.0333\cdot REPS).\]

К примеру, если вы можете пожать 100 кг на 5 раз, то из этой формулы следует, что вы сможете пожать 115 на раз и 90 на 9 раз (звучит правдоподобно).

К слову, примерно такая модель с некоторыми поправками на диапазон повторений используется на сайте Symmetric Strength. Там максимально возможное количество повторений равно 10.

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

1.5 Гипотеза и допущения

Сила человека в одном повторении зависит от пяти составляющих (факторов):

  1. Количество миофибрилл в мышечном волокне. Чем их больше, тем большую силу может развить волокно.

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

  3. Соотношение красных и белых мышечных волокон в работающей мышце: чем больше белых волокон, тем большую силу способна развить мышца на короткий промежуток времени. Это соотношение является разным для разных мышц и разных людей (определяется генетикой) и, как пока считается, плохо поддаётся коррекции5.

  4. Количество вовлечённых в работу волокон. Чем их больше, тем больше сила мышцы. Количество задействованных волокон зависит от импульса ЦНС и порога действия органов Гольджи : чем сильнее импульс, тем больше волокон может вовлечься в работу, однако импульсы выше некоторого порога подавляются органами Гольджи, чтобы человек не мог сознательно применить силу, способную привести к разрыву сухожилий. Тренировки с субмаксимальными и запредельными весами способны воздействовать как на способность генерировать импульс, так и на порог его подавления6.

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

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

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

\[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.

1.6 Соображения о возможности построения модели

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

  • Опрос проводился почти полностью в Интернете, точность и честность ответов остаются на совести испытуемых. Быть может, кто-то грубо округлил свои данные или назвал данные, которые нельзя считать идентичными (например, разница между выявлением ПМ и МПМ составляла большой срок, отчего уже нельзя говорить, что исследуемые возможности принадлежат одному и тому же телу ) либо не совсем понял целей опроса и назвал заниженные результаты (например, тяжёлый разминочный подход на 3 повторения, когда в действительности возможно сделать 5).

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

  • Есть множество факторов, оказывающих большое влияние, трудно измеримых и при этом варьирующихся у одного и того же человека. Например, при одних и тех же мышцах человек может поднять один и тот же вес на 3 или 5 раз в зависимости от уровня креатинфосфата и психологического настроя; при следующей тренировке эти параметры могут быть уже значимо другими, отчего правила, хорошо работавшие недавно, перестанут хорошо работать сейчас.

В то же время имеются доводы в пользу модели:

  • ПМ предсказывается не только на основе роста или веса, но и на основе многоповторного максимума, то есть не многим меньшего веса и числа повторений с ним. Нельзя отрицать, что МПМ, всё же, содержит немалую информацию о ПМ. Как было замечено авторами книги “Анализ данных в науке и технике”, “во многих естественно возникающих системах в данных присутствуют преобладающие паттерны, характеризуемые аттрактором или многообразием низкой размерности”, то есть часто огромную долю на самом деле сложной закономерности описывает подпространство низкой размерности, несколько очень информативных признаков; в нашем случае МПМ и диапазон повторений — как раз такие признаки.

  • Существует модель Вендлера (и схожие подели), которая приемлемо работает для многих спортсменов. Сам факт наличия такой модели говорит о том, что ПМ можно описать через МПМ в какой-то степени или хотя бы для какой-то группы людей.

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

1.7 План исследования

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

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

В конце я сделаю выводы и опишу простейшие возможности применения полученной модели.


2 Описание выборки и разведочный анализ данных

2.1 О прошедших опрос

С помощью опроса было получено всего 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 (используемый датасет), отсортированная по некоторым столбцам:

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

Среди испытуемый почти половину составляли эндоморфы:

и тест хи-квадрат говорит, что это отличие статистически значимо, то есть среди пауэрлифтеров эндоморфы встречаются чаще эктоморфов или мезоморфов:

Chi-squared test for given probabilities: data.unique %>% filter(Sex == "Мужчина") %>% select(BodyType) %>% table()
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()  #для всех
3-sample test for equality of proportions without continuity correction: . (continued below)
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сли разделить на эндоморфов и всех остальных
2-sample test for equality of proportions with continuity correction: .
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()
Analysis of Variance Model
  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()
Welch Two Sample t-test: data %>% filter(BodyType != "Эндоморф") %>% select(Index) %>% and data %>% filter(BodyType == "Эндоморф") %>% select(Index) %>% t() %>% as.numeric() and t() %>% as.numeric() (continued below)
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

2.2 Взаимодествия переменных

Иллюстрация некоторых парных взаимодействий:

Корреляции количественных переменных:

Зависимость повторного максимума от индекса массы тела:

Оценка коэффициента простой регрессионной модели в зависимости от числа повторений:

Из следующего графика может следовать, что начиная с 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 для каждого повторения
Число повторений Корреляция 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-значения для типа движения 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()

Дополнительные закономерности:

2.3 Исправление опечаток

Часто при сборе данных возникают ненормальные наблюдения, полученные из-за опечаток или недопониманий. В этот раз таких наблюдений накопилось около 10%. Если поразмыслить над их причинностью, то чаще всего испытуемый забывал поставить цифру “1” перед числом, в результате вместо роста 175 получался рост 75 и т. п.

В то же время могло быть и так, что испытуемый неверно понял суть исследования и в анкете описывал просто подход, который был выполнен, а не подход для многоповторного максимума (то есть на пределе усилий), либо при проходке использовал экипировку или другую технику упражнения, либо, опять же, опечатался; в итоге жим 170х5 оказывался равным 220, хотя ясно, что тут должны стоять 170х5 и 200 либо 170х15 и 220.

С такими выбросами можно сделать только две вещи:

  1. исправить их, опираясь на логику либо переспросить того, кому это наблюдение принадлежит10;
  2. удалить из выборки.

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

2.4 Удалённые данные

Перед построением модели из обучающей выборки заранее были исключены следующие наблюдения:

  • некоторые выбросы, в том числе несколько наблюдений, которые изначально не вписывались в модель и по логике очень сомнительны; речь идёт о наблюдениях типа \(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

2.5 Подведение итогов и отбор признаков

Перечислим основные идеи об особенностях данных, сказанные ранее:

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

  • Эндоморфы среди пауэрлифтеров встречаются чаще мезоморфов или эктоморфов. При этом у эндоморфов значимо чаще встречается “ожирение первой стадии”, чем у представителей других телосложений;

  • Результаты в приседе растут с увеличением индекса массы тела лишь до некоторого порога. Увеличение индекса массы тела выше “ожирения первой стадии” не будет полезным;

  • Сильная корреляция между индексом массы тела и повторным максимумом наблюдается у мезофорфов – в жиме, у эктоморфов – в тяге, у эндоморфов – в приседе;

  • Не обнаружено значимой разницы значений \(\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.

Дальнейшие действия:

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

  2. Построить разные модели для оценки конкретно \(RM\) и выбрать ту, которая более проста и даёт меньшую ошибку кросс-валидации.

  3. Сравнить выбранные модели и определить лучшую из них.


3 Построение моделей

Вычислительные возможности позволяют создать и проверить огромное количество моделей. Цель исследователя – предложить несколько вариантов и выбрать среди них лучший. Кроме этого, нужно посмотреть, как работает модель на разных группах данных, чтобы обнаружить выбросы или обнаружить, что на такой-то группе модель вообще не может работать, из-за чего такую группу придётся исключить (эта работа уже проделана при самом исследовании, чтобы не нагружать статью).

Итак, в модели представляют интерес следующие показатели:

3.1 Недостатки исходного решения

Применив формулу \(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
Fitting linear model: log(RM/MRM) ~ Action2 + Count:Action2
Observations Residual Std. Error \(R^2\) Adjusted \(R^2\)
162 0.04448 0.7585 0.7539

Скорее всего, формулы Мориса и Райдина подгонялись на маленькой выборке или на выборке, в которой почти все данные принадлежали нескольким людям.

3.2 Уточнение коэффициентов

Теперь возьмём модель вида \(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 повторений, содержащий меньше всего наблюдений.

3.3 Уточнение коэффициентов: зависимость от диапазона

Теперь сделаем поправку для коэффициентов \(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;

  • Модель статистически значима и удовлетворяет всем нужным требованиям, кроме гетероскедастичности.

3.4 Третье поколение моделей

Путём пошагового отбора переменных были найдены ещё две равнозначные модели (\(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%;

  • В целом, на каждом диапазоне имеется почти одинаковый разброс;

  • Модель статистически значима и удовлетворяет всем нужным требованиям.


3.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 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()
Analysis of Variance Table
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) не было обнаружено доказательств значимости включения этих факторов в модель.

Как итог, для определения ПМ нужны лишь следующие данные:

  • МПМ;

  • Число повторений;

  • Движение;

  • Рост и вес спортсмена.


3.6 Нелинейные модели

В этом разделе происходит построение нелинейных моделей для предсказания повторных максимумов, проверяются формулы МакГлотина, Ломбарди и другие нелинейные формулы. Оценка качества моделей происходит по аналогичным принципам, то есть значение имеют:

  1. точность моделей при перекрёстной проверке, чтобы их можно было сравнить и выбрать лучшую;

  2. точность модели на обучающих данных (низкое смещение), поскольку неточные модели не имеют пользы, даже если превосходят другие при перекрёстной проверке;

  3. простота модели.

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

3.6.1 Основные известные модели

Модели Эпли, Вендлера и О’Коннора – это одна и та же модель вида \(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

3.6.2 Новые предложения

Кроме этого, я попробую модель \(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))

3.6.3 Сравнение нелинейных моделей

# 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\), но не факт, что значимо:

4 Выводы

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

Я уверен, что большие погрешности в единичных случаях – это та часть закономерности, зависящая от человека и многих неучтённых характеристик. Тем не менее, влияние этих неучтённых факторов далеко не так велико, как предполагали многие: намного больше повторный максимум зависит от обычной математики.

Было продемонстрировано, что для числа повторений выше 10 нельзя построить достаточно точную модель (по крайней мере, при текущем наборе данных), но для диапазона 2-10 — ещё как можно.

Диапазон выше 10 повторений был отсеян по следующим причинам:

  1. физиологически менее сильная связь между 1ПМ и большим числом повторений;

  2. меньшая детерминированность между 1ПМ и большим числом повторений, обнаруженная при разведочном анализе данных, отчего трудно выявить достоверность данных и построить достаточно точную модель;

  3. маленький объём данных, разбросанных очень неравномерно на большом диапазоне (от 11 до 35).

Посчитать собственные результаты при помощи найденной модели можно здесь.


5 Возможности для применения (дополнительный раздел)

5.1 Оценка наличия прогресса в тренировках

Теперь практически в любой момент тренировочного процесса14 спортсмен может оценить свой ПМ, не делая проходку. Отслеживание ПМ помогает оценить близость к намеченной цели и вообще наличие прогресса: иногда обстоятельства мешают уложиться в цикл (особенно если это третий цикл подряд) и вместо семи повторений спортсмен может сделать только 5 — считаются ли эти пять повторений прогрессом? Так или иначе, можно сделать перерыв и начать новый цикл, основываясь уже на новых данных15.

5.2 Выражение многоповторного максимума через многоповторный

Здесь всё интуитивно понятно. Для человека, например, моей комплекции (рост 170, вес 70) для приседа можно составить такую таблицу (исходя из модели \(b_5\)):

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

Также тут можно проследить такую возможность: если в режиме на, например, 5 повторений вы взяли 80кг (80х5 эквивалентно 95.9485356), но смогли сделать с этим весом 8 повторений (что эквивалентно 101.8705815), то какой вес нужно взять, чтобы делать прежние 5 повторений? Из формулы следует, что 84.9497114.

5.3 Постановка эквивалентной цели

Если вы ходите поднять свой \(RM\) на 15 кг, не обязательно ставить цель “в конце цикла поднять \(RM+15\) кг на раз”. Зная \(RM+15\), можно рассчитать свой целевой 2ПМ, 3ПМ или 4ПМ и стремиться к концу цикла достичь именно тех величин.


5.4 Возможности для применения в анализе силовых циклов

Известно, что невозможно постоянно увеличивать вес отягощений, так как рано или поздно спортсмен упрётся в тренировочное плато и может дойти до перетренированности, истощиться, заболеть, а то и получить травму, в результате чего произойдёт снижение силовых показателей. Основной способ обойти эту проблему и многие годы увеличивать силовые показатели — это циклирование (периодизация нагрузок). При этом даже сейчас циклы строятся больше на основе опыта (методом проб и ошибок) и интуиции, чем с использованием каких-то научных знаний. И хоть за последние полвека уже тысячи спортсменов доказали пользу нескольких моделей циклирования и разнообразия нагрузок, текущая ситуация далека от идеальной. Я считаю, что построенная ранее модель (или аналогичная ей) может сделать в этом направлении шаг вперёд.

Если раньше многие циклы записывались от силы таблицами в Excel и не всегда были понятны, то использование модели, отождествляющей повторный максимум с многоповторным, позволяет визуализировать зависимость “максимального усилия” от дня тренировки, то есть отождествить цикл с временным рядом. Дальнейшие исследования таких временных рядов позволит разработать циклы, близкие к идеальным, или хотя бы обнаружить ту составляющую в циклах, за счёт которых они работают, и отсеять те программы тренировок, которые не будут работать.

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

Далее приводятся примеры визуализации нескольких циклов.

5.4.1 Простейший цикл

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 соответственно.

Если прогнать такой цикл через модель (в случае с приседом), получим такую динамику:

5.4.2 Пиковый цикл Верхошанского

Ссылка на цикл

5.4.3 Цикл тома МакКаллоу

Ссылка на цикл

6 Полезные ссылки

Сайт, где можно опробовать модель на себе

Русскоязычный опрос, англоязычный опрос. Если данных станет значительно больше, исследование повторится.

Мой гитхаб

Раздел этой статьи на GitHub, исходные датасеты, коды

Книги и материалы по пауэрлифтингу

Моя электронная почта:

7 Литература

[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)

[9] Брантон С. Л., Куц Дж. Н. Анализ данных в науке и технике / пер. с англ. А. А. Слинкина. – М.: ДМК Пресс, 2021. – 574 с.: ил.

8 О себе

Меня зовут Дмитрий Пасько, я автор пятикнижия “Римская болезнь”, философ, модель и математический программист. Мои профессиональные сферы интересов — это оптимизация/ускорение кода и искусственный интеллект, а именно: машинное обучение на табличных данных, обработка естественного языка, обучение с подкреплением и эволюционные алгоритмы. Описанные сферы так прекрасно сочетаются в моём мировоззрении, что стали частью моей философии.

Я занимаюсь спортом с 12 лет, из них около 5 занимался пауэрлифтингом. Опыт в спорте, интерес в результатах, аналитические способности и, возможно, вынужденный карантин однажды собрались вместе и позволили провести это исследование.

Хотите узнать больше?


  1. иногда их называют разовыми максимумами, РМ

  2. имеется ввиду, что нетрудно и более безопасно на следующей тренировке взять достаточно большой вес и сделать с ними максимальное число повторений (около 4-8)

  3. зачастую так думают, люди, которые своему опыту доверяют намного больше, чем научному знанию, тем более в спортивном мире часто всплывают разные псевдонаучные методики, которые приносят спортсменам только вред

  4. “преимущественно” означает, что предположительно именно из этих группы поступила основная масса опрошенных

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

  6. речь идёт о тренировках с более чем 90% от ПМ или с более чем 100% от ПМ в частичной амплитуде, а также об изометрических упражнениях; во многом такие упражнения выполняются для того, чтобы приучить организм поднимать огромные веса, что и значит – тренировка способности генерировать больший импульс и увеличение порога его подавления

  7. в некотором смысле это одно и то же

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

  9. дело в том, что одни и те же люди могли вносить более одного ответа. В итоге два наблюдения считаются принадлежащими одному человеку, если они совпадают по переменным AgeGroup, Height, BodyType, Experience, Sex, IndexGroup (которые вряд ли изменятся за время между фиксацией разных наблюдений)

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

  11. например, высокий импульс ЦНС, не соответствующий уровню креатинфосфата. В таком случае человек может на раз пожать большой вес, но на несколько раз уже недостаточно большой: при ПМ в 140 на 3 раза жмётся не почти 130, а 120

  12. такую нижнюю границу можно предсказать, просто умножив вес примерно на 1.5, исследование же рассчитано на поиск верхней границы

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

  14. разумеется, после тех тренировок, где происходит максимальное усилие: часто силовые циклы делят тренировки на тяжёлые и лёгкие, силовые и скоростные и т. п., но максимальное усилие, позволяющее оценить ПМ, совершается именно на тяжёлых силовых тренировках (и все равно не всегда)

  15. но также можно несколько тренировок уделить подсобным или родственным упражнениям, а потом вернуться к прежнему циклу