簡體   English   中英

R:多列(變量)上的多行(對象)之間的相關矩陣

[英]R: Correlation matrix between multiple rows (objects) over multiple columns (variables)

我正在處理多列(變量)上的多行(對象)的數據框。 我想看看是否有任何行(對象)相關。 我一直在閱讀 corr() 並且似乎對於一個變量,我可以轉置我的數據幀並將其輸入到 corr() 函數中。 但是我如何處理每個觀察/對象的多個變量? 最終目標是在熱圖上繪制相關矩陣以吸引有趣的對象。

示例如下:

Treatment <- c('Drug A','Drug B','Drug C','Drug D','Drug E','Drug F')
Measurment_V1 <- runif(6, 0, 3000)
Measurment_V2 <- runif(6, 0, 20)
Measurment_V3 <- runif(6, 0, 1)
Measurment_V4 <- runif(6, 0, 120000)
Measurment_V5 <- runif(6, 0, 100)

df<- as.data.frame(cbind(Treatment,Measurment_V1,Measurment_V2,Measurment_V3,Measurment_V4,Measurment_V5))

每種葯物都由測量值 V1-V5 解釋(實際上有數百列)那么如何獲得所有葯物 ABCD 之間的相關矩陣,然后像 Hmisc 庫那樣在熱圖上繪制它們的相關性?

這可能會做到:

# Redo your data frame
df <- data.frame(Treatment,Measurment_V1,Measurment_V2,Measurment_V3,Measurment_V4,Measurment_V5)

# Transpose numeric columns
dft <- as.data.frame(t(df[,2:6]))

# Rename vars
names(dft) <- c("Drug_A","Drug_B","Drug_C","Drug_D","Drug_E","Drug_F")

# Correlation matrix
cor(dft)


Output:
          Drug_A    Drug_B    Drug_C    Drug_D    Drug_E    Drug_F
Drug_A 1.0000000 0.9995697 0.9999240 0.9999939 0.9998902 0.9999665
Drug_B 0.9995697 1.0000000 0.9998554 0.9994612 0.9998946 0.9997758
Drug_C 0.9999240 0.9998554 1.0000000 0.9998748 0.9999969 0.9999911
Drug_D 0.9999939 0.9994612 0.9998748 1.0000000 0.9998324 0.9999320
Drug_E 0.9998902 0.9998946 0.9999969 0.9998324 1.0000000 0.9999777
Drug_F 0.9999665 0.9997758 0.9999911 0.9999320 0.9999777 1.0000000

然后,您可以使用上述相關矩陣來繪制熱圖。

請注意,我使用data.frame()重做您的數據框,因為它生成數字列。

我認為您實際上是在以錯誤的方式看待這個問題。 您應該將葯物視為變量並調查測量值的相關結構。

即感興趣的相關矩陣是

cor(cbind(Measurment_V1, Measurment_V2, Measurment_V3, Measurment_V4, Measurment_V5))

一種方法是對測量結果進行 PCA,以便您可以將葯物放置在標准化空間中。

然后,您可以在該空間中尋找葯物的聚類,以查看哪些葯物彼此相似。 請注意,在測量的原始空間中進行聚類要困難得多,因為它們的尺度非常不同 - 您必須以某種方式對它們進行標准化,這就是 PCA 可以做的。 它還降低了測量空間的維度,這將幫助您可視化正在發生的事情。

暫無
暫無

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

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