• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    同等学历教学

    同等学历教学

    免费
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      同等学历教学

      同等学历教学

      免费
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      未分类

      • 首页
      • 博客
      • 未分类
      • R语言相关性分析

      R语言相关性分析

      • 发布者 weinfoeditor
      • 分类 未分类
      • 日期 2019年8月21日
      • 评论 0评论

      相关系数是对变量之间的相关程度的定量描述,这里不得不提两个概念:协方差和相关系数

      协方差和相关系数

      协方差是一种用来衡量两个随机变量关系的统计量

      formula1

      其中: X, Y是两个随机变量 μx, μy是两个随机变量的均值

      如果两个变量是高度同向的,即X变大,Y也变大,那么对应的协方差也就很大;如果每次X变大,Y就变小,那么X和Y的协方差可能就会为负数

      从公式中可看出,其实方差可以看作协方差的特例,即自己对自己的关系就是方差

      但用协方差不利于度量单位不同的变量之间的比较,因此需要对变量进行标准化

      formula1

      那么转化为一般情况下的相关系数公式如下:

      formula2

      而这个线性相关系数计算方法正是我们常见的Pearson相关系数(事实上,首先提出的是Galton,但却是Pearson推广并发展的,因此仍以其名字命名)

      还有一个表示相关程度的统计量则是决定系数(coefficient of determination):是一个变量的方差能被另一个变量的方差解释的百分比;其值是相关系数r的平方

      我们常见的Pearson相关系数除了适用于连续变量外,还可以用于无序的分类变量,但其有个前提是需要两个变量来自于正态分布的总体(这假设是其公式的前提条件);当变量的总体不满足正态分布或者是有序的分类变量(等级资料)的话,则可以考虑用基于秩次的相关系数

      基于秩次的相关系数主要有:

      • Spearman相关系数
      • Kendall的τ系数
      • γ系数

      Spearman相关系数平时可能用的比较多,其思路是分别求出每个变量各自排序后的秩次,然后将秩次作为变量,从而计算这个秩次变量的Pearson相关系数(用的还是Pearson的计算公式)

      相对于Pearson相关系数,Spearman相关系数对于数据错误和极端值的反应不敏感

      相关系数检验

      我们计算出来的相关系数一般是样本的统计量,需要进行假设检验从而推论到总体,这里可以用t检验来计算显著性,也可以用置信区间法

      相关系数检验的原假设为:r=0,即两个变量之间无相关性

      formula2

      公式中,分子是样本统计量与参数值的差值,分母是线性相关系数的标准误,统计量t服从自由度为n-2的t分布,n为样本量

      两个线性相关系数的比较可分为两种情况:

      • 两个独立样本之间的比较:如男性中体重与血压的相关系数r1和女性中体重与血压的相关系数r2的比较
      • 同一样本中的两个相关系数的比较:如体重与血压的相关系数r1和体重与血糖的相关系数r2的比较

      R语言计算相关性以及显著性检验

      测试数据,来源于美国50个州在1977年的人口,收入,文盲率,预期寿命,谋杀率以及高中毕业率的数据

      states <- state.x77[,1:6]
      

      我们可以用cor函数来计算相关性,method默认参数是用pearson;并且遇到缺失值,use默认参数everything,所以结果会是NA

      比如计算下人口和收入这两个变量的相关性

      > cor(x = states[,"Population"], y = states[,"Income"], use = "everything", method = "pearson")
      [1] 0.2082276
      

      可以对整个矩阵对个变量进行相关性计算,结果也是矩阵

      > cor(states)
                  Population     Income Illiteracy    Life Exp     Murder     HS Grad
      Population  1.00000000  0.2082276  0.1076224 -0.06805195  0.3436428 -0.09848975
      Income      0.20822756  1.0000000 -0.4370752  0.34025534 -0.2300776  0.61993232
      Illiteracy  0.10762237 -0.4370752  1.0000000 -0.58847793  0.7029752 -0.65718861
      Life Exp   -0.06805195  0.3402553 -0.5884779  1.00000000 -0.7808458  0.58221620
      Murder      0.34364275 -0.2300776  0.7029752 -0.78084575  1.0000000 -0.48797102
      HS Grad    -0.09848975  0.6199323 -0.6571886  0.58221620 -0.4879710  1.00000000
      

      cor函数的method参数支持的相关性可选类型除了pearson外,还有spearman和kendall,如:

      > cor(x = states[,"Population"], y = states[,"Illiteracy"], method = "spearman")
      [1] 0.3130496
      

      计算相关性的显著性则可以用cor.test函数,method默认是pearson,alternative默认是双尾(即总体相关系数不等于0)

      > cor.test(x = states[,"Population"], y = states[,"Income"])
      
          Pearson's product-moment correlation
      
      data:  states[, "Population"] and states[, "Income"]
      t = 1.475, df = 48, p-value = 0.1467
      alternative hypothesis: true correlation is not equal to 0
      95 percent confidence interval:
       -0.07443435  0.45991855
      sample estimates:
            cor 
      0.2082276 
      

      从结果中可看到,cor.test不仅给了显著性的P值0.1467,还给出了置信区间[-0.0744, 0.4599]

      提取P值和置信区间

      res <- cor.test(x = states[,"Population"], y = states[,"Income"])
      res$p.value
      res$conf.int
      

      但是cor.test只能用于计算两个变量的相关性检验,如果对多个变量或者矩阵数据的话,则可以使用psych包的corr.test函数

      > corr.test(states, use = "complete", method = "pearson", adjust = "none")
      Call:corr.test(x = states, use = "complete", method = "pearson", 
          adjust = "none")
      Correlation matrix 
                 Population Income Illiteracy Life Exp Murder HS Grad
      Population       1.00   0.21       0.11    -0.07   0.34   -0.10
      Income           0.21   1.00      -0.44     0.34  -0.23    0.62
      Illiteracy       0.11  -0.44       1.00    -0.59   0.70   -0.66
      Life Exp        -0.07   0.34      -0.59     1.00  -0.78    0.58
      Murder           0.34  -0.23       0.70    -0.78   1.00   -0.49
      HS Grad         -0.10   0.62      -0.66     0.58  -0.49    1.00
      Sample Size 
      [1] 50
      Probability values (Entries above the diagonal are adjusted for multiple tests.) 
                 Population Income Illiteracy Life Exp Murder HS Grad
      Population       0.00   0.15       0.46     0.64   0.01     0.5
      Income           0.15   0.00       0.00     0.02   0.11     0.0
      Illiteracy       0.46   0.00       0.00     0.00   0.00     0.0
      Life Exp         0.64   0.02       0.00     0.00   0.00     0.0
      Murder           0.01   0.11       0.00     0.00   0.00     0.0
      HS Grad          0.50   0.00       0.00     0.00   0.00     0.0
      

      上半个矩阵是相关系数,下半个矩阵是显著性P值(我参数选择不校正的)

      输出相关性和P值

      res <- corr.test(states, use = "complete", method = "pearson", adjust = "none")
      res$r
      res$ci
      

      可视化

      相关系数矩阵可视化最常用的要属corrplot包了,简单看下可视化的图

      library(corrplot)
      res_cor <- cor(states)
      corrplot(corr=res_cor)
      

      corrplot_1

      corrplot(corr = res_cor,order = "AOE",type="upper",tl.pos = "d")
      corrplot(corr = res_cor,add=TRUE, type="lower", method="number",order="AOE",diag=FALSE,tl.pos="n", cl.pos="n")
      

      corrplot_2

      除了属corrplot包外,PerformanceAnalytics包的chart.Correlation函数也是用于可视化相关系数矩阵的,从图上来看,其可以认为是基础包的pairs函数的加强版

      chart.Correlation(states, method = "pearson")
      

      chart_correlation

      参考资料: Correlation and Linear Regression markdown最全数学公式 生物统计专题:计算协方差与相关系数

      本文出自于http://www.bioinfo-scrounger.com转载请注明出处

      请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

      • 分享:
      作者头像
      weinfoeditor

      上一篇文章

      R语言 PCA分析
      2019年8月21日

      下一篇文章

      R学习笔记 dplyr包处理数据
      2019年8月21日

      你可能也喜欢

      2-1675088548
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      30 1月, 2023
      9-1675131201
      如何快速批量修改 Git 提交记录中的用户信息
      26 1月, 2023
      8-1678501786
      肿瘤细胞通过改变CD8+ T细胞中的丙酮酸利用和琥珀酸信号来调控抗肿瘤免疫应答。
      7 12月, 2022

      留言 取消回复

      要发表评论,您必须先登录。

      搜索

      分类

      • R语言
      • TCGA数据挖掘
      • 单细胞RNA-seq测序
      • 在线会议直播预告与回放
      • 数据分析那些事儿分类
      • 未分类
      • 生信星球
      • 老俊俊的生信笔记

      投稿培训

      免费

      alphafold2培训

      免费

      群晖配置培训

      免费

      最新博文

      Nature | 单细胞技术揭示衰老细胞与肌肉再生
      301月2023
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      301月2023
      如何快速批量修改 Git 提交记录中的用户信息
      261月2023
      logo-eduma-the-best-lms-wordpress-theme

      (00) 123 456 789

      weinfoadmin@weinformatics.cn

      恒诺新知

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      链接

      • 课程
      • 事件
      • 展示
      • 问答

      支持

      • 文档
      • 论坛
      • 语言包
      • 发行状态

      推荐

      • iHub汉语代码托管
      • iLAB耗材管理
      • WooCommerce
      • 丁香园论坛

      weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      要成为一名讲师吗?

      加入数以千计的演讲者获得100%课时费!

      现在开始

      用你的站点账户登录

      忘记密码?

      还不是会员? 现在注册

      注册新帐户

      已经拥有注册账户? 现在登录

      close
      会员购买 你还没有登录,请先登录
      • ¥99 VIP-1个月
      • ¥199 VIP-半年
      • ¥299 VIP-1年
      在线支付 激活码

      立即支付
      支付宝
      微信支付
      请使用 支付宝 或 微信 扫码支付
      登录
      注册|忘记密码?