ドキュメンテーション センター

  • 評価版
  • 製品アップデート

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

データのトレンド除去

はじめに

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

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

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

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

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

この例の手順に従って、時変データのトレンドを除去する方法を理解してください。

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

    t = 0:300;
    dailyFluct = gallery('normaldata',size(t),2); 
    sdata = cumsum(dailyFluct) + 20 + t/100;
    mean(sdata)
    
    ans =
       39.4851
  2. データをプロットしてラベルを付けます。このデータが示す株価の体系的な増加に注意してください。

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

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

    detrend_sdata=detrend(sdata);
    trend = sdata - detrend_sdata;
    % As expected, the detrended data has a mean very close to 0.
    mean(detrend_sdata)
    
    ans =
      3.1420e-014
  4. トレンド ライン、トレンド除去済みのデータ、そして平均値をグラフに追加することで結果を表示します。

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

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