個体群生態学を学びましょう



## はじめに：生態学の基本
- 個生態学、個体群生態学、群集生態学、生態系生態学の4階層がある

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348593/b6e9ece6-6075-4b41-9e6f-c9159a0101d0.png)

個体群生態学を学びましょう。

# 個体群の定義

* 個体群(population)とは、互いに生殖可能な同一種の集まりである
     * 必ずしも群れをなしている必要はない
     * メタ個体群は、弱い相互作用で結びつく複数の局所個体群の集団である

* 動物社会学との違い
    * **個体群生態学**：個体数を重視
    * **動物社会学**：個体間関係を重視

## 個体群動態の基本要素
- 密度と分布が個体群構造を決定する
- 資源分布は以下に依存する
  - 非生物学的要因（光、水、空間）
  - 生物学的要因（配偶者、餌）
- 空間分布は3タイプ存在する

## 個体群の空間分布

* 分布型は以下の3つに分類される:
     * ランダム分布 $(S²/I = 1)$
     * 一様分布 $(S²/I < 1)$ ： 個体間のさけあいによる
     * 集中分布 $(S²/I > 1)$ ：個体間のひきつけあいによる


####  集中度の判定に使用される指標
* **Morisitaのlδ指数**：分散と平均の関係から集中度を算出
* **Lloydの平均こみあい度**：個体の「視点」から見た密度を表現。他個体との近接度を示す 
* **Iwaoの回帰分析法**：密度と集中度の関係を分析・パターンの変化を捉える

##### 比較表

| 指標名 | 数式 | 判定基準 | 
|--------|------|----------|
| Morisitaのlδ指数 | $Iδ = n[Σ(xi(xi-1))] / [N(N-1)]$ | $Iδ = 1$：ランダム分布<br>$Iδ > 1$：集中分布<br>$Iδ < 1$：一様分布 | ・分散と平均の関係から集中度を算出<br>・密度に依存しない指標 | ・平均密度の影響を受けにくい<br>・異なる密度間での比較が可能 | ・サンプルサイズの影響を受ける<br>・計算が複雑 |
| Lloydの平均こみあい度 | $m＊ = m + (s²/m - 1)$ | $m＊/m > 1$：集中分布<br>$m＊/m = 1$：ランダム分布<br>$m＊/m < 1$：一様分布 | ・個体の「視点」から見た密度を表現<br>・他個体との近接度を示す | ・直感的に理解しやすい<br>・生物学的な意味が明確 | ・密度に依存する<br>・異なる密度間での比較が困難 |
| Iwaoの回帰分析法 | $m＊ = α + βm$ | $α > 0$：基本的な集中傾向<br>$α < 0$：反発傾向<br>$β > 1$：密度依存的集中化<br>$β < 1$：密度依存的一様化 | ・密度と集中度の関係を分析<br>・パターンの変化を捉える | ・密度依存性を評価可能<br>・時系列変化の分析に適する | ・多くのサンプルが必要<br>・解釈が複雑 |

注釈：
- $n$：サンプル区画数
- $xi$：i番目の区画の個体数
- $N$：総個体数
- $m$：平均密度
- $s²$：分散
- $α$：基本集合度指数
- $β$：密度-集合度係数

## 個体群の成長

* 成長率の基本式： $ΔN/Δt = (B-D) = rN$
   * $B$: 出生率
   * $D$: 死亡率
   * $r$: 内的自然増加率

### 環境収容力(K)の概念

環境収容力は、特定の環境において持続的に維持できる最大の個体群サイズを指す。
- $dN/dt = rN(1-N/K)$ で表される
- $K$ は環境収容力を示す

個体群動態への影響：
- K未満：個体数は増加傾向
- K付近：個体数は安定
- K超過：個体数は減少傾向（密度依存的な死亡率の上昇）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348593/ebd77f51-a692-4707-a4e8-c54235d8c0e5.png)


# 個体群生態学の重要なポイント

## 1.密度依存性の法則

- 密度依存性は個体群動態の根幹
- 個体数が増えすぎると、以下の要因で個体数は自然に抑制される

    - 餌資源の枯渇
    - 生息空間の不足
    - 病気の蔓延
    - 捕食圧の増加

* 密度効果:
     * 密度依存的: 密度上昇で死亡率上昇
     * 密度逆依存的: 密度上昇で死亡率低下
     * 密度非依存的: 密度と死亡率に関係なし

#### 具体例
北海道のエゾシカは、1990年代に個体数が急増しましたが、餌となる植生の減少により、その後個体数は減少に転じました。

## 2.アリー効果

低密度時に見られる正の密度依存性。具体的には：

- 配偶相手を見つけにくい
- 協同捕食が成立しない
- 捕食者から身を守れない

#### 具体例
チーターは単独で狩りをする時の成功率は20%程度だが、2-3頭で協力すると40%以上に上昇する。

# 3.メタ個体群理論

生息地の分断化が進む現代において、特に重要な理論。

1. 局所個体群間の移動により、絶滅リスクを分散
2. 空いた生息地への再コロナイゼーション
3. レスキュー効果による個体群の維持

#### 具体例
トンボの保全において、複数の池をネットワークとして保全することの重要性を示している

# 4.個体群の成長モデル

ロジスティック成長モデルが基本となるが、実際の個体群では以下の要因により複雑な動態を示す

- 環境収容力の変動
- 時間遅れの影響
- 捕食-被食関係
- 競争種の存在


#### 具体例
日本のニホンカモシカの個体群は、積雪量や森林の状態によって大きく変動することが知られている


## 個体数変動の数理モデル

### 指数関数的増加
- $dN/dt = rN$ で表される基本的な増加モデル
- $r$ は内的自然増加率を示す
- 環境条件により変動する

### ロジスティックモデル
- $dN/dt = rN(1-N/K)$ で表される
- $K$ は環境収容力を示す
- 密度効果により増加が抑制される
- 以下の3タイプが存在する
  - ドロソフィラ型（単純な密度効果）
  - アリー型（最適密度存在型）
  - 中間型

## 実装

```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint

class PopulationDynamics:
    def __init__(self, r=0.5, K=1000, N0=10):
        self.r = r  # 内的自然増加率
        self.K = K  # 環境収容力
        self.N0 = N0  # 初期個体数
        
    def exponential_growth(self, N, t):
        """指数関数的増加のモデル"""
        return self.r * N
    
    def logistic_growth(self, N, t):
        """ロジスティックモデル"""
        return self.r * N * (1 - N/self.K)
    
    def allee_effect(self, N, t, A=5):
        """アリー効果モデル
        A: アリー効果の閾値"""
        return self.r * N * (1 - N/self.K) * (N/A - 1)
    
    def simulate(self, t_span=(0, 100), n_points=1000):
        """モデルのシミュレーション実行"""
        t = np.linspace(t_span[0], t_span[1], n_points)
        
        # 各モデルのシミュレーション
        N_exp = odeint(self.exponential_growth, self.N0, t)
        N_log = odeint(self.logistic_growth, self.N0, t)
        N_allee = odeint(self.allee_effect, self.N0, t)
        
        # 結果のプロット
        plt.figure(figsize=(12, 8))
        plt.plot(t, N_exp, 'b-', label='Exponential Growth')
        plt.plot(t, N_log, 'g-', label='Logistic Growth')
        plt.plot(t, N_allee, 'r-', label='Allee Effect')
        
        plt.xlabel('Time')
        plt.ylabel('Population Size')
        plt.title('Comparison of Population Dynamic Models')
        plt.legend()
        plt.grid(True)
        plt.show()
        
        return t, N_exp, N_log, N_allee

    def phase_plot(self, N_range=(0, 1200), n_points=100):
        """個体数変動の位相図"""
        N = np.linspace(N_range[0], N_range[1], n_points)
        
        # 各モデルの増加率を計算
        dN_exp = self.exponential_growth(N, 0)
        dN_log = self.logistic_growth(N, 0)
        dN_allee = self.allee_effect(N, 0)
        
        plt.figure(figsize=(12, 8))
        plt.plot(N, dN_exp, 'b-', label='Exponential Growth')
        plt.plot(N, dN_log, 'g-', label='Logistic Growth')
        plt.plot(N, dN_allee, 'r-', label='Allee Effect')
        
        plt.axhline(y=0, color='k', linestyle='--')
        plt.xlabel('Population Size (N)')
        plt.ylabel('Growth Rate (dN/dt)')
        plt.title('Phase Plot of Population Dynamic Models')
        plt.legend()
        plt.grid(True)
        plt.show()
```

### プロット

```python
# 使用例
if __name__ == "__main__":
    # パラメータ設定
    model = PopulationDynamics(
        r=0.5,  # 内的自然増加率
        K=1000, # 環境収容力
        N0=10   # 初期個体数
    )
    
    # 時系列シミュレーションの実行
    t, N_exp, N_log, N_allee = model.simulate()
    
    # 位相図の生成
    model.phase_plot()
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348593/2d6b5d42-327f-429b-8429-06348ba76a78.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348593/e6f7bbd0-fe90-4983-9d00-8e5a444b49e9.png)

# アリー効果に学ぶ：生物保全における意思決定と優先順位付け

**わかること**
- 「個体数が多すぎる」問題より「少なすぎる」問題の方が致命的
- 種の保護には「最小の個体数を確保する」ことが「良い環境を作る」より重要
- 個体群が小さいほど、一個体の価値が相対的に低下する
- 社会性が高い種ほど、個体の独立性が低いほど絶滅リスクが高い

**示唆**
- 個体群が閾値を下回った場合、保護区の拡大や環境改善だけでは回復困難
- 近親交配の回避より、配偶者との出会いの機会確保の方が優先度が高い
- 分断化された個体群の統合は、新規の生息地創出より効果的
- 人工飼育下での保護は、一定規模以上の集団維持が必須条件