ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

データのトレンド除去

はじめに

MATLAB® 関数 detrend は、データから平均または (最小二乗の意味での) 最適な近似線を差し引きます。データにいくつかのデータ列がある場合、detrend では各データ列が別々に扱われます。

データからトレンドを除去することにより、傾向についてデータ内の変動に解析の焦点をあてることができます。線形トレンドは、一般にデータの体系的な増加または減少を示します。たとえば、センサー ドリフトによりシステマティック シフトが発生することがあります。トレンドが意味をもつこともありますが、解析の種類によっては、トレンドを取り除いた方がより良い洞察が得られます。

データのトレンドの影響を除去することに意味があるかどうかは、解析の目的によって異なります。

データの線形トレンドの除去

この例では、全体の増加に関する価格変動を強調するために、毎日の株価の終値から線形トレンドを除く方法を示します。データがトレンドをもたない場合、トレンドを除去することで平均値が強制的にゼロになり、全体的な変動が抑えられます。次の例では、関数 gallery から得られた分布を使用して株価の変動をシミュレーションします。

シミュレーション データセットを作成して平均値を計算します。sdata は日々の株価の変化を表します。

t = 0:300;
dailyFluct = gallery('normaldata',size(t),2);
sdata = cumsum(dailyFluct) + 20 + t/100;

データの平均を求めます。

mean(sdata)
ans =

   39.4851

データをプロットしてラベルを付けます。このデータが示す株価の体系的な増加に注意してください。

figure
plot(t,sdata);
legend('Original Data','Location','northwest');
xlabel('Time (days)');
ylabel('Stock Price (dollars)');

detrend を適用して、sdata に対して線形近似を行い、トレンドを除去します。入力から出力を引くと、トレンド ラインが計算されます。

detrend_sdata = detrend(sdata);
trend = sdata - detrend_sdata;

トレンド除去済みのデータの平均を求めます。

mean(detrend_sdata)
ans =

   1.1425e-14

予想どおり、トレンドが除去されたデータの平均は、きわめて 0 に近くなります。

トレンド ライン、トレンド除去済みのデータ、そして平均値をグラフに追加することで結果を表示します。

hold on
plot(t,trend,':r')
plot(t,detrend_sdata,'m')
plot(t,zeros(size(t)),':k')
legend('Original Data','Trend','Detrended Data',...
       'Mean of Detrended Data','Location','northwest')
xlabel('Time (days)');
ylabel('Stock Price (dollars)');

参考

| | |

この情報は役に立ちましたか?