最初に私はこのような行列を持っています:
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 のパーセンタイル値 (関係ないことはわかっていますが、単なる例です)
最後の質問が理解できなかったらごめんなさい