我想测试两个序数变量的spearman相关性 .
x=c(1,2,3) y=c(4,3,6) x=ordered(x) y=ordered(y) cor(x,y,methods="spearman")
我总是得到“cor(x,y)中的错误:'x'必须是数字”
这样做的正确方法是什么?
两种方法:
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
你有几个问题:
使用ordered会创建一个因子,你可以使用 rank
rank
你有一个错字,它应该 method=... 不是 methods=...
method=...
methods=...
x=c(1,2,3) y=c(4,3,6) x=rank(x) y=rank(y) cor(x,y,method="spearman")
2 回答
两种方法:
as.numeric
.请注意,这不是将x和y简单地视为连续数字 . 它将它们视为等级 .
此方法将允许您忽略NA值 .
pspearman
.或者如果你想减少一些输出,你可以使用:
你有几个问题:
使用ordered会创建一个因子,你可以使用
rank
你有一个错字,它应该
method=...
不是methods=...