博主在使用SPSS统计软件做pearson相关性分析的时候,发现用热图可视化可能效果会更好,于是,博主就去度娘了,然后用R代码绘制,但是发现做显著性的时候(P值检验),p值计算出来竟然不一样,惊呆了!! >_< 然后使劲度娘也没有找到原因,如果小可爱们找到原因一点要@以下我。感谢[/双手合十],下面就回到正题上。
以上就是找到的方法,最后博主还是使用基础包中的方式绘制了相关性热图,代码在后面附上。以上几种方法请看别的博主的链接:
>>>1、2、3讲解<<<
>>>4讲解<<<
cor.mtest()
来看显著性检验的,但是结果和SPSS
或者base::cor.test()
结果相差甚远呐。。。。#读取数据
data_read <- read.csv("C:/Users/zang/Desktop/Time-series/2013_成渝地区_01.csv",header = T)
#计算相关系数并保留小数位数
mycor <- cor(data_read,method = 'pearson')
mycor <- round(mycor,3)
#计算p值
cor.mtest1 <- function(mat, ...) {
mat <- as.matrix(mat)
n <- ncol(mat)
p.mat<- matrix(NA, n, n)
diag(p.mat) <- 0
for (i in 1:(n - 1)) {
for (j in (i + 1):n) {
tmp <- cor.test(mat[, i], mat[, j], ...)
p.mat[i, j] <- p.mat[j, i] <- tmp$p.value
}
}
colnames(p.mat) <- rownames(p.mat) <- colnames(mat)
p.mat
}
matrix_p=cor.mtest1(data_read)
corrplot(mycor, # 数据
type = 'upper', #type修改类型 默认full,下三角lower,上三角upper
#p.mat = matrix_p,sig.level = 0.05,insig = 'blank' #不显著的框为白色
#p.mat = matrix_p,sig.level = 0.05,insig = 'p-value', #不显著的显示p值
#p.mat = matrix_p,sig.level = -1, order="hclust",insig = 'p-value', #sig.level =-1 显示所有p值 是按照分层聚类的结果排序
p.mat = matrix_p, sig.level = c(.001, .01, .05),outline="white",insig = "label_sig" , #添加显著性星标* insig为"label_sig",可用于显示不同显著水平的星标;
#na.label = "NA" #缺失值的展示,默认是用?
)
完整代码如下:
library(corrplot)
library(readr)
#读取数据
#data_read <- read.csv("G:/皮尔逊相关系数/年均值-2013/result/相关热图-矩阵图/8套模拟数据+站点插值数据_珠三角.csv",header = T)
data_read <- read.csv("C:/Users/zang/Desktop/Time-series/2013_成渝地区_01.csv",header = T)
#计算相关系数
mycor <- cor(data_read,method = 'pearson')
mycor
#保留小数点
mycor <- round(mycor,3)
######### base::cor.test() 计算p值 此方法跟spss计算的结果一致#############
cor.mtest1 <- function(mat, ...) {
mat <- as.matrix(mat)
n <- ncol(mat)
p.mat<- matrix(NA, n, n)
diag(p.mat) <- 0
for (i in 1:(n - 1)) {
for (j in (i + 1):n) {
tmp <- cor.test(mat[, i], mat[, j], ...)
p.mat[i, j] <- p.mat[j, i] <- tmp$p.value
}
}
colnames(p.mat) <- rownames(p.mat) <- colnames(mat)
p.mat
}
matrix_p=cor.mtest1(data_read)
matrix_p
###########################################################
##################绘制相关系数热图、矩阵图##############################
corrplot(mycor, # 数据
type = 'upper', #type修改类型 默认full,下三角lower,上三角upper
#p.mat = matrix_p,sig.level = 0.05,insig = 'blank' #不显著的框为白色
#p.mat = matrix_p,sig.level = 0.05,insig = 'p-value', #不显著的显示p值
#p.mat = matrix_p,sig.level = -1, order="hclust",insig = 'p-value', #sig.level =-1 显示所有p值 是按照分层聚类的结果排序
p.mat = matrix_p, sig.level = c(.001, .01, .05),outline="white",insig = "label_sig" , #添加显著性星标* insig为"label_sig",可用于显示不同显著水平的星标;
#na.label = "NA" #缺失值的展示,默认是用?
)
注: 以上就是本次绘制相关性热图的一些避坑小技巧,至于上面所说的cor.mtest()如何解决暂时没有找到办法,找到的小可爱们留个言呗,[双手合十]。