R语言相关性分析函数2021.3.10

Python016

R语言相关性分析函数2021.3.10,第1张

相关性分析是指对两个或多个具备相关性的变量元素进行分析,从而衡量两个变量因素的相关密切程度。相关性的元素之间需要存在一定的联系或者概率才可以进行相关性分析。简单来说就是变量之间是否有关系。用正负号表示正相关还是负相关,数值(一般都在-1到1之间)表示相关程度的强弱。

相关性衡量指标包括Pearson相关系数、Spearman相关系数、Kendall相关系数、偏相关系数、多分格(polychoric)相关系数和多系列(polyserial )相关系数等,定义以及各自的优缺点自己查。

cor函数计算的是列与列间的相关系数,可以计算三种相关系数,包括Pearson相关系数、Spearman相关系数、Kendall相关系数,默认是Pearson相关系数,也可以使用method参数来指定另外两种相关系数。

结果是一个对角矩阵,自己和自己的相关系数(对角线值)均为1。

从结果可以看出,文盲率和犯罪率有很强的正相关关系,而收入和犯罪率呈负相关。

面对大数据时,可以只计算一组变量与另一组变量之间的关系,而不要将所有变量间都计算一次,cor函数也可以很好的实现。

cor函数只能计算三种算法,像相关系数、多分格(polychoric)相关系数和多系列(polyserial )相关系数等可以通过R软件的扩展包来实现。例如ggm包可以用pcor函数来实现偏相关系数计算,这个函数有两个参数,第一个参数是一个数值向量,前两个数值表示要计算相关系数的下标,其余的数值为条件变量的下标。第二个参数是cov函数计算出来的协方差结果。

cov函数计算的是列与列的协方差,可以衡量两个变量的总体误差。在计算偏相关的时候可以用到协方差的结果。默认是Pearson相关系数,也可以使用method参数来指定另外两种相关系数。

读《Discovering Statistics Using R》第六章 Correlation中的6.6节做的笔记。

有个心理学家对考试焦虑对考试成绩的影响比较感兴趣。她设计了一个量表评估考试焦虑程度。考试前用量表测量学生的焦虑程度(变量Anxiety),用成绩百分位数反映考试表现(变量Exam)。数据在这里: Exam Anxiety

Revise变量表示修改所花的小时数。我们主要想考察焦虑程度和考试成绩之间的关系。

先考察一下Exam Axiety Revise三个变量之间的关系:

由以上分析结果可以看出:考试成绩和焦虑程度负相关、考试成绩又和修改时间正相关;修改时间和焦虑程度负相关。仅三个变量间的互相之间的相关关系就已经比较复杂了。

从决定系数来看:考试焦虑可以“解释”考试成绩变异的19.4%,修改时间可以“解释”考试成绩变异的15.7%,修改时间可以“解释”考试焦虑变异的50.3%。

我们主要想考察焦虑程度和考试成绩之间的相关性。既然有大概一半(50.3%)焦虑程度的变异性可以由修改时间来“解释”,那么焦虑程度“解释”考试成绩变异性的那19.4%部分中应该也有一部分是由修改时间贡献的。

控制一个或多个其他定量变量的影响下,两个定量变量间的相关关系即为偏相关(partial correlation)。

书中图6.8图示说明了偏向关的原理。图6.8的图3中白蓝点的区域即为排除修改时间影响下,单独由焦虑程度可以"解释"考试成绩变异性的部分。书中并没有介绍偏相关系数的具体计算方法。

在R中,可以用 ggm 包的 pcor() 函数计算偏相关系数。

pcor() 的一般用法:

pcor(c("var1", "var2", "control1", "control2" ...), var(dataframe))

在控制修改时间影响后,考试焦虑和考试成绩之间的偏相关系数为-0.247,对应的决定系数 为0.06.

可以用 ggm 包的 pcor.test() 对 pcor() 生成的偏相关系数进行假设检验。其一般用法为:

pcor.test(pcor object, 控制的变量数,样本量)

结果中的 tval 即为t检验统计量, df 为t检验的自由度, pvalue 即为双侧检验下的P值。

可以看到焦虑程度和考试成绩之间扣除修改时间影响后的偏相关系数绝对值比未扣除修改时间影响时的相关系数绝对值要小不少,但依然有统计学意义。通过偏相关分析,我们得到了焦虑程度和考试成绩之间相对真实(因为只考虑、测量、控制了一个混杂变量)的相关系数。通过偏相关分析,虽然仍不能对因果关系下确切的结论,但至少一定程度上解决了混杂的问题。

另外,偏相关也适用于有二分类变量的情况(无论是要分析的变量还是需要控制效应的变量)。

在之后的章节中还会遇到另一种相关分析:半偏相关(semi-partial correlations,也称part correlation)。

在偏相关分析中,我们控制指定的1个或多个混杂变量的影响,更具体地说,1个或多个混杂变量对 待分析的两个变量的影响均被控制。

在半偏相关分析中,我们只控制混杂变量对分析的两个变量中其中一个变量的影响。

偏相关分析考察其他考虑到的混杂变量影响被排除后,单单两个定量变量间的相关关系。半偏向关分析考察一系列自变量对因变量变异的解释程度。半偏相关的相关概念会在第七章再见。

corpcor包

cor2pcor()函数可以做

例子:

xcor=cor(M)#相关系数矩阵

xpcor=cor2pcor(xcor)#偏相关矩阵