平均に対応する値の線(または別の記号)を使用してRで箱ひげ図を生成する方法を知っている人はいますか?
ありがとうございました!
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)
と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
。分布の平均に使用するシンボルを定義できます。
デフォルトでは、chart.Boxplot(data)
コマンドは平均を赤い円として追加し、中央値を黒い線として追加します。
これがサンプルデータの出力です。MWE:
#install.packages(PerformanceAnalytics)
library(PerformanceAnalytics)
chart.Boxplot(cars$speed)
@Jamesと@JyotirmoyBhattacharyaの回答に基づいて、私はこの解決策を思いつきました。
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)
(詳細については、この投稿を参照してください)
水平の箱ひげ図にポイントを追加したい場合は、この投稿を参照してください。
また、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を削除または変更したりできます。お役に立てば幸いです。:)