この記事の目次

Argoのプロファイルには、観測値に加えて品質管理フラグとデータモードが含まれ、多くの場合は生の値と「補正済み」の値も併記されています。そのため、NetCDFファイルを開いても、結局どの数値を使えばよいのか迷いがちです。しかし、Argoの品質情報は単なる補足ではなく、使用する値を判断するために欠かせません。

フロート、サイクル、プロファイルの違いがまだ分からない場合は、品質情報へ進む前に Argoフロートとは?海洋観測データの完全ガイド から始めてください。

この記事では、ArgoのQCフラグが何を意味するのか、リアルタイムデータと遅延モードデータの違い、補正済み値を生の値より優先すべき場面、そしてOceanGraphがこれらのルールを自動的に適用し、すでにフィルタリング済みのプロファイルを表示している仕組みを説明します。

ファイル全体の構造を先に知りたい場合は、QCと補正済み変数の概要を扱った 初心者向けArgo NetCDFフォーマット解説 を参照してください。この記事では、それらを実際にどう使うかをもう一段掘り下げます。

Argoの品質管理が重要な理由

Argoフロートは海上で何年も稼働する自律観測機器であり、センサーのドリフト、生物付着や校正の問題、通信による誤りの混入などが起こることがあります。そのためArgoの品質システムでは、こうした問題を検出して可能であれば補正し、各値の信頼性を判断するための情報も記録します。

この仕組みを無視しても、解析が単純になるわけではありません。単に、検証済みのデータと未検証のデータを同じように扱ってしまうだけであり、特に多数のフロートや年数にわたって扱う場合には、結果が気づかないうちに偏る原因になります。

ArgoのQCフラグとは何か

圧力・水温・塩分をはじめとするすべてのCore変数には、対応するQCフラグ変数(PRES_QCTEMP_QCPSAL_QC)があります。位置と時刻にも、それぞれ独自のQCフラグ(POSITION_QCJULD_QC)があります。

フラグは二値ではなく、「QCが行われていない」から、良好なデータ、おそらく良好なデータ、不良なデータまで複数の区分があり、直接観測ではなく推定された値を示す独立したフラグもあります。したがって、「良好な」データを選ぶとは、単に明らかな「不良」フラグを除外することではなく、許容できる特定のフラグ値の集合を選ぶことです。

OceanGraphでは、独自に決めたルールでフィルタリングしています。JULD_QCPOSITION_QCの値が1、2、8のいずれかであるプロファイルだけを使い、圧力の各行についても、PRES_QCが同じ値のいずれかであることを条件にします。ただし、水温や塩分の値が使えない場合でも、共通の圧力軸から行ごと削除せず、欠損として残します。そこから導く量を計算するときは、必要な値がそろっている場所だけを使います。

リアルタイムデータと遅延モードデータ

Argoデータは、DATA_MODEの値によって示される、複数の段階を経て利用者に届きます。

  • リアルタイム(R:データ取得から約1日以内に利用可能になり、自動的なチェックのみが行われたデータ
  • リアルタイム補正済み(A:すでに自動的な補正が加えられたリアルタイムデータ
  • 遅延モード(D:後日、専門家による遅延モード品質管理(DMQC)でレビューされ、自動チェックでは見逃されがちなセンサーのドリフトや校正の問題も検出できるデータ

DMQCは自動チェックよりもはるかに時間がかかるため、Core Argoの遅延モードファイルは、データ取得からおおむね1〜2年後に公開されるのが一般的です(それより早いこともあります)。つまり、リアルタイムデータはすぐに使える代わりにチェックが限られ、遅延モードデータはより入念に確認される代わりに公開まで時間がかかります。

同じサイクルについて両方が存在する場合は、遅延モードデータが優先されます。OceanGraphもこの考え方に従い、CoreプロファイルではDR、合成プロファイルではSDSRのそれぞれで遅延モードを優先します。BGC変数は選んだ合成プロファイルから読み取り、B-fileを別途読み込むことはしません。

補正済みデータと生データ:どちらを使うべきか

Argoファイルには、生の変数(たとえばTEMP)とあわせて、対応する補正済みの変数(TEMP_ADJUSTED)と専用のQCフラグ(TEMP_ADJUSTED_QC)が含まれることがあり、補正済みの値にはセンサー校正やドリフト補正などが反映されています。

値を選ぶときは、次のルールに従います。

  1. 補正済みの変数と、それに対応するQCフラグの両方が存在し、有効なデータを含んでいる場合は、補正済みの変数を使う。
  2. 補正済みの変数が欠損している場合、またはすべて無効な場合に限り、生の変数とその専用QCフラグにフォールバックする。
  3. 生の値に補正済みのQCフラグを組み合わせたり、補正済みの値に生のQCフラグを組み合わせたりしない。それぞれのQCフラグは、それが付いている変数だけに対応する。

一つのプロファイルで補正済みのCore変数を使うには、PRES_ADJUSTEDTEMP_ADJUSTEDPSAL_ADJUSTEDの三つすべてが揃って有効である必要があり、一つや二つだけでは不十分です。OceanGraphでも採用しているこの「三つすべてか、まったく使わないか」というルールによって、変数ごとに補正の有無が異なる値を一つのプロファイル内で混在させず、圧力・水温・塩分を一貫した組として扱えます。

BGCパラメータごとの系列選択

溶存酸素、クロロフィル、pHなどの生物地球化学(BGC)変数では、パラメータごとに補正済みの値を優先し、利用できなければ生データを使うため、同じプロファイルでも採用する系列が変数ごとに異なることがあります。OceanGraphは、採用した系列のうちQC 4(不良)、QC 9(欠損)、または系列ごとに事前に定められた許容範囲から外れた値をnullにしますが、いったんマスクした値を生データに戻して補うことも、BGCのQC合格率によってプロファイル全体を判定することもありません。

ただし、QC 4・9以外で許容範囲に残った値も、QCコードが示す状態を確認し、解析の目的に照らして利用してください。またArgoは、専門家でない利用者に対して、生のBGC値を科学的な用途にそのまま使わないよう案内しているため、データモードがAまたはDであれば、補正済みの値をより信頼できる選択として扱いましょう。

実例:一つのプロファイルでデータを選ぶ

一つのArgoのCoreプロファイルを開いたと想像してください。

  1. DATA_MODEを確認する。Dであれば、そのサイクルはすでに遅延モードのレビューを受けている。
  2. PRES_ADJUSTEDTEMP_ADJUSTEDPSAL_ADJUSTEDがすべて存在し有効かを確認する。すべて揃っていれば、PRES_ADJUSTED_QCTEMP_ADJUSTED_QCPSAL_ADJUSTED_QCとあわせてそれらを使う。
  3. 補正済みのCore変数のいずれかが欠けている場合は、代わりに生のPRESTEMPPSALをそれぞれのQCフラグとあわせて使う。
  4. 圧力・水温・塩分のそれぞれについて独立に、プロファイル全体を通じてQCフラグのうち1、2、8のいずれかである割合が80%以上あるかを確認する。三つのうちどれか一つでもこの割合を満たさない場合、そのプロファイルは個々の層を選ぶ前の時点で、まるごと除外される。
  5. 欠損しておらず、QC条件も満たす圧力行を残す。TEOS-10で変換する前に、水温は-2.5〜40.0 °C、実用塩分は2〜41の範囲から外れる値をマスクする。この判定のあとに80%のプロファイル判定をやり直すことはない。残った水温・塩分の組からポテンシャル水温を、変換可能な塩分の行から絶対塩分を求める。求められない派生値はnullとし、別の数値範囲は適用しない。
  6. BGCパラメータごとに補正済みまたは生の系列を選び、QC 4、QC 9、または系列ごとに定めた許容範囲から外れた値をマスクする。いったんマスクした値を生データに戻して補うことはなく、残った値はQCコードが示す状態を確認したうえで利用する。

以上が、実際に「品質管理されたArgoデータを使う」ときに必要な手順です。

OceanGraphがこれらのルールをどう自動で適用しているか

OceanGraphのデータパイプラインは、プロファイルが検索結果に表示される前に、このフィルタリングロジックを自動的に適用しています。

  • あるサイクルについてリアルタイムファイルと遅延モードファイルの両方が存在する場合、遅延モードファイルが使われる
  • 補正済みのCore変数は、圧力・水温・塩分の補正がすべて揃って有効な場合にのみ使われ、そうでなければ生の値にフォールバックする
  • JULD_QCPOSITION_QCが許容範囲のプロファイルのみが対象となる
  • 圧力・水温・塩分のそれぞれについて、プロファイル全体で許容範囲のQCフラグが80%以上あるかを独立に判定し、三つのうち一つでも条件を満たさなければ、個々の層を選ぶ前にプロファイル全体を除外する
  • この判定を通過したプロファイルでは、値があってQCも許容範囲の圧力を、すべてのパラメータ共通の座標として使う。水温や塩分が欠けていても、同じ圧力にある別のパラメータの値まで削除することはしない
  • 採用した系列のQCと数値範囲は、各データ値(セル)ごとに判定する。Profile JSONでは欠損値を補間せず、水温・塩分・BGCの全パラメータで数値として扱える値が一つも残らないプロファイルは保存しない。圧力の0〜2000 dbarは別の座標条件として扱い、派生したポテンシャル水温と絶対塩分へ別の数値範囲は適用しない

POSITION_QCフラグは合格しているものの、注意して確認する価値がある位置を示したOceanGraphの軌跡表示

このようにフィルタリングを経たあとでも、QCフラグが合格しているからといって、すべての値を無条件に使えるとは限りません。上の画像は実際の例です。POSITION_QCには合格しているものの、周囲の軌跡から見ると、そのまま利用する前にもう一度確認したい位置です。QCは使用可能なデータを絞り込むためのものであり、個々の値や位置を確認する作業までは代替しません。

Argoの品質情報を扱うときによくある誤り

0以外のQCフラグをすべて「不良」として扱う

フラグには、一つだけでなく複数の許容できる区分があります。ある一つのフラグ値以外をすべて除外してしまうと、本来使えるデータを不必要に捨てることになります。

同じプロファイルの中で補正済み変数と生変数を混ぜる

たとえばTEMP_ADJUSTEDを、生のPSALとその生のQCフラグと組み合わせてしまうと、補正済みの値と生の値が一つの組に混在し、「三つすべてか、まったく使わないか」というルールを守れません。

リアルタイムデータは信頼できず、遅延モードデータは完璧だと思い込む

リアルタイムデータはレビューが少ないものの、それだけで使えないわけではなく、特に最新データが必要な用途では十分に有用です。一方、遅延モードデータはより多くのレビューを経ていますが、「レビュー済み」であることは「あらゆる問題が起こり得ない」ことと同じではありません。

欠損値を、低い値やゼロの値であるかのように扱う

QC判定で欠損になった値や、採用した系列の許容範囲から外れてnullになった値は、実際の値が低い場合やゼロの場合とは異なります。これらを同じものとして扱うと、そのあとの統計計算が気づかないうちに歪んでしまいます。

従来の流れ:NetCDFファイルを手作業でフィルタリングする

よくある方法は、生と補正済みのNetCDF変数を、それぞれのQCフラグとあわせてダウンロードし、補正済みの値があればそちらを使い、なければ生の値に切り替える処理を自分で実装し、フラグに基づく層のフィルタリングを適用し、これを使用するすべてのフロート・サイクルについて一貫して繰り返す、というものです。

これは研究用のカスタムパイプラインを組むうえでは妥当な方法ですが、一つのプロファイルを見るまでに実装すべき処理が多くあります。

QCの判断結果を自分のツールや画面へ渡す場合は、値だけでなく、単位、欠損の区別、どのQCルールを適用したかも一緒に運ぶ必要があります。海洋データの意味を保つWebアプリ設計:単位・欠損値・QC・来歴で、その受け渡し方法を説明しています。

OceanGraphでフィルタリング済みのプロファイルを確認する

ある海域のArgoデータが実際どのようなものかをまず理解したいのであれば、すでにこのフィルタリングを経たプロファイルから始めるのが効果的です。

  • 海域、日付、WMO IDで検索する
  • 返ってくるプロファイルには、遅延モードを優先するルールと、補正済みの値を優先するルールがすでに反映されていると考えてよい
  • 一つの値だけから結論を出す前に、個々のプロファイルの軌跡と位置を確認する
  • 手作業で詳しくQCする価値のあるフロートや期間を絞り込んでから、カスタムQCパイプラインへ進む

参考ページ:

OceanGraphで品質管理済みのArgoデータを探索する

QCと補正済み値のフィルタリングロジックをゼロから構築せずにプロファイルを確認したい場合は、OceanGraphで処理済みのデータを検索できます。

OceanGraphが遅延モードと補正済みの値を優先し、フラグに基づくフィルタリングまで済ませるため、利用者はプロファイルの解釈に集中できます。

よくある質問

ArgoのQCフラグは具体的に何を意味していますか

特定の値の信頼性を表しており、フラグなしから、良好・おそらく良好を経て、不良まで、さらに推定値を示す独立したフラグがあります。どのフラグを許容するかは解析内容によりますが、一般的な用途では1、2、8がよく選ばれます。

遅延モードデータは常にリアルタイムデータより優先すべきですか

同じサイクルについて両方存在する場合は、追加の専門家レビューを経ている遅延モードデータが優先されます。リアルタイムデータしかない場合でも、特に最新データが必要な用途では十分使えることがあります。

補正済みの値は常に生の値より優先すべきですか

補正済みの変数とそのQCフラグの両方が存在し有効な場合は、補正済みの値を使います。圧力・水温・塩分というCoreの三変数については、この判断を変数ごとにばらばらに行うのではなく、三つあわせて行う必要があります。

QCに合格したプロファイルでも、あらためて確認する価値はありますか

あります。QCに合格したというのは、Argoの品質システムがチェックする基準を満たしたという意味であり、科学的に注目すべき特徴がまったくないという意味ではありません。QCは最初の絞り込みとして使い、最終判断としては使わないようにしましょう。

Argoデータを使うには、このフィルタリングを自分で実装する必要がありますか

必ずしもそうではありません。カスタムパイプラインの構築ではなく、探索や解釈が目的であれば、OceanGraphのように一貫したQCと補正済み値のルールがすでに適用されているデータから始めることができます。

まとめ

Argoの品質管理情報にはそれぞれの値をどの程度信頼できるかが記録されているため、フラグの区分、リアルタイムデータと遅延モードデータの違い、補正済みの値を優先する仕組みを理解すれば、品質を考慮した値の選び方を具体的な手順として整理できます。

まずフィルタリング済みのプロファイルを見れば、QC処理の実装より先に、海洋構造の解釈へ取り組めます。OceanGraphでは、そのようなプロファイルを検索して比較できます。