R语言相关性检验函数2021.3.11

Python014

R语言相关性检验函数2021.3.11,第1张

得出相关系数我们并不一定能得出数据之间的相关水平,这时候我们会进行相关性检验来进行量化。

置信区间:confidence interval,是指由由样本统计量所构成的总体参数的估计区间。在统计学中,一个概率样本的置信区间是对这个样本的某个总体参数的区间估计。置信区间展现的是这个参数的真实值有一定概率落在测量结果的周围的程度。置信区间给出的是被测量参数的测量值的可信程度。简单来说就是只有概率还不行,还得知道概率发生的范围。例如,如果在一次大选中某人的支持率为55%,而置信水平0.95以上的置信区间是(50%,60%),那么他的真实支持率有百分之九十五的机率,落在百分之五十和百分之六十之间,因此他的真实支持率不足一半的可能性小于百分之5。

cor.test函数每次只能检测一组变量。它有四个重要的参数,x和y是需要检测的相关性的变量,alternative参数指明是进行两边检验(two.sided)或正相关检验(greater)或负相关检验(less)。method参数选择算法(Pearson、Spearman、Kendall)

psych包中的corr.test可以一次性检验多组变量,可以递归计算整个数据集。

该函数不仅计算了相关系数,而且计算了相关性检验的值

偏相关

t检验适用于样本含量较小,总体方差未知的正态分布数据

UScrime数据集是美国七个州的刑罚制度对犯罪率影响的数据集。

t检验使用t.test()函数,格式为y~x,其中y是数值型变量,x是二分型变量。波浪线后面是分组变量,南方和北方分成两组,做了t检验。

如果想在多余两个组的数据中进行比较,数据符合正态分布我们就用方差分析,如果不符合正态分布则用非参数的方法。在相关性检验中,我们可以用参数方法和非参数 方法。统计分析方法包括参数检验和非参数检验,

比如 Horticulture Research 中的论文 Comparative analysis of long noncoding RNAs in angiosperms and characterization of long noncoding RNAs in response to heat stress in Chinese cabbage 方法部分写道

这里相当于是计算两个数据集中的变量之间的相关性,之前发现 correlation 这个R包里的函数 correlation() 可以做

但是这里遇到了一个问题

关掉这个报错界面以后就会提示

暂时还不知道如何解决,自己搜索了一下暂时还没有找到解决办法

只能把输入法切换成中文,然后一次性把函数名输入完

计算相关系数和P值

结果如下

但是mRNA的表达量有上万个,用这个函数计算的时候是非常慢的

找到了另外一个函数是 Hmisc 这个包中的 rcorr() 函数

这个速度快很多,但是他不能计算两个数据集之间变量的相关性,

这样的话可以先计算,然后再筛选

这个函数要求的输入数据是矩阵格式

自定义函数将这个结果转换成一个四列的数据框格式

最后用变量名去匹配

两个矩阵之间的相关性热图这么容易画的吗?零基础学习R语言之相关性分析2_哔哩哔哩_bilibili

psych 这个包里的 corr.test() 函数也是可以直接计算两个数据集变量之间的相关性的,这个结果了也有显著性检验的p值

但是这个如果数量量比较大的话速度也很慢

小明的数据分析笔记本

1.  R语言自带函数cor(data, method=" ")可以快速计算出相关系数 ,数据类型:data.frame

 如data.frame为:zz, 绘图如下:

a. single protein:线性回归画法

1. ggplot(zz,aes(x=a, y=HDL))+

   geom_point(alpha=1,colour="#FFA54F")+

   geom_smooth(method = lm,colour="#8B658B")+

   #scale_color_brewer(palette = "Set1")+

   theme_bw()+

   labs(x="Ferritin",y="HDL.C",title="Pearson’s correlation test of ferritin and HDL.C")+

   annotate("text", x = 1000, y = 2.5, label = "r = -0.51",colour="black",size=4)

2. library(ggstatsplot)

 ggscatterstats(data = alldata,

               y = TRANSFUSION.UNIT,

                x = NPTXR,

                centrality.para = "mean",  #"mean" or "median"                         

               margins = "both",                                       

                xfill = "#D8BFD8",

                yfill = "#EEDD82",

                #line.size= ,

                line.color="#8B6969",

               point.color="#2F4F4F",

                marginal.size=4,

               marginal.type = "density", # "histogram", "boxplot", "density", "violin", "densigram")

                title = "Relationship between TRANSFUSION.UNIT and NPTXR")

b. ggcorrplot, 全部蛋白 global correlation map 画法

ggcorrplot(cor(alldata))

2.  summary(lm(y~x),method=" ") %>%.[["coefficients"]]   正规线性回归

     (其实就是:a<-lm(y~x1+x2+...,data)

      plot(summary(lm(y~x),method=" ")) #绘图

3.  ggcor部分数据绘图:  数据类型为data.frame,纵坐标为各指标or各蛋白,行为观测值。

data <- fortify_cor(alldata[,10:11],alldata,cluster.type = "col")

ggcor<-ggcor(data,label_size=0.5) +

  geom_colour()+

  theme(axis.text.x = element_text(colour = "black",size = 4.7),

                                                        axis.text.y=element_text(size=5.5),

                                                        axis.ticks=element_blank())+

  geom_num(aes(num=r),colour="black",size=1.5)

4. corrr包画法

datasets::mtcars %>%

  correlate() %>%

  focus(-cyl, -vs, mirror = TRUE) %>%

  rearrange() %>%

  network_plot(min_cor = .2)