1

最初に私はこのような行列を持っています:

x <- matrix(rnorm(1e3),260)

そして配列

lst <- lapply(seq(1,length(x[,1]), by=52), function(i) x[i:(i+51),])
Data_array <- array(unlist(lst), dim=c(52,length(x[1,]),(length(x[,1])/52)))

この配列は、52 (週) ごとのデータフレームのシーケンスです。時系列分析です(週次)

この配列で ecdf 関数を計算したいと思います。

, , 1

             [,1]        [,2]        [,3]
 [1,]  **0.66319631**  0.01004290  0.02133477
 [2,] -1.64273648  0.23105503  1.02862145
 [3,]  1.17083363 -0.49700717 -0.01119745

, , 2

             [,1]        [,2]         [,3]
 [1,] **-0.79365987**  1.28394049 -0.547763434
 [2,] -0.09221301  1.07676841  0.570294731
 [3,]  0.20293308  1.00182888  0.247373981

, , 3

             [,1]         [,2]        [,3]
 [1,]  **1.03862172** -0.961678683  1.25334651
 [2,]  0.58476540  0.745250484 -0.06183788
 [3,]  0.24057690  1.226575038  0.23363005

各セルの ecdf 関数を計算します。これは、毎週の季節分析用です。

つまり、この時系列の分位数を計算します (**): 0.66319631;-0.79365987;1.03862172

MEANの場合は機能します:

array_lag_sum<-apply(Data_array,c(1,2),FUN=function(x){mean(x,na.rm=TRUE)})

私はecdfで同様の機能を試しましたが、うまくいきません。

percent_array<-apply(Data_array,c(1,2),FUN=function(u){ecdf(u)(u)})

それから...それは終わりではありません。この配列をデータデータフレーム(x)の元の形式のように再フォーマットしたいと思います。(rbind に似ていますが、配列上にあります。)

手伝ってくれてどうもありがとう。

編集 :

申し訳ありませんが、私がそれほど明確だったかどうかはわかりません。配列が私にとって複雑であることは確かです。

しかし、あなたの方法では、この単純なデータフレームがある場合:

B <- matrix(seq(1,20), 20, 3)

    > B
          [,1] [,2] [,3]
     [1,]    1    1    1
     [2,]    2    2    2
     [3,]    3    3    3
     [4,]    4    4    4
     [5,]    5    5    5
     [6,]    6    6    6
     [7,]    7    7    7
     [8,]    8    8    8
     [9,]    9    9    9
    [10,]   10   10   10
    [11,]   11   11   11
    [12,]   12   12   12
    [13,]   13   13   13
    [14,]   14   14   14
    [15,]   15   15   15
    [16,]   16   16   16
    [17,]   17   17   17
    [18,]   18   18   18
    [19,]   19   19   19
    [20,]   20   20   20

あなたの関数は次を与えます:

    Data_array <- array( B, dim=c(10,3,5))

, , 1

      [,1] [,2] [,3]
 [1,]    1   11    1
 [2,]    2   12    2
 [3,]    3   13    3
 [4,]    4   14    4
 [5,]    5   15    5
 [6,]    6   16    6
 [7,]    7   17    7
 [8,]    8   18    8
 [9,]    9   19    9
[10,]   10   20   10

, , 2

      [,1] [,2] [,3]
 [1,]   11    1   11
 [2,]   12    2   12
 [3,]   13    3   13
 [4,]   14    4   14
 [5,]   15    5   15
 [6,]   16    6   16
 [7,]   17    7   17
 [8,]   18    8   18
 [9,]   19    9   19
[10,]   20   10   20

または私はこのようなもっと何かをしたい:

,,1

      [,1] [,2] [,3]
 [1,]    1    1    1
 [2,]    2    2    2
 [3,]    3    3    3
 [4,]    4    4    4
 [5,]    5    5    5
 [6,]    6    6    6
 [7,]    7    7    7
 [8,]    8    8    8
 [9,]    9    9    9
[10,]   10   10   10

,,2
      [,1] [,2] [,3]
 [1,]   11   11   11
 [2,]   12   12   12
 [3,]   13   13   13
 [4,]   14   14   14
 [5,]   15   15   15
 [6,]   16   16   16
 [7,]   17   17   17
 [8,]   18   18   18
 [9,]   19   19   19
[10,]   20   20   20

時系列のパーセンタイル値であるテーブルを結果として取得します。各列と各行の 1 と 11、2 と 12 のパーセンタイル値 (関係ないことはわかっていますが、単なる例です)

最後の質問が理解できなかったらごめんなさい

4

1 に答える 1