RNA-Seqの発現差解析にTPM・FPKM・RPKMを使わない理由|DEG解析はGene Countsから

  • Gene Expression
  • High-Throughput Sequencing

RNA-Seqデータを扱っていると、 TPM、FPKM、RPKMのような発現量データを使って、 そのまま発現差解析をしてよいのか迷うことがあります。

たとえば、次のような疑問を持つ方は少なくありません。

  • TPMを使って発現差解析をしてよいのか
  • FPKMやRPKMにt検定をかけてもよいのか
  • TPMやFPKMをDESeq2に入力してよいのか
  • TPM、FPKM、RPKM、Gene Countsの違いをどう考えればよいのか
  • TPMやFPKMは、PCAやクラスタリングなどの可視化には使えるのか

また、過去のRNA-Seq論文や公開データでは、 RPKM、FPKM、TPMで表された発現量データが使われていることも多くあります。 そのため、それらの値を参考にすると、 RPKM、FPKM、TPMを使って発現差解析を行うことが、 RNA-Seq解析の標準的な進め方であるように見えるかもしれません。

しかし、過去に広く使われていたことと、 発現差解析の入力データとして適切であることは同じではありません。
現在RNA-Seqの発現差解析で広く使われているDESeq2やedgeRは、 TPM、FPKM、RPKMではなく、Gene Countsを入力することを前提に設計されています。

つまり、少なくともDESeq2やedgeRを用いた現在の標準的な発現差解析では、 Gene Countsを出発点にするのが基本です。

TPMやFPKMを使う主な理由があるとすれば、 同一サンプル内で、遺伝子間の相対的な発現量を比較したい場合 です。 一方で、DEG解析を含むサンプル間比較や、その結果の解釈までを一貫した解析フローとして扱う場合には、TPMやFPKMを用いる必然性はほとんどありません。
以下にその理由を説明します。

TPM・FPKM・RPKMは「発現量を見る」ための値であり、発現差解析の標準入力ではない

TPM、FPKM、RPKMはいずれも、RNA-Seqのリード数をもとに、 遺伝子長やライブラリサイズの影響を考慮して計算された発現量指標です。

raw Gene Countsで見れば、 低カウントの遺伝子は値そのものが小さく、 測定上のばらつきやサンプリングノイズの影響を受けやすいことが比較的分かりやすい状態にあります。(下図 左)

ところが、TPM、FPKM、RPKMでは、遺伝子長で補正する工程が入ります。
そのため、特に短い遺伝子では、もともとのcountが少なくても、変換後の値が相対的に大きくなり、逆に長い遺伝子では、countがある程度多くても相対的に小さな値になります。その結果、低カウント領域の遺伝子が散布図上で対角線方向に広がり、 本来は信頼性が低い可能性のある値が、 一見すると通常の発現量データのように見えてしまうことになります。(下図 中央・右)

edgeRやDESeq2でFPKMやTPMを使ってはいけない理由として、 「分散構造が崩れる」という説明を見たことがあるかもしれません。 下の図で見ると、Gene Countsでは低count領域ほど相対的なばらつきが大きく、 発現量と分散の関係が比較的はっきりしています。 しかし、FPKMやTPMでは、遺伝子長による補正によって低Counts由来の不安定な値が上方に拡散し、 この関係が見えにくくなります。 そのため、FPKMやTPMをedgeRやDESeq2に入力すると、 これらの手法が前提としているcountデータの分散構造から外れてしまいます。

Gene Counts Vs Fpkm Vs Tpm

Same Amount Looks Larger

TPMなら発現差解析に使ってよいのか

TPMは、FPKMやRPKMよりもサンプル間で比較しやすい発現量指標として説明されることがあります。 そのため、FPKMやRPKMではなくTPMであれば、 発現差解析に使ってよいのではないかと考えるかもしれません。

しかし、TPMもこの問題を本質的に解決するわけではありません。 TPMでも、遺伝子長で補正した後に、 サンプル内で合計が一定になるようにスケーリングされます。 そのため、低カウント由来の不安定性がなくなるわけではありません

さらに、TPMにはもう1つ重要な注意点があります。 TPMは、各サンプル内の発現量の合計が一定になるようにスケーリングされた値です。 そのため、ある遺伝子のTPMが大きくなると、 他の遺伝子のTPMは相対的に小さく見えることがあります。

つまり、TPMはサンプル内の相対的な割合を表す値であり、 各遺伝子の発現量が互いに独立に変化している値として扱うことはできません。 この性質は compositional data の問題として知られています。

TPM・FPKM・RPKMを使う主な理由は、同一サンプル内での遺伝子間比較

では、TPM、FPKM、RPKMは何に使えばよいのでしょうか。

これらの値を積極的に使う主な理由は、 同一サンプル内で、遺伝子間の相対的な発現量を比較したい場合 です。たとえば、ある1つのサンプルの中で、 遺伝子Aと遺伝子Bのどちらが相対的に高く発現しているかを見たい場合には、 遺伝子長やライブラリサイズを考慮したTPMやFPKMが役立つことがあります。

ただし、TPM、FPKM、RPKMを使えば、遺伝子間の発現量を完全に安心して比較できるという意味ではありません。 これらの値も、測定条件、マッピング、アノテーション、遺伝子ごとのmappability、データ処理などの影響を受けた観測値です。 そのため、TPMやFPKMで表示されているからといって、真の発現量をそのまま表す絶対値として扱うべきではありません。

TPMやFPKMをDESeq2やedgeRに入力すべきではない

DESeq2やedgeRは、RNA-Seqの発現差解析で広く使われている統計手法です。 これらは、RNA-SeqのGene Countsを前提として設計されています。そのため、TPMやFPKMをDESeq2やedgeRに入力すると、 モデルが前提としているcountデータの性質から外れてしまいます。

t検定なら、TPM・FPKMを使えるのか

低カウント領域の不安定さをそのまま残したTPMやFPKMは、t検定にも不向きです。 Gene Countsであれば、不安定性は主に低Counts領域に偏っているため、 前処理やフィルタリングによって、検定に適したデータに整えることができます。

しかし、TPMやFPKMでは、低カウント由来の不安定性が遺伝子長補正によって散らばって見えるため、 前処理やフィルタリングで扱いにくくなります。 その結果、測定限界に近い揺らぎや低カウント由来の不安定な差を、 統計的に意味のある差として拾ってしまう可能性があります。

PCAやクラスタリングには、TPM・FPKMを使えるのか

TPMやFPKMは、発現量を表示したり、 PCAやクラスタリングなどの可視化に使われることがあります。 しかし、発現差解析にはGene Counts、 PCAやクラスタリングにはTPMやFPKM、という使い分けが常に推奨されるわけではありません。

上述のとおり、発現差解析をGene Countsベースで行うことになります。その結果の検証や解釈をするために、PCAやクラスタリングをTPM・FPKMで行っていては、 解析結果どうしを統合して検討したり、 解析結果を解釈するのが困難になります。 つまり、発現差解析から結果確認まで、 Gene Countsを出発点として一貫して解析する方が整合的です。

Gene Countsから一貫してRNA-Seq解析を確認したい方へ

Subio Platformでは、Gene Countsを取り込み、 Gene Countsに適した正規化、フィルタリング、PCA、クラスタリング、 発現パターンの確認、発現差解析まで、 データを見ながら一貫して解析できます。

実際のGEOデータを使った解析手順は、 RNA-Seqデータ解析チュートリアル で解説しています。 製品の概要は、 Subio Platform のページをご覧ください。

どうしてもGene Countsが手に入らないときはどうする?

CPMはライブラリサイズ補正のみを行った値で、遺伝子長補正やTPM特有の組成制約の影響を受けていません。 そのため、Gene Countsの統計モデルを完全に再現できるわけではありませんが、 少なくともTPM、FPKM、RPKMよりは、元のGene Countsに近い性質を保持しています。

CPMはDESeq2やedgeRの入力として推奨される値ではありません。 しかし、適切な正規化、前処理、フィルタリングを行えば、 t検定、PCA、クラスタリングなどの探索的な解析には利用しやすくなります。

したがって、どうしてもGene Countsが手に入らない場合には、CPMから始める方が適切です。

まとめ

TPM、FPKM、RPKMは、RNA-Seqデータを理解するうえで見かけることの多い発現量指標です。 しかし、発現差解析の標準的な入力として使うべき値ではありません。

  • TPM、FPKM、RPKMは、主に同一サンプル内で遺伝子間の相対的な発現量を見るための値です
  • TPMも、低カウント由来の不安定性や分散の問題を本質的に解決するわけではありません
  • 発現差解析には、Gene Countsを用いることが前提です
  • PCAやクラスタリングにもGene Counts由来の値を使う方が整合的です
  • どうしてもGene Countsが手に入らない場合には、CPMを使う方が適切です

関連する詳しい解説は、以下の記事もご覧ください。