簡體   English   中英

根據值和出現次數過濾相關矩陣

[英]filter a correlation matrix based on value and occurrence

有沒有人有辦法根據包含價值和廣度的排名來過濾相關矩陣(或相關列表)? 例如,如果某個變量與足夠多的其他變量具有足夠高的相關性,則保留它。 如果變量不符合這些條件,請將其過濾掉。

例如:如果在 > 3 個條目中發現相關性 > 0.25,請保留此變量。 如果不是,則丟棄該變量。

目前我能夠構建一個相關矩陣並根據值對其進行過濾,但無法超越這一點。 對於過濾,我將低於閾值的值設置為 0

correlation_matrix <- round(cor(data, method = "pearson", use = "pairwise.complete.obs"), digits = 4)
correlation_matrix[correlation_matrix < 0.13 & correlation_matrix > -0.13] <- 0

我現在已經使用上面提到的Rui 應用程序完成了這項工作。

這是選擇相關矩陣中包含至少 75 個(寬度)值超過 0.2(閾值)的所有行(和列)的代碼:

1) 定義變量; 設置從 1 到 0 的對角線值

threshold <- 0.2
breadth <- 75
correlation_matrix_filter <- correlation_matrix
diag(correlation_matrix_filter) <- 0

2) 計算每行有多少個值大於閾值 0.2

filter <- apply(correlation_matrix_filter,1, function(x) sum(abs(x) >= threshold))

3) 只選擇包含大於閾值的 75 個值的行; 將原始相關矩陣子集以僅包含這些行(和列)

sel <- filter >= breadth
correlation_matrix_final <- correlation_matrix[sel,sel]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM