- Published on
身長差カップルの定義を数学的に考える
Table of Contents
はじめに
最近Twitterで「身長差カップル」というワードがトレンド入りしていました。
今回はその中でも目についた、身長差カップルの定義について数学的に考えてみました。
身長と正規分布
身長差について考える前に、まずはシンプルに身長について考えてみます。
人間の身長は正規分布に従うデータの典型例です。
厚生労働省の公開するデータ1によると20代の身長[cm]の平均・標準偏差は以下のとおりとなっています。
平均 | 標準偏差 | |
---|---|---|
男性 | 171.7 | 5.9 |
女性 | 158.7 | 5.7 |
つまり、男性の身長を、女性の身長をとすると、
と表せます。
この2つの正規分布をグラフにすると以下のようになります。
身長の分析1
身長が従う正規分布の平均と標準偏差がわかっていれば、具体的な身長の値が与えられたときにその値が上位何%に属するかがわかります。
例えば、男性の身長がに従うという先程の知識があれば、身長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と同じように身長差の値によって以下のように定義します。
ただし、簡単のために身長差は男性の身長と女性の身長の差、つまりで計算するものとします。
つまり、身長差がマイナスの値をとる場合があるということです。
グループ | 定義 |
---|---|
身長差ありグループ | 上位20% |
普通グループ | 中位60% |
身長差なしグループ | 下位20% |
身長差の確率分布
さて、グループの定義は決まりましたが身長差はどのような分布なのでしょうか?
分布がわからなければ上位20%が何cm差なのかわかりません。
今わかっているのは、男性の身長、女性の身長について
ということだけです。
ここで重要になるのが正規分布の持つ再生性という性質です。
確率分布の再生性とは
再生性とは確率分布に関する性質で、独立な確率変数についてのときが成り立つならば、確率分布は再生性を持つといいます。ただしここで、は定数を表しています。
簡単に言うと独立同分布()に従う2つの確率変数を定数倍して足し引きしても確率分布が変わらない性質です。
正規分布は再生性を持つ確率分布の代表例です。
つまりとが独立で両方とも正規分布に従うため、今知りたい身長差の確率分布も正規分布ということになります。
正規分布ではについて、
が成り立つので、は以下のようになります。
この正規分布をグラフにすると以下のようになります。
身長差カップルの定義
身長差の分布がわかったので、身長のときと同様に上位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%だけにすべきなどと言うかもしれません。
今回は国が公開している性別ごとの身長データを利用しましたが、もし見つかれば実際にカップルになった二人の身長データを使って計算してみたいと思います。