0

過去 10 日間の標準偏差と過去 10 日間の単純移動平均に基づいて、横断的な時系列データの現在のポイントの Z スコアを計算したいと考えています。Zスコアの計算を楽しみにしているため、MatlabでZスコア関数を使用できません。現在、私の解決策は

for i=11:length(equity.(1))

 z(i) = (x(i)-mean(x(i-10:i))/std(x(i-10:i);

end

しかし問題は、データセット全体に対して一度にこれを行いたいということです。マトリックス全体を一度に処理し、特定のルックバック期間 (私の場合は 10 日) の z スコアを計算する方法はありますか?

4

1 に答える 1

3

これが実際に効率的かどうかはわかりませんが、1 つの方法 (im2col には画像処理ツールボックスが必要です):

data = 1:40; %dummy data
% presuming "ten days" means day of interest + 9 days back
n = 10;
data2 = im2col(data,[1,n],'sliding');

%mean/std for each column:
dmean = mean(data2);
dstd = std(data2); 

z = (data(n:end)-dmean)./dstd;

ファイル交換からこれを試すこともできます。

于 2013-08-09T12:53:15.923 に答える