前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ppcor: 计算partial和semi-partial (part) correlations

ppcor: 计算partial和semi-partial (part) correlations

作者头像
Listenlii-生物信息知识分享
发布2020-05-29 11:59:20
2.8K0
发布2020-05-29 11:59:20
举报
文章被收录于专栏:Listenlii的生物信息笔记

其实本文还是源于NC:全球范围内子囊菌是最优势的真菌类群

他们利用了ppcor这个包计算环境因子之间的相关性。此文即是ppcor的学习笔记。

partial correlations和semi-partial (part)correlations适用于研究消除其他变量的前提下两变量的相关性。具体来说:

partial correlations是指在消除了其他所有随机变量影响的条件下,考察两变量之间的相关性。

semi-partial (part) correlations是指在消除了其他变量对两变量部分影响的条件下(如只消除对其中一个变量的影响),考察两变量之间的相关性。

已有一些包可以做partial correlations,如:

space, parcor包;

corpcor的cor2pcor()函数;

Rcmdr的partial.cor()函数;

qp 包可计算q阶的偏相关系数;

GeneNet的ggm.estimate.pcor()函数可用于高斯函数;

PCIT 可用于信息论;

但是他们都没有提供相关系数显著性水平的P值和统计量,且没有包可以做semi-partial (part)correlations。

ppcor

代码语言:javascript
复制
>install.packages("ppcor")
>library(ppcor)

注意输入的数据不允许有缺失值

代码语言:javascript
复制
# data
>y.data <- data.frame(
  hl=c(7,15,19,15,21,22,57,15,20,18),
  disp=c(0.000,0.964,0.000,0.000,0.921,0.000,0.000,1.006,0.000,1.011),
  deg=c(9,2,3,4,1,3,1,3,6,1),
  BC=c(1.78e-02,1.05e-06,1.37e-05,7.18e-03,0.00e+00,0.00e+00,0.00e+00
       ,4.48e-03,2.10e-06,0.00e+00)
)
>y.data
   hl  disp deg       BC
1   7 0.000   9 1.78e-02
2  15 0.964   2 1.05e-06
3  19 0.000   3 1.37e-05
4  15 0.000   4 7.18e-03
5  21 0.921   1 0.00e+00
6  22 0.000   3 0.00e+00
7  57 0.000   1 0.00e+00
8  15 1.006   3 4.48e-03
9  20 0.000   6 2.10e-06
10 18 1.011   1 0.00e+00

pairwise partial correlation

计算两两变量成对的偏相关 有三种方法,默认pearson method = c("pearson", "kendall", "spearman") 结果中包含以下部分: estiamte即相关性r值; p.value为p值; statistic为对p值进行的统计检验; n为样本数; gp为被限制的变量数;

代码语言:javascript
复制
>pcor(y.data) 

$estimate
             hl       disp        deg        BC
hl    1.0000000 -0.6720863 -0.6161163 0.1148459
disp -0.6720863  1.0000000 -0.7215522 0.2855420
deg  -0.6161163 -0.7215522  1.0000000 0.6940953
BC    0.1148459  0.2855420  0.6940953 1.0000000

$p.value
             hl       disp        deg         BC
hl   0.00000000 0.06789202 0.10383620 0.78654997
disp 0.06789202 0.00000000 0.04332869 0.49299871
deg  0.10383620 0.04332869 0.00000000 0.05615021
BC   0.78654997 0.49299871 0.05615021 0.00000000

$statistic
             hl       disp       deg        BC
hl    0.0000000 -2.2232666 -1.916030 0.2831875
disp -2.2232666  0.0000000 -2.552768 0.7298173
deg  -1.9160295 -2.5527682  0.000000 2.3617433
BC    0.2831875  0.7298173  2.361743 0.0000000

$n
[1] 10

$gp
[1] 2

$method
[1] "pearson"

//////////

除去两个变量"deg" and "BC",计算"hl" and "disp" 的偏相关系数。以下三行等价:

代码语言:javascript
复制
>pcor.test(y.data$hl,y.data$disp,y.data[,c("deg","BC")])
>pcor.test(y.data[,1],y.data[,2],y.data[,c(3:4)])
>pcor.test(y.data[,1],y.data[,2],y.data[,-c(1:2)])
    estimate    p.value statistic  n gp  Method
1 -0.6720863 0.06789202 -2.223267 10  2 pearson

semi-partial (part) correlation

部分相关性,计算消除了其余变量对第二个变量的影响之后两变量的偏相关性。 除了方法不同,结果构成和上面相同。

代码语言:javascript
复制
>spcor(y.data) 
#semi-partial (part) correlation between "hl" and "disp" given "deg" and "BC"
#以下三行等价
>spcor.test(y.data$hl,y.data$disp,y.data[,c("deg","BC")])
>spcor.test(y.data[,1],y.data[,2],y.data[,c(3:4)])
>spcor.test(y.data[,1],y.data[,2],y.data[,-c(1:2)])

Reference

https://cran.r-project.org/web/packages/ppcor/index.html

Kim, S. (2015) ppcor: An R Package for a Fast Calculation to Semi-partial Correlation Coefficients. Communications for Statistical Applications and Methods, 22(6), 665-674.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Listenlii 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档