海老ノート

Google Earth Engine 苦闘の記録

調和解析(Harmonic model)への道1

今回のお手本

何やったらできるのかわからないので、Nick Clinton先生の動画を道しるべとして作業します。動画のデモで使用しているのはランドサット画像、場所はサンフランシスコ周辺です。NDVIのピークの高さとかピークの時期とか取り出しています。

日本でやりたい

先生の動画、すげーと思ってみました。が、サンフランシスコわからないから、せっかくなら日本でやりたい。日本でやるとしたら、曇りの日が多くて欠損多くなりそうだなーということで、ここはMODISのNDVI(250m)で似たようなことをやってみようというチャレンジです。

MODISのTerraとAquaをくっつける

Google Earth EngineのデータカタログにはMODISのTerraとAquaのNDVIデータがあるんで、それを使います。どちらも250m、16日間隔。

ただ、Terraは2000年2月18日~のデータがあるけど、Aquaは2002年7月4日~とちょっと遅いです。ともあれこの二つを合わせると、2002年からは8日ごとのデータが得られます。で、どうやって合わせるのかなーと調べたら、答えがありました。ImageCollection.mergeを使えばオッケーなんですね。簡単。で、くっつけて、2003年から2020年のNDVIデータを使うことにしました。

var terra = ee.ImageCollection("MODIS/006/MOD13Q1");
var aqua = ee.ImageCollection("MODIS/006/MYD13Q1");

var filteredModis = terra
                       .merge(aqua)
                       .filterDate('2003-01-01','2020-12-31')
                       .sort("system:time_start")
                       .select('NDVI');

どんなデータか見ます。場所は適当に富士樹海。

f:id:camarao:20210519124412p:plain
樹海のNDVI

なんかノイズが結構ありますね。大丈夫でしょうか。

強引に分析を進めてみる

ノイズは見なかったことにして、お手本動画を参考に(というかコピペ)して作業を続けます。動画で先生がおっしゃっている通り、GEEにある線形回帰を行うee.Reducer.LinearRegressionに合わせてデータを成型していきます。

目的変数になるNDVIに加えて、説明変数であるt、cos、sin、定数をそれぞれの画像のバンドとして加える関数を作り、ImageCollection.map(function(image)){.....}とやる、そしてその後どれが変数なのかを指定して(先生は順番が重要と動画でいってた)、.reduceしています。んでもって、回帰式の係数を取り出して元の説明変数を代入すると、fitされた値が得られるようです。

f:id:camarao:20210519125558p:plain
Harmonic modelと元の値

ノイズは無視して強引に線が引けてますね。値のピークに近い部分はうまく拾えていない気がしますが、ここまでの達成を喜びます。

地図にしてみる

Harmonicモデルのいいところの一つは、係数から簡単に山(波)の高さやピークの時期を取り出せることのようです。これはフーリエなんとか級数展開1で、数学的に扱いやすいからみたいです(動画で先生も俺は習ってないといっていたので、見逃してください)。先生のスライドより↓

Acos(2πωt - φ) = β2cos(2πωt) + β3sin(2πωt)

A = amplitude = (β22 + β32)½
φ = phase = atan(β3 / β2)

で、この式を使ってphase(ピークの日)をマッピングしてみます。

f:id:camarao:20210519131241p:plain
HarmoniモデルによるNDVIのピーク日

青が春、赤が夏、黄色が秋、緑が冬で色付けしていますが、静岡でピークが冬って明らかに間違ってます、ので、その場所のグラフを見てみます。

f:id:camarao:20210519131614p:plain
静岡の山のNDVI

見ると、梅雨時期にNDVI 0.2を下回る外れ値が多いようです。雲だ。そのせいでNDVIが低いのは初夏だ!ということになって、逆にピークは冬っていうことになっている風ですね。ノイズを何とかしないといけない問題へと戻りました。(続く)


  1. 図書館で本借りて読んだ。工学部のみなさんはすごい頭いいんだなと思った。