《Discovering Statistics Using R》

2020-04-10  本文已影响0人  新云旧雨

笔记说明

读《Discovering Statistics Using R》第六章 Correlation中的6.5.5-6.5.6节做的笔记。主要是介绍Spearman相关系数和Kendall’s tau相关系数。

示例数据

设我们想要验证一个理论:创造力更强的人可以讲出更厉害的故事。有这么一个比赛“the World's Biggest Liar competition”每年举办一次。作者收集了68个参赛者的比赛名次数据并让他们做了一份考察创造力的量表,满分60分。数据在这里:The Biggest Liar.dat

library(rio)
liarData <- import("data/The Biggest Liar.dat")
str(liarData)
## 'data.frame':    68 obs. of  3 variables:
##  $ Creativity: int  53 36 31 43 30 41 32 54 47 50 ...
##  $ Position  : int  1 3 4 2 4 1 4 1 2 2 ...
##  $ Novice    : int  0 1 0 0 1 0 0 1 1 0 ...

Position即为比赛名次,Creativity即为创造力评分。
由于position变量为定序变量,而Pearson相关系数要求数据为定距变量,不适合使用Pearson相关系数。
仍然是先做一个散点图看一下数据情况:

#散点图
library(ggplot2)
scatter <- ggplot(liarData, aes(Creativity, Position)) + geom_point()

Spearman相关系数

Spearman相关系数 r_s是一个非参数统计量,也称为Spearman's rho,可用于数据违反参数假设(例如正态性假设)的情形。计算Spearman相关系数时首先将原始数据从小到达排序编秩,对排序后的秩次计算Pearson相关系数即为原数据的Spearman相关系数。
和Pearson相关系数一样,Spearman相关系数可以使用cor()cor.test()进行计算和检验,只需指定method='spearman'即可:

cor(liarData$Creativity, liarData$Position, method = 'spearman')
## [1] -0.3732184
cor.test(liarData$Creativity, liarData$Position,method = 'spearman')
##  Spearman's rank correlation rho
## 
## data:  liarData$Creativity and liarData$Position
## S = 71948, p-value = 0.00172
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##        rho 
## -0.3732184 
## 
## Warning message:
## In cor.test.default(liarData$Creativity, liarData$Position, method = "spearman") :
##   无法给连结计算精確p值

cor.test()对Spearman相关系数的结果和Pearson相关系数的很像。但没有置信区间(如果需要计算置信区间可以用bootstrap法,见之后章节的笔记)

Kendall's tau相关系数

Kendall's tau, \tau,也是一个非参数相关系数,当样本量较小,排序编秩时相同秩次的数又比较多时使用。
Spearman相关系数和Kendall's tau相关系数都是非参数相关系数,虽然Spearman相关系数更多见,有文献(Howell,1997)表明Kendall's tau相关系数实际上是总体相关关系更好的估计。
示例数据中Position变量有很多值都是编秩时秩次相同的,上面用cor.test()计算并检验Spearman相关系数时结果中有一条warning中所说的“连结”就是指tied ranks,秩次相同的情况有些多。
和之前介绍的其他两个相关系数一样,Kendall's tau相关系数可以使用cor()cor.test()进行计算和检验,只需指定method='kendall'即可:

#Kendall's tau相关系数
cor(liarData$Creativity, liarData$Position, method = 'kendall')
cor.test(liarData$Creativity, liarData$Position,method = 'kendall')
##  Kendall's rank correlation tau
## 
## data:  liarData$Creativity and liarData$Position
## z = -3.2252, p-value = 0.001259
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
##        tau 
## -0.3002413 
上一篇下一篇

猜你喜欢

热点阅读