一、背景

提起相关系数,我们最常见的是“Pearson”,“Spearman"等相关系数。但是,我们有时候常常忽略“偏”相关系数。其实,最近在做医学相关的项目时候,遇到这样的问题。

比如,在需求糖尿病患者中,异常代谢无与病人发病时间的关联时,由于糖尿病受到各种其他临床因素的影响,这时在进行相关性分析时,不得不考虑“混杂”因素的影响。

这里,我们举一个更简单的示例:游泳可以促进冷饮的销售,即游泳的人越多,冷饮的销售量也越多。
统计数据如下:

第一种:Pearson检测

结果如下:

如上表,”冷饮销售量“和”游泳人数“两个变量的简单相关分析,结果显示Pearson相关系数为”0.972“,P值小于0.01,相关关系具有统计学意义。

但事实上真是如此吗?

第二种:偏相关性检验

为什么要用偏相关呢?
因为u冷饮销售量增加和游泳人数地增加都可能与“天气热”相联系,所以,很有可能是因为天气热导致吃冷饮的人和游泳的人同时增加。

基于此,我们再纳入一个变量——“气温”,把气温作为控制变量,然后再进行“冷饮销售量”和“游泳人数”的相关分析。


如上图偏相关分析的结果,纳入“气温”这个控制变量后,“冷饮销售量”和“游泳人数”的相关系数低至0.215,而且P值大于0.05,相关关系不再具有统计学意义。因此,我们就有充分的理由怀疑上文两变量的直接相关系数是不准确的。

二、偏相关的原理

题设:

  • 统计x1x_1x1​和x2x_2x2​之间的相关性,其存在混杂(协变量)因素 z1,z2,...,zkz_1, z_2, ..., z_kz1​,z2​,...,zk​ (可以多个)

计算:“先回归,求残差,再相关”

  • 以x1x_1x1​和x2x_2x2​为因变量,以z1,z2,...,zkz_1, z_2, ..., z_kz1​,z2​,...,zk​ 为自变量,进行多重线性回归,获得x1x_1x1​和x2x_2x2​ 的预测值:x1^\widehat{x_1}x1​​和x2^\widehat{x_2}x2​​
  • 计算残差值:e1^=x1−x1^\widehat{e_1}=x_1-\widehat{x_1}e1​​=x1​−x1​​ e2^=x2−x2^\widehat{e_2}=x_2-\widehat{x_2}e2​​=x2​−x2​​
  • 计算偏相关系数:pcor=corr(e1^,e2^)pcor=corr(\widehat{e_1}, \widehat{e_2})pcor=corr(e1​​,e2​​)

三、R语言实战

# partial_Spearman: Partial Spearman's Rank Correlation
# Description
partial.Spearman computes the partial Spearman\'s rank correlation between variable X and variable Y adjusting for other variables, Z. The basic approach involves fitting a specified model of X on Z, a specified model of Y on Z, obtaining the probability-scale residuals from both models, and then calculating their Pearson\'s correlation. X and Y can be any orderable variables, including continuous or discrete variables. By default, partial.Spearman uses cumulative probability models (also referred as cumulative link models in literature) for both X on Z and Y on Z to preserve the rank-based nature of Spearman\'s correlation, since the model fit of cumulative probability models only depends on the order information of variables. However, for some specific types of variables, options of fitting parametric models are also available. See details in fit.x and fit.y# Usage
partial.Spearman(formula, data, fit.x = "orm", fit.y = "orm",link.x = c("logit", "probit", "cloglog", "loglog", "cauchit", "logistic"),link.y = c("logit", "probit", "cloglog", "loglog", "cauchit", "logistic"),subset, na.action = getOption("na.action"), fisher = TRUE,conf.int = 0.95)# Details
To compute the partial Spearman's rank correlation between X and Y adjusting for Z, formula is specified as X | Y ~ Z. This indicates that models of X ~ Z and Y ~ Z will be fit.

For Examples:

# NOT RUN {data(PResidData)
#### fitting cumulative probability models for both Y and W
partial.Spearman(c|w ~ z,data=PResidData)
#### fitting a cumulative probability model for W and a poisson model for c
partial.Spearman(c|w~z, fit.x="poisson",data=PResidData)
partial.Spearman(c|w~z, fit.x="poisson", fit.y="lm.emp", data=PResidData )
# }

你需要理解一下“偏相关系数”及R语言实现相关推荐

  1. biodist r语言_R语言 Biostrings包 pairwiseAlignment()函数中文帮助文档(中英文对照)

    pairwiseAlignment(Biostrings) pairwiseAlignment()所属R语言包:Biostrings Optimal Pairwise Alignment 最佳成对排列 ...

  2. r语言pls分析_零基础学习R语言分析GEO

    关于零基础用R语言分析GEO的视频已更新完,发布在B站,有兴趣的小伙伴可以移驾到B站,我的B站号:I_am_Becky 之前录制过一系列关于零代码分析GEO数据的,但是这样画出来的图太low了,所以学 ...

  3. R语言 lars包 lars()函数中文帮助文档(中英文对照)

    lars(lars) lars()所属R语言包:lars Fits Least Angle Regression, Lasso and Infinitesimal Forward Stagewise ...

  4. r语言各形状编号_190+张图片!吐血整理!搞定R语言基础绘图全部知识点

    转自:生信宝典|Bio_Data,不一样的生信学习平台 原文链接:ggplot2高效实用指南 (可视化脚本.工具.套路.配色) 作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语 ...

  5. 张丹带你用R语言开始量化投资

    关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习,问答.求职一站式搞定! 前言 做数据分析的朋友,一定知道R语言 ...

  6. 还在被R语言中的因子factor毒打吗

    还在被R语言中的因子 factor毒打吗? 视频教程在B站或者微信里搜这个标题即可. 一.R语言为什么要设计出因子factor? Python中没有因子的概念,为什么R中会有呢? 首先,我们知道,R语 ...

  7. R语言介绍及安装教程

    R语言是一种免费的开源编程语言和环境,主要用于数据分析.统计建模和可视化.它可以运行在不同的操作系统上,如Windows.MacOS和Linux.R语言具有以下特点: 丰富的数据处理和统计分析函数库: ...

  8. R语言偏相关或者部分相关性系数计算实战:使用psych包计算(Partial Correlation)偏相关系数、拟合回归模型使用两个回归模型的残差计算偏相关性系数

    R语言偏相关或者部分相关性系数计算实战:使用psych包计算(Partial Correlation)偏相关系数.拟合回归模型使用两个回归模型的残差计算偏相关性系数 目录

  9. R语言使用gt包和gtExtras包优雅地、漂亮地显示表格数据:使用gt包可视化表格数据,使其易于阅读和理解、使用gtExtras包添加一个图,显示表中某一列中的数字

    R语言使用gt包和gtExtras包优雅地.漂亮地显示表格数据:使用gt包可视化表格数据,使其易于阅读和理解.使用gtExtras包添加一个图,显示表中某一列中的数字 目录

最新文章

  1. 单点登录Redis存储Session及SessionId问题说明与集群实战-4
  2. 数字调制2ASK误码率分析matlab实现
  3. Windows平台Unity3d下如何同时播放多路RTSP或RTMP流
  4. 获取存储过程返回值及代码中获取返回值(转)
  5. 记事本开发者日记~二
  6. android接推流sdk,Android-SDK推流端说明
  7. 以编程方式使用 Microsoft Office Visio 2003 ActiveX 控件
  8. 10个免费网页统计与分析工具
  9. RTX 3090Ti发布!元宇宙平台开放!
  10. 《SysML精粹》学习记录--第二章
  11. EXCEL中如何将日期格式转换为文本格式
  12. java微信公众号素材管理系统_微信公众平台后台素材管理
  13. 51单片机 特殊功能寄存器(SFR) SBUF使用方法
  14. 《中华人民共和国消防法》(2021年修订版)解读
  15. python自动发送qq消息_自动给qq好友发消息
  16. Linux 交换分区
  17. 计算机专业职业规划模版
  18. Linux虚拟机配置网络代理配置yum源
  19. 【花雕动手做】有趣好玩的音乐可视化系列小项目(17)--光导纤维灯
  20. 解决xampp安装后遇到的常见问题

热门文章

  1. dwcss样式中英对照_DW中常用css样式四种类型详细解析说明
  2. VC++6.0安装、编译NTL类库
  3. 发现一个有意思的奇葩极客网站
  4. 视频加密中的“一机一码”是什么意思?
  5. 重磅丨FIL10月减产即将到来 2分钟了解FIL分配模型
  6. vue 项目在index.html页面直接引入jq库,报错$ is not defined解决方案
  7. Google APIs 学习/使用
  8. Neo4j:足球转移图表
  9. react 微信公众平台实现支付功能
  10. HTTP3 RFC标准正式发布,QUIC会成为传输技术的新一代颠覆者吗?