2017-09-05 29 views
1

我有其中第二次網格趨勢線看起來消極,而斯皮爾曼相關是弱陽性(0.1)的問題。如果有人能夠澄清方向的差異是由於公式不正確或相關性較弱,我將不勝感激。斯皮爾曼Rho和趨勢線不匹配

我也意識到,在RHO = -0.3,其中趨勢線正發生類似的問題。

謝謝。

sc_df 
    OTU_166911 Body weight EXPT   Group 
68 41.132985  36.5 ABX2 S T2 HFHS+amp 
69 15.589949  34.8 ABX2 S T2 HFHS+amp 
70 15.504802  30.5 ABX2 S T2 HFHS+amp 
71 5.339616  35.8 ABX2 S T2 HFHS+amp 
72 40.697005  33.9 ABX2 S T2 HFHS+amp 
188 2.893428  33.4 ABX3 S T2 HFHS+amp 
189 20.891697  37.6 ABX3 S T2 HFHS+amp 
190 3.195469  40.5 ABX3 S T2 HFHS+amp 
191 2.689137  34.2 ABX3 S T2 HFHS+amp 
192 13.997269  30.0 ABX3 S T2 HFHS+amp 

df4 
     Group EXPT value 
1 S T2 HFHS+amp ABX2 0.30 
2 S T2 HFHS+amp ABX3 0.10 


ggplot(sc_df, aes(x = sc_df[,partner1], y = sc_df[,partner2])) + 
      geom_point(shape=1, color="blue", size = 3) +  
      geom_smooth(method="lm", se=FALSE) + 
      facet_wrap(~EXPT, scales = "free") +  
      geom_text(data=df4, aes(x=Inf, y=Inf,hjust=2,vjust=2, label=paste("rho==",value,sep="")), parse=T, family = "Arial", size=4) + 
      xlab(partner1) + 
      ylab(partner2) + 
      theme(plot.title = element_text(hjust = 0.5),text=element_text(family="Arial", size=10)) + 
      ggtitle(g) 

Scatter plot

回答

3

的差異是由於使用Spearman的RHO,而趨勢線是基於線性模型,即皮爾森- [R

考慮從?cor相關的文字:

對於cor(),如果方法是「肯德爾」或「長槍兵」,Kendall的或 斯皮爾曼RHO統計數字是使用基於秩來估算衡量 協會。如果 數據不一定來自二元正態分佈,則這些更加健壯並且被推薦。 ...請注意,「spearman」基本上計算cor(R(x), R(y)) ...其中R(u) := rank(u, na.last = "keep")

我改名的變量簡單:

dput(temp) 
structure(list(x = c(41.132985, 15.589949, 15.504802, 5.339616, 
40.697005, 2.893428, 20.891697, 3.195469, 2.689137, 13.997269 
), y = c(36.5, 34.8, 30.5, 35.8, 33.9, 33.4, 37.6, 40.5, 34.2, 
30), z = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L), .Label = c("ABX2", 
"ABX3"), class = "factor")), class = "data.frame", row.names = c(NA, 
-10L), .Names = c("x", "y", "z")) 

首先,我們要證明斯皮爾曼的RHO的定義是正確的,並且是由皮爾遜不同r

library(dplyr) 

temp %>% 
    group_by(z) %>% 
    mutate(RX = rank(x), RY = rank(y)) %>% 
    summarise(rho1 = cor(x, y, method = "spearman"), 
      rho2 = cor(RX, RY, method = "pearson"), 
      r = cor(x, y, method = "pearson")) 
 z rho1 rho2   r 
    <fctr> <dbl> <dbl>  <dbl> 
1 ABX2 0.3 0.3 0.20366115 
2 ABX3 0.1 0.1 -0.08183435 

注意,對於RHO這兩個值是相同的,但它們在符號和幅度不同於[R

原因包括是,相關性較差,而且還消除排名相距大約每個觀測多遠的任何信息。即使兩個觀測值無限地接近,他們仍然會排在第一位。同樣,兩個觀察結果可能會有很大的不同,但如果兩個觀察結果之間沒有任何一個,他們將只有1個分開。

看一看:

temp %>% 
    group_by(z) %>% 
    mutate(RX = rank(x), RY = rank(y)) %>% 
    ggplot(aes(x, y)) + 
    geom_point() + 
    geom_text(aes(label = paste0("RX=", RX, "\nRY=", RY))) + 
    facet_grid(~z) 

enter image description here

注意兩個最左邊的點在右側面板中。儘管它們非常接近,但它們的排名在每個方向上僅相隔1個單位。就rho而言,他們在y方向上分享盡可能多的信息,與頂部的兩個點相距甚遠。

爲了說明這個數值可以改變多少,讓我們將等級重新縮放到原始值的比例。 rank的原始計算給你1到5,讓我們讓那些在X方向上的第一組均勻分佈,例如5.3到41.1。

library(scales) 

temp %>% 
    group_by(z) %>% 
    mutate(RX = rank(x), RY = rank(y), 
     scaledRX = scales::rescale(RX, to = range(x)), 
     scaledRY = scales::rescale(RY, to = range(y))) 
  x  y  z RX RY scaledRX scaledRY 
     <dbl> <dbl> <fctr> <dbl> <dbl>  <dbl> <dbl> 
1 41.132985 36.5 ABX2  5  5 41.132985 36.500 
2 15.589949 34.8 ABX2  3  3 23.236300 33.500 
3 15.504802 30.5 ABX2  2  1 14.287958 30.500 
4 5.339616 35.8 ABX2  1  4 5.339616 35.000 
5 40.697005 33.9 ABX2  4  2 32.184643 32.000 
6 2.893428 33.4 ABX3  2  2 7.239777 32.625 
7 20.891697 37.6 ABX3  5  4 20.891697 37.875 
8 3.195469 40.5 ABX3  3  5 11.790417 40.500 
9 2.689137 34.2 ABX3  1  3 2.689137 35.250 
10 13.997269 30.0 ABX3  4  1 16.341057 30.000 

從外觀上看,這看起來像:

temp %>% 
    group_by(z) %>% 
    mutate(RX = rank(x), RY = rank(y), 
     scaledRX = scales::rescale(RX, to = range(x)), 
     scaledRY = scales::rescale(RY, to = range(y))) %>% 
    ggplot(aes(x, y)) + 
    geom_point(aes(shape = "original")) + 
    geom_point(aes(scaledRX, scaledRY, shape = "ranked")) + 
    geom_segment(aes(xend = scaledRX, yend = scaledRY)) + 
    geom_smooth(method = "lm", se = F, aes(color = "original")) + 
    geom_smooth(method = "lm", se = F, aes(scaledRX, scaledRY, color = "ranked")) + 
    facet_grid(~z) + 
    scale_shape_manual(values = c(1,16)) 

enter image description here

你可以看到,有些勉強點移動,而一些移動很多。這些差異足以改變相關係數的大小,有時也會標誌。

+0

我明白了,謝謝你的詳細解釋。我想知道什麼是估計趨勢線的好方法,同時確保它符合spearman rho。 –

+0

@richardrodrigues,趨勢線始終同意的唯一方法是使其符合排名數據,而不是原始比例數據。爲什麼你反正用rho?如果數據不是來自二元正態分佈,皮爾遜仍然可以經常使用。 – Brian