チートシート

MATLAB を使用した時系列データの前処理

本リファレンスでは、よくあるユースケースを紹介していますが、すべてを掲載しているわけではありません。

Timetable

時系列データの整理・処理を目的として設計された MATLAB のデータ型。

Timetable の構成要素

tt = timetable(times, var1, var2, ... ,varN);

(すべての変数は、行数が同じでなければなりません。)

tt = table2timetable(t);

(「t」に含まれる最初の datetime または duration の変数が、行時間となります。)

Timetable の操作

データへのアクセス

これらは同じ配列を返します

tt.Temperature

tt{:,'Temperature'} tt{:,1}

詳細を見る

新規変数の追加

tt.newVar = zeros(height(tt),1);

変数名の変更

tt.properties.VariableNames = newNames;

(名前は有効な MATLAB 識別子でなければなりません)

ヒント: matlab.lang.makevalidname を使用して、無効となる可能性のある名前から有効な名前を作成します。

Retime を使用したデータの再サンプリング

tt = retime(tt,newtimes,method);

method は、リタイミング後の欠損値を埋める際に使用され、synchronize と同じオプションを使用できます (「Timetable の統合」を参照)。

データクリーニング

データの平滑化

B = smoothdata(A,method);

次の手法を用いた、ノイズを含むデータの平滑化:

'movmean','movmedian','gaussian', 'lowess','loess','rlowess', 'rloess','sgolay'

詳細を見る

外れ値の検出

TF = isoutlier(A,method);

次の手法を用いた、外れ値の特定:

'median','mean','quartiles', 'grubbs','gesd'

詳細を見る

変化点の検出

TF = ischange(A,method);

次の手法を用いた、急激な変化の検出: 'mean','variance','linear'

詳細を見る

Timetable の統合

複数の timetable を共通の時間ベクトルに同期させます。

tt = synchronize(tt1,tt2,...,ttN);

詳細を見る

同期を行うと、データポイントの欠損 (変数が測定されなかった時刻) が発生しがちです。synchronize では、データを調整して欠損部分を埋める方法が複数サポートされています。

補完: 'fillwithmissing','fillwithconstant'

内挿: 'linear','spline','pchip'

最近傍: 'previous', 'next','nearest'

集計: 'mean','min','max',@func,...

欠損データ

欠損値の検出

TF = ismissing(tt);

詳細を見る

欠損値の補完

tt = fillmissing(tt,method);

次の手法を用いた、近傍の点から算出した値による欠損値の置換:

'previous','next','nearest',

'linear','spline','pchip'

詳細を見る

欠損値を含む行の削除

tt = rmmissing(tt);

ビッグデータ

tall 配列を使用すると、メモリに読み込むには大きすぎるデータに対しても MATLAB 関数を適用できます。

「tall」timetable の作成:

% データを指すデータストアを作成 %

ds = datastore('*.csv');

% データストアから tall table を作成 %

t = tall(ds);

詳細を見る

% timetable に変換

tt = table2timetable(t);