检索共变变量集
Retrieving sets of covarying variables
我有一个数据框,其中包含大量变量,这些变量表示为随时间变化的列,作为它们的索引。我想检索一组高度共变的变量。
data <- data.frame(time_series=c(1,2,3),
score1=c(0.5, 0.4, 0.6),
score2=c(0.3, 0.2, 0.1),
score3=c(0.1, 0.4, 0.5),
score4=c(0.5, 0.2, 0.4),
score5=c(0.1, 0.1, 0.2))
应该给出相同结果的两个函数是,
library(stats)
#autocorrelation function with lag 0 over a data frame
acf_results <- acf(data[2:length(names(data))], plot = FALSE, lag.max = 0)
#simple Pearson correlation function.
cor_results <- cor(data[2:length(names(data))], method = "pearson")
可以使用简单的 (X_results > 0.6)
过滤结果,但这似乎会丢失变量的名称。
我正在尝试从大型数据框中提取协变到阈值的变量集。我希望我缺少一些简单的内置函数。关于如何做到这一点有什么建议吗?
编辑:我意识到 Spearman 绝对是一个错误的函数,因为它也会对值进行排名,而不仅仅是时间范围。
您可以这样做:
cor_results <- cor(data[2:length(names(data))], method = "spearman")
x <- which(cor_results > 0.6, arr.ind=TRUE)
x
# row col
# score1 1 1
# score5 5 1
# score2 2 2
# score3 3 3
# score5 5 3
# score4 4 4
# score1 1 5
# score3 3 5
# score5 5 5
获取满足您要求的单元格索引矩阵。为了使它更具可读性,您可能需要
x[] <- colnames(cor_results)[x]
rownames(x) <- NULL
x
row col
# [1,] "score1" "score1"
# [2,] "score5" "score1"
# [3,] "score2" "score2"
# [4,] "score3" "score3"
# [5,] "score5" "score3"
# [6,] "score4" "score4"
# [7,] "score1" "score5"
# [8,] "score3" "score5"
# [9,] "score5" "score5"
我有一个数据框,其中包含大量变量,这些变量表示为随时间变化的列,作为它们的索引。我想检索一组高度共变的变量。
data <- data.frame(time_series=c(1,2,3),
score1=c(0.5, 0.4, 0.6),
score2=c(0.3, 0.2, 0.1),
score3=c(0.1, 0.4, 0.5),
score4=c(0.5, 0.2, 0.4),
score5=c(0.1, 0.1, 0.2))
应该给出相同结果的两个函数是,
library(stats)
#autocorrelation function with lag 0 over a data frame
acf_results <- acf(data[2:length(names(data))], plot = FALSE, lag.max = 0)
#simple Pearson correlation function.
cor_results <- cor(data[2:length(names(data))], method = "pearson")
可以使用简单的 (X_results > 0.6)
过滤结果,但这似乎会丢失变量的名称。
我正在尝试从大型数据框中提取协变到阈值的变量集。我希望我缺少一些简单的内置函数。关于如何做到这一点有什么建议吗?
编辑:我意识到 Spearman 绝对是一个错误的函数,因为它也会对值进行排名,而不仅仅是时间范围。
您可以这样做:
cor_results <- cor(data[2:length(names(data))], method = "spearman")
x <- which(cor_results > 0.6, arr.ind=TRUE)
x
# row col
# score1 1 1
# score5 5 1
# score2 2 2
# score3 3 3
# score5 5 3
# score4 4 4
# score1 1 5
# score3 3 5
# score5 5 5
获取满足您要求的单元格索引矩阵。为了使它更具可读性,您可能需要
x[] <- colnames(cor_results)[x]
rownames(x) <- NULL
x
row col
# [1,] "score1" "score1"
# [2,] "score5" "score1"
# [3,] "score2" "score2"
# [4,] "score3" "score3"
# [5,] "score5" "score3"
# [6,] "score4" "score4"
# [7,] "score1" "score5"
# [8,] "score3" "score5"
# [9,] "score5" "score5"