edgeRの分散推定後のDGEListオブジェクトの中身

## はじめに
`edgeR`の`DGEList`オブジェクト（通常 `d` と名付けられます）の `names(d)` でアクセスできる主要な要素について、それぞれの意味と典型的な出力例を以下に説明します。

これらの要素は、`DGEList`オブジェクトの作成後、フィルタリング、正規化、分散推定といった解析ステップを経ることで順次追加・更新されていきます。

---

1.  **`counts`**
    * **説明**: 生のリードカウントデータを含む数値行列です。行が遺伝子（またはフィーチャー）、列がサンプルに対応します。
    * **データ型/構造**: 数値行列 (numeric matrix)。
    * **生成時期**: `DGEList()` 関数でオブジェクトを作成する際に、`counts` 引数によって指定されます。
    * **出力例**:
        ```
        > d$counts
                Sample1 Sample2 Sample3
        Gene1      10      15      12
        Gene2     100     120     110
        Gene3       0       5       2
        Gene4      50      60      55
        Gene5      25      30      28
        ```

2.  **`samples`**
    * **説明**: 各サンプルに関する情報を含むデータフレームです。最低限、各サンプルの総リード数（ライブラリサイズ `lib.size`）、正規化係数（`norm.factors`）、および実験グループ情報（`group`）などが格納されます。
    * **データ型/構造**: データフレーム (data.frame)。
    * **生成時期**: `DGEList()` 実行時に初期化されます。`lib.size` は `counts` の列和から自動計算され、`group` は `group` 引数で指定されます。`norm.factors` は `calcNormFactors()` 関数によって計算され、追加（または更新）されます。
    * **出力例**:
        ```
        > d$samples
                group lib.size norm.factors
        Sample1  Ctrl      185    0.9912869  # lib.size は Gene1-5の合計
        Sample2  Ctrl      230    1.0053100
        Sample3 Treat      207    1.0033039
        ```
        *(注意: `lib.size` と `norm.factors` の値は上記の`counts`例と`calcNormFactors()`の結果に基づきます)*

3.  **`common.dispersion`**
    * **説明**: 全ての遺伝子で共通と仮定される分散パラメータ ($\phi$) の推定値です。値が大きいほど、データのばらつき（過分散）が大きいことを意味します。
    * **データ型/構造**: 単一の数値 (numeric scalar)。
    * **生成時期**: `estimateCommonDisp()` または `estimateDisp()` 関数によって計算されます。
    * **出力例**:
        ```
        > d$common.dispersion
        [1] 0.0523  # この値はデータに依存します
        ```

4.  **`pseudo.counts`**
    * **説明**: `addPrior()` 関数などによって、元のカウントに微小な「事前カウント（prior count）」を加えたものです。特に発現量が低い遺伝子やカウントが0の遺伝子について、分散推定や対数変換などを安定化させるために用いられます。
    * **データ型/構造**: 数値行列 (numeric matrix)。`counts` と同じ次元を持ちます。
    * **生成時期**: `addPrior()` 関数を実行した際に生成または更新されます。
    * **出力例**: (仮に `prior.count=1` で `addPrior` を実行した場合)
        ```
        > d$pseudo.counts
                Sample1 Sample2 Sample3
        Gene1      11      16      13  # counts + prior.count
        Gene2     101     121     111
        Gene3       1       6       3
        Gene4      51      61      56
        Gene5      26      31      29
        ```

5.  **`pseudo.lib.size`**
    * **説明**: `pseudo.counts` に対応するライブラリサイズです。つまり、`pseudo.counts` の列の合計値です。
    * **データ型/構造**: 数値ベクトル (numeric vector)。サンプルの数と同じ長さを持ちます。
    * **生成時期**: `addPrior()` 関数を実行した際に `pseudo.counts` と共に計算されます。
    * **出力例**: (上記の `pseudo.counts` 例の場合)
        ```
        > d$pseudo.lib.size
        Sample1 Sample2 Sample3
            190     235     212 # 各列のpseudo.countsの合計
        ```

6.  **`AveLogCPM`**
    * **説明**: 各遺伝子の平均対数CPM (Counts Per Million) を示す数値ベクトルです。ライブラリサイズで正規化され、オフセット（通常、`prior.count` に基づく微小値）が加えられた後、平均され、log2変換された値です。遺伝子の全体的な発現強度を示し、トレンド分散の推定などで横軸として利用されます。
    * **データ型/構造**: 数値ベクトル (numeric vector)。遺伝子の数と同じ長さを持ちます。
    * **生成時期**: `estimateCommonDisp()`、`estimateTrendedDisp()`、`estimateTagwiseDisp()`、またはこれらを統括する `estimateDisp()` を実行した際、あるいは `aveLogCPM()` 関数を直接呼び出した際に計算されます。
    * **出力例**:
        ```
        > d$AveLogCPM
           Gene1    Gene2    Gene3    Gene4    Gene5
        6.005001 9.076996 3.138865 8.220960 7.251893 # 値はデータとprior.countに依存
        ```

7.  **`trended.method`**
    * **説明**: トレンド分散（発現量依存的な分散）を推定するために使用された手法の名前を示す文字列です。
    * **データ型/構造**: 文字列 (character string)。
    * **生成時期**: `estimateTrendedDisp()` または `estimateDisp()` でトレンド分散が計算された際に格納されます。
    * **出力例**:
        ```
        > d$trended.method
        [1] "auto"
        ```
        *(手法には `"auto"`, `"bin.spline"`, `"power"`, `"spline"`, `"loess"` などがあります)*

8.  **`trended.dispersion`**
    * **説明**: 各遺伝子の平均発現量 (`AveLogCPM`) に基づいて推定されたトレンド分散（発現量に依存する分散）の値です。
    * **データ型/構造**: 数値ベクトル (numeric vector)。遺伝子の数と同じ長さを持ちます。
    * **生成時期**: `estimateTrendedDisp()` または `estimateDisp()` で計算されます。
    * **出力例**:
        ```
        > d$trended.dispersion
           Gene1    Gene2    Gene3    Gene4    Gene5
        0.050130 0.041082 0.079373 0.043714 0.047730 # AveLogCPMに対応する分散値
        ```

9.  **`prior.df`**
    * **説明**: タグワイズ分散（遺伝子ごとの分散）を推定する際に、共通分散またはトレンド分散から情報を「借用」する度合い（重み）を決定する経験的ベイズのパラメータです。具体的には、事前分布の自由度に相当します。値が大きいほど、個々の遺伝子のデータよりも事前情報（全体の傾向）が重視され、タグワイズ分散が共通/トレンド分散に強く引き寄せられます。
    * **データ型/構造**: 単一の数値 (numeric scalar)。
    * **生成時期**: `estimateTagwiseDisp()` または `estimateDisp()` で計算されます。
    * **出力例**:
        ```
        > d$prior.df
        [1] 6.54  # この値はデータやサンプル数に依存します
        ```

10. **`prior.n`**
    * **説明**: タグワイズ分散の推定において、分散の事前分布の強度を決定するパラメータで、「事前観測数」や「等価サンプルサイズ」と解釈できます。`prior.df` と密接に関連し、`prior.n = prior.df * (残差自由度)` のような関係で計算されることが多いです。値が大きいほど、タグワイズ分散は共通/トレンド分散により強く縮小（shrinkage）されます。
    * **データ型/構造**: 単一の数値 (numeric scalar)。
    * **生成時期**: `estimateTagwiseDisp()` または `estimateDisp()` で計算されます。
    * **出力例**:
        ```
        > d$prior.n
        [1] 10 # prior.df と残差自由度から計算されることが多い
        ```

11. **`tagwise.dispersion`**
    * **説明**: 各遺伝子について個別に推定された分散パラメータ ($\phi$) です。共通分散とトレンド分散の情報を経験的ベイズ法によって利用し、各遺伝子のデータに基づいて調整（縮小推定）された値です。この値が最終的に統計検定（`exactTest`やGLMベースの検定など）で利用されます。
    * **データ型/構造**: 数値ベクトル (numeric vector)。遺伝子の数と同じ長さを持ちます。
    * **生成時期**: `estimateTagwiseDisp()` または `estimateDisp()` で計算されます。
    * **出力例**:
        ```
        > d$tagwise.dispersion
           Gene1    Gene2    Gene3    Gene4    Gene5
        0.05112  0.04188  0.09211  0.04439  0.04803 # trended.dispersionを基に調整された値
        ```

12. **`span`**
    * **説明**: トレンド分散を推定する際に、平滑化手法（例えば、LOESSや移動平均など）が内部で使用される場合、その平滑化のウィンドウサイズや範囲を制御するパラメータです。`edgeR` の `estimateTrendedDisp` では、メソッドによって内部的に平滑化が行われますが、`span` という名前で `DGEList` オブジェクトに直接格納されることは一般的ではないかもしれません。むしろ、`plotBCV` のようなプロット関数で平滑化の度合いを指定する引数として現れることが多いです。もし何らかの形で `DGEList` に格納されるとすれば、トレンド推定時の設定値でしょう。
    * **データ型/構造**: 単一の数値 (numeric scalar)。
    * **生成時期**: （もし格納されるならば）トレンド分散推定時。
    * **出力例**:
        ```
        > d$span # DGEListの標準要素ではない可能性が高い
        [1] 0.3 # LOESSの典型的なスパン値の例
        ```
    * **補足**: `edgeR` の `DGEList` オブジェクトの標準的なコンポーネントとして `span` が常に存在わけではありません。`estimateTrendedDisp` のデフォルト手法 (`method="auto"`) などでは、他のパラメータ（例：スプラインの節点数など）が平滑化を制御します。

---

これらの要素は `edgeR` の解析ワークフローを通して `DGEList` オブジェクトに追加・更新され、RNA-Seqデータの特性を捉え、信頼性の高い発現変動解析を行うための重要な情報を保持しています。オブジェクトの中身を確認することで、解析の各ステップがどのように実行されたかを理解する助けになります。