[英]R Cross-correlation via multiple columns
我有一個這樣的數據表:
> head(my_data)
V1 V2 V3 V4 V5
1 36045 49933 41622 29491 34393
2 36874 44752 44158 40561 36045
3 45008 51964 58015 32733 29491
4 44830 72017 60434 40347 40561
5 48553 65470 49933 38842 32733
6 52028 64955 44752 41622 40347
我已經學會了如何通過多列找到相關性:
> head(cor(my_data)[,])
V1 V2 V3 V4 V5
V1 1.0000000 0.4621777 0.7985130 0.9490929 0.9045297
V2 0.4621777 1.0000000 0.8041824 0.4201712 0.1583757
V3 0.7985130 0.8041824 1.0000000 0.7466672 0.5889458
V4 0.9490929 0.4201712 0.7466672 1.0000000 0.8672321
V5 0.9045297 0.1583757 0.5889458 0.8672321 1.0000000
我已經嘗試了很多,但是無法達到我的目標,即在每對中找到與ccf功能互相關的最大絕對值。 非常感謝您的所有答案!
mat
# V1 V2 V3 V4 V5
# [1,] 36045 49933 41622 29491 34393
# [2,] 36874 44752 44158 40561 36045
# [3,] 45008 51964 58015 32733 29491
# [4,] 44830 72017 60434 40347 40561
# [5,] 48553 65470 49933 38842 32733
# [6,] 52028 64955 44752 41622 40347
class(mat)
# [1] "matrix"
combins <- combn(colnames(mat), 2)
a1 <- apply(combins, 2,
FUN = function(x){ccf(mat[, x[1]], mat[, x[2]])})
abs_max_ccf <- unlist(lapply(a1, function(x) abs(max(x$acf))))
names(abs_max_ccf) <- apply(combins, 2, function(x) paste0(x[1], x[2], collapse = ''))
abs_max_ccf
# V1V2 V1V3 V1V4 V1V5 V2V3 V2V4 V2V5 V3V4 V3V5 V4V5
# 0.7460529 0.4450512 0.5167570 0.4672099 0.8028452 0.4944933 0.5220862 0.4076768 0.2884272 0.8494897
驗證結果:從mat
: V1
和V2
提取兩列,並執行絕對最大值ccf。
abs(max(ccf(mat[, "V1"], mat[, "V2"])$acf))
# [1] 0.7460529
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.