0
데이터 프레임이 있는데 어떤 변수 그룹이 가장 높은 상관 관계를 공유하고 있는지 찾고 싶습니다. 예를 들어상관성이 높은 변수 그룹
mydata <- structure(list(V1 = c(1L, 2L, 5L, 4L, 366L, 65L, 43L, 456L, 876L, 78L, 687L, 378L, 378L, 34L, 53L, 43L),
V2 = c(2L, 2L, 5L, 4L, 366L, 65L, 43L, 456L, 876L, 78L, 687L, 378L, 378L, 34L, 53L, 41L),
V3 = c(10L, 20L, 10L, 20L, 10L, 20L, 1L, 0L, 1L, 2010L,20L, 10L, 10L, 10L, 10L, 10L),
V4 = c(2L, 10L, 31L, 2L, 2L, 5L, 2L, 5L, 1L, 52L, 1L, 2L, 52L, 6L, 2L, 1L),
V5 = c(4L, 10L, 31L, 2L, 2L, 5L, 2L, 5L, 1L, 52L, 1L, 2L, 52L, 6L, 2L, 3L)),
.Names = c("V1", "V2", "V3", "V4", "V5"),
class = "data.frame", row.names = c(NA,-16L))
I가 corelations을 계산하고, 각 쌍으로 임계치 위 corelations 갖는 찾을 수
:
가var.corelation <- cor(as.matrix(mydata), method="pearson")
fin.corr = as.data.frame(as.table(var.corelation))
combinations_1 = combn(colnames(var.corelation) , 2 , FUN = function(x) paste(x , collapse = "_"))
fin.corr = fin.corr[ fin.corr$Var1 != fin.corr$Var2 , ]
fin.corr = fin.corr [order(fin.corr$Freq, decreasing = TRUE) , ,drop = FALSE]
fin.corr = fin.corr[ paste(fin.corr$Var1 , fin.corr$Var2 , sep = "_") %in% combinations_1 , ]
fin.corr <- fin.corr[fin.corr$Freq > 0.62, ]
fin.corr <- fin.corr[order(fin.corr$Var1, fin.corr$Var2), ]
fin.corr
지금까지 출력은 : 여기
Var1 Var2 Freq
V1 V2 0.9999978
V3 V4 0.6212136
V3 V5 0.6220380
V4 V5 0.9992690
V1
및 V2
양식 그룹 중 하나 인 경우 V3
, V4
, V5
은 varia BLE는 상관 관계가 임계 값보다 높습니다. 이 두 변수 그룹을 목록으로 만들고 싶습니다. 예 :
list(c("V1", "V2"), c("V3", "V4", "V5"))
더 친숙한 프로세스를 기반으로 상관 관계에서 그룹을 추출 할 수 있다고 생각합니다. 내가 볼 수있는 두 가지 가능성 : 상관 행렬 클러스터링 (예 : 'hclust' (예 : http://research.stowers-institute.org/efg/R/Visualization/cor-cluster/) 확인) 두 번째 가능성 : 요인 분석 악용 요인). –
감사합니다. Eric! 나는 그 링크를 통해 질문을 올렸습니다. 상관 행렬을 dist 객체로 변환하는 단계'as.dist '를 놓치기 때문에 계층 적 클러스터링이 작동하지 않았습니다. 내 (잘못된) 가정은 그들은 동일했다. 코멘트와 답변을 주셔서 감사합니다. 나는 그것을 받아 들였다. – discipulus