发布时间:2023-08-08 15:30
今天这一期的内容主要是如何在R中进行数据之间的相关性分析,其实这一部分的内容和独立性检验的有点类似,大家可以对比着学习!
在这里,我想和大家简单介绍一下如何度量列联表里分类变量之间的相关性。我们可以使用“vcd”包里的assocstats(x) 函数,这里x是一个列联表,示例如下:
A <- c(rep("male",15),rep("female",20),rep("male",15))# 创建变量A
B <- c(rep("healthy",4),rep("sick",35),rep("healthy",11)) # 创建变量B
C <- c(rep("smoker",26), rep("nonsmoker",24)) # 创建变量C
mydata <- data.frame(A,B,C) # 利用以创建的变量构建数据框
library(vcd) #加载R包
mytable <- xtabs(~C+B+A, data=mydata) #生成列联表
assocstats(mytable) #计算关联度
从结果中可以看到,男性中的吸烟和患病有一定相关性(Phi-Coefficient=0.467 > 0.3,P值小于0.05)。由于数据的问题,女性没有计算出结果来,因为表格里有数据是0。
在R中你可以使用基础函数cor()来计算相关系数,用cov()函数来计算协方差。
其简单使用如下:
cor(x, use=, method= ),这里x是矩阵或者数据框,参数use=是用来指定缺失值的处理方法,而method=则是用来指定计算方法,默认的是计算Pearson相关系数。
# 计算mtcars数据集里变量之间的相关系数,删除缺失值
cor(mtcars, use="complete.obs", method="kendall") #计算kendall相关系数
cov(mtcars, use="complete.obs") #计算协方差
不过,cor()和cov()不能进行显著性检验,虽然可以用corr.test()去进行单次的显著性检验,但这略显麻烦。
这里我想大家推荐使用”psych”包的corr.test()函数,它不仅给出相关系数,也给出各个相关系数的p值,使用很方便。
library(psych) #加载R包
corr.test(mtcars) #计算相关系数及其显著性
#另外我们也可以绘制相关系数图
data <- corr.test(mtcars)
r <- data$r
p <- data$p
corPlot(r,pval=p,numbers=TRUE,diag=FALSE,stars=TRUE)
上面这幅图很好地展示了各个变量之间的相关系数及显著性,数字部分代表相关系数,星号代表显著性,星号越多表明越显著。
好了,今天的内容就分享到这里,最后提醒一下大家,“psych”包真的很强大,大家学有余力的时候一定要好好掌握它!