見出し画像

多様性の数理モデルを作ってみる その3

【前回はコチラ】

 さて、ついに多様性の謎を解き明かす時が来ました! 今回はコンピュータープログラムによるシミュレーションで分析および解析を行います!

 ここまで長かったわね~。ちなみに勘違いする人がいるかもしれないから言っておくけど、別にプログラムの中身を作る回ではないわよ。プログラムはすでにできていて、それをクルクル回したらどういう結果が出てくるのかの話ね。



8. 分析方法

【はじめに】

 まず演算プログラムはJavaScriptで記述しています。え? あー、なんでTypeScriptじゃないのかというクレームが届いていますが無視しまーす。UIもつけており、これはHTML+CSSで実装していますのでブラウザ(Chrome, Edge, Firefoxなど)で動作させます。

 ちなみに、JavaとJavaScriptはインドとインドネシアくらい、またはグレープとグレープフルーツくらい違う言語なので注意するのよ(つまり名前の一部がかぶってるだけの別もの)。

 なぜこの言語なのかというと、JavaScriptだとそのまま実行されるソースコードを覗くことができます。なので「都合いい結果がでるようなプログラム組んでるんじゃないのか?」という因縁をつけられないようにするためなんですね。

(※チョットワカル人向けメモ:JavaScriptエンジンの多くは実行時コンパイラというものであり、コンパイルされたファイルを事前に作るのではなく、実行するときにコンパイルを行います。)

 単純に作った人にとって一番書きやすかったからよ。ちなみに、中身を公開していても、当人がコードを読めないことをいいことに難癖をつけることは可能ね。

【群集モデルの作成と演算】

 えー、そのような悲しい現実はさておくとして、目的と分析方法は次の通りです。

 目的は、どのようなパラメータをどう動かすと、集団内の多様性と集団間の多様性がそれぞれどのような値をとり、互いの関係性はどうなのかを解析することになります。なので群集のモデルを作成し、その群集の「集団間の多様性」と「集団内の多様性」を計算していくことになります。

 次に、群集のモデルの作成方法です。まず、その群集に含まれる集団の数、定義域を設定します。次に、「その群集に含まれる各要素の個数」と「各集団に含まれる要素の個数」を設定します。以下の画像のような感じですね。

群集モデルの例

 画像の例では、赤、青、緑の性質を持つ要素がそれぞれ10個あって、2個の集団に要素が15個ずつ入ることを意味しています。これを群集モデルと呼ぶことにします。この時点では、それぞれの集団にどの要素がどれくらい入るのかは決まっていません
 この状態でプログラムを走らせます。すると、最初に各要素が各集団にランダムに振り分けられます。そして、そのときの各多様性が計算されます。 

シミュレーションのイメージ図

 これを何回も繰り返し行って、得られた値を「横軸:集団間の多様性、縦軸:集団内の多様性」のグラフにプロットします。すると、いくつものプロットによって、とりうる値の領域が出現しますから、それを解析していきます。

 つまり、定義域や集団の数、集団内の要素などのパラメータをいじくりまわして、多様性がどういう領域をとるのかの変化がみられるわね。

 まさしくその通りなのです。特に「それぞれ要素がそれぞれどのくらいあるのか」というものは極めて多くの種類があります。例えば、全ての要素が均等な群集({赤:10, 青:10, 緑:10})、1つの要素だけがとびぬけて多い群集({赤:3, 青:24, 緑:3})、比率が線形勾配を描くような群集({赤:15, 青:10, 緑:5})などほかにもいろいろありますが、これらをすべて分析しきることはできないので、今回はその中から特定の群集モデルについての分析を行います。

【占有率の定義】

 現実としてどのようなパターンが多いのかはわかりませんが、おおむね多数者と少数者という分け方をされることが多いため、「全ての要素が均等な群集」と「1つの要素だけがとびぬけて多い群集」についての群集モデルを今回は分析しようと思います。

 1つの要素だけがとびぬけて多い、といってもどのくらい多いのかによって出てくるグラフが変わってしまいそうね。

 はい。なのでここで「占有率」という概念を導入します。占有率とは、1つの要素比率のみ他より大きく、それ以外は均等な要素をもつ群集モデルにおいて、1つの少数要素比率と最大比率の要素との比になります。例えば、{赤:3, 青:9, 緑:3}という内訳の群集では、9/3=3と計算され、占有率3となります。そして理想的には少数要素は同じ個数である必要があります。

占有率の例の図

 占有率の値が大きいほど1つの要素がより多数を占めるようになるということね。また、全ての要素が均等な群集の占有率は1になるのね。

 この占有率のパラメータも動かしながら分析していきます。また実際の分析では占有率から各要素数を算出すると整数にならない場合がありますので、その場合は整数に丸め込むために少数要素同士に1個の差が生じることがあります。その場合、少数要素の平均個数と多数要素との比を占有率とします。

【動かすパラメーターについて】

 占有率、すなわち要素比率を変えることはわかったけど、他にはどんなパラメーターを動かすのかしら?

 それを決めるためには群集を構成するパラメーターには何があるかを言語化していきましょう。

 とりあえず、群集は集団の集まりだから、集団の数はパラメーターの一つになりそうね。

 そうですね。それから集団には要素が入りますから、要素の数もパラメーターの一つとして扱えます。ただし、1つの集団に入る要素数としてしまうと、集団の数を動かしたときに同時に全要素数が動いてしまいますから、ここは群集に含まれる要素数(=各集団の要素数の合計)を動かすパラメーターの一つとしましょう。

 なるほどね。あとは……、定義域かしら? これもパラメーターの一つにできそうね。例えば、定義域に含まれる性質の種類がいくつあるか、とか。
 本来定義域が異なるもの同士のときは比較可能かを慎重に検討しなくてはならないのだけど、他の条件が同じであれば、定義域が異なるもの同士の比較は意味がありそうね。

 いいですね! それでは「群集内の要素数」「群集内の集団数」「定義域に含まれる性質の種類の数」を動かすパラメーターとして、均等のときと占有率17のときの2パターンについて解析してみましょう。
 それから分析の手法として、1つのパラメータを動かすときは他のパラメータは固定します。いろいろなものを同時に動かすとわけわからなくなるので。

 そうすると、なにかしら基本条件を決める必要がありそうね。

 はい。基本条件は「定義域{p1, p2, p3, p4}、全要素数200、要素数10の集団20個」とします。それでは分析すた~と~!


9. 分析の結果

【占有率の影響】

 ついに! 多様性の関係性が白日の下に!
 まずは基本条件にあたる「定義域{p1, p2, p3, p4}、全要素数200、要素数10の集団20個」の群集モデルにおいて均等{p1:50, p2:50, p3:50, p4:50}のときと占有率17{p1:170, p2:10, p3:10, p4:10}のときのデータを見てみましょう! 試行回数は10000回です! はい、どん!

占有率が変化したときの多様性の関係

 こ、これは……!! 集団間の多様性と集団内の多様性が極めて強く負に相関してる! っていうか相関係数1なんてある!?

 均等の場合は、集団間の多様性と集団内の多様性は負に相関してますね。一方で占有率17の場合は相関係数こそ高いですが、傾きが平坦に近いですね。

 占有率が高いと集団間は比較的変動しやすく、一方で集団内はほぼ変動しなくなるみたいね。また、均等では集団内が高い値となり、占有率17では集団間が高い値となるようね。とりあえず、他の分析もやってみましょう。

 そうですね。では次に「1つあたりの集団に含まれる要素数」「群集内の集団の数」「定義域の性質の種類の数」の3つについて、それぞれ1つのパラメータを動かしたときにどうなるか、均等のときと占有率17のときで比較してみましょう。いずれも試行回数は10000回です。

【群集内の要素数の影響】

 では次に、群集に含まれる要素数が変動したらどうなるかについての結果です。定義域と集団の数は同じなので、群集に含まれる要素数が増加するとそれに応じて1個当たりの集団に含まれる要素も増えます。はい、どん!

要素数を変化させたときの多様性の関係

 均等のときは負に相関、占有率17のときは負に相関しつつもかなり横ばい、という点は変わらないわね。また、要素数が少ないほど集団間の多様性が高くなりやすく、要素数が増えると集団内の多様性高くなる傾向にあるわね。

 加えて、先ほどと同様に、占有率17では集団間の多様性のとりうる値が高くなっており、またとりうる値の幅も広そうですがどうなのでしょうね? ちょっと別のグラフを作成してみましょう。
 ということで、横軸に要素の数、縦軸を各多様性の平均値とばらつき具合(標本の標準偏差)で表したグラフを作ってみました。また、このグラフのみ(正確に傾向をつかむため)占有率9のデータを追加しました。
(※チョットワカル人向けメモ:データは出しませんが、各多様性の値はおおむね正規分布をとっていることを確認しています)

要素数が変化したときの各多様性の平均とばらつきの変化

 青、緑、紫のプロットを比較すると、占有率が高くなるにしたがって集団間のばらつきは大きくなってるわね。逆に集団内のばらつきは小さくなってるわ。要素数が増えるといずれの多様性もばらつきが小さくなるのね。

【群集内の集団数の影響】

 では次に、集団の数が変動したらどうなるか、つまり群集に含まれる集団数の影響によって多様性がどう変化するかについての結果です。ちなみに群集内の要素数を一定としているので、集団の数が増えると集団内の要素数が減少します。端的に換言すると、群集の要素をどれだけ細かく分けたかということですね。はい、どん!

集団数を変化させたときの多様性の関係
集団数が変化したときの各多様性の平均とばらつきの変化

 占有率による影響は先ほど同じね。集団の数が増加すると集団内は減少するけど、ばらつきはほぼ変わらない、一方で集団間はほぼ変わらないけどばらつきが減少するという逆の傾向があるみたいね。

 集団の数が100個のとき、集団間が0.3以下、集団内が0.1-0.4といずれも0.5を下回る低い値ですね。つまり、細かくグループ分けしすぎるといずれの多様性も大きく減少してしまうようですね。

【定義域に含まれる性質の種類の数の影響】

 では最後に、定義域に含まれる性質の種類の数が変動したらどうなるか、つまり群集に含まれる集団数の影響によって多様性がどう変化するかについての結果です。ちなみに群集に含まれる要素の数は一定なので、性質の種類が増えるとその性質を持つ要素の総量は減っていきます。端的に換言すれば、性質をどこまで細かく分けるか、すなわち最初の記事ででてきた「抽象度の問題」を群集の場合に拡張したときにどうなるか、ですね。はい、どん!

定義域に含まれる性質の種類の数が変化したときの多様性の関係
性質の種類の数が変化したときの各多様性の平均とばらつきの変化

 性質の種類が増えると、集団間は増加し、集団内は均等のときは変化しないがそうでないときは増加するわね。そしていずれの多様性のばらつきも性質が20種を超えるとほとんど変化しなくなるわね。

 加えて占有率による影響は今までと少し違うみたいですね。各多様性の値やばらつきの大小の傾向は同じですが、性質の種類が100種類だと集団内が0.6以上、集団間が0.7以上といずれも0.5を上回る高い値になっていますね。つまり性質の数が増える、すなわち性質の抽象度が減少するといずれの多様性も増加するようです。


10. 結論・総括

 いや~、とても面白い結果でしたね~。それではここで結果をまとめてみましょう。

  • 集団間の多様性と集団内の多様性は負に相関する。

  • 占有率が高いほど、集団の分け方による集団内の多様性の変動は小さくなり、集団間の多様性の変動は大きくなる傾向にある。

  • 占有率が高いほど、集団間の多様性は高くなり、集団内の多様性は低くなる傾向にある。

  • 群集内の要素数が増加すると集団内の多様性は高くなり、集団間の多様性は低くなる。

  • 群集内の要素数が一定で、集団の数が増加すると、集団間の多様性はほとんど変化せず、集団内の多様性は低くなる。

  • 群集内の要素数が一定で、定義域に含まれる性質の種類の数が多くなると、集団間の多様性は高くなり、集団内の多様性は均等な群集のときは変化しないが1つの要素だけ他の要素より多い群集では高くなる。

 これらの結果に基づいて、多様性についての言語化を再度やっていくわよ。そこまで長くならないわ。

 まず、多様性には集団間の多様性と集団内の多様性がありますが、定義域が決まっていて各要素が均等に近い場合、ほとんどの場合負に相関するため両方を高めることはできません。つまり、片方を高くするともう片方は必ず低くなるということですね。

 どうしても両方を高めたければ、集団の数を減らして定義域に含む性質をバカみたいに増やせばいい、つまりちょっとの差異を見つけ出しては、「あれもこれも多様、なんならみんな顔が違うよね」とか言っておけばいいのよね。結局はどこまでを差として認めるかの程度によって多様性の度合いが支配されてしまうのよね。

 そして群集の中に1種類の多数者と複数種類の少数者が混在している場合、どのように集団分けをおこなっても集団内の多様性はほとんど変化しないですね。むしろ少数者と多数者そこそこ分離して集団を作った方が集団内の多様性をある程度保ちつつ、集団間の多様性を高められる可能性があるんですね。

 そうね。仮に集団内の多様性がどうかだけを気にするなら、どう分けても変わらない以上「好きにすればいい」という結論にしかならないわね。

 まあこれらの結論もどのくらいの占有率からこの傾向が現れるかという話になりますが、今回出したグラフでは、占有率9のときに多くの条件で集団内の多様性より集団間の多様性の方がばらつきの程度が大きい傾向にありました
 ではその境界線がどこかを探ってみますと、「群集内の要素数の影響」のデータに基づくと、占有率5でやや逆転気味でしたので1つの少数要素の割合が多数要素に対して約17%を下回る場合は集団間の多様性の方が、集団の分け方による影響を受けやすいと考えられますね。ただし、細かい条件によってその境界線は多少ながら上下します

占有率5のときの各多様性のばらつき

 今回は1つの多数要素と複数の少数要素からなる群集モデルについて分析をおこなって、それ以外のモデルではどうなるのかというのはなんともいえないのですが、たぶん今回の結果と似たような傾向がでてくるんじゃないかなーと思ってます。


11. おわりに

【所感:結局多様性って……】

 まあ、結局はこの結果をもってしても、どこまでの差を検出するかの影響がとても大きい、すなわち最初の記事であった、「全員人間という見方をすれば多様性は低く、全員顔が違うという見方をすれば多様性は高い」というのがすべてな気がしてくるわね……。

 結局そういうオチなのですが、実際に焦点を当てられやすい集団内の多様性も、少数者が17%を下回ってるならどう分けたってたいていの場合ほぼ変わらないし、少数者が多少は分離すれば今度は集団間の多様性は増加するというなんとも皮肉めいた結果も収穫だったかな、と。

 そもそもすべての集団が十分な数の少数者を確保することは不可能なわけだから、仮に集団内の多様性を高めることが道徳的とするならば、それは道徳性の奪い合いという道徳ゲームね。たいていは資本力のあるところがかっさらっていくのだけど。

 加えて集団間の多様性は見向きもされないというのが現実ですね。また、集団内の多様性に絞っても、どこまでを定義域に含めるのかとかAの多様性は大事だけどBの多様性は大事じゃないとか、大抵は都合のいいものだけをピックアップされてるきらいがあるんですよねぇ。

 そりゃあ、例えばきまぐれにアサルトライフルを乱射するタイプの人間とかゲームの中だけにしてほしいわね。そういったことを考えると多様性が高いことが必ずしもいいこととは思えないし、「多様性が大事」はただの自分勝手な妄言に聞こえるわ。今度からは「道徳ゲームに勝つことが大事」と言ってほしいわね。
 そしてもし今度「将来に向けて多様性を高めること大事」とか言われたら、「全員顔は違うが?」とでも返しておけばいいのだわ。

【最後に】

 これにて多様性の数理モデルを作ってみるコーナーは終わりです! 多様性の言語化、多様性の定義、公理系の構築、計算式の作成、シミュレーションを用いた解析、解析結果に基づく多様性の特徴、そして感動のフィナーレへ……。

 なるべくとっつきやすいように、そして読みやすいように喋ったつもりだったけど、どうだったかしら? 難しかった? けっこう複雑な数式が出てきたり、グラフを読み解いたりする箇所が多かったから、中には参っちゃう人もいたかもしれないけど、ここまで読んでくれてありがとう。

 そうだ。最後に実際に使用したプログラムをGitHubにあげておきました。
【こちらのリンク】パソコンからとんでいただき、codeという緑色のボタンを押して、Download Zipを押していただくと、ダウンロードできます。Zipでダウンロードされるので、右クリックから展開してくださいね。

 それではまたどこか別の記事でお会いしましょう!

 という予定だったのですが、急遽おまけという形でもうちょっとだけ続きます! 内容は、「集団間の多様性を群集の多様性の指標と解釈した場合の数理モデル」と「ソフトの使い方」になります。

【次回はコチラ!?】

この記事が気に入ったらサポートをしてみませんか?