📜  R 编程中的 Spearman 相关测试

📅  最后修改于: 2022-05-13 01:54:19.156000             🧑  作者: Mango

R 编程中的 Spearman 相关测试

两个变量之间的关联强度称为相关性检验。例如,如果有人想知道母亲和女儿的体重之间是否存在关系,可以计算相关系数来回答这个问题。要了解有关相关性的更多信息,请参阅相关性。

相关分析方法

相关性主要有两种:

  • 参数相关性 - 皮尔逊相关性(r):它测量两个变量(x 和 y)之间的线性相关性,并且被称为参数相关性检验,因为它取决于数据的分布。
  • 非参数相关 - Kendall(tau)Spearman(rho):它们是基于秩的相关系数,称为非参数相关。

斯皮尔曼相关公式

Spearman 相关是一种非参数相关,也称为基于秩的相关系数。 Spearman 相关性的计算公式如下:

{{\displaystyle r_s= 1 - \frac {6\sum d_i^2}{n(n^2 - 1)}

笔记:

  • r s取一个介于 -1(负关联)和 1(正关联)之间的值。
  • r s = 0 表示没有关联。
  • 如果关联单调递增,则 r s = 1。
  • 如果关联单调递减,则 r s = -1。
  • 当关联是非线性的时可以使用它。
  • 它可以应用于序数变量。

R中的实现

R 语言提供了两种计算相关系数的方法。通过使用函数cor()cor.test()可以计算它。可以注意到, cor()计算相关系数,而cor.test()计算配对样本之间关联或相关性的测试。它返回相关系数和相关性的显着性水平(或 p 值)。

示例 1:

# 使用cor()方法

# R program to illustrate
# Spearman Correlation Testing
# Using cor()
  
# Taking two numeric
# Vectors with same length
x = c(15, 18, 21, 15, 21) 
y = c(25, 25, 27, 27, 27)
  
# Calculating 
# Correlation coefficient
# Using cor() method
result = cor(x, y, method = "spearman")
  
# Print the result
cat("Spearman correlation coefficient is:", result)

输出:

Spearman correlation coefficient is: 0.4564355

# 使用cor.test()方法

# R program to illustrate
# Spearman Correlation Testing
# Using cor.test()
  
# Taking two numeric
# Vectors with same length
x = c(15, 18, 21, 15, 21) 
y = c(25, 25, 27, 27, 27)
  
# Calculating 
# Correlation coefficient
# Using cor.test() method
result = cor.test(x, y, method = "spearman")
  
# Print the result
print(result)

输出:

Spearman's rank correlation rho

data:  x and y
S = 10.871, p-value = 0.4397
alternative hypothesis: true rho is not equal to 0
sample estimates:
      rho 
0.4564355 

在上面的输出中:

  • S 是检验统计量的值 (S = 10.871)
  • p 值是检验统计量的显着性水平(p 值 = 0.4397)。
  • 替代假设是描述替代假设的字符(真字符串不等于 0)。
  • 样本估计是相关系数。对于 Spearmann 相关系数,它被命名为 rho (Cor.coeff = 0.4564)。

示例 2:

数据:在此处下载 CSV 文件。

# R program to illustrate
# Spearman Correlation Testing
  
# Import data into RStudio
df = read.csv("Auto.csv")
  
# Taking two column
# Vectors with same length
x = df$mpg
y = df$weight
  
  
# Calculating 
# Correlation coefficient
# Using cor() method
result = cor(x, y, method = "spearman")
  
# Print the result
cat("Spearman correlation coefficient is:", result)
  
# Using cor.test() method
res = cor.test(x, y, method = "spearman")
print(res)

输出:

Spearman correlation coefficient is: -0.9140708

    Spearman's rank correlation rho

data:  x and y
S = 8613223, p-value < 2.2e-16
alternative hypothesis: true rho is not equal to 0
sample estimates:
       rho 
-0.9140708