Аналитика здоровья: понимание упражнений, сна, схемы сжигания калорий и оптимизация в правильном направлении
Последние четыре года я регулярно занимаюсь спортом. Впервые у меня нет доступа к тренажерному залу или какому-либо другому оборудованию в течение столь долгого времени из-за ситуации пандемии. Надеюсь, большинство из нас сталкивается с тем же. Все мы знаем, как важно оставаться дома и сгладить пандемическую кривую.
Тем не менее, мы все еще можем изо всех сил оставаться в форме, оставаясь дома. Я тренировался на своем балконе / террасе, используя лестницу в качестве перекладины для подтягивания, длинную штангу в качестве веса (к счастью, я нашел ее), делал несколько видов отжиманий и трубку с сопротивлением, которую я купил в прошлом для тренировки. во время моих путешествий.
Чтобы количественно оценить эффективность домашней тренировки, я загрузил свои данные Fitbit, выполнил некоторую предварительную обработку и пометил их как данные до и после периода блокировки. Основная цель заключалась в том, чтобы понять:
Какие разные метрики Fitbit? Есть ли между ними какие-то отношения?
Как выглядят мои калории, сожженные в период до и после блокировки?
Смог ли я сжечь / достичь такой же интенсивности дома?
Как изменился мой режим сна за эти два периода?
Могу ли я составить разумную рекомендацию на основе этого анализа? Например, сколько часов спать, чтобы мое тело восстановилось?
Что я могу оптимизировать в результате этого анализа?
В этом сообщении в блоге я намерен проанализировать данные и найти ответ на поставленные выше вопросы. Этот пост также является отличным примером того, как мы можем использовать Google Analytics, чтобы стать здоровыми и подтянутыми. Как мы можем создавать инсайты на основе данных и создавать умные рекомендации относительно сна, напоминаний о тренировках, значков оценки тренировок и т. Д. Я сделал данные и код доступными здесь. Приступим к самому интересному.
Проблемы, с которыми сталкиваются во время домашней тренировки
Прежде чем перейти к коду и найти идеи, я хочу выделить проблемы, с которыми я сталкиваюсь во время домашней тренировки, которые заставили меня копнуть глубже и провести этот анализ.
Я изо всех сил старался поддерживать свою физическую форму, используя все, что мог найти и использовать на тренировке. Основные проблемы, с которыми я сталкиваюсь:
1. Отсутствие тяжеловесов и оборудования.
В тренажерном зале я делал 110 кг (242 фунта) приседания, 120 кг (265 фунтов) становую тягу и так далее. Дома я не могу достать таких тяжеловесов. Итак, я увеличил количество повторений с более легкой удочкой.
У меня нет надлежащей перекладины для подтягиваний или подтягиваний, поэтому я справляюсь с лестницей. Я использую трубку с сопротивлением для большинства своих упражнений. Вес / напряжение меньше, поэтому я снова увеличил количество повторений. Но, тем не менее, отсутствие тяжеловесов и оборудования - проблема.
Я нашел интересную статью, в которой говорится, что поднятие тяжестей приводит к росту мышц, что приводит к сжиганию большего количества калорий. Итак, подъем веса - это ключ к успеху.
2. Недостаточно места.
Я не могу выйти на пробежку или гулять, так как в настоящее время это рискованно. Чтобы учесть это, я делаю кардио на коврике для йоги.
Вот некоторые упражнения, которые я делаю дома, чтобы поддерживать свою физическую форму. Ниже вы можете заметить, что я все время ношу Fitbit.
Важные вещи, о которых следует знать
Потребление калорий для человека зависит от его пола, возраста, роста и веса. Существуют онлайн-калькуляторы, которые можно использовать для его расчета. Также можно использовать информацию о поле, возрасте, росте и весе для расчета ИМТ (индекса массы тела).
Точно так же количество сжигаемых калорий зависит от факторов пола, возраста, роста и веса. Для его расчета доступны Онлайн калькуляторы.
Анализ данных о деятельности и интересные выводы
Два важных файла, которые предоставляет Fitbit, - это данные о деятельности и данные о сне. Давай посмотрим на это
Я пометил данные отдельно как до блокировки (до 15 марта 2020 года) и после блокировки (после 15 марта 2020 года). Я также удалил данные по выходным, так как в субботу и воскресенье я обычно не занимаюсь спортом, чтобы дать своему телу время для отдыха и восстановления.
Анализ показателей
Давайте посмотрим на Distplot (Графики гистограммы) и Box plot. Иногда среднее значение может быть смещенным параметром, поэтому следует смотреть на Процентильное распределение.
metric = 'Calories Burned' #Equally dividing Pre-Post Data into 21 Percentile buckets bins = 21 percentile_bins = np.linspace(0,100,bins) pre_bins = np.percentile(df_exercise_preLockdown[metric], percentile_bins) post_bins = np.percentile(df_exercise_postLockdown[metric], percentile_bins) sns.distplot(pre_bins,kde_kws={ "lw": 2, "label": "Pre Lockdown"},axlabel=metric) sns.distplot(post_bins,kde_kws={ "lw": 2, "label": "Post Lockdown"}) plt.show()
Среднее количество сжигаемых калорий снизилось с 2475 до 2290 ккал за период после блокировки. Произошло снижение примерно на 7,5%.
5-Days with Minimum Calories Burned during Pre-Lockdown Period 2128, 2154, 2203, 2229, 2330 5-Days with Maximum Calories Burned during Pre-Lockdown Period 2597, 2755, 2755, 2896, 2969 5-Days with Minimum Calories Burned during Post-Lockdown Period 1864, 1921, 1935, 1959, 1962 5-Days with Maximum Calories Burned during Post-Lockdown Period 2688, 2729, 2777, 2827, 3224 *All units in Kcalorie
Еще одна интересная вещь, на которую следует обратить внимание, - это также уменьшилась согласованность. Наблюдается заметная большая разница в количестве калорий, сожженных во время пост-блокировки, по сравнению с периодом до блокировки. Это видно из графиков и рассчитанного стандартного отклонения. Я вроде как знаю причину. В офисе я много хожу от стола до конференц-залов, а также гуляю с коллегами после обеда. Расписание занятий в моем спортзале было постоянным во время предварительной блокировки, но сейчас, дома, я отклоняюсь от установленного распорядка и иногда начинаю поздно и заканчиваю скоро. Бинго !! Я нашел возможности для улучшения. Последовательность - ключ к успеху.
Связь между метриками
Далее я хотел найти взаимосвязь между пройденными шагами, пройденным расстоянием и сожженными калориями. И интуитивно, и глядя на данные, кажется, что корреляция между ними положительная. Давайте проверим величину или силу корреляции.
Все показатели полностью коррелируют с коэффициентом корреляции, равным 1. Это в основном означает, что если мы знаем правильную формулу, которую использует Fitbit, мы можем вычислить шаги и расстояние с точностью до сожженных калорий. Кроме того, это указывает на то, что отношение / формула является линейной.
Анализ данных о сне и интересные выводы
Давайте посмотрим на данные о сне. Я пометил данные как до и после блокировки.
Анализ показателей
Давайте посмотрим на Distplot (Графики гистограммы) и Box plot. Иногда среднее значение может быть смещенным параметром, поэтому мы можем посмотреть на процентильное распределение.
metric = 'MinutesAsleep' #Equally dividing Pre-Post Data into 21 Percentile buckets bins = 21 percentile_bins = np.linspace(0,100,bins) pre_bins = np.percentile(df_sleep_preLockdown[metric], percentile_bins) post_bins = np.percentile(df_sleep_postLockdown[metric], percentile_bins) sns.distplot(pre_bins,kde_kws={ "lw": 2, "label": "Pre Lockdown"},axlabel=metric) sns.distplot(post_bins,kde_kws={ "lw": 2, "label": "Post Lockdown"}) plt.show()
Мое тело с годами приучало себя меньше спать и при этом оставаться активным. Есть статьи, посвященные тому, как требования к сну различаются у разных людей. Это зависит от таких факторов, как гены, и от того, как организм тренировался на протяжении многих лет. Вот интересная статья.
Среднее количество сожженных калорий в период после блокировки снизилось на 7,5%. Также наблюдается снижение среднего сна на 14 минут. Но хорошо то, что во время PostLockdown дисперсия очень мала. Мои часы сна стали более стабильными. Отлично !! то, что меня радует, и я хотел бы сделать это даже после окончания блокировки.
Умные рекомендации
Затем я хочу работать над разумными рекомендациями, в зависимости от количества сожженных калорий, рекомендовать правильное количество сна в соответствии с потребностями моего тела.
Бывают дни, когда я чувствую себя ленивым из-за недостатка сна или тяжелых тренировок, но большую часть дней я чувствую себя бодрым и обновленным благодаря тому количеству сна, которое я получаю.
Во-вторых, я тренируюсь по вечерам и сплю ночью в основном после 12 часов утра. Итак, меня интересует количество калорий, которые я сожгла в первый день, и количество сна, которое я получил во второй день. Я буду использовать эту информацию для создания набора данных, в котором я буду учитывать калории, сожженные в первый день, и количество часов сна. во второй день.
В зависимости от вашей тренировки и режима сна вы можете создавать набор данных по-разному.
#Find Day2 df_exercise['incremented_date']= df_exercise.Date + datetime.timedelta(days=1) #Joining Activity Dataset with Sleep Dataset query = """ select a.*, b.MinutesAsleep from df_exercise a join df_sleep_agg b on a.incremented_date = b.Date order by a.Date """ df_join = sqldf(query,globals())
Вот как выглядит окончательный объединенный набор данных
Далее я попытаюсь найти идеальное соотношение между сожженными калориями и минутным сном. Я буду использовать регрессию, потому что она дает значения коэффициентов, а результаты интуитивно понятны. Кроме того, поскольку я регрессирую только из-за потребляемых калорий, было бы разумно сохранить простую модель.
cols = ['CaloriesBurned'] clf = LinearRegression() clf.fit(df_join[cols],df_join['MinutesAsleep'])
Перехват и коэффициент модели регрессии равны
Intercept = 253.77 Coefficient = 0.0441
Давайте посмотрим, что предлагает моя система рекомендаций в зависимости от количества сожженных калорий.
Calories Burnt: 2100 Kcalorie Amount of Ideal sleep needed for your body-type: 5 hours 47 minutes Calories Burnt: 2200 Kcalorie Amount of Ideal sleep needed for your body-type: 5 hours 51 minutes Calories Burnt: 2500 Kcalorie Amount of Ideal sleep needed for your body-type: 6 hours 5 minutes Calories Burnt: 2600 Kcalorie Amount of Ideal sleep needed for your body-type: 6 hours 9 minutes Calories Burnt: 2700 Kcalorie Amount of Ideal sleep needed for your body-type: 6 hours 13 minutes Calories Burnt: 2969 Kcalorie Amount of Ideal sleep needed for your body-type: 6 hours 25 minutes Calories Burnt: 3000 Kcalorie Amount of Ideal sleep needed for your body-type: 6 hours 27 minutes
Примечания:
- Связь действительна только до тех пор, пока количество потребляемых калорий не окажется в пределах 3000 ккал, потому что в тренировочном наборе есть несколько случаев, когда я потреблял более 3000 ккал.
- Отношение после 3000 ккал, скорее всего, будет нелинейным. То есть, если я сжигаю 3000+ ккал, я сделал то, к чему мое тело не привыкло, и сжигание такого количества калорий потребует моего тела, чтобы принять правильное количество диеты и отдохнуть, чтобы восстановиться. Итак, как только мы получим больше данных, мы сможем лучше найти взаимосвязь.
- Отношение в диапазоне 3000 ккал также может быть нелинейным. Для дальнейшей настройки рекомендации можно применить нелинейный алгоритм. Я использовал Regression просто из-за его простоты и интуитивности.
Заключение
В этом сообщении в блоге я поделился тем, как использовал данные Fitbit, чтобы узнать об изменениях своего тела в условиях пандемии. Основные выводы можно резюмировать следующим образом:
В период после блокировки произошло снижение количества сжигаемых калорий на 7,5% из-за отсутствия надлежащего оборудования, меньшего количества движений и невозможности соблюдать строгий распорядок дня. Но, тем не менее, с помощью домашних тренировок я смог сжечь большое количество калорий.
Среднее время сна сократилось на 14 минут в период после блокировки, но стабильность увеличилась с небольшим разбросом в часах сна, чему я рад и хотел бы продолжить.
Мы также нашли важную информацию о показателях Fitbit и корреляции между ними.
Мы также создали интеллектуальную систему рекомендаций, которая рекомендует количество необходимого сна в зависимости от количества сожженных калорий и индивидуальных потребностей во сне.
Я предоставил данные и код здесь.
Если у вас есть какие-либо сомнения или вопросы, свяжитесь со мной. Мне также будет интересно узнать, есть ли у вас в голове что-нибудь интересное, связанное с аналитикой здоровья.
Мой канал Youtube для получения дополнительной информации:
Об авторе:
Абхишек Мунголи - опытный специалист по анализу данных с опытом работы в области машинного обучения и компьютерных наук, охватывающий различные области и способ решения проблем. Отлично разбирался в различных задачах машинного обучения и оптимизации, характерных для розничной торговли. С энтузиазмом относятся к масштабному внедрению моделей машинного обучения и обмену знаниями через блоги, выступления, встречи, публикации и т. Д.
Мой мотив всегда - упростить самые сложные вещи до их наиболее упрощенной версии. Мне нравится решение проблем, наука о данных, разработка продуктов и масштабные решения. Я люблю исследовать новые места и заниматься спортом в свободное время. Подпишитесь на меня в Medium, Linkedin или Instagram и посмотрите мои предыдущие сообщения. Приветствую отзывы и конструктивную критику. Некоторые из моих блогов -
- 5 ошибок, которых должен избегать каждый специалист по анализу данных
- Разложение временных рядов простым и интуитивно понятным способом
- Как вычисления на GPU буквально спасли меня на работе?
- Теория информации и расхождение KL Часть I и Часть II
- Обработка Википедии с помощью Apache Spark для создания горячих наборов данных
- Нечеткая кластеризация на основе полууправляемого вложения
- Сравните, какая модель машинного обучения работает лучше
- Определите распространение ваших данных