Published on

身長差カップルの定義を数学的に考える

Table of Contents

はじめに

最近Twitterで「身長差カップル」というワードがトレンド入りしていました。
今回はその中でも目についた、身長差カップルの定義について数学的に考えてみました。

身長と正規分布

身長差について考える前に、まずはシンプルに身長について考えてみます。

人間の身長は正規分布に従うデータの典型例です。
厚生労働省の公開するデータ1によると20代の身長[cm]の平均・標準偏差は以下のとおりとなっています。

平均標準偏差
男性171.75.9
女性158.75.7

つまり、男性の身長をMM、女性の身長をFFとすると、

MN(171.7,5.92)FN(158.7,5.72)\begin{aligned} M &\sim N(171.7, 5.9^2) \\ F &\sim N(158.7, 5.7^2) \end{aligned}

と表せます。

この2つの正規分布をグラフにすると以下のようになります。

身長の分析1

身長が従う正規分布の平均と標準偏差がわかっていれば、具体的な身長の値が与えられたときにその値が上位何%に属するかがわかります。

例えば、男性の身長がN(171.7,5.92)N(171.7, 5.9^2)に従うという先程の知識があれば、身長175cmの男性は上位約29%に属していることがわかります。

下のソースコードがPythonによる計算の一例です。
SciPyというライブラリを利用することで、簡単に計算することができます。

ソースコード中のnormは正規分布(Normal distribution)を表し、
cdfは累積分布関数(Cumulative distribution function)を表しています。

from scipy.stats import norm
mean = 171.7
std = 5.9
print(1 - norm.cdf(175, mean, std))
# 0.28797098021281364

図にすると以下のようになります。
水色で塗られた175cm以上の部分が全体の約29%を占めているということが上の計算でわかったということです。

身長の分析2

次に男性を身長によって高身長グループ・普通身長グループ・低身長グループの3つに分けてみます。
それぞれのグループの定義は以下のとおりとします。

グループ定義
高身長グループ上位20%
普通身長グループ中位60%
低身長グループ下位20%

身長でグループ分けするために、前回は175cmが上位何%なのかを調べましたが、今回は逆にちょうど上位20%と下位20%になる身長がそれぞれ何cmなのかを調べます。

この計算も正規分布の平均と標準偏差がわかっていれば、下のようにPythonで簡単に行うことができます。

from scipy.stats import norm
mean = 171.7
std = 5.9
n = norm(mean, std)
print(n.ppf(0.2))
# 166.7344347219198

print(n.ppf(0.8))
# 176.66556527808018

この計算の結果、上位何%という定義から具体的な身長の範囲が得られました。

グループ定義身長の範囲
高身長グループ上位20%176.7cm 〜
普通身長グループ中位60%166.7cm 〜 176.7cm
低身長グループ下位20%〜 166.7cm

各グループの範囲を色分けすると以下のようになります。

身長差の分析

それでは本題の身長差についてです。

身長差によるグループ分け

今行いたいのは身長差カップルの定義付けですから、身長差についても先程の身長の分析のようにいくつかのグループに分類することを考えます。
今回は身長差なしグループ・普通グループ・身長差ありグループの3つに分類し、「身長差ありグループに分類されたカップルが身長差カップルである」とします。

そして各グループの定義ですが、身長の分析2と同じように身長差の値によって以下のように定義します。
ただし、簡単のために身長差は男性の身長MMと女性の身長FFの差、つまりMFM - Fで計算するものとします。
つまり、身長差がマイナスの値をとる場合があるということです。

グループ定義
身長差ありグループ上位20%
普通グループ中位60%
身長差なしグループ下位20%

身長差の確率分布

さて、グループの定義は決まりましたが身長差MFM - Fはどのような分布なのでしょうか?
分布がわからなければ上位20%が何cm差なのかわかりません。
今わかっているのは、男性の身長MM、女性の身長FFについて

MN(171.7,5.92)FN(158.7,5.72)\begin{aligned} M &\sim N(171.7, 5.9^2) \\ F &\sim N(158.7, 5.7^2) \end{aligned}

ということだけです。

ここで重要になるのが正規分布の持つ再生性という性質です。

確率分布の再生性とは

再生性とは確率分布に関する性質で、独立な確率変数X1,X2X_1, X_2についてX1G, X2GX_1 \sim G,\ X_2 \sim GのときaX1+bX2GaX_1 + bX_2 \sim Gが成り立つならば、確率分布GGは再生性を持つといいます。ただしここで、a,ba, bは定数を表しています。

簡単に言うと独立同分布(i.i.d.i.i.d.)に従う2つの確率変数を定数倍して足し引きしても確率分布が変わらない性質です。

正規分布は再生性を持つ確率分布の代表例です。

つまりMMFFが独立で両方とも正規分布に従うため、今知りたい身長差MFM - Fの確率分布も正規分布ということになります。

正規分布ではX1N(μ1,σ12), X2N(μ2,σ22)X_1 \sim N(\mu_1, \sigma_1^2),\ X_2 \sim N(\mu_2, \sigma_2^2)について、

a1X1+a2X2N(a1μ1+a2μ2,a12σ12+a22σ22)a_1 X_1 + a_2 X_2 \sim N(a_1 \mu_1 + a_2 \mu_2, a_1^2 \sigma_1^2 + a_2^2 \sigma_2^2)

が成り立つので、MFM - Fは以下のようになります。

MFN(171.7158.7,5.92+5.72)MFN(13,67.3)\begin{aligned} M - F &\sim N(171.7 - 158.7, 5.9^2 + 5.7^2) \\ M - F &\sim N(13, 67.3) \\ \end{aligned}

この正規分布をグラフにすると以下のようになります。

身長差カップルの定義

身長差の分布がわかったので、身長のときと同様に上位20%と下位20%になる身長差が何cmなのかを計算します。

from scipy.stats import norm
mean = 13
std = 67.3 ** 0.5
n = norm(mean, std)
print(n.ppf(0.2))
# 6.095627469212469

print(n.ppf(0.8))
# 19.904372530787533

上の計算によって、以下のとおり各グループに属する身長差の範囲がわかりました。

グループ定義身長差の範囲
身長差ありグループ上位20%19.9cm 〜
普通グループ中位60%6.1cm 〜 19.9cm
身長差なしグループ下位20%〜 6.1cm

最終的な身長差カップルの定義は「身長差が19.9cm以上のカップル」ということになります。

おまけ

ちなみに、女性の方が身長が高いカップルの割合は下の計算から約5.7%のようです。

from scipy.stats import norm
mean = 13
std = 67.3 ** 0.5
print(norm.cdf(0, mean, std))
# 0.05652191656424562

さらに、女性の方が19.9cm以上高いというかなり厳しい条件を満たすカップルは、約0.003%しかいないという結果が得られました。

from scipy.stats import norm
mean = 13
std = 67.3 ** 0.5
print(norm.cdf(-19.9, mean, std))
# 3.0307185426683356e-05

おわりに

「身長差が〇〇cm以上のカップルを身長差カップルとする」のような直接的な定義ではなく、「確率分布の上位20%を身長差カップルとする」という間接的な定義から身長差カップルといえる具体的な身長差を調べてみました。
その結果、身長差が19.9cm以上であれば身長差カップルであるという結果になりました。

しかし、この定義にもいくつか問題があります。
まず一つにカップルの男女の身長が独立であるかわからないという点です。
独立でなければ正規分布の再生性が使えないのでここまでの計算が無駄になってしまいます。
仮に独立であれば、カップルになるときに身長を一切考慮しないということになりますが、実際は個人差はあるにしてもある程度考慮しているとみなすのが普通だと思います。
例えば、自分より身長の高い人を敬遠するという男性や身長差が大きすぎる人同士は歩幅が違いすぎてカップルになりづらいといったことは容易に想像がつきます。

二つ目は単純に上位20%という基準に根拠がない点です。
人によっては身長差カップルが20%もいるのはおかしいから上位5%だけにすべきなどと言うかもしれません。

今回は国が公開している性別ごとの身長データを利用しましたが、もし見つかれば実際にカップルになった二人の身長データを使って計算してみたいと思います。

Footnotes

  1. 国民健康・栄養調査 14 身長・体重の平均値及び標準偏差 - 年齢階級,身長・体重別,人数,平均値,標準偏差 - 男性・女性,1歳以上〔体重は妊婦除外〕 | データベース | 統計データを探す | 政府統計の総合窓口

     国民健康・栄養調査は、健康増進法に基づき、国民の身体の状況、栄養素等摂取量及び生活習慣の状況を明らかにし、国民の健康増進の総合的な推進を図るための基礎資料を得ることを目的として、毎年実施しています。
     得られた結果は、国や地方公共団体において、生活習慣予防など、健康づくり政策を進める上での資料として活用されると共に、研究機関でも利用され、そのような利用を通じて国民生活に役立てられます。

    https://www.e-stat.go.jp/stat-search/database?statdisp_id=0003224177
    www.e-stat.go.jp
    https://www.e-stat.go.jp/stat-search/database?statdisp_id=0003224177