R 编程中的 Spearman 相关测试
两个变量之间的关联强度称为相关性检验。例如,如果有人想知道母亲和女儿的体重之间是否存在关系,可以计算相关系数来回答这个问题。要了解有关相关性的更多信息,请参阅相关性。
相关分析方法
相关性主要有两种:
- 参数相关性 - 皮尔逊相关性(r):它测量两个变量(x 和 y)之间的线性相关性,并且被称为参数相关性检验,因为它取决于数据的分布。
- 非参数相关 - Kendall(tau)和Spearman(rho):它们是基于秩的相关系数,称为非参数相关。
斯皮尔曼相关公式
Spearman 相关是一种非参数相关,也称为基于秩的相关系数。 Spearman 相关性的计算公式如下:
where,
rs: Spearman Correlation coefficient
di: The difference in the ranks given to the two variables values for each item of the data,
n: Total number of observation
笔记:
- r s取一个介于 -1(负关联)和 1(正关联)之间的值。
- r s = 0 表示没有关联。
- 如果关联单调递增,则 r s = 1。
- 如果关联单调递减,则 r s = -1。
- 当关联是非线性的时可以使用它。
- 它可以应用于序数变量。
R中的实现
R 语言提供了两种计算相关系数的方法。通过使用函数cor()
或cor.test()
可以计算它。可以注意到, cor()
计算相关系数,而cor.test()
计算配对样本之间关联或相关性的测试。它返回相关系数和相关性的显着性水平(或 p 值)。
Syntax:
cor(x, y, method = “spearman”)
cor.test(x, y, method = “spearman”)
Parameters:
x, y: numeric vectors with the same length
method: correlation method
示例 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