R-基本统计分析--独立、相关性及其检验

独立性检验-(卡方、Fisher)

独立性检验_百度百科
R之独立性检验 - 王文强的博客 - CSDN博客
 

研究两种方式之间是否独立,或是否有关联性可采用独立性检验、

本例中:探究治疗方式对提升效果是否有显著性影响可用独立性检验。

chisq.test()卡方独立性检验
fisher.test()费雪儿独立性检验
library(grid)
library(vcd)
mytable<-xtabs(~Treatment+Improved,data = Arthritis)
chisq.test(mytable)
fisher.test(mytable)
> chisq.test(mytable)
 
   Pearson's Chi-squared test
 
data:  mytable
X-squared = 13.055, df = 2, p-value = 0.001463
  • 零假设是:两组实验结果无显著差异,结果是由误差引起的。
  • 备择假设:两组结果显著差异。p值越小,表示越拒绝零假设。
  • 其根本思想就是在于比较理论频数和实际频数的吻合程度或拟合优度问题。
  • 采用chisq.test()对二维表行与列变量进行独立性检验,一般来说只需要看P值即可,其含义为:“从总体中抽取的样本行变量与列变量是相互独立的概率”;p值越小表明独立的概率越低。
  • 因此在治疗方案与提升效果p(独立概率)值为0.001463,表明接受原假设,两者不存在某种关系。
  • p值越大,拒绝原假设独立的可能性越大,p值越小,接收原假设独立的可能性越小。
  • p值得具体限定可以去0.01或0.05根据需要而定。
 
> fisher.test(mytable)
 
   Fisher's Exact Test for Count Data
 
data:  mytable
p-value = 0.001393
alternative hypothesis: two.sided
 
  • 采用Fisher.test()对二维表进行独立性检验,同上。
  • 治疗方案与提升效果p(独立概率)值为0.001393,表明接受原假设,两者不存在某种关系.
mytable<-xtabs(~Improved+Sex,data = Arthritis)
mytable
chisq.test(mytable)
fisher.test(mytable)
> chisq.test(mytable)
 
   Pearson's Chi-squared test
 
data:  mytable
X-squared = 4.8407, df = 2, p-value = 0.08889
 
Warning message:
In chisq.test(mytable) : Chi-squared近似算法有可能不准
 
提升效果与性别的p(独立概率)值为0.08889,表明拒绝原假设,两者存在某种关系.
 
> fisher.test(mytable)
 
   Fisher's Exact Test for Count Data
 
data:  mytable
p-value = 0.1094
alternative hypothesis: two.sided
 
提升效果与性别的p(独立概率)值为0.1094,表明拒绝原假设,两者存在某种关系.
 
 

相关系数、协方差


如何通俗易懂地解释「协方差」与「相关系数」的概念?(转)_至臻思想_新浪博客
协方差
可以通俗的理解为:两个变量在变化过程中是同方向变化?还是反方向变化?同向或反向程度如何?
你变大,同时我也变大,说明两个变量是同向变化的,这时协方差就是正的。
你变大,同时我变小,说明两个变量是反向变化的,这时协方差就是负的。
从数值来看,协方差的数值越大,两个变量同向程度也就越大。反之亦然。
协方差描述了两者的变动幅度和相关程度、
而相关系数是去除了变动幅度的影响后的变动相关程度。
> states

              Population Income Illiteracy Life Exp Murder HS Grad

Alabama              3615   3624        2.1    69.05   15.1    41.3
Alaska                365   6315        1.5    69.31   11.3    66.7
Arizona              2212   4530        1.8    70.55    7.8    58.1
Arkansas             2110   3378        1.9    70.66   10.1    39.9
California          21198   5114        1.1    71.71   10.3    62.6
Colorado             2541   4884        0.7    72.06    6.8    63.9
 
> cov(states)
             Population   Income     Illiteracy     Life Exp   Murder
Population 19931683.7588 571229.7796  292.8679592 -407.8424612 5663.523714
Income       571229.7796 377573.3061 -163.7020408  280.6631837 -521.894286
Illiteracy      292.8680   -163.7020    0.3715306   -0.4815122    1.581776
Life Exp       -407.8425    280.6632   -0.4815122    1.8020204   -3.869480
Murder         5663.5237   -521.8943    1.5817755   -3.8694804   13.627465
HS Grad       -3551.5096   3076.7690   -3.2354694    6.3126849  -14.549616
 
人口和收入的值都很大,并且他们的变动方向和变动同向程度也非常类似,因此两者的协方差值就非常大,且为正值。(571229.7796)
谋杀率和文盲的值都非常小,并且他们也基本同向变动,因此他们的协方差也非常小,且为正值、(1.5817755)
 
> cor(states)
           Population  Income    Illiteracy  Life Exp    Murder
Population  1.00000000  0.2082276  0.1076224 -0.06805195  0.3436428
Income      0.20822756  1.0000000 -0.4370752  0.34025534 -0.2300776
Illiteracy  0.10762237 -0.4370752  1.0000000 -0.58847793  0.7029752
Life Exp   -0.06805195  0.3402553 -0.5884779  1.00000000 -0.7808458
Murder      0.34364275 -0.2300776  0.7029752 -0.78084575  1.0000000
 
相关系数是去除了变动幅度之后的两个值的同向程度,因此哪怕另一个值数值非常大,但是两者的变动程度基本一致,那么其相关系数依然很大,且接近1.
人口与收入的值非常大,放入去除量纲影响的相关系数计算中,就会显现出变动程度的原型,表明两者之间变动较为相似,且正相关。(0.2088876)
谋杀和文盲的值都非常小,他们同向变动非常类似,因此相关系数接近1且为正值。(0.7029752)
 
 

相关性检验


cor、cov参数描述

  • x:矩阵或数据框
  • use:指定缺失数据的处理方式。可选的方式为:
    • all.obs(假设不存在缺失数据——遇到缺失数据时将报错)、
    • everything(遇到缺失数据时,相关系数的计算结果将被设为 missing)、
    • complete.obs(行删除)以及
    • pairwise.complete.obs(成对删除,pairwise deletion)
  • method:指定相关系数的类型。
    • 可选类型为 pearson、spearman 或 kendall

Spearman(斯皮尔曼相关系数)

SPSS详细教程:Spearman相关分析_网易订阅
 

问题提出:研究者想判断两个连续变量之间的关系。(即分析胆固醇浓度与看电视时间的关系。)

1.spearman假设分析:针对这种情况,我们可以使用Spearman相关分析,但需要先满足2项假设:

                            假设1:观测变量是连续变量或有序分类变量    (如本研究中胆固醇浓度与看电视时间都是连续变量)
                            假设2:变量之间存在单调关系                     (且异常值对该相关系数影响较小)
2.假设情况分析:本数据为胆固醇浓度与看电视时间都是连续变量,符合假设1、
                            胆固醇浓度与看电视时间是否单调可以作散点图来判断。
3.假设条件成立,进行spearman相关分析并进行显著性检验。
4.得到结论。(具体流程可见链接详细操作)
 

pearson(皮尔逊相关系数)

统计学之三大相关性系数(pearson、spearman、kendall)_闵庆杰_新浪博客

问题提出:研究者想判断两个正态分布变量之间的关系。(即分析蛋白质A与蛋白质B的变化关系。)

1.pearson假设分析:针对这种情况,我们可以使用Spearman相关分析,但需要先满足2项假设:

        假设1: 实验数据通常假设是成对的来自于正态分布的总体。    (如本研究中胆固醇浓度与看电视时间都是连续变量)
        假设2: 实验数据之间的差距不能太大。                              (或者说皮尔森相关性系数受异常值的影响比较大)
 2.假设情况分析:本数据为蛋白质A与蛋白质B的变化关系且基本是正态分布,符合假设1、
                             蛋白质A与蛋白质B之间的数据较为集中,没有出现过大的异常值影响。
3.假设条件成立,进行perason相关分析并进行显著性检验。
4.得到结论。
 实例介绍:
X1=c(1, 2, 3, 4, 5, 6)          #数据来自正态总体,且无异常值
Y1=c(0.3, 0.9, 2.7, 2, 3.5, 5)  
cor(X1,Y1,method = "pearson")
[1] 0.9481367
X2<-c(1,1,1,1,1,1)              #数据来自非正态总体
Y1=c(0.3, 0.9, 2.7, 2, 3.5, 5)
cor(X2,Y1,method = "pearson")
[1] NA
Warning message:
In cor(X2, Y1, method = "pearson") : 标准差为零
X2<-c(1,1,1,1,1,0)             #数据来自非常态总体纠正,异常值对person相关系数> spearman相关系数 的影响。
Y1=c(0.3, 0.9, 2.7, 2, 3.5, 5)
cor(X2,Y1,method = "pearson")
cor(X2,Y1,method = "spearman")
[1] -0.7383504
[2] -0.6546537
 

kendall correlation coefficient(肯德尔相关性系数)

问题提出:研究者想判断分类(类别)变量之间的关系。( 评委对选手的评分(优、中、差等),我们想看两个(或者多个)评委对几位选手的评价标准是否一致;)

1.kendall correlation coefficient假设分析:针对这种情况,我们可以使用kendall相关分析,但需要先满足2项假设:

  假设1: 无序的,比如性别(男、女)、血型(A、B、O、AB);
 or假设2: 有序的,比如肥胖等级(重度肥胖,中度肥胖、轻度肥胖、不肥胖;
2.假设情况分析:本数据为评委对选手的评分(优、中、差等),符合其中的假设2。
3.假设条件成立,进行Kendall相关分析并进行显著性检验。
4..得到结论。
 实例介绍:
x1<-c(3,2,3,1,3,1)
x2<-c(3,2,2,1,2,2)
cor(x1,x2,method = "kendall")
[1] 0.6030227
表明两位评委打分情况相关程度为0.603.
 实例拓展:
自定义特定列之间的相关系数
> x<-states[,c('Population','Income','Illiteracy','HS Grad')]
> y<-states[,c('Life Exp','Murder')]
> cor(x,y)

              Life Exp     Murder

Population -0.06805195  0.3436428
Income      0.34025534 -0.2300776
Illiteracy -0.58847793  0.7029752
HS Grad     0.58221620 -0.4879710
 
 
 
 
 

偏相关


指控制一个或多个变量时,另外两个变量之间的相互关系。
pcor
Computes the partial correlation between two variables given a set of other variables.
计算给定一组其他变量的两个变量之间的部分相关性。
pcor(u, S)
library(ggm)
kzv<-c(1,5)      #控制变量population、murder
pcv<-c(2,3,6)    #排除影响变量income、illiteracy、HS Grad
u<-c(kzv,pcv)    #组合给定默认U值
s<-cov(states)   #计算整体协方差
pcor(u,s)        #计算偏相关
[1] 0.3462724
 
pcor(c(1,5,2,3,6),cov(states))
[1] 0.3462724
 
控制income、illiteracy,HS Grad三个变量,研究population与murder之间的关系,发现人口与谋杀率之间的相关系数为0.3462724.
 
 
 
.........................部分原始数据.............................
> states
               Population Income Illiteracy Life Exp Murder HS Grad
Alabama              3615   3624        2.1    69.05   15.1    41.3
Alaska                365   6315        1.5    69.31   11.3    66.7
Arizona              2212   4530        1.8    70.55    7.8    58.1
> colnames(states)   #数据框列名称
[1] "Population" "Income"     "Illiteracy" "Life Exp"   "Murder"     "HS Grad"
 
 

相关系数的检验


cor.test(x,  y,  alternative=,  method =)

x,y:表示要检验的相关变量

alterlative:指定单双侧检验(“two.side”,“less”,“greater”)

method:指定计算的相关系数类型(“person”,“Kendall”,“spearman”)

> X1=c(1, 2, 3, 4, 5, 6)          #数据来自正态总体,且无异常值
> Y1=c(0.3, 0.9, 2.7, 2, 3.5, 5)  
> cor(X1,Y1,method = "pearson")
[1] 0.9481367                     #cor计算person相关系数
> cor.test(X1,Y1,method = 'pearson')
    Pearson's product-moment correlation
 
data:  X1 and Y1
t = 5.9657, df = 4, p-value = 0.003965
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.5924434 0.9944768
sample estimates:
      cor
0.9481367           
 
#cor.test计算person相关系数的显著性(0.003965)表示该相关系数非常可信。
 
> library(psych)           #psych包里的升级版corr.test进行相关计算与检验
> corr.test(states,use = 'complete',method = 'pearson',alpha = 0.05)
Call:corr.test(x = states, use = "complete", method = "pearson",
    alpha = 0.05)
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.59       1.00      1.0   0.10       1
Income           0.15   0.00       0.01      0.1   0.54       0
Illiteracy       0.46   0.00       0.00      0.0   0.00       0
Life Exp         0.64   0.02       0.00      0.0   0.00       0
Murder           0.01   0.11       0.00      0.0   0.00       0
HS Grad          0.50   0.00       0.00      0.0   0.00       0
 
To see confidence intervals of the correlations, print with the short=FALSE option
corr.test()参数:
function (x, y = NULL, use = "pairwise", method = "pearson",
    adjust = "holm", alpha = 0.05, ci = TRUE)
 

优势描述:cor只有相关性输出,cor.test也只有概率值输出,且都值只针对一对变量。而

psych包的corr.test则是R标准包cor和cor.test的升级版,可以计算矩阵相关性的同时,计算概率值,极其方便进行判断选择。

x:计算矩阵

y:与x相同行数的第二矩阵或数据文件

use:pairwise(默认)表示成对删除无效变量,complete表示行删除无效变量。

method:pearson、spearman、Kendall

alpha:置信水平(0.05) 

猜你喜欢

转载自www.cnblogs.com/Clactionxy/p/9903648.html