我想使用rollapply或rollapplyr將modwt函數應用於我的時間序列數據。使用rollapply輸出到列表清單
我很熟悉rollapply/r是如何工作的,但我需要一些幫助來設置輸出,以便在使用rollapply時能夠正確存儲我的結果。
波浪邊緣包中的modwt函數需要一個時間序列並將其分解爲J個等級,對於我的特殊問題J = 4,這意味着我將從我的單個時間序列中存儲4個系列集合,存儲在5個列表中。在這個列表中,我只關心d1,d2,d3 & d4。
的MODWT函數的輸出如下所示
> str(ar1.modwt)
List of 5
$ d1: num [1:200] -0.223 -0.12 0.438 -0.275 0.21 ...
$ d2: num [1:200] 0.1848 -0.4699 -1.183 -0.9698 -0.0937 ...
$ d3: num [1:200] 0.5912 0.6997 0.5416 0.0742 -0.4989 ...
$ d4: num [1:200] 1.78 1.86 1.85 1.78 1.65 ...
$ s4: num [1:200] 4.64 4.42 4.19 3.94 3.71 ...
- attr(*, "class")= chr "modwt"
- attr(*, "wavelet")= chr "la8"
- attr(*, "boundary")= chr "periodic"
在上面的例子我已經應用了MODWT功能全長時間序列長度200,但我希望將它應用到一個小軋製窗口30使用rollapply。
我已經嘗試以下但輸出是一個大的矩陣,我無法容易地識別哪個值屬於D1,D2,D3或D4
roller <- rollapplyr(ar1, 30,FUN=modwt,wf="la8",n.levels=4,boundary="periodic")
的這個輸出是與所述大矩陣結構如下:
> str(roller)
List of 855
$ : num [1:30] 0.117 -0.138 0.199 -1.267 1.872 ...
$ : num [1:30] -0.171 0.453 -0.504 -0.189 0.849 ...
$ : num [1:30] 0.438 -0.3868 0.1618 -0.0973 -0.0247 ...
$ : num [1:30] -0.418 0.407 0.639 -2.013 1.349 ...
...很多省略的行...
$ : num [1:30] 0.307 -0.658 -0.105 1.128 -0.978 ...
[list output truncated]
- attr(*, "dim")= int [1:2] 171 5
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:5] "d1" "d2" "d3" "d4" ...
^h ow我可以設置一個變量,以便爲每個標度d1,d2,d3和d4存儲帶有列表的(200-30)+1列表嗎?
對於重複的例子,請使用以下:
library(waveslim)
data(ar1)
ar1.modwt <- modwt(ar1, "la8", 4)
你介意如果我在一個基於這個答案的新問題中引用這個問題嗎?我對此深有體會,唯一能達到我需要的地方就是將問題分解成更易於管理的部分。 – TheGoat
一個問題引用另一個問題是相當正常的,因爲這肯定會很好。 –
感謝您對這個問題的幫助,我希望自己像R一樣熟練。我創建了另一個問題[在這裏](https://stackoverflow.com/questions/45673142/wavelet-correlation-using-rolling-window-in-r),我真的需要一些幫助,所以我打算把300指出一個賞金。我不知道你是否看過它,但如果你能,我會非常感激。賞金在23小時內開始。 – TheGoat