EOFその他諸計算お承ります。お見積もりは無料です。

お取り扱いするデータの形式、計算内容、計算結果の内容及び形式やデータ授受方法といった業務全般を定型化することでコスト削減及び納期短縮を図った低価格のスペクトル密度計算サービスを開始致しました。詳細は->ここ<-をクリックください。

このページは当事業所で提供するデータ解析業務について、これらの計算の内容の簡単な紹介及びこれらの計算がどのような役に立つのかということを説明するページで、数式や学術用語の使用はできるだけ避けています。このため一部の表現は数学的には厳密ではありません。

このページで紹介している以外の項目については、上の”データ解析”のボタンをクリックして下さい。データ解析のページに記載していないような項目でも計算可能な場合がありますので、データ解析のページに記載していないような項目の計算を希望される場合はメールでお問い合せ頂きますようお願い致します。

本文章ではデータが時系列データであることを前提にしていますが、EOFの計算は光学センサーでスキャンした1次元の輝度分布データのような、時間変動ではなく空間変動に関するデータにも適用できます。空間変動データにEOFを適用する場合は以下で時間に関する用語を空間に関する用語に置き換えて下さい。

1 EOF解析とは?
EOF解析はEmpirical Orthogonal Function解析の略ですが、非常に簡単に言うと、時系列データに適用する主成分分析です。EOF解析ということば自体は海洋や気象関連の分野でのみ使われる”方言”のようです。具体的にどのようなものかは以下に実際のデータを用いて説明致しますが、通常は複数の時系列データから、相互に関連しかつ変動の大きな成分を新しい時系列データとして取り出す目的で使用されます。なお、ここで”複数の時系列データ”とは、複数の地点で得られた日毎の温度データや複数の店で得られた日毎の売り上げデータのように、それぞれ固定した場所で時間によって変化する多数のデータを一組として”複数”の組があるという意味です。

実際の解析はこの取り出した新しい時系列データに対して行うことになりますが、元々の時系列データの各組間の関連が大きい場合は元々の時系列データ組数よりはるかに少ない組数の新しい時系列データ(通常は1組か2組程度)に元の時系列データに含まれていた変動の大部分が集約されるので、これらの僅か数組のデータを解析すれば十分ということになり、解析の手間やコストの削減に役立てることができます。また、主成分分析でよく行われているように、EOFを用いて生成した時系列データを、何らかの変動の指標の時系列として用いることも行なわれているようです。ただし、元々の時系列データの各組間の関連がほとんど無いような場合はEOFは役には立ちません。なお、複数の時系列データを集約する際にEOFのようにできるだけ多くの時系列データに共通する成分でまとめるよりは、時系列データ間の違いを強調させる成分でまとめたい場合もあるでしょう。例えば手元に多数の時系列データがあり、それらの変動にどういった要素が含まれているのかよくわかっていない状態で、とりあえずこれらの時系列データを分類したいような場合です。このような場合はEOFのような主成分分析ではなくバリマックス法といった因子分析に分類される手法を適用したほうが良いかもしれません。

2 EOFの種類
EOFの計算には使用用途が異なる幾つかの種類があります。時間領域で計算するタイプのものが一般的ですが、スペクトル解析のように周波数領域で計算するタイプのEOFもあります。時系列データの解析としては、どのような変動が、いつ、どのような順序でどの程度の大きさで起きているかを調べるような時間領域での解析が通常よく行われますが、どのような大きさの変動がどの周波数(又は周期)で起きているかといった周波数領域での解析も有用なことがあります。なお、周波数領域のEOFは複素(Complex)EOFと呼ばれる場合もありますが、時間領域のEOFでも計算過程で複素数を用いる場合があり、混同に注意が必要です。

3 時間領域EOF(非複素数)
3-1時間領域EOFとは?

このタイプのEOFは最も一般的で、かつ基本的なので、やや詳細に説明致します。計算内容としては、元の時系列データより作成した共分散または相関係数の行列の固有ベクトルおよび固有値を求めるだけのことで、主成分分析に詳しい方は、これは主成分分析と同じだと思われたことでしょう。ただし、時系列データに適用することで、時系列解析特有の注意が必要になります。これについては後述致します。

このEOF計算の結果得られる固有ベクトル(因子負荷に相当)というものと元々のデータを使うことにより、前述した新しい時系列データ(因子スコアに相当)が生成できます。ここで生成される時系列データの組数は元の時系列データの組数と同じですが、この新しい時系列データの各組が元の時系列データ全組に含まれる変動をそれぞれどの程度の割合含んでいるかといった情報が、固有値というものより得られます。従って、通常は固有値を調べ、その値が大きいEOFの時系列データのみ解析を行えばよいことになります。なお、この新しい時系列データの各組間の相関係数はゼロとなり、互いには無関係と通常は見なせます。固有ベクトルはさらに、この新しい時系列データが元の時系列データ各組でどの程度の大きさなのかを示します。以下に具体例を示します。

3-2 例
ここではアメリカ政府の海洋、気象、水産関連の業務を統合して行っている組織であるNOAAがインターネットで一般に公開しているデータを用いた具体的な計算結果を使用し説明します。図1は赤道上の東経147度(パプアニューギニアの北)で観測された東西方向の流速の時系列変化を示します。(元のデータはhttp://www.pmel.noaa.gov/taoにてダウンロード可能です。)このページを御覧になる方の中には海洋に興味のない方も多数いらっしゃると思いますが、それらの方々はとりあえず、例えばこの図はある商品の複数の地域での売り上げの時間変化のように、”流速”はご自分の興味のある対象の名に、深さは位置等に読み替えて頂ければと思います。なお、このデータは元のデータに通過帯域20~150日周期のバンドパスフィルタ(特定の周波数帯域以外は大きく減衰させるフィルタ)を適用しています。また、図を見やすくするために、100m以深のデータは下方に図のスケールで50cm/sづつずらして表示しています。


この図より、100mでの流速の変化は50mでの流速の変化の逆となっているが、200mでの変化は50mでの変化と同じ向きになっているらしいことがわかります。実は、ここで表示されている観測期間で使用可能な元のデータは、鉛直(垂直)方向10m間隔で23の深さでありますが、それらを総て表示すると図が煩雑になるので、この図ではその一部についてのみ表示したのですが、上のようにこの23組の時系列データを相互に比較してこの地点での流速の変化を調べようとするのは大変です。そこで、さっそくEOFを計算してみます。


図2aにこの計算結果として得られた主成分のうち元のデータ全組の変動を最も多く含んでいる成分(青線;以下では、モード1と呼びます)及び、その次に多く含んでいる成分(赤線;以下では、モード2と呼びます)の時間変化を示します。この図の青線と赤線は一見相関がありそうですが、実際に相関係数を計算するとゼロになります。

図2bは上述の固有値ですが、これらの2成分及び他の主成分(全部で23成分あります)が元の全23組の時系列データに含まれる変動のどの程度の割合の変動を含むかを示しています。具体的には、モード1は元の全23組の時系列データに含まれる変動の53.5%、モード2は14.3%を含んでいます。従ってこの2組の時系列を解析できれば、元の23組の時系列データに含まれていた変動の67.8%が解析できたことになります。図2cはモード1及び2の固有ベクトルですが、具体的には図2aで示されるような変動がそれぞれの深さでどれ位の大きさであるかを示します。ここで、値が負の場合はその深さでの変動は図2aの青線または赤線をゼロ値を中心として上下ひっくり返した形になることを意味します。

モード1の場合は50mでは正、100mでは負、200mでは正、すなわち100mにおける変動は50m及び200mにおける変動と逆となりますが、これは図1によって得られた印象と一致します。また、変動の大きさについては100mでの変動は50mでの変動のおよそ半分(0.44)程度、200mでの変動は50mでの変動の1/4程度(0.22)となっていることがわかります。EOF計算の第2の利点としては、このように抽出された変動の大きさの分布が明確な数字として得られるところにあり、このような情報があると、モード1の変動の原因を調べるのに役にたちますし、原因の究明に興味がない場合でも変動の各点での大きさがわかるのは役に立つ場合が多いでしょう。

では、元の時系列データの変動の53.5%を含むモード1の変動とは一体何でしょうか?図3aはモード1(青線)及びNOAA(こちらのデータはhttp://www.cdc.noaa.gov/cdc/reanalysisにあります)より得た東西方向の風速(赤線)を表示したものですが、この図より流速のEOFのモード1は風に関連しているらしいことがわかります。また、流速の変動は風の変動より若干遅れることもわかります。


実際に両者間の相関係数を計算してみますと、モード1を9日前にずらすと最大になり、値は0.68となり、十分相関があるということになります。(ここでは、元データに通過帯域が20~150日のバンドパスフィルタを適用していますので、実質的なサンプリング間隔は10日と仮定し、95%の信頼区間を計算しました。)なお、相関係数は-1から1の範囲の値をとり、-1の場合は2つの時系列の変動は鏡像のように振幅の差を覗けば全く逆になり、0の場合は無関係で、1の場合は振幅の差を除き同一となります。ここで、図2cより、流れの変動の方向は40mから80mまでは風下方向で、80m から160m迄の範囲では逆転し、160mより深いところではまた風下方向になることがわかります。このページは研究成果を発表する目的で公開しているわけではないので、これ以上の解析は省略いたします。

3-3 EOFを使用する際の注意
EOFは統計理論に基づいた単なる数値計算の一種であり、時系列データから意味のある情報を自動的に取り出してくれる魔法の道具ではありません。したがってEOFを適用するにあたっては、以下のように多少の注意が必要となります。

(1)このタイプのEOFは元の時系列データ間に関連があるが、その関連に時間差や位相差がある場合は適当ではありません。
この点を説明するために次のような実験をします。まず、最初の実験ですが、上の例で使用したデータのうち、50mのデータのみを5組複製し、それを入力の時系列データとします。この場合、5組のデータは総て同一なので、理論的には固有値はモード1以外すべてゼロになります。したがってEOFによって生成される時系列データはモード1以外はすべて値がゼロの時系列になります。実際にこちらで計算したところ、固有値はモード1はほぼ1で、モード2から5まで足しあわせた値は本来はゼロになる筈ですが、実際には0.00000000000000013になりました。数値計算を行う以上、計算過程で多少の誤差が発生してしまいますが、この結果は十分許容可能です。


さて、次の実験ですが、まず、1番目のデータは前と同様に50mのデータを用います。2番目のデータは1番目と同じく50mのデータですが、意図的に5日だけ後方にずらします。3番目のデータはさらに5日、計10日後方にずらし、4番目も5番目も同様にします。この作業によって作成した時系列データを図4aに、このデータによって計算したEOFのモード1及び2の時系列を図4bに示します。このEOF計算による固有値を図4cに示しますが、モード1は図4aで示される変動のおよそ60%程度のみを含み、モード2は元データの変動を34%程度も含んでおり、この実験ではモード2はもはや無視できなくなっています。また、このEOFの固有ベクトルを図4dに示しますが、モード1の振幅は一定ではなく深さによって値が変わるようになっています。


ここで再度図4bを御覧いただくと、モード1とモード2の変動が非常に良く似ていることがおわかり頂けるかと思います。実際この2時系列データ間の相関係数はこのままでは0.0なのですが、モード2を図の目盛りで13.3左にずらして計算すると、両者間の相関係数は0.81になります。EOFで生成される時系列データ間の相関係数0の保証はあくまでも生成された時系列データをずらしたりしない場合のみに限られます。なお、前述の図2aでのモード1とモード2の相関係数は片方の時系列を前後にずらしてみても最大で0.29にしかなりません。

この実験での結論は、元データ上の変動が互いに関連してはいるが、それらの変動に時間差があることがわかっている場合に、この実験のような結果避けるためにはEOFを計算する前にあらかじめ元のデータを意図的にずらせて、時間差をキャンセルさせてやる必要があるということです。その他の手段としては複素EOF(時間領域)や周波数領域のEOFを適用するという手もありますが、これらの手法については後述致します。

(2)固有値や固有ベクトルはEOFを計算する期間内では、ほぼ一定でなければなりません。
図2の計算例では海洋の流れと風の関連を示しましたが、海洋の風に対する応答は海洋内部の海水の密度分布の変化により変わる可能性があります。EOFはその計算期間ではただ一組の固有ベクトルと固有値を算出しますが、もし計算する期間中に海洋内の密度分布が変化し、その結果風に対する海洋の応答も変化した場合、特に固有ベクトルにあたる部分も変化する可能性があり、算出された固有ベクトルはあてにはならなくなってしまうかもしれません。

これを具体的に示すために、図2で使用したデータを図2のような期間ではなく、まず最初の91.25日の期間でEOFを計算し、次に計算期間は同じく91.25日ですが、計算開始時間を計算期間91.25日の半分だけ後方にずらして計算し、このような作業を繰り返して、モード1の固有ベクトルの時系列を作成しました。その等高線図を図5に示しますが、この図によると、2002年の12月下旬(図左端)の部分では固有ベクトルは浅いところでは負(青色)で深いところでは正(緑色)というような2層の構造になっています。


しかし、2003年の2月以後(図左端から図全体の1/6程度右)では浅いところが正(黄ー茶色)で、100~150m付近は負(青色)、その下が正(緑ー黄緑色)というような3層構造に変化します。この図より、細部に若干の変化は見られるものの、この3層構造は2003年の2月以後は安定して存在しているようですので、図2や3では2003年の2月以後のデータのみを用いて計算し、それ以前のデータは使用しませんでした。

一般的なデータの場合、たとえば幾つかの地域の店舗の売り上げの時系列データのEOF解析を行うとし、それらの店舗の中で、比較的売り上げの大きかった店舗が近所に競合店が開業して大きく売り上げが落ちたとします。この競合店の開業というのは局地的な影響しかないので、他地域の店舗の売り上げには影響しませんが、固有ベクトルには影響する可能性があります。EOFを計算するということは、データに含まれる多くの店舗に広く影響する、いわばグローバルな要素を取り出すという目的があるので、特定の店舗にしか影響がないような要素の混入は望ましくはないでしょう。EOFを計算した後に固有値が大きいモードの固有ベクトル及びもとの時系列データの変動の大きさ(分散が適当でしょう。)を調べ、注目したいモードが明らかに特定の時系列の群に偏っている場合は、その時系列の群のみでEOFを再計算してみるのも良いかもしれません。

(3) 前処理の必要性
EOFを用いてより有用な情報を引き出すためには、EOFを計算する前にデータに若干の前処理を施した方が良い場合があります。ここで例として使用した流速データの場合、元のデータはサンプリング間隔が1時間で、1日や半日の周期の潮汐変動が比較的強く含まれています。また、周期の長い方では、半年や1年周期の変動があることもわかっています。そして、当事業所運営者の過去の研究より、風の影響が強く現れる周期帯の見当がついています。これらの理由により、元データに最初に通過帯域が20~150日のバンドパスフィルタを適用し、EOFを計算する前に余分な部分をデータからあらかじめ削り落としています。ここで使用したデータの場合は潮汐や1年、半年周期といった変動はデータ組間の相関が高く、固有ベクトルの計算に無視できない影響を与える可能性があります。

また、これは前処理とは必ずしもいえませんが、前述したように手元にあるデータをすべて使用するのではなく、その一部を意図的に除外してEOFを計算したほうが良い場合もあります。上では、それぞれの入力時系列データに対しフィルタを適用することを記述致しましたが、ここでは入力時系列データのいくつかを丸ごと適当な基準でもって除去するという”フィルタ”を適用することになります。このページで取り上げた風による流速の変動の場合、前述のように浅いところでは流れは風下方向に増加し、100m付近を中心としてその向きは逆となり、さらに深いところでは再び風下方向になっていますが、このような変動を起こすメカニズムは浅いところや深いところでは同じではないと推定されています。このように、同じ原因で引き起こされた変動でも、そのメカニズムが異なる場合は応答の特性もメカニズムにより異なってくる可能性があります。具体的には、あるメカニズムは周期の短い入力変動(ここでの例では風速の変動です)にはあまり効率よく作動しないが、別のメカニズムは変動の周期にはあまり影響されないというようなことがあるかもしれません。このような場合、データをそれぞれのメカニズムが作動すると推定される領域毎に分けて、それぞれの領域でEOFを計算したほうがより有用な情報が得られる可能性があります。そこで、図3aでは40m~260mのデータを使用して計算いたしましたが、40m~80m迄のデータのみを使用して再計算してみました。図3bがその結果になります。図3aと図3bの差はあまり明白ではありませんが、図3bのほうが、”ふたこぶ”など短い周期の変動がより強く出ていることが見られます。

共分散行列を用いてEOFを計算する場合で、長さや面積、重量等のように異なった性質のデータが混在している場合、EOFを計算する前にあらかじめ適当な数式でデータを換算したほうがよいかもしれません。また、たとえば同じ長さに関するデータのみ扱う場合でも、あるデータの単位はmで、別のデータの単位はcmのような場合もあり得ると思いますが、このような場合はそれぞれのデータの変動の大きさを調べて、単位を統一させるかどうか決めればよいでしょう。いずれにしても、平均は通常除去しますし、一般的には全体的な傾向(トレンド)もあらかじめ除去しておいたほうが良いでしょう。相関係数行列を用いてEOFを計算する場合は、それぞれの入力データの変動の総合的な大きさがすべて同じになるように自動的に調節されます。(統計用語を使用させて頂くと、入力データをそれぞれの平均及び標準偏差を用いて正規化してから共分散行列を作り、それを用いてEOFを計算するのと同等となります。正規化後の共分散は相関係数と同じになります)この場合はどの時系列データもそれらの変動の大小に関わらず、同等に扱われることになります。なお、データの種類によっては、その値の対数を使用したほうが良いこともあります。

(4) EOFの計算結果は必ずしも有用とは限りません。
極端な例を示しますと、たとえば乱数で時系列データを作り、そのデータよりEOFを計算するとします。このようなデータでもEOFは一見もっともらしい固有ベクトルや固有値を出力し、それら及び入力データよりそれぞれのモードの時系列が生成できます。しかし、元々乱数より作成したデータを用いていますので、これらの結果の意味はありません。実際のデータの場合は意味のある情報以外に測定誤差や関心のない要素の影響などを含んでいるのが普通です。EOFはこのようなデータから意味のある成分を抽出するとは限りません。

また、EOFの結果生成される全成分を解析しようとするのはあまりお勧めできません。固有値の値を見て、ある閾値より小さな成分は無視するのが普通です。では、具体的にどの程度の固有値の値迄であれば検討の対象にするべきなのかという点については、当事業所の知る限り理論的には求められていませんが、過去に乱数で時系列データを作成し、それよりEOFを計算するという作業を何度も繰り返し、統計的に意味のある固有値の限界(有意限界;実際には乱数を使用しての実験ですので、統計的に意味の無い固有値の上限)を求めようとした例はあります。なお、一般論として、振幅の小さな変動を調べたい場合は、データの取捨選択やフィルタ操作などで、できるだけそのような変動を相対的に大きくしてからEOFを計算することをお勧めします。

この項目の続きを読むには、下の右矢印をクリックしてください。

当事業所では海洋・水産・気象関連のデータ処理・解析や数値計算を主に行っていますが、他分野の諸計算業務についてもお受け致します。個人やNPO、NGOのお客様も歓迎致します。

当事業所について

お問合せは
->こちらへ<-