【初心者向け】ロジスティック方程式とその関連範囲


元来理論的には個体数ゼロからも個体数無限からも出発出来ないジレンマを抱えつつ、ゼロと無限の中点としての**環境収容力**<font color="green">K</font>すら状況に応じてさらに揺らぎ続ける**ロジスティック方程式**（<font color="blue">Logistic Equation</font>)<font color="green">dN/dt=rN(1-N/K)</font>に関するメモ。

* <font color="green">dN/dt</font>…**時間**<font color="green">t</font>時点における**個体数**<font color="green">N</font>の**増減加速度**。**環境収容力**<font color="green">K＞N</font>の時**増大**、<font color="green">K＝0</font>の時**均衡**、<font color="green">K＜N</font>の時**減少**。
* <font color="green">r</font>…**内的自然増加率**(<font color="blue">intrinsic rate of natural increase/intrinsic natural growth rate/intrinsic growth rate/biotic potential</font>)、**個体辺りの出生率**<font color="green">b</font>-**個体辺りの死亡率**<font color="green">d</font>で求められる。
* <font color="green">N</font>…**個体数**(<font color="blue">Number</font>)
* <font color="green">K</font>…**環境収容力**(<font color="blue">Carrying Capacity</font>)

[ロジスティック方程式 - Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%AD%E3%82%B8%E3%82%B9%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E6%96%B9%E7%A8%8B%E5%BC%8F)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/e526ec32-34f9-fabd-764f-932e13cafc98.png)

#シグモイド関数やロジット関数との関係
**ロジスティック方程式**は**対数関数**を導入し<font color="green">Nt=K/(1±exp^rK(t0(時間tの原点)-t(時間t時点)))</font>と表す事も出来ます。

* <font color="green">Nt</font>…**時間**<font color="green">t</font>時点における**個体数**<font color="green">N</font>の**増減率**。
* <font color="green">K</font>…**環境収容力**(<font color="blue">Carrying Capacity</font>)
* <font color="green">r</font>…**内的自然増加率**(<font color="blue">intrinsic rate of natural increase/intrinsic natural growth rate/intrinsic growth rate/biotic potential</font>)、**個体辺りの出生率**<font color="green">b</font>-**個体辺りの死亡率**<font color="green">d</font>で求められる。
* <font color="green">t0</font>…**時間**<font color=green>t</font>の原点
* <font color="green">t</font>…**時間**<font color=green>t0</font>からの経過時間

さらに計算を単純化する為にこう置きます。

* **内部自然増加率**<font color="green">r</font>=<font color="green">a</font>(<font color="blue">gain</font>)
* **環境収容力**<font color="green">K</font>=1
* **時間**<font color=green>t</font>**の原点**<font color="green">t0</font>=0

さらに<font color=green>(t0</font>(<font color="blue">初期時間</font>)<font color=green>,Inf</font>(<font color="blue">無限遠点</font>)</font>)<font color=green>→(N0</font>(<font color="blue">初期個体数</font>)<font color=green>,K</font>(<font color="blue">環境収容力</font>)</font>)の範囲を<font color=green>(-Inf,Inf)→(0,1)</font>の範囲に射影したのが**シグモイド関数**（<font color="blue">Sigmoid Function</font>）<font color=green>1/(1+exp^-ax)</font>、さらに<font color=green>gain=1</font>と置いたのが**標準シグモイド関数**（<font color="blue">Standard Sigmoid Function</font>）となります。
[シグモイド関数 - Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%B0%E3%83%A2%E3%82%A4%E3%83%89%E9%96%A2%E6%95%B0)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/06c3179b-38c0-7a92-14e4-c2e0c1bbd52a.png)

**シグモイド関数**はその逆関数たる**ロジット関数**(<font color="blue">logit Function</font>）<font color="green">log(x/(1-x))=log(x)-log(1-x)</font>(<font color="blue">ただしxの範囲は(0,1)</font>)と併せて様々な局面で用いられます。
[ロジット - Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%AD%E3%82%B8%E3%83%83%E3%83%88)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/18d8b789-1858-7569-51fe-062fbfd96427.png)

#マルサス方程式との関係
これらの関数は**マルサス方程式**(<font color="blue">Malthusian Equation</font>)<font color="green">dN/dt=rN=N0*exp^rt</font>の自然かつ自明的な拡張とされています。

* <font color="green">dN/dt</font>…**時間**<font color="green">t</font>時点における**個体数**<font color="green">N</font>の**増加率増減率**。
* <font color="green">r</font>…**内的自然増加率**(<font color="blue">intrinsic rate of natural increase/intrinsic natural growth rate/intrinsic growth rate/biotic potential</font>)、**個体辺りの出生率**<font color="green">b</font>-**個体辺りの死亡率**<font color="green">d</font>で求められる。
* <font color="green">t0</font>…**時間**<font color=green>t</font>の原点
* <font color="green">t</font>…**時間**<font color=green>t0</font>からの経過時間
* <font color="green">N0</font>…**時間**<font color=green>t0</font>時点の個体数
* <font color="green">N</font>…**時間**<font color=green>t</font>時点の個体数

[マルサスモデル - Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%82%B5%E3%82%B9%E3%83%A2%E3%83%87%E3%83%AB)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/1ea8d2f4-9d66-6c89-9263-24f0f720903a.png)

「**個体数ゼロからも個体数無限からも出発出来ないジレンマ**」はこの時点で既に埋め込まれています。またこの方程式は(<font color="blue">ロジスティック方程式も含め</font>)理論上(<font color="blue">時間tが無限遠Infinityに到達した時点で達成される筈の</font>)最終的な状況、すなわち**個体数0**や**個体数無限**を扱う事も出来ません。

#確率分布との関係

**シグモイド曲線**自体は常に連続した時系列に沿ってのみ現れるわけではありません。例えば**正規分布**（<font color="blue">Normal Distribution</font>）における**累積分布関数**（<font color="blue">CDF=Cumulative Distribution Function</font>）とか。正規分布に従って<font color="green">ステップ関数(0,1)</font>がランダムに追加され続けるモデルなどでは、数が増えるにつれその分布がシグモイド曲線に収束していく形となります。
[【初心者向け】正規分布（Normal Distribution）とは何か？ - Qiita](https://qiita.com/ochimusha01/items/fe73ddf6e3e8cb08fbee)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F597772%2F72e46148-73d8-d19f-e21f-3d4360a62ac0.gif?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=9c65b7193a7781bc94d836e5dbb340b2)

また個体数はあくまで拡張も疑う余地もない**1次元代表値**ですが、多変量解析の世界では**N次元評価軸**のどれを代表値として抽出するか自体がテクニックの一部となってくるのです。
[因子分析(factor analysis) - Wikipedia](https://ja.wikipedia.org/wiki/%E5%9B%A0%E5%AD%90%E5%88%86%E6%9E%90)
[Rで因子分析やってみた](https://qiita.com/yoshd/items/e322eecfb66ad5cd1a0a)
[主成分分析(principal component analysis; PCA) - Wikipedia](https://ja.wikipedia.org/wiki/%E4%B8%BB%E6%88%90%E5%88%86%E5%88%86%E6%9E%90)
[主成分分析の考え方](https://logics-of-blue.com/principal-components-analysis/)

#その人工知能技術への応用
人工知能技術の中核の一つたる**活性化関数**(<font color="blue">Activation Function</font>）/**伝達関数**(<font color="blue">Transfer Function</font>）においては「**この写真に映っているのは犬ではなく猫である**」といった最終結論に到達する為に「**次段階で何らかの解釈導入が可能な形に整理された出力の連鎖**」が求められるのであり、こうした試金石的標準関数が必要に応じて総動員されるのです。
[活性化関数 - Wikipedia](https://ja.wikipedia.org/wiki/%E6%B4%BB%E6%80%A7%E5%8C%96%E9%96%A2%E6%95%B0)