2017-07-28 146 views
1

我需要製作一些稀疏曲線,並希望它們在置信區間條的邊緣顯示晶須,而默認情況下僅顯示沒有晶須的條紋:如何將CI晶須添加到稀疏曲線

library(vegan) 
data("dune") 
result <- specaccum(dune) 
plot(result, lwd=2) 

Default rarefaction curve 默認稀疏曲線

我試着使用arrows FUNC添加一些晶須但specaccum函數的結果只包含標準偏差。所以我結束了一半的工作:

samples <- result$sites 
error <- result$sd 
richness <- result$richness 
arrows(samples, richness-error, samples, richness+error, angle=90, code=3, length=0.05) 

Rarefaction curve with sd whiskers 與SD晶須

從我所搜索的內容,負壓曲線,最常見的方法是轉換將置信區間放入陰影區域(使用參數),然後將boxplot添加到繪製曲線。但是,這導致了我寧願避免的非常繁忙的圖像。

有沒有人有更優雅的解決方案?

回答

0

您忘記了乘數(請參閱?plot.specaccum中的參數ci)。你畫的是〜68%的置信區間。乘以2(ci = 2)給出了大約95%的置信區間,這是默認繪製的plot.specaccum

包括你使用

plot(result) 
with(result, arrows(sites, richness - (2 * sd), sites, richness + (2 * sd), 
        angle = 90, code = 3, length = 0.05)) 

代碼的修改(默認)乘數我們得到:

enter image description here

可以忽略警告;最後繪製的數據點的標準誤差爲零

> result$sd 
[1] 2.3510636 1.8763851 1.5722711 1.4469584 1.3901594 1.3530349 1.3164796 
[8] 1.2749034 1.2282010 1.1763410 1.1193437 1.0564537 0.9874094 0.9115998 
[15] 0.8286890 0.7380921 0.6333903 0.5139710 0.3570714 0.0000000 

arrow()只是警告你,它不會畫一個長度爲0的箭頭。

+0

很高興看到我接近達成解決方案。 乾杯! –

+0

目前我們使用'segments'來繪製誤差線。我們可以切換到箭頭(...,code = 3,angle = 90)',但這需要添加參數'ci.len'來設置垂直結束條的長度(默認'ci.len = 0')。這會是可取的嗎? –

1

你可以嘗試添加plotCI積:

library(vegan) 
library(plotrix) 
data("dune") 
result <- specaccum(dune) 

plot(result) 
plotCI(result$sites,result$richness,result$sd*2,err="y", lwd=2,add=TRUE, pch=NA) 

我承認這也不是最優雅的選項,以及,但它的工作原理。

+0

不是最優雅的,但它做到了! 非常感謝! –

0

素食主義者庫中github現已繪製的短橫條的誤差條與參數ci.length的選項。默認值爲零(無橫條)以保留舊的行爲。