R中两个序数变量的相关性
correlation of two ordinal variables in R
我想检验两个序数变量的斯皮尔曼相关性。
x=c(1,2,3)
y=c(4,3,6)
x=ordered(x)
y=ordered(y)
cor(x,y,methods="spearman")
我总是"Error in cor(x, y) : 'x' must be numeric"
正确的做法是什么?
您遇到了一些问题:
- 使用 ordered 会产生一个因子,你可以使用
rank
- 你打错了,应该是
method=...
而不是methods=...
--
x=c(1,2,3)
y=c(4,3,6)
x=rank(x)
y=rank(y)
cor(x,y,method="spearman")
两种方法:
使用as.numeric
。
x=c(1,2,3)
y=c(4,3,6)
x=ordered(x)
y=ordered(y)
cor(as.numeric(x), as.numeric(y), method="spearman")
[1] 0.5
请注意,这 不是 将 x 和 y 简单地视为连续数字。它把他们当作等级来对待。
as.numeric(y)
[1] 2 1 3
此方法将允许您忽略 NA 值。
x=c(1,2,3, NA)
y=c(4,3,6, 7)
x=ordered(x)
y=ordered(y)
cor(as.numeric(x), as.numeric(y),
method="spearman", use="pairwise.complete.obs")
[1] 0.5
您可以使用包 pspearman
来处理有序因子。
x=c(1,2,3)
y=c(4,3,6)
x=ordered(x)
y=ordered(y)
library(pspearman)
spearman.test(x,y)
Spearman's rank correlation rho
data: x and y
S = 2, p-value = 1
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
0.5
或者如果你想减少一些输出,你可以使用:
spearman.test(x,y)$estimate
rho
0.5
我想检验两个序数变量的斯皮尔曼相关性。
x=c(1,2,3)
y=c(4,3,6)
x=ordered(x)
y=ordered(y)
cor(x,y,methods="spearman")
我总是"Error in cor(x, y) : 'x' must be numeric"
正确的做法是什么?
您遇到了一些问题:
- 使用 ordered 会产生一个因子,你可以使用
rank
- 你打错了,应该是
method=...
而不是methods=...
--
x=c(1,2,3)
y=c(4,3,6)
x=rank(x)
y=rank(y)
cor(x,y,method="spearman")
两种方法:
使用
as.numeric
。x=c(1,2,3) y=c(4,3,6) x=ordered(x) y=ordered(y) cor(as.numeric(x), as.numeric(y), method="spearman") [1] 0.5
请注意,这 不是 将 x 和 y 简单地视为连续数字。它把他们当作等级来对待。
as.numeric(y)
[1] 2 1 3
此方法将允许您忽略 NA 值。
x=c(1,2,3, NA)
y=c(4,3,6, 7)
x=ordered(x)
y=ordered(y)
cor(as.numeric(x), as.numeric(y),
method="spearman", use="pairwise.complete.obs")
[1] 0.5
您可以使用包
pspearman
来处理有序因子。x=c(1,2,3) y=c(4,3,6) x=ordered(x) y=ordered(y) library(pspearman) spearman.test(x,y) Spearman's rank correlation rho data: x and y S = 2, p-value = 1 alternative hypothesis: true rho is not equal to 0 sample estimates: rho 0.5
或者如果你想减少一些输出,你可以使用:
spearman.test(x,y)$estimate
rho
0.5