はじめに
edgeR
のDGEList
オブジェクト(通常 d
と名付けられます)の names(d)
でアクセスできる主要な要素について、それぞれの意味と典型的な出力例を以下に説明します。
これらの要素は、DGEList
オブジェクトの作成後、フィルタリング、正規化、分散推定といった解析ステップを経ることで順次追加・更新されていきます。
-
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
-
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()
の結果に基づきます)
-
説明: 各サンプルに関する情報を含むデータフレームです。最低限、各サンプルの総リード数(ライブラリサイズ
-
common.dispersion
- 説明: 全ての遺伝子で共通と仮定される分散パラメータ ($\phi$) の推定値です。値が大きいほど、データのばらつき(過分散)が大きいことを意味します。
- データ型/構造: 単一の数値 (numeric scalar)。
-
生成時期:
estimateCommonDisp()
またはestimateDisp()
関数によって計算されます。 -
出力例:
> d$common.dispersion [1] 0.0523 # この値はデータに依存します
-
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
-
説明:
-
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の合計
-
説明:
-
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に依存
-
説明: 各遺伝子の平均対数CPM (Counts Per Million) を示す数値ベクトルです。ライブラリサイズで正規化され、オフセット(通常、
-
trended.method
- 説明: トレンド分散(発現量依存的な分散)を推定するために使用された手法の名前を示す文字列です。
- データ型/構造: 文字列 (character string)。
-
生成時期:
estimateTrendedDisp()
またはestimateDisp()
でトレンド分散が計算された際に格納されます。 -
出力例:
(手法には
> d$trended.method [1] "auto"
"auto"
,"bin.spline"
,"power"
,"spline"
,"loess"
などがあります)
-
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に対応する分散値
-
説明: 各遺伝子の平均発現量 (
-
prior.df
- 説明: タグワイズ分散(遺伝子ごとの分散)を推定する際に、共通分散またはトレンド分散から情報を「借用」する度合い(重み)を決定する経験的ベイズのパラメータです。具体的には、事前分布の自由度に相当します。値が大きいほど、個々の遺伝子のデータよりも事前情報(全体の傾向)が重視され、タグワイズ分散が共通/トレンド分散に強く引き寄せられます。
- データ型/構造: 単一の数値 (numeric scalar)。
-
生成時期:
estimateTagwiseDisp()
またはestimateDisp()
で計算されます。 -
出力例:
> d$prior.df [1] 6.54 # この値はデータやサンプル数に依存します
-
prior.n
-
説明: タグワイズ分散の推定において、分散の事前分布の強度を決定するパラメータで、「事前観測数」や「等価サンプルサイズ」と解釈できます。
prior.df
と密接に関連し、prior.n = prior.df * (残差自由度)
のような関係で計算されることが多いです。値が大きいほど、タグワイズ分散は共通/トレンド分散により強く縮小(shrinkage)されます。 - データ型/構造: 単一の数値 (numeric scalar)。
-
生成時期:
estimateTagwiseDisp()
またはestimateDisp()
で計算されます。 -
出力例:
> d$prior.n [1] 10 # prior.df と残差自由度から計算されることが多い
-
説明: タグワイズ分散の推定において、分散の事前分布の強度を決定するパラメータで、「事前観測数」や「等価サンプルサイズ」と解釈できます。
-
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を基に調整された値
-
説明: 各遺伝子について個別に推定された分散パラメータ ($\phi$) です。共通分散とトレンド分散の情報を経験的ベイズ法によって利用し、各遺伝子のデータに基づいて調整(縮小推定)された値です。この値が最終的に統計検定(
-
span
-
説明: トレンド分散を推定する際に、平滑化手法(例えば、LOESSや移動平均など)が内部で使用される場合、その平滑化のウィンドウサイズや範囲を制御するパラメータです。
edgeR
のestimateTrendedDisp
では、メソッドによって内部的に平滑化が行われますが、span
という名前でDGEList
オブジェクトに直接格納されることは一般的ではないかもしれません。むしろ、plotBCV
のようなプロット関数で平滑化の度合いを指定する引数として現れることが多いです。もし何らかの形でDGEList
に格納されるとすれば、トレンド推定時の設定値でしょう。 - データ型/構造: 単一の数値 (numeric scalar)。
- 生成時期: (もし格納されるならば)トレンド分散推定時。
-
出力例:
> d$span # DGEListの標準要素ではない可能性が高い [1] 0.3 # LOESSの典型的なスパン値の例
-
補足:
edgeR
のDGEList
オブジェクトの標準的なコンポーネントとしてspan
が常に存在わけではありません。estimateTrendedDisp
のデフォルト手法 (method="auto"
) などでは、他のパラメータ(例:スプラインの節点数など)が平滑化を制御します。
-
説明: トレンド分散を推定する際に、平滑化手法(例えば、LOESSや移動平均など)が内部で使用される場合、その平滑化のウィンドウサイズや範囲を制御するパラメータです。
これらの要素は edgeR
の解析ワークフローを通して DGEList
オブジェクトに追加・更新され、RNA-Seqデータの特性を捉え、信頼性の高い発現変動解析を行うための重要な情報を保持しています。オブジェクトの中身を確認することで、解析の各ステップがどのように実行されたかを理解する助けになります。