Аналитика здоровья: понимание упражнений, сна, схемы сжигания калорий и оптимизация в правильном направлении

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

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

Чтобы количественно оценить эффективность домашней тренировки, я загрузил свои данные 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

Примечания:

  1. Связь действительна только до тех пор, пока количество потребляемых калорий не окажется в пределах 3000 ккал, потому что в тренировочном наборе есть несколько случаев, когда я потреблял более 3000 ккал.
  2. Отношение после 3000 ккал, скорее всего, будет нелинейным. То есть, если я сжигаю 3000+ ккал, я сделал то, к чему мое тело не привыкло, и сжигание такого количества калорий потребует моего тела, чтобы принять правильное количество диеты и отдохнуть, чтобы восстановиться. Итак, как только мы получим больше данных, мы сможем лучше найти взаимосвязь.
  3. Отношение в диапазоне 3000 ккал также может быть нелинейным. Для дальнейшей настройки рекомендации можно применить нелинейный алгоритм. Я использовал Regression просто из-за его простоты и интуитивности.

Заключение

В этом сообщении в блоге я поделился тем, как использовал данные Fitbit, чтобы узнать об изменениях своего тела в условиях пандемии. Основные выводы можно резюмировать следующим образом:

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

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

Мы также нашли важную информацию о показателях Fitbit и корреляции между ними.

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

Я предоставил данные и код здесь.

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

Мой канал Youtube для получения дополнительной информации:



Об авторе:

Абхишек Мунголи - опытный специалист по анализу данных с опытом работы в области машинного обучения и компьютерных наук, охватывающий различные области и способ решения проблем. Отлично разбирался в различных задачах машинного обучения и оптимизации, характерных для розничной торговли. С энтузиазмом относятся к масштабному внедрению моделей машинного обучения и обмену знаниями через блоги, выступления, встречи, публикации и т. Д.

Мой мотив всегда - упростить самые сложные вещи до их наиболее упрощенной версии. Мне нравится решение проблем, наука о данных, разработка продуктов и масштабные решения. Я люблю исследовать новые места и заниматься спортом в свободное время. Подпишитесь на меня в Medium, Linkedin или Instagram и посмотрите мои предыдущие сообщения. Приветствую отзывы и конструктивную критику. Некоторые из моих блогов -