SYSTEM NOTICE

Auto translation by AI. Be sure, accuracy, nuances and authorial intent may not be fully reflected.
見出し画像

🚋 How has Tokyo's commuter congestion changed? Reading through statistics on telework and population trends

Why not try depicting daily life through statistics and data analysis?

Intro


Connecting daily life with statistics, the first episode of the Statistical Anecdotes Series is commuter congestion.
It would be nice if the time and space spent swaying on the train were comfortable, but...


Topic


1. The experience of commuting

“I got a seat today!” “I felt like I was being crushed!”
Daily commuter congestion is directly linked to our life satisfaction.

According to statistics from the Ministry of Land, Infrastructure, Transport and Tourism, the standard for congestion used to be “the level where you can stand and read a newspaper = 150%,” but now there is a new sense of congestion due to smartphone use and wearing backpacks on the front.

So, let's look at the data to see how commuter congestion has changed recently, and how it relates to telework and population trends.

🚋 🚋 🚋

2. Long-term trend of congestion rates

According to the Ministry of Land, Infrastructure, Transport and Tourism's “Survey on Congestion Rates in Urban Railways,” the peak congestion rate in the Tokyo metropolitan area has declined over the long term from over 220% in the 1970s, improving to 163% in 2019.
One of the factors for this improvement likely includes the easing effect of increased transport capacity (opening of new lines, increased number of trains, additional train cars, etc.).

Then, during the COVID-19 pandemic from 2020 to 2021, it plummeted to around 100%, and has since returned to 139% in 2024.

Figure 1: Long-term trends and forecasts of congestion rates in the three major metropolitan areas

Behind the sharp drop in congestion rates during the COVID-19 pandemic is the fact that the flow of people itself changed significantly.
A prime example of this is the rapid expansion of telework.

🚋 🚋 🚋

3. The rapid rise and establishment of telework

According to the Ministry of Land, Infrastructure, Transport and Tourism's “Survey on the Telework Population,” the rate of employed teleworkers in the Tokyo metropolitan area rose sharply from 18.8% in 2019 to 42.1% in 2021.
Although it has declined slightly since then, it remains at a high level of 36.8% in 2024.

👉 Telework is not a passing fad, but has become established as a new way of working.

So, as a result of changes in where people work, has there also been a change in the choice of where to live?
What I would like to look at here is the trend in the net migration into the 23 wards of Tokyo.

🚋 🚋 🚋

4. Population movement: Net migration into Tokyo's 23 wards

According to the Ministry of Internal Affairs and Communications' "Report on Internal Migration in Japan Derived from the Basic Resident Register," the net migration into Tokyo's 23 wards fell from over 70,000 in 2019 to minus 8,000 in 2021.
It has since recovered, increasing to over 54,000 in 2024.

👉 This shows that while there was a "move away from Tokyo" during the COVID-19 pandemic, the trend of "returning to Tokyo" is strengthening once again.

🚋 🚋 🚋

5. Overlaying the three datasets

Now, let's plot Congestion Rate × Teleworker Rate × Net Migration simultaneously for the years 2019–2024.

Figure 2: Trends in Tokyo's congestion rate, teleworker rate, and net migration

📊 Interpreting the visualization

  • 2019 (Pre-pandemic)
    The congestion rate was at a high level of 163%. Telework was under 20%. Net migration was 70,000, continuing the trend of extreme concentration in Tokyo.

  • 2020–2021 (Pandemic period)
    The teleworker rate surged (34–42%), and the congestion rate plummeted to around 100%. Net migration slowed, turning negative in 2021.

  • 2022–2024 (Recovery period)
    Despite the teleworker rate remaining high at just under 40%, population inflow has recovered, and the congestion rate has also risen, reaching 139% in 2024.

👉 From the graph, it can be read that "the congestion rate is more strongly related to population movement than to the teleworker rate."

🔢 Deep dive with statistical indicators

Calculating the correlation coefficients yielded the following results.

$$
\begin{array}{lrrr}
& Congestion Rate & Teleworker Rate & Net Migration \\
\hline
\\
Congestion Rate & 1.00 & -0.76 & +0.91 \\
Teleworker Rate & -0.76 & 1.00 & -0.73 \\
Net Migration & +0.91 & -0.73 & 1.00 \\
\end{array}
$$

👉 Key points for interpretation

  • Congestion rate and teleworker rate (-0.76)
    A negative correlation that supports the idea that the spread of telework leads to reduced congestion.

  • Congestion rate and net migration (+0.91)
    A strong positive correlation where population inflow and congestion levels move almost simultaneously.

  • Teleworker rate and net migration (-0.73)
    A possibility that as telework progresses, the necessity of living in the city center decreases, suppressing population inflow.

👉 Since the data points are limited to 6 years, conclusions should be drawn cautiously, but these results statistically support the impressions from the visualization.

🚋 🚋 🚋

6. The story seen through statistics

Summarizing the three sets of data:

  • The rapid increase in telework during the COVID-19 pandemic historically pushed down congestion rates.

  • However, as the return of the population has begun, congestion rates are on an upward trend again.

  • Future congestion levels will likely be determined by the tug-of-war between telework and population dynamics.

👉 This overall picture emerges when we organize the trends seen in the visualization and correlation analysis in Chapter 5.

🚋 🚋 🚋

7. Connection to the news

Recently, there has been an increase in news about companies promoting "telework reduction" and "return to the office."
On the other hand, the Tokyo Metropolitan Government's policies continue to include subsidy measures to support the establishment of telework.

👉 As the movements of companies and the government act in opposite directions, how future congestion rates will shift is a point to watch.

Population inflow into Tokyo is expected to continue, mainly among the younger generation, which is likely to be a factor pushing up commuter congestion.
On the other hand, the inflow of the elderly and foreigners may have a limited impact on commuting.

👉 "Who is moving into Tokyo" can be said to be the key that will influence future congestion.

🚋 🚋 🚋

8. Conclusion and room for thought

At the end of the day, commuting will not disappear.
But when you "take a bird's-eye view of social movements through statistics,"

  • the background of your own congestion experience

  • and the outlook for future work styles

become a little clearer.

If you were able to read this column on your smartphone while commuting, perhaps the stress of the congestion might be eased just a little bit 😊

🚋 🚋 🚋 

Sources

(Retrieved September 7, 2025)

End

Links and Code


Series Articles

Next Article

Table of Contents

🍀🍀🍀

Python Code

This is the Python code used to create the charts and statistical figures in the article.

🖥️ Data Preparation

# データの登録(国土交通省資料、総務省資料より)

# 1975年~の 混雑率(%):東京圏・大阪圏・名古屋圏
years1 = [1975, 1989, 1998, 2008, 2014, 2015, 2016, 2017, 2018, 2019, 2020,
          2021, 2022, 2023, 2024]
congestion_tokyo1 = [221, 202, 183, 171, 165, 164, 165, 163, 163, 163, 107,
                     108, 123, 136, 139]  # 2014-2019は160台で安定
congestion_osaka1 = [199, 168, 147, 130, 123, 124, 125, 125, 126, 126, 103,
                     104, 109, 115, 116]
congestion_nagoya1 = [205, 175, 157, 139, 131, 134, 130, 131, 132, 132, 104
                      110, 118, 123, 126]


# 2019年~の 東京関連指標:混雑率(東京圏,%), テレワーカー率(首都圏, %)
# 転入超過数(東京都区部, 千人)
years2 = list(range(2019, 2025))
congestion_tokyo2 = [163, 107, 108, 123, 136, 139]
telework_tokyo2 = [18.8, 34.1, 42.1, 39.6, 37.6, 36.8]
net_migration_tokyo2 = [70, 22, -8, 20, 48, 54]

[Execution Result] None

🖥️ Congestion Rate Prediction Model

# 混雑率の予測モデルの作成(指数関数的に減少するモデル)

# インポート
import numpy as np
from scipy.optimize import curve_fit  

# 2019年までの東京都の混雑率を目的変数、年を説明変数としてフィッティング
# 指数関数モデルの定義
base = 2000                                             # 年の基準点
exp_func = lambda X, a, b: a * np.exp(-b * (X - base))  # 指数関数モデル
# フィッティングの実行
popt, _ = curve_fit(exp_func, years1[:10], congestion_tokyo1[:10])

# 結果の表示
print(f'関数 f(year) = {popt[0]:.2f} * exp(-{popt[1]:.5f} * (year - {base}))')

[Execution Result]

🖥️ Visualization of Long-term Trends and Predictions of Congestion Rates

# 混雑率の長期トレンドと予測

# インポート
import matplotlib.pyplot as plt
import japanize_matplotlib

# このPC用の設定
plt.rcParams['figure.dpi'] = 100

# 描画領域の設定
plt.figure(figsize=(10, 6))

# 1975-2024年の混雑率の観測値の折れ線グラフを描画
plt.plot(years1, congestion_tokyo1, marker='o', color='tab:red',
         label='東京圏')
plt.plot(years1, congestion_osaka1, marker='s', color='tab:blue',
         label='大阪圏')
plt.plot(years1, congestion_nagoya1, marker='^', color='tab:green',
         label='名古屋圏')

# 東京都の混雑率の回帰直線を描画
years1_extended = list(range(1975, 2025 + 10))
plt.plot(years1_extended, exp_func(np.array(years1_extended), *popt),
         ls='--', color='purple', alpha=0.3)
plt.plot(years1_extended[44:], exp_func(np.array(years1_extended), *popt)[44:],
         ls='--', color='purple', label='予測(東京圏)')

# 修飾
plt.title(
    '三大都市圏の混雑率の長期推移と予測(実測値:1975〜2024年、予測値:2025~2034年)',
    fontsize=14)
plt.xlabel('年', fontsize=14)
plt.ylabel('混雑率(%)', fontsize=14)
plt.legend(fontsize=12)
plt.grid(alpha=0.5)
plt.tight_layout()
plt.show()

[Execution Results]

🖥️ Visualization of trends in congestion rates, teleworker rates, and net migration numbers

# グラフ作成(混雑率は左軸、テレワーカー率と転入超過は右軸)
fig, ax1 = plt.subplots(figsize=(10, 6))

# 左軸:混雑率
color_red = 'tab:red'
ax1.plot(years2, congestion_tokyo2, marker='o', color=color_red,
         label='混雑率(東京圏)')
ax1.set_xlabel('年', fontsize=16)
ax1.set_ylabel('混雑率(%)', color=color_red, size=14)
ax1.tick_params(axis='y', labelcolor=color_red)
ax1.set_ylim(90, 190)

# 右軸(内側):テレワーカー率
color_blue = 'tab:blue'
ax2 = ax1.twinx()
ax2.plot(years2, telework_tokyo2, marker='s', color=color_blue,
         label='テレワーカー率(首都圏)')
ax2.set_ylabel('テレワーカー率(%)', color=color_blue, size=14)
ax2.tick_params(axis='y', labelcolor=color_blue)
ax2.set_ylim(15, 50)

# 右軸(外側):転入超過数
color_green = 'tab:green'
ax3 = ax1.twinx()
ax3.plot(years2, net_migration_tokyo2, marker='^', color=color_green,
         label='転入超過数(東京都区部)')
ax3.set_ylabel('転入超過数(千人)', color=color_green, size=14)
ax3.tick_params(axis='y', labelcolor=color_green)
ax3.set_ylim(-30, 115)
ax3.spines['right'].set_position(('axes', 1.1))

# 凡例
fig.legend(loc='upper left', bbox_to_anchor=(0.1, 0.9))

fig.suptitle('東京の混雑率・テレワーカー率・転入超過数の推移(2019〜2024年)',
             fontsize=14)
fig.tight_layout()
plt.show()

[Execution Results]

🖥️ Correlation coefficients for congestion rates, teleworker rates, and net migration numbers

# 混雑率・テレワーカー率・転入超過数の相関係数の算出 2019〜2024年

# インポート
import pandas as pd

# 相関係数の計算
pd.DataFrame({
    '混雑率': congestion_tokyo2,
    'テレワーカー率': telework_tokyo2,
    '転入超過数': net_migration_tokyo2
}).corr().round(2)

[Execution Results]

🖥️ Test for no correlation between congestion rates, teleworker rates, and net migration numbers

# 相関係数と無相関の検定

# インポート
import scipy.stats as stats

# 相関係数と無相関の検の実行
print('【相関係数と無相関の検定】')
print('- 混雑率とテレワーカー率')
print('  ', stats.pearsonr(congestion_tokyo2, telework_tokyo2))
print('- 混雑率と転入超過数')
print('  ', stats.pearsonr(congestion_tokyo2, net_migration_tokyo2))
print('- テレワーカー率と転入超過数')
print('  ', stats.pearsonr(telework_tokyo2, net_migration_tokyo2))

[Execution Results]

🚋 🚋 🚋

Blog Introduction


I am writing eight series of articles on note.
Please feel free to take a look!

1. Relaxed Statistics

This is a blog that roughly explores probability and statistics using the Statistics Certification Grade 2 workbook as a guide.
Feel free to read it as if it were casual conversation. Please do take a look.
It corresponds to the Statistics Certification Grade 2 Official Workbook CBT Edition.
Sample code for Python and Excel is also available.

2. Connecting with Statistics and Data Analysis

The series "Connecting with Statistics and Data Analysis" is a blog series that uncovers the "connections" to statistics and data analysis and presents them in a column format.
With the help of generative AI, I wrote these freely, imagining the entry points to statistics and data analysis.
For example...
・Connections between daily life and statistics
・Connections from Statistics Certification Grade 2 to what lies beyond
I hope you enjoy reading them casually 🍀

3. Experiment! Fun Bayesian Modeling 1 & 2 with PyMC Ver.5

I will draw and analyze the Bayesian models used in psychological research from the books "Fun Bayesian Modeling" and "Fun Bayesian Modeling 2" using PyMC Ver.5.
Like many others, these books and many Bayesian models are written in R language + Stan.
I will explore the possibilities of PyMC and strive to make Bayesian modeling easy to practice.
Since these are familiar and easy-to-visualize themes, please try running them with PyMC and let's enjoy it together!

4. Experiment! Iwanami Data Science 1 Bayesian Modeling with PyMC Ver.5

I will draw and analyze the Bayesian models by four Bayesians from the book "Experiment! Iwanami Data Science Vol. 1" using PyMC Ver.5.
This book is a great resource for learning the basics of Bayesian programming.
I feel like I've become friends with Bayesian methods by happily running PyMC models.
Everyone, please try running them with PyMC, and let's play and learn together!

5. Fun Transcription: Bayesian, Python, etc.

I will blog about the results of my "book transcription activities" for Bayesian, Python, and others.
I am mainly working on translations into Python.
I hope this serves as sample code for fellow learners who are also transcribing 🍀

6. An Introduction to Time Series Analysis for Psychology with R and Stan, using Python and PyMC Ver. 5

I will implement the time series analysis from the book "An Introduction to Time Series Analysis for Psychology with R and Stan" using Python and PyMC Ver. 5.
This book is packed with time series analysis topics!
I truly realized the depth of time series analysis.
I will enjoy learning time series analysis with my favorite language, Python.

7. Writing about data science-y things

I write columns on statistics, data analysis, AI, machine learning, and Python on an irregular basis.
There are many articles related to statistics and data science books.
Series on "Statistics," "Python," "Mathematics and Python," and "R" have been created.

8. Python Machine Learning Programming Practice Log

I wrote articles about my various thoughts while studying the book "Python Machine Learning Programming: PyTorch & scikit-learn Edition."
This book is a textbook for scikit-learn and PyTorch.
Please feel free to give it a try if you like.

Thank you very much for reading until the end.

いいなと思ったら応援しよう!

ネイピア DS 応援ありがとうございます。これからもがんばって記事を作成します!

この記事が参加している募集