このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
timetable データからの線形トレンドの除去
この例では、全体的な上昇周辺の価格変動を強調するために、timetable 内の毎日の株価終値から線形トレンドを除去する方法を説明します。データがトレンドをもたない場合、トレンドを除去することで平均値が強制的にゼロになり、全体的な変動が抑えられます。例では、関数 gallery
から得た分布を使用して、株価の変動をシミュレートします。
シミュレーションにより、毎日の株価を含む timetable を作成します。
t = 0:300;
D = days(t);
dailyFluct = randn(size(t));
price = cumsum(dailyFluct) + 20 + t/100;
tt = timetable(D',price',VariableNames="StockPrice");
毎日の株価の平均を求めます。
mean(tt.StockPrice)
ans = 28.2260
データをプロットしてラベルを付けます。株価が全体的に上昇していることがわかります。
plot(tt,"Time","StockPrice"); legend("Original Data","Location","northwest"); xlabel("Time (days)"); ylabel("Stock Price (dollars)");
detrend
を適用すると、株価に対する線形近似が実行され、トレンドが除去されて、トレンド除去後のデータが入力 timetable に追加されます。
tt = detrend(tt,ReplaceValues=false);
入力データからトレンド除去後のデータを差し引くことで、トレンド ラインを計算します。
trend = tt.StockPrice - tt.StockPrice_detrended;
tt = addvars(tt,trend,NewVariableNames="Trend")
tt=301×3 timetable
Time StockPrice StockPrice_detrended Trend
_______ __________ ____________________ ______
0 days 20.538 -14.588 35.126
1 day 22.382 -12.698 35.08
2 days 20.133 -14.901 35.034
3 days 21.005 -13.983 34.988
4 days 21.334 -13.608 34.942
5 days 20.036 -14.86 34.896
6 days 19.612 -15.238 34.85
7 days 19.965 -14.839 34.804
8 days 23.553 -11.204 34.758
9 days 26.333 -8.3791 34.712
10 days 24.993 -9.6729 34.666
11 days 28.038 -6.582 34.62
12 days 28.773 -5.8006 34.574
13 days 28.72 -5.8077 34.528
14 days 29.445 -5.0369 34.482
15 days 29.25 -5.1859 34.436
⋮
トレンド除去済みのデータの平均を求めます。
mean(tt.Trend)
ans = 28.2260
予想どおり、トレンドが除去されたデータの平均は、きわめて 0 に近くなります。
トレンド ライン、トレンド除去済みのデータ、そして平均値をグラフに追加することで結果を表示します。
plot(tt,"StockPrice") hold on plot(tt,"Trend") plot(tt,"StockPrice_detrended") plot(tt.Time,zeros(size(t))) legend("Original Data","Trend","Detrended Data",... "Mean of Detrended Data","Location","northwest") xlabel("Time (days)"); ylabel("Stock Price (dollars)");