我有一個大的相關矩陣(類似於50 * 50)。 我使用cor(mydata)函數計算了矩陣。 現在我想擁有同等重要性的矩陣。 使用cor.test()我可以有一個顯着性水平,但有一個簡單的方法來獲得所有1200?R相關顯着性矩陣
Q
R相關顯着性矩陣
0
A
回答
0
我想這應該做你想要什麼,我們結合使用expand.grid
與apply
功能:
既然你沒有提供數據,我創造了我自己的一套。
set.seed(123)
xmat <- matrix(rnorm(50), ncol = 5)
matrix(apply(expand.grid(1:ncol(xmat), 1:ncol(xmat)),
1,
function(x) cor.test(xmat[,x[1]], xmat[,x[2]])$`p.value`),
ncol = ncol(xmat), byrow = T)
[,1] [,2] [,3] [,4] [,5]
[1,] 0.00000000 0.08034470 0.24441138 3.293644e-02 0.3234899
[2,] 0.08034470 0.00000000 0.08716815 4.482848e-01 0.4824117
[3,] 0.24441138 0.08716815 0.00000000 2.063439e-01 0.9504582
[4,] 0.03293644 0.44828479 0.20634394 1.063504e-62 0.8378530
[5,] 0.32348990 0.48241166 0.95045815 8.378530e-01 0.0000000
請注意,如果你不想一matrix
,而是很舒適與data.frame
,我們可以使用combn
這將涉及更少的迭代和更有效率。
cbind(t(combn(1:ncol(xmat), 2)),
combn(1:ncol(xmat), 2, function(x) cor.test(xmat[,x[1]], xmat[,x[2]])$`p.value`)
)
[,1] [,2] [,3]
[1,] 1 2 0.08034470
[2,] 1 3 0.24441138
[3,] 1 4 0.03293644
[4,] 1 5 0.32348990
[5,] 2 3 0.08716815
[6,] 2 4 0.44828479
[7,] 2 5 0.48241166
[8,] 3 4 0.20634394
[9,] 3 5 0.95045815
[10,] 4 5 0.83785303
或者,我們可以執行相同的操作,但使用管道運營商%>%
,使之更有點簡潔:
library(magrittr)
combn(1:ncol(xmat), 2) %>%
apply(., 2, function(x) cor.test(xmat[,x[1]], xmat[,x[2]])$`p.value`) %>%
cbind(t(combn(1:ncol(xmat), 2)), .)
0
這裏是一個解決方案:
data <- swiss
#cor(data)
n <- ncol(data)
p.value.vec <- apply(combn(1:ncol(data), 2), 2, function(x)cor.test(data[,x[1]], data[,x[2]])$p.value)
p.value.matrix = matrix(0, n, n)
p.value.matrix[upper.tri(p.value.matrix, diag=FALSE)] = p.value.vec
p.value.matrix[lower.tri(p.value.matrix, diag=FALSE)] = p.value.vec
p.value.matrix
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 0.000000e+00 1.491720e-02 9.450437e-07 1.028523e-03 1.304590e-06 2.588308e-05
[2,] 1.491720e-02 0.000000e+00 3.658617e-07 3.585238e-03 5.204434e-03 4.453814e-01
[3,] 9.450437e-07 9.951515e-08 0.000000e+00 9.951515e-08 6.844724e-01 3.018078e-01
[4,] 3.658617e-07 1.304590e-06 4.811397e-08 0.000000e+00 4.811397e-08 5.065456e-01
[5,] 1.028523e-03 5.204434e-03 2.588308e-05 3.018078e-01 0.000000e+00 2.380297e-01
[6,] 3.585238e-03 6.844724e-01 4.453814e-01 5.065456e-01 2.380297e-01 0.000000e+00
相關問題
- 1. r corplot with clustering:相關矩陣的默認相異性度量
- 2. 對於R中對相關矩陣環
- 3. 計算矩陣的相關性
- 4. Scatterplot矩陣 - 屬性(R)
- 5. 矩陣*向量與向量*矩陣相比意味着什麼
- 6. R,比較兩個2x2矩陣/表之間差異的顯着性
- 7. Python的 - 從相關矩陣
- 8. 索引相關矩陣
- 9. 矩陣的相關係數
- 10. R:在矩陣
- 11. 矩陣與R中的向量相乘
- 12. SAS相當於R矢量到矩陣
- 13. R字符串相似度矩陣
- 14. R中的相關矩陣的繪圖如Excel中的示例
- 15. 將相關矩陣轉換爲R中的Pajek輸入文件
- 16. 加速R中的相關矩陣計算
- 17. 一到以矩陣許多相關計算中的R
- 18. 在R中,找到每個子測試的相關矩陣
- 19. 從有序相關矩陣中提取的順序列表,R
- 20. R:如何兩個相關組合矩陣使用GGPLOT2
- 21. 相關矩陣:提取具有高R值的變量
- 22. R中的成對矩陣相關 - 如何遍歷所有對?
- 23. 繪製相關矩陣R中無變換的數據幀
- 24. 相關矩陣離散連續變量R
- 25. 創建整數的相似性矩陣,,使用R
- 26. 關於R中的矩陣比較
- 27. R矩陣包:Demean稀疏矩陣
- 28. 矩陣R中計算矩陣
- 29. R:矩陣的對矩陣3D圖
- 30. 在矩陣中存儲矩陣R
'肺心病.test'在配對示例'x'和'y'上工作,就像你從閱讀文檔'?cor.test'看到的那樣。如果你想爲'x1,...,x50'的所有組合做更多的事情,那麼你需要在它們之間迭代......是的,這很容易實現。 –