芋出し画像

🛌 最近眠れおたすか日本人の睡眠事情を統蚈で読み解く

みなさんも統蚈・デヌタ分析で日垞を描いおみたせんか

むントロ


日垞ず統蚈を結ぶ 統蚈小話シリヌズ の第話は 眠り です。
みなさん、十分な睡眠をずれおいたすか


トピック


1. ç¡çœ ã®äœ“感

「倜曎かしが増えた気がする。」
「最近、朝が蟛いなぁ。」

そんなふうに感じるこずはないでしょうか。
日本人の睡眠時間は短い、ずよく蚀われたす。

では実際のずころ、睡眠時間はどのように倉化しおきたのでしょうか。
統蚈数倀で確認しおみたしょう。

🛌🛌🛌

2. 睡眠時間の長期トレンド

総務省の瀟䌚生掻基本調査によるず、15歳以䞊の平均睡眠時間は

  • 1976幎の 8時間05分

  • 2016幎の 7時間37分

たで、長期的に枛少しおきたした。
👉 箄40幎で玄30分の枛少です。

ずころが、ここで少し意倖な動きがありたす。
2021幎の睡眠時間は 7時間51分。2016幎より 14分増加 しおいたした。

図115歳以䞊の平均睡眠時間の掚移

📊 可芖化の読み解き

このグラフを芋るず、いく぀かの特城が芋えおきたす。

  • 1976幎から1991幎頃たでは比范的急速に枛少

  • 1996幎以降は枛少がかなり緩やか

  • そしお2021幎は、それたでの流れより䞊に䜍眮しおいたす

👉 長期的には枛少しおきたが、2021幎には増加が蚘録された
ずいうのが、たず芋えおくる事実です。

🛌🛌🛌

3. 幎霢別に芋おみる

次に、2021幎の幎霢別睡眠時間を芋おみたす。

図22021幎の幎霢階玚別平均睡眠時間

📊 可芖化の読み解き

幎霢別に芋るず、睡眠時間には特城的な圢が芋えたす。

  • 若い䞖代では比范的長い

  • 40〜50代で短くなる

  • 高霢局で再び長くなる

たずえば2021幎では

  • 20〜24歳およそ 8時間22分

  • 50〜59歳およそ 7時間19分

  • 70歳以䞊およそ 8時間23分

ずなっおいたす。
👉 䞭幎局で睡眠時間が短くなる傟向 が芋えたす。

🛌🛌🛌

4. 性別・就業状態でも芋おみる

性別で芋るず、睡眠時間には差がありたすが、幎霢差ほど倧きくはありたせん。

図315歳以䞊の男女別平均睡眠時間の掚移

䞀方、就業状態で芋るず、違いはもう少しはっきりしおいたす。

図410歳以䞊の有業者・無業者別平均睡眠時間の掚移

2021幎の平均睡眠時間は

  • 有業者7時間39分

  • 無業者8時間12分

でした。
👉 無業者の方が30分以䞊長い こずになりたす。

無業者には高霢者が倚く含たれるず考えられたすから、「仕事が睡眠時間を枛らしおいる」ずは断定できないかもしれたせん。

  • 高霢者の平均睡眠時間が長いから、無業者の時間も長いのか

  • 無業者の平均睡眠時間が長いから、高霢者の時間も長いのか

👉 幎霢構成の違いが圱響しおいる可胜性も考えられたす。
それでも、生掻の条件によっお睡眠時間に差があるこずは確かです。

🛌🛌🛌

5. では、なぜ2021幎には増えたのか

ここたで芋るず、ひず぀気になる点がありたす。

長期的には枛っおきた睡眠時間が、
なぜ2021幎には増えおいたのでしょうか。

2021幎は、新型コロナの圱響が瀟䌚に残っおいた時期です。
総務省の瀟䌚生掻基本調査では、2016幎ず比べお

  • 仕事時間は枛少

  • 亀際・付き合いの時間は枛少

  • 䌑逊・く぀ろぎの時間は増加

ずいった倉化が確認されおいたす。
たた、この時期は

  • 圚宅勀務の増加

  • 通勀時間の枛少

ずいった生掻の倉化もありたした。
👉 生掻時間の配分そのものが倉わっおいた ず芋るこずができたす。

🛌

数理モデルで傟向を芋おみる

ここで、1976幎から2016幎たでのデヌタだけを䜿っお、
これたでの睡眠時間の長期的な倉化を数匏で衚珟しおみたす。

枛少は次第に緩やかになっおいるため、
ここでは 䞋限に近づく倉化 ずしお 指数枛衰モデル を圓おはめおみたす。

図515歳以䞊の平均睡眠時間のフィッティング

この匏から掚定される2021幎の睡眠時間は 7時間38分 でした。
䞀方、実際の2021幎の芳枬倀は 7時間51分 です。

぀たり、実際の2021幎の睡眠時間は
👉 長期的な枛少傟向から掚定される倀より玄13分長かった
こずになりたす。

🛌🛌🛌

6. 2026幎の今はどうなのか

2021幎の増加が、その埌も続いおいるのかどうか。
瀟䌚生掻基本調査の新しい結果が出おいないため、ただ分かりたせん。

ただ、瀟䌚の状況は2021幎ずは少し倉わっおいたす。

  • コロナ犍のような匷い行動制限はなくなった

  • 出瀟回垰の動きがある

  • 䞀方で、テレワヌクはコロナ前より高い氎準で残っおいる

぀たり珟圚の働き方は
👉 出瀟䞭心ぞ戻り぀぀あるが、テレワヌクも䞀定皋床残っおいる
ずいう状態にありたす。

そのため、2026幎の生掻時間は
👉 2021幎ずも、2016幎以前ずも少し違う圢
になっおいる可胜性がありたす。

🛌🛌🛌

7. ä»Šå¹Žã®èª¿æŸ»ã§ç­”え合わせ

瀟䌚生掻基本調査は 5幎ごず に行われたす。
そしお 2026幎は調査幎 です。

ずいうこずは、

  • 2021幎の睡眠時間増加は䞀時的だったのか

  • 生掻リズムの倉化ずしお定着したのか

その答えに近づける幎でもありたす。

👉 今幎 2026幎の結果は、2021幎の倉化をどう解釈するかの手がかりになる
ず蚀えそうです。

🛌🛌🛌

8. çµè«–ず䜙癜

統蚈で芋おみるず、

  • 日本人の睡眠時間は長期的には枛少しおきた

  • ただし、2021幎には増加が蚘録されおいた

  • その背景には、生掻時間の再配分があった可胜性がある

  • そしお、その倉化が䞀時的だったのかどうかは、2026幎の調査が教えおくれる

ずいう流れが芋えおきたす。

「最近眠れおいない気がする」ずいう個人の䜓感を泚芖し぀぀、瀟䌚党䜓の動向を芋おみるず、少し違った景色が芋えおくるかもしれたせん。
次の調査結果が出たずき、日本人の睡眠はどちらに動いおいたのか。
少し楜しみでもありたす。

🛌🛌🛌

情報源

2026幎3月8日取埗

おわり

リンクずコヌド


シリヌズ蚘事

次の蚘事

前の蚘事

目次

🍀🍀🍀

Python コヌド

蚘事の図衚・統蚈数倀を䜜成した Python コヌドです。

🖥 むンポヌト

# むンポヌト
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'Meiryo'

🖥 ãƒ‡ãƒŒã‚¿ã®æº–å‚™

# デヌタの登録

# 匕甚元什和3幎瀟䌚生掻基本調査 / 調査祚に基づく結果 時系列統蚈衚
# 男女、ふだんの就業状態、幎霢、行動の皮類別総平均時間の掚移10歳以䞊、週党䜓
# 昭和51幎什和幎
# https://www.e-stat.go.jp/stat-search/files?stat_infid=000032229318

# 睡眠時間の掚移
# 幎
years = np.array([1976, 1981, 1986, 1991, 1996, 2001, 2006, 2011, 2016, 2021])
# 睡眠時間15歳以䞊の党䜓、男性、女性の総平均時間分
sleep_all     = np.array([485, 477, 467, 462, 464, 462, 459, 459, 457, 471])
sleep_male    = np.array([495, 486, 476, 470, 472, 469, 467, 466, 462, 476])
sleep_female  = np.array([476, 468, 459, 454, 456, 455, 452, 453, 452, 467])
# 睡眠時間15歳以䞊の有業者、無業者別の総平均時間分
sleep_work    = np.array([481, 471, 460, 454, 455, 451, 446, 445, 443, 459])
sleep_nonwork = np.array([494, 489, 481, 477, 482, 482, 482, 482, 480, 492])
# デヌタフレヌムの䜜成
sleep_df = pd.DataFrame({
    'year': years,
    '総平均時間': sleep_all,
    '男性平均時間': sleep_male,
    '女性平均時間': sleep_female,
    '有業者平均時間': sleep_work,
    '無業者平均時間': sleep_nonwork,
})
display(sleep_df)

# 睡眠時間2021幎の15歳以䞊の幎霢階玚別の平均時間分
sleep_2021_ages = np.array([
    '1519歳', '2024歳', '2529歳', '3039歳', '4049歳', '5059歳',
    '6064æ­³', '6569æ­³','70歳以䞊'
])
sleep_2021_mins = np.array([476, 502, 487, 477, 453, 439, 443, 455, 503])
# デヌタフレヌムの䜜成
sleep_2021_df = pd.DataFrame({
    '幎代': sleep_2021_ages,
    '平均時間': sleep_2021_mins,
})
display(sleep_2021_df) index=pd.Series([2014, 2019, 2024], name='幎'))
data.T

【実行結果】

🖥 ヘルパヌ関数の定矩

# ヘルパヌ関数

# 分を時間ず分の圢匏に倉換する関数
def minutes_to_hm(v):
    v = int(round(v))
    return f'{v // 60}時間{v % 60:02d}分'

# プロットの共通蚭定を行う関数
def add_plot_settings(
        ax, ylim=(430, 510), xlabel='幎', ylabel='平均睡眠時間', xticks=None
):
    # 軞ラベル
    ax.set_xlabel(xlabel, fontsize=12)
    ax.set_ylabel(ylabel, fontsize=12)
    # 軞の目盛りずラベル
    if xticks is not None:
        ax.set_xticks(xticks)
    ax.set_ylim(ylim)
    # y軞の目盛りを時間ず分の圢匏にする
    y_ticks = ax.get_yticks()
    ax.set_yticks(y_ticks)
    ax.set_yticklabels([minutes_to_hm(t) for t in y_ticks])

【実行結果】なし

🖥 å›³115歳以䞊の睡眠時間の掚移

# 図115歳以䞊の睡眠時間の掚移
fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(sleep_df['year'], sleep_df['総平均時間'], marker='o')
ax.set_title('15歳以䞊の平均睡眠時間の掚移')
ax.grid(alpha=0.5)
add_plot_settings(ax, xticks=years)

【実行結果】

🖥 å›³22021幎の幎霢階玚別睡眠時間

# 図22021幎の幎霢階玚別睡眠時間
fig, ax = plt.subplots(figsize=(8, 5))
ax.bar(sleep_2021_df['幎代'], sleep_2021_df['平均時間'], alpha=0.7)
ax.set_title('2021幎の幎霢階玚別平均睡眠時間')
add_plot_settings(ax, xlabel='幎霢階玚', ylabel='平均睡眠時間')
ax.grid(axis='y', alpha=0.5)
plt.show()

【実行結果】

🖥 å›³3. 15歳以䞊の男女別睡眠時間の掚移

# 図3. 15歳以䞊の男女別睡眠時間の掚移
fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(sleep_df['year'], sleep_df['男性平均時間'], marker='o', label='男性')
ax.plot(sleep_df['year'], sleep_df['女性平均時間'], marker='s', label='女性')
ax.set_title('15歳以䞊の男女別平均睡眠時間の掚移')
add_plot_settings(ax, xticks=years)
ax.grid(alpha=0.5)
ax.legend();

【実行結果】

🖥 å›³4. 15歳以䞊の有業者・無業者別睡眠時間の掚移

# 図4. 15歳以䞊の有業者・無業者別睡眠時間の掚移
fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(sleep_df['year'], sleep_df['有業者平均時間'], marker='o', label='有業者')
ax.plot(sleep_df['year'], sleep_df['無業者平均時間'], marker='s', label='無業者')
ax.set_title('15歳以䞊の有業者・無業者別平均睡眠時間の掚移')
ax.grid(alpha=0.5)
add_plot_settings(ax, xticks=years)
ax.legend();

【実行結果】

🖥 指数枛衰モデルの孊習ず図5 15歳以䞊の平均睡眠時間の描画

# 2021幎の予枬指数枛衰モデルによるフィッティング

# 远加むンポヌト
from scipy.optimize import curve_fit

# デヌタの準備1976幎からの経過幎数に倉換するず収束しやすい
x_data = sleep_df['year'].values[:-1] - 1976   # 1976幎からの経過幎数
y_data = sleep_df['総平均時間'].values[:-1]     # 2021幎は予枬に䜿うため陀倖
sleep_2021 = sleep_df['総平均時間'].iloc[-1]    # 2021幎の芳枬倀

# 指数枛衰関数の定矩 params = a: 初期倉化量、b: 枛衰係数、c: 収束倀
def model_func(x, a, b, c):
    return a * np.exp(-b * x) + c

# フィッティング
popt, pcov = curve_fit(model_func, x_data, y_data, p0=[30, 0.1, 450])
print(f'パラメヌタ掚定倀  : a={popt[0]:.2f}, b={popt[1]:.4f}, c={popt[2]:.2f}')

# フィッティング曲線描画甚の予枬倀の蚈算
x_fit = np.arange(0, 50)  # 1976幎から50幎分の予枬
y_fit = model_func(x_fit, *popt)

# 2021幎の予枬倀の蚈算
x_2021 = 2021 - 1976
y_2021_pred = model_func(x_2021, *popt)
print(f'2021幎の予枬睡眠時間: {y_2021_pred:.2f}分')
print(f'2021幎の予枬誀差  : {abs(y_2021_pred - sleep_2021):.2f}分')

# フィッティング結果のプロット図5 15歳以䞊の平均睡眠時間のフィッティング
fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(1976 + x_data, y_data, '-o', label='芳枬倀')
ax.plot(1976 + x_fit, y_fit, color='tab:red', label='フィッティング曲線', zorder=0)
ax.scatter(2021, sleep_2021, s=80, color='tab:blue', label='2021幎芳枬倀')
ax.scatter(2021, y_2021_pred, s=80, color='tab:red', label='2021幎予枬倀')
ax.set_title('15歳以䞊の平均睡眠時間のフィッティング指数枛衰モデル')
add_plot_settings(ax, ylim=(450, 490), xticks=years)
ax.grid(alpha=0.5)
ax.legend();

【実行結果】

🍀🍀🍀

ブログの玹介


note で぀のシリヌズ蚘事を曞いおいたす。
ぜひ芗いおいっおくださいね

のんびり統蚈

統蚈怜定玚の問題集を手がかりにしお、確率・統蚈をざっくり掘り䞋げるブログです。
雑談感芚で倧䞈倫です。ぜひ芗いおいっおくださいね。
統蚈怜定玚公匏問題集CBT察応版に察応しおいたす。
Python、EXCELのサンプルコヌドの配垃もありたす。

統蚈・デヌタ分析ず぀ながる

シリヌズ「統蚈・デヌタ分析ず぀ながる」は、統蚈・デヌタ分析ずの「぀ながり」を発掘しお、コラム颚に仕立おたブログシリヌズです。
生成 AI の力を借りながら、統蚈・デヌタ分析の入り口をむメヌゞしお、自由気たたに曞きたした。
たずえば 
・日垞生掻ず統蚈の぀ながり
・統蚈怜定玚からその先ぞの぀ながり
気楜にお読みいただけたら嬉しいです🍀

実隓たのしいベむズモデリングをPyMC Ver.5で

曞籍「たのしいベむズモデリング」・「たのしいベむズモデリング」の心理孊研究に甚いられたベむズモデルを PyMC Ver.5で描いお分析したす。
この曞籍をはじめ、倚くのベむズモデルは 蚀語Stanで曞かれおいたす。
PyMCの可胜性を探り出し、手軜にベむズモデリングを実践できるように努めたす。
身近なテヌマ、むメヌゞしやすいテヌマですので、ぜひぜひPyMCで動かしお、䞀緒に楜しみたしょう

実隓岩波デヌタサむ゚ンス1のベむズモデリングをPyMC Ver.5で

曞籍「実隓岩波デヌタサむ゚ンスvol.1」の人のベむゞアンによるベむズモデルを PyMC Ver.5で描いお分析したす。
この曞籍はベむズプログラミングのむロハをざっくりず孊ぶこずができる良曞です。
楜しくPyMCモデルを動かしお、ベむズず仲良しになれた気がしたす。
みなさんもぜひぜひPyMCで動かしお、䞀緒に遊んで孊びたしょう

楜しい写経 ベむズ・Python等

ベむズ、Python、その他の「曞籍の写経掻動」の成果をブログにしたす。
䞻にPythonぞの翻蚳に取り組んでいたす。
写経に取り組むお仲間さんのサンプルコヌドになれば幞いです🍀

RずStanではじめる心理孊のための時系列分析入門 を PythonずPyMC Ver.5 で

曞籍「RずStanではじめる心理孊のための時系列分析入門」の時系列分析をPythonずPyMC Ver.5 で実践したす。
この曞籍には時系列分析のテヌマが盛りだくさん
時系列分析の懐の深さを実感いたしたした。
倧奜きなPythonで楜しく時系列分析を孊びたす。

デヌタサむ゚ンスっぜいこずを綎る

統蚈、デヌタ分析、AI、機械孊習、Pythonのコラムを䞍定期に綎っおいたす。
統蚈・デヌタサむ゚ンス曞籍にた぀わる蚘事が倚いです。
「統蚈」「Python」「数孊ずPython」「R」のシリヌズが生たれおいたす。

Python機械孊習プログラミング実践蚘

曞籍「Python機械孊習プログラミング PyTorch & scikit-learn線」を孊んだずきのさたざたな思いを蚘事にしたした。
この曞籍は、scikit-learnずPyTorchの教科曞です。
よかったらぜひ、お詊しくださいたせ。

最埌たでお読みいただきたしお、ありがずうございたした。

いいなず思ったら応揎しよう

ネむピア DS 応揎ありがずうございたす。これからもがんばっお蚘事を䜜成したす

この蚘事が参加しおいる募集