web-dev-qa-db-ja.com

平均を示すRの箱ひげ図

平均に対応する値に線(または別の記号)を含むRの箱ひげ図を生成する方法を知っている人はいますか?

ありがとうございました!

26
Brani
_abline(h=mean(x))
_

水平線の場合(箱ひげ図を水平方向に向ける場合は、垂直の場合はhの代わりにvを使用します)、または

_points(mean(x))
_

ポイントのために。パラメータpchを使用して、シンボルを変更します。視認性を向上させるために、色を付けることもできます。

これらは、箱ひげ図を描いた後に呼び出されることに注意してください。

数式インターフェイスを使用している場合、平均のベクトルを構築する必要があります。たとえば、_?boxplot_から最初の例を取得します。

_boxplot(count ~ spray, data = InsectSprays, col = "lightgray")
means <- tapply(InsectSprays$count,InsectSprays$spray,mean)
points(means,col="red",pch=18)
_

データに欠損値が含まれている場合は、tapply関数の最後の引数をfunction(x) mean(x,na.rm=T)に置き換えることができます。

39
James

ggplot2

p<-qplot(spray,count,data=InsectSprays,geom='boxplot')
p<-p+stat_summary(fun.y=mean,shape=1,col='red',geom='point')
print(p)

chart.Boxplot パッケージPerformanceAnalyticsから確認してください。分布の平均に使用するシンボルを定義できます。

代替テキストhttp://bm2.genes.nig.ac.jp/RGM2/R_current/library/PerformanceAnalytics/man/images/big_chart.Boxplot_001.png

10
George Dontas

また、chart.Boxplotは最良のオプションであり、平均の位置を与えると思いますが、戻り値のある行列がある場合、1行のグラフですべての箱ひげ図を取得するために必要なコードは1行だけです。

ここに小さなETFポートフォリオの例があります。

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)

返品マトリックス

ret.mat = coredata(returnscc.z)
class(ret.mat)
colnames(ret.mat)
head(ret.mat)

戻り行列の箱ひげ図

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)

Mean.symbolを変更してみて、median.symbolを削除または変更できます。お役に立てば幸いです。 :)

0
marbel

@Jamesと@Jyotirmoy Bhattacharyaの回答に基づいて、このソリューションを思い付きました。

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)

(詳細は this postをご覧ください)

水平ボックスプロットにポイントを追加する場合は、 this postを参照してください。

0
kribys