Est-ce que quelqu'un connaît un moyen de générer un plot en R avec une ligne (ou un autre symbole) dans la valeur correspondant à la moyenne?
Je vous remercie!
abline(h=mean(x))
pour une ligne horizontale (utilisez v au lieu de h pour vertical si vous orientez votre boîte à moustaches horizontalement), ou
points(mean(x))
pour un point. Utilisez le paramètre pch
pour changer le symbole. Vous voudrez peut-être aussi les colorier pour améliorer la visibilité.
Notez qu'ils sont appelés après que vous ayez dessiné la boîte à moustaches.
Si vous utilisez l'interface de formule, vous devez construire le vecteur de moyennes. Par exemple, en prenant le premier exemple de ?boxplot
:
boxplot(count ~ spray, data = InsectSprays, col = "lightgray")
means <- tapply(InsectSprays$count,InsectSprays$spray,mean)
points(means,col="red",pch=18)
Si vos données contiennent des valeurs manquantes, vous pouvez remplacer le dernier argument de la fonction tapply
par function(x) mean(x,na.rm=T)
.
Avec ggplot2
:
p<-qplot(spray,count,data=InsectSprays,geom='boxplot')
p<-p+stat_summary(fun.y=mean,shape=1,col='red',geom='point')
print(p)
Vérifiez chart.Boxplot à partir du paquet PerformanceAnalytics
. Il vous permet de définir le symbole à utiliser pour la moyenne de la distribution.
Je pense aussi que chart.Boxplot est la meilleure option, il vous donne la position de la moyenne, mais si vous avez une matrice avec des retours, vous avez uniquement besoin d'une ligne de code pour obtenir tous les graphes en un graphique.
Voici un petit exemple de portefeuille de FNB.
library(Zoo)
library(PerformanceAnalytics)
library(tseries)
library(xts)
VTI.prices = get.hist.quote(instrument = "VTI", start= "2007-03-01", end="2013-03-01",
quote = c("AdjClose"),provider = "yahoo",Origin ="1970-01-01",
compression = "m", retclass = c("Zoo"))
VEU.prices = get.hist.quote(instrument = "VEU", start= "2007-03-01", end="2013-03-01",
quote = c("AdjClose"),provider = "yahoo",Origin ="1970-01-01",
compression = "m", retclass = c("Zoo"))
VWO.prices = get.hist.quote(instrument = "VWO", start= "2007-03-01", end="2013-03-01",
quote = c("AdjClose"),provider = "yahoo",Origin ="1970-01-01",
compression = "m", retclass = c("Zoo"))
VNQ.prices = get.hist.quote(instrument = "VNQ", start= "2007-03-01", end="2013-03-01",
quote = c("AdjClose"),provider = "yahoo",Origin ="1970-01-01",
compression = "m", retclass = c("Zoo"))
TLT.prices = get.hist.quote(instrument = "TLT", start= "2007-03-01", end="2013-03-01",
quote = c("AdjClose"),provider = "yahoo",Origin ="1970-01-01",
compression = "m", retclass = c("Zoo"))
TIP.prices = get.hist.quote(instrument = "TIP", start= "2007-03-01", end="2013-03-01",
quote = c("AdjClose"),provider = "yahoo",Origin ="1970-01-01",
compression = "m", retclass = c("Zoo"))
index(VTI.prices) = as.yearmon(index(VTI.prices))
index(VEU.prices) = as.yearmon(index(VEU.prices))
index(VWO.prices) = as.yearmon(index(VWO.prices))
index(VNQ.prices) = as.yearmon(index(VNQ.prices))
index(TLT.prices) = as.yearmon(index(TLT.prices))
index(TIP.prices) = as.yearmon(index(TIP.prices))
Prices.z=merge(VTI.prices, VEU.prices, VWO.prices, VNQ.prices,
TLT.prices, TIP.prices)
colnames(Prices.z) = c("VTI", "VEU", "VWO" , "VNQ", "TLT", "TIP")
returnscc.z = diff(log(Prices.z))
start(returnscc.z)
end(returnscc.z)
colnames(returnscc.z)
head(returnscc.z)
Matrice de retour
ret.mat = coredata(returnscc.z)
class(ret.mat)
colnames(ret.mat)
head(ret.mat)
Boîte à moustaches de matrice de retour
chart.Boxplot(returnscc.z, names=T, horizontal=TRUE, colorset="darkgreen", as.Tufte =F,
mean.symbol = 20, median.symbol="|", main="Return Distributions Comparison",
element.color = "darkgray", outlier.symbol = 20,
xlab="Continuously Compounded Returns", sort.ascending=F)
Vous pouvez essayer de changer le symbole moyen et supprimer ou modifier le symbole médian . J'espère que cela vous a aidé. :)
Sur la base des réponses de @James et @Jyotirmoy Bhattacharya, j'ai proposé cette solution:
zx <- replicate (5, rnorm(50))
zx_means <- (colMeans(zx, na.rm = TRUE))
boxplot(zx, horizontal = FALSE, outline = FALSE)
points(zx_means, pch = 22, col = "darkgrey", lwd = 7)
(Voir this post pour plus de détails)
Si vous souhaitez ajouter des points aux boîtes à moustaches horizontales, veuillez consulter this post.