首页 文章

R中两个序数变量的相关性

提问于
浏览
0

我想测试两个序数变量的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'必须是数字”

这样做的正确方法是什么?

2 回答

  • 0

    两种方法:

    • 使用 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
    
  • 1

    你有几个问题:

    • 使用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")
    

相关问题