0

私のmatlabコードに何か問題があるかどうか、誰でも見ることができますか? 私の目的は、この式を複製することです。ここに画像の説明を入力

q は値 1、2、3、および 5 を取ることができます。各要素が各時間 (t) での log(1+return) の累積合計であるベクトル Xt を構築しました - 株式リターンの場合 - 最初の要素は log(1 に正規化されます)。

次に、q の 4 つの値に対して各要素 Sq(T,delta t) を計算するには、これが私の matlab コードです。

for j=1:length(dt);
E=Xt(1:dt(j):end);
EE=diff(E(2:end));
EEE=diff(E(1:end-1));
Sqone(j)=sum(abs(EE-EEE).^1);
Sqtwo(j)=sum(abs(EE-EEE).^2);
Sqthree(j)=sum(abs(EE-EEE).^3);
Sqfive(j)=sum(abs(EE-EEE).^5); end;

上記のコードに何か問題がありますか?期待した結果が得られないため、何か問題があることを知っているので、これを尋ねています。上記のコードが原因であると確信しています。

ベクトル dt は、Xt のサイズに応じて、1 から大きな数までのベクトルです。しかし、私のベクトル dt は問題ではありません。

お世話になりました!

4

1 に答える 1

2

あなたは差額を2回取っています。一度使っdiffて一度使うEE-EEE。正しいコードは次のとおりです。

for j=1:length(dt);
E=Xt(1:dt(j):end);
EE=abs(diff(E));
Sqone(j)=sum(EE.^1);
Sqtwo(j)=sum(EE.^2);
Sqthree(j)=sum(EE.^3);
Sqfive(j)=sum(EE.^5); end;
于 2012-06-05T11:10:28.777 に答える