r语言qsignrank函数用法_R语言相关性分析
某人在2020年4月6日撰写了内容并完成了对TCGA和相关R包的学习,并开始深入研究统计学知识。他/她整理了相关资料,并访问了 StatQuest 的双语版本(建议直接搜索 StatQuest 获取双语资源),同时提供了一份完整的中文学习笔记作为参考资料。他/她的学习难度明显有所下降。
笔记链接:https://www.yuque.com/biotrainee/biostat
1.示例数据
x1:R语言内置数据集iris的前4列。 x2:R语言内置数据集state.x77
x = iris[,-5]
x2 = state.x77
state.x77列名的含义:
Population:截至1975年7月1日的人口估计
Income:人均收入(1974)
Illiteracy:文盲率(1970年,占人口百分比)
Life Exp:预期寿命(1969-71年)
Murder:每10万人的谋杀和非过失杀人率(1976)
HS Grad 高中毕业生百分比(1970)
Frost:首都或大城市中最低温度低于冰点(1931-1960)的平均天数
Area:土地面积(平方英里)
2.协方差
使用cov()函数计算。
涉及协方差:当cov(x,y)>0时,则表明x与y之间呈现正向变动关系;若cov(x,y)<0,则表明两者呈反向变动关系;当cov(x,y)=0时,则表示两者之间不存在线性相关关系。需要注意的是尽管协方差能够反映变量间的增减方向及变动幅度大小但它并不能准确度量变量间变动强度及数据波动范围因此在实际应用中往往需要结合其他统计指标如相关系数等共同使用以全面把握变量间的关系特征
cov(xSepal.Length,xPetal.Length)
#> [1] 1.274315
cov(x)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width
#> Sepal.Length 0.6856935 -0.0424340 1.2743154 0.5162707
#> Sepal.Width -0.0424340 0.1899794 -0.3296564 -0.1216394
#> Petal.Length 1.2743154 -0.3296564 3.1162779 1.2956094
#> Petal.Width 0.5162707 -0.1216394 1.2956094 0.5810063
pheatmap::pheatmap(cov(x))
image.png
3.相关
3.1计算相关性系数
cor函数支持计算三类相关性系数:Pearson, Kendallτ以及Spearman相关系数,默认情况下选择Pearson。Pearson被识别为一种参数检验方法,在应用时要求输入的两个向量都必须满足正态分布特性。而Kendallτ和Spearman相关系数则属于非参数检验范畴。
输入值为两个向量
cor(xSepal.Length,xPetal.Length)
#> [1] 0.8717538
cor(xSepal.Length,xPetal.Length,method = "kendall")
#> [1] 0.7185159
cor(xSepal.Length,xPetal.Length,method = "spearman")
#> [1] 0.8818981
-输入值为一个数值型数据框/矩阵
cor(x)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width
#> Sepal.Length 1.0000000 -0.1175698 0.8717538 0.8179411
#> Sepal.Width -0.1175698 1.0000000 -0.4284401 -0.3661259
#> Petal.Length 0.8717538 -0.4284401 1.0000000 0.9628654
#> Petal.Width 0.8179411 -0.3661259 0.9628654 1.0000000
pheatmap::pheatmap(cor(x))
image.png
可见,计算的结果是x的4个变量(4列)两两之间的相关性。
3.2 相关系数的显著性检验
cor.test(xSepal.Length,xPetal.Length)
#>
#> Pearson's product-moment correlation
#>
#> data: xSepal.Length and xPetal.Length
#> t = 21.646, df = 148, p-value < 2.2e-16
#> alternative hypothesis: true correlation is not equal to 0
#> 95 percent confidence interval:
#> 0.8270363 0.9055080
#> sample estimates:
#> cor
#> 0.8717538
cor.test(xSepal.Length,xPetal.Length,method = "kendall")
#>
#> Kendall's rank correlation tau
#>
#> data: xSepal.Length and xPetal.Length
#> z = 12.647, p-value < 2.2e-16
#> alternative hypothesis: true tau is not equal to 0
#> sample estimates:
#> tau
#> 0.7185159
cor.test(xSepal.Length,xPetal.Length,method = "spearman")
#> Warning in cor.test.default(xSepal.Length, xPetal.Length, method =
#> "spearman"): Cannot compute exact p-value with ties
#>
#> Spearman's rank correlation rho
#>
#> data: xSepal.Length and xPetal.Length
#> S = 66429, p-value < 2.2e-16
#> alternative hypothesis: true rho is not equal to 0
#> sample estimates:
#> rho
#> 0.8818981
在cor.test函数中还有一个名为alternative的参数用于设定单侧或双侧检验。具体取值包括:‘two.sided’(双侧),‘less’(单侧负向)和‘greater’(单侧正向)。当相关性系数为正时应选greater选项;当为负时则选用less选项。如果不指定该参数则默认采用双侧检验方式
4.偏相关
当对一个或多个其他变量进行控制时,两个连续型变量之间的关联性得以确定。
控制某个变量,指的是排除该变量的影响。被控制的变量称为条件变量。
使用ggm::pcor()函数来计算。用法为:pcor(u, S)。
u被定义为一个代表列号的矢量。其头两个元素被指定为研究对象,其余元素则作为条件变量。例如,在c(1,2,4,5)的情况下,则用于研究第1和第2个元素之间的相关性,在控制第4和第5个元素的影响下完成分析。
S 是协方差矩阵
举个栗子
人口规模(第一列)以及收入水平(第二列)可能均会造成文盲率(第三列)的变化。若仅单独计算各变量间的相关性,则难以全面反映实际情况。
cor(x2[,1],x2[,3])
#> [1] 0.1076224
cor(x2[,2],x2[,3])
#> [1] -0.4370752
相关系数约为0.1和-4.3。控制其中一个变量计算另一个变量的影响,结果则不同。
#install.packages("ggm")
library(ggm)
#在控制收入的条件下,人口数量对文盲率的影响
pcor(c(1,3,2),cov(x2))
#> [1] 0.2257943
#在控制人口的条件下,收入对文盲率的影响
pcor(c(2,3,1),cov(x2))
#> [1] -0.4725271
偏相关系数为0.2和-0.47,相比原来,绝对值大了一些。
同样的道理,控制收入、文盲率的影响,研究人口与谋杀率的偏相关性:
pcor(c(1,5,2,3),cov(x2))
#> [1] 0.3621683
偏相关性的显著性检验
pcor.test(pcor(c(2,3,1),cov(x2)),q=3,n=50)
#> $tval
#> [1] -3.596675
#>
#> $df
#> [1] 45
#>
#> $pvalue
#> [1] 0.0007972922
用法为:pcor.test(r, q, n)
r是偏相关性计算结果,q是变量数,n是样本数,在帮助文档中有描述。
