2017-07-28 3 views
1

Je dois faire quelques courbes de raréfaction et je souhaite qu'elles affichent les moustaches aux bords des barres d'intervalle de confiance, alors que la valeur par défaut est simplement afficher les barres sans moustaches:Comment ajouter des moustaches de CI à une courbe de raréfaction

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

Default rarefaction curve courbe par défaut expansive

J'ai essayé d'ajouter quelques favoris en utilisant la arrows func tion, mais les résultats de la fonction specaccum n'incluent que l'écart-type. Donc, je me suis retrouvé avec la moitié du travail accompli:

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 courbe Raréfaction avec des moustaches sd

D'après ce que j'ai cherché, l'approche la plus commune serait de convertir les les intervalles de confiance dans une zone ombrée (en utilisant l'argument), puis ajoutez un boxplot à la courbe tracée. Cependant, cela conduit à une image très occupée que je préfère éviter.

Est-ce que quelqu'un a une solution plus élégante?

Répondre

0

Vous avez oublié le multiplicateur (voir argument ci dans ?plot.specaccum). Ce que vous avez dessiné était pour un intervalle de confiance de ~ 68%. La multiplication par 2 (ci = 2) donne un intervalle de confiance d'environ 95%, ce que plot.specaccum dessine par défaut.

Y compris (par défaut) multiplicateur dans une modification du code que vous avez utilisé

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

nous obtenons:

enter image description here

Vous pouvez ignorer l'avertissement; l'erreur-type du dernier point de données est tirée zéro

> 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 

et arrow() est juste pour vous avertir qu'il ne dessinera pas une longueur 0 flèche.

+0

Heureux de voir que j'étais proche d'atteindre une solution. À la votre! –

+0

Actuellement, nous utilisons 'segments' pour dessiner les barres d'erreur. Nous pourrions passer aux flèches (..., code = 3, angle = 90) ', mais cela nécessiterait d'ajouter l'argument' ci.len' pour définir la longueur des barres de fin verticales (par défaut 'ci.len = 0'). Serait-ce souhaitable? –

1

vous pouvez essayer d'ajouter un plotCI-terrain:

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) 

Je reconnais c'est pas l'option la plus élégante aussi bien, mais il fonctionne.

+0

Pas le plus élégant, mais il a fait l'affaire! Merci beaucoup! –

0

Le dépôt végétalien dans github a maintenant une option pour dessiner ces courtes barres horizontales pour les barres d'erreur avec l'argument ci.length. La valeur par défaut est zéro (aucune barre horizontale) pour préserver l'ancien comportement.