筋肉で解決しないために。

日々出会うモノに対する考察をしたり、主に以下のテーマに関して書いています。 データサイエンス/人工知能/AI/機械学習/DeepLearning/Python//数学/統計学/統計処理

太っている人ほど痩せやすいことを真面目に計算してみた。(Python)

こんにちは、ワタルです。

はじめに

これもまたふと思いついた事なんだけど、
「体重が増える(太る)と、走ったり、階段上るの大変になるよなぁ」と思いまして。


てことは、同じ活動をした場合、痩せてる人より、太ってる人の方がたくさんのエネルギーを消費することになる。


この考え方だと、

太っていれば、太っているほど、エネルギーを消費が大きくなる。

太っていれば、太っているほど、痩せやすい。

ということになる。



逆に言うと、

痩せていれば、痩せているほど、エネルギーを消費が小さくなる。

痩せていれば、痩せているほど、太りやすい。

と言うことは、人間(生物)の体重ってある基準体重に対して、その体重に戻るような慣性が働いているんじゃないか。と気づいた。


その慣性具合を表す関数を"体重維持慣性関数"という名前を付けまして、
今回はその"体重維持慣性関数"をPythonというツールを使って求めてみます。

仮定条件

まずは、仮定条件を整理します。
ちょっと多くなってしまったので読み飛ばしてしまっても問題ないです。


仮定1_対象は18~49歳の男性。
仮定2_対象者の1日の消費エネルギーは2,650kcalとする。*1
仮定3_対象者の体重はkgとする。*2
仮定3_人間の消費エネルギーは、基礎代謝(生命維持のためのエネルギー消費)と、生活活動代謝(身体活動をして消費するエネルギー)のみとする。
仮定4_生活活動代謝量は1日の消費エネルギーは3割とする。*3
仮定5_生活活動代謝は全て歩行にて消費されるとする。
仮定6_歩行のMETsは4.0とする。*4
(補足:消費カロリー(kcal)=1.05×メッツ×時間×体重(kg))
仮定7_脂肪1kgを消費するのに必要なエネルギーは、7200kcalとする。*5

計算

ふぅ。
さあ、実際に計算をします。


最初のおまじないね。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

実際の計算です。

m = 67.496 #成人男性の平均体重
m_delta = np.arange(-20,21,1) #体重変化(-20kgから20kg)の要素配列
kcal_perday = 2650 #成人男性1日の消費カロリー
kcal_active = kcal_perday * 0.3 #成人男性1日の生活活動代謝での消費カロリー
walktime = kcal_active / (1.05 * 4.0 * m) #生活活動代謝での消費カロリーが全て歩行で消費されたとした時の歩行時間
kcal_active_m_delta = np.abs(1.05 * 4.0 * walktime * (m_delta)) #体重変化による生活活動代謝での消費カロリー要素配列
return_day = ( (7200) / (kcal_active_m_delta) ) #1kg痩せるまでの日数


計算終わりです。

グラフと表を出力してみます。
まずは、あるkg分太ってしまった人が、自然に1kg痩せるために必要な日数です。

plt.xlabel('m_delta')
plt.ylabel('return_day')
plt.plot(m_delta, return_day)

df = pd.DataFrame({'m_delta': np.arange(1,21,1),
                   'return_day': return_day[21:41] })
df


f:id:watarumon:20180528205626p:plain
自然に1kg痩せるために必要な日数_グラフ
f:id:watarumon:20180528205601p:plain
自然に1kg痩せるために必要な日数


例えば、標準体重より、20kg太ってしまった人は、30日程度で自然に1kg痩せるみたいです。
太っている人ほど、体重が落ちやすいということがよくわかりますね。
5kg太った人より20kg太った人は、4倍痩せやすいみたいです。


次に自然に標準体重に戻るには、何日かかるのか、です。
計算はこちら。

#自然に1kg痩せるのに必要な日数を合計しています。
return_day_sum = []
for i in range(21,42,1):
    return_day_sum_dammy = sum(return_day[21:i])
    return_day_sum.append(return_day_sum_dammy)

rev = []
for i in (reversed(return_day_sum)):
    rev.append(i)
rev.remove(0)

rev.extend(return_day_sum)
return_day_sum = rev
return_day_sum = np.array(return_day_sum)


グラフと表を出力してみます。

plt.xlabel('m_delta')
plt.ylabel('return_day_sum')
plt.plot(m_delta, return_day_sum)

df = pd.DataFrame({'m_delta': np.arange(1,21,1),
                   'return_day_sum': return_day_sum[21:41] })
df


f:id:watarumon:20180528205612p:plain
自然に1kg痩せるために必要な日数_グラフ
f:id:watarumon:20180528210551p:plain
自然に1kg痩せるために必要な日数


10kg太った人が、自然に元の体重に戻るのには、約5年必要なようです。
5年。長い、長すぎる。。実現不可だよそれは。。

体重維持慣性関数の算出

最後に、目的であった"体重維持慣性関数"を"自然に元の体重に戻るのに必要な日数"と置き換えて、一般式を求めました。

day = 9.06*{m}\sum_{n=1}^N \frac{1}{n}
{m} = 標準体重
{N} = 体重の変化量


結構スッキリ書けました。
9.06の部分が仮定によって変わってきます。
これを"体重維持慣性係数"と呼んでもいいかもしれませんね。


結論

今回の検証によって、
太っている人ほど、体重が落ちやすいということが定量的に図示され、
自然に元の体重に戻ることを期待するのは、現実的でないことがわかりました。
やはり、自然に痩せるのは難しく、今後も様々なダイエット法が生み出されそうです。

また、今回は考慮していないですが、基礎代謝量は体表面積に比例するみたいです。
体重増加と体積を考慮して計算してもおもしろいかもしれませんね。


コメントがあれば、気軽にどーぞ。
それじゃあ、また。