2

初めての投稿ですので、間違っていたらすみません。

シミュレートされた概日データセットでスペクトル分析を実行しようとしています。データセットをたとえば 72 時間の重複するウィンドウに分割し、ウィンドウを一度に 1 時間ずつ移動してから、各ウィンドウで分析を実行しています。

データを簡単にウィンドウに分割し、スペクトルのリサンプリングによってウィンドウを MATLAB で分析してから、R にインポートしてフィットと予測を実行します。データは、分析前に直線的にトレンド除去されます。

私が抱えている問題は、フィット感が逆さまになることがあり、その理由がわかりません. シミュレーションごとに異なるポイントにあるようです。

ハーモニック フィットを反転させた 1 つのウィンドウのデータ:

[1]  -2.9136538   0.0010000  34.5624105  22.4405751  30.9085542  52.0034490  79.5249172 
119.5003560 131.3097901 161.3732205 151.1808213 151.3683942 137.2054086 129.6240755 
119.3947248 104.8470942 109.6584816  92.4747798  64.1060229  47.8765937  38.5499292
27.9335235  29.4226107  27.2898893  19.2395761   6.7445437   5.5157589   0.6936448
8.1536902   2.7837173  18.8406092  38.0873956  34.7811886  34.8339832  77.8551701
96.4206791  59.8705545  69.8435641  84.0060386  86.8470648  75.5799761  95.7528280
104.4698246 109.9925047 111.0268326 114.4968343  92.4072921  82.8064504  87.8407758
82.2552400  58.5038630  45.4751850  44.4046889  42.6263098  34.6088522  36.9155973
32.8585151  19.1018107   7.7472503  13.6565334   9.6832063   2.3193501   8.2114646
8.9220096  15.9007696  24.4889114  38.9416853  44.6872649  66.7847050  88.5166601
123.3687771 135.0492302

この特定のウィンドウの重要な頻度は次のとおりです。

Period    Amplitude   Phase
32.508896 52.346609  0.840978
11.882840 17.036845  0.733279
8.650918  6.771955 -0.573897
3.600676  8.561309  0.863454
6.661385  7.278945 -0.823185

これで、ピックアップされる周波数の数がウィンドウによって異なります。これは、各ウィンドウの余弦曲線と予測の合計を生成し、各列がそのウィンドウに適合するマトリックスに配置するために作成したコードです。

no.freq72_3 <- tabulate(freq72_3$Window)
cusum72_3 <- cumsum(no.freq72_3)    

length <- 28
forecast72_3 <- matrix(NA, nrow=(dim(window72_3)[1])+length,     
ncol=length(no.freq72_3))

for(i in 2:length(no.freq72_3)){
tt72_3 <- matrix(NA, nrow=(dim(window72_3)[1])+length, ncol=no.freq72_3[i])
t72_3 <- c()
a72_3 <- c()
ph72_3 <- c()

for(j in 1:no.freq72_3[i]){
t72_3[j]  <- freq72_3[j+cusum72_3[i-1],2]
a72_3[j]  <- freq72_3[j+cusum72_3[i-1],3]
ph72_3[j] <- freq72_3[j+cusum72_3[i-1],4]
}

for(j in 1:no.freq72_3[i]){
for(l in 1:((dim(window72_3)[1])+length)){
tt72_3[l,j] <- a72_3[j]*cos((2*pi*(1/t72_3[j])*l)+ph72_3[j])
}
}

forecast72_3[,i] <- rowSums(tt72_3, na.rm=TRUE)

}

さて、これはあなたが必要とするウィンドウをプロットするために私が書いた関数です:

fore_win72_3 <- function(x){
data <- window72_3[, x]
fore <- forecast72_3[, x]

trend <- time(data)

reg1 <- lm(data ~ trend, na.action=NULL)
detrend <- data - fitted(reg1)
plot(detrend, xlim=c(0, dim(forecast72_3)[1]))
lines(fore)
}

fore_win72_3(100)

プロットを追加しますが、十分な評判がありません。どんな助けでも大歓迎です!何か編集があれば、私に知らせるよりも簡単にすることができます! ありがとう。

4

0 に答える 0