2

3 つの状態を示す vioplot があります。

library(vioplot)
state1 <- rnorm(100,5,2)
state2  <- rnorm(100,8,3)
state3 <- rnorm(100,12,0.5)
vioplot(state1,state2, state3, names=c("a", "b", "c"), col="green")

  

このプロットに追加して、state1 が発生する確率が 0.3、state2 が 0.2、state3 が 0.5 であることをグラフで示すにはどうすればよいでしょうか?

または、これをグラフィカルに表現するより良い方法はありますか?

ご協力ありがとうございました。

4

2 に答える 2

2

これは、特定の状態確率に従って密度推定の領域に重みを付けるという Ben Bolker の提案の例です (私は信じています)。これを行うために ggplot2 に weights 引数を使用しました。vioplot関数が重み関数を許可できるようにするには、ハッキングが必要なようです (ただし、これは便利ですが、crossvalidated に関する関連する議論を参照してください)。

ここに画像の説明を入力

library(ggplot2)
library(reshape2)

state1 <- rnorm(100,5,2)
state2  <- rnorm(100,8,3)
state3 <- rnorm(100,12,0.5)
state1_w <- rep(0.3, 100)
state2_w <- rep(0.2, 100)
state3_w <- rep(0.5, 100)

state_df1 <- data.frame(cbind(state1,state2,state3))
state_df2 <- data.frame(cbind(state1_w,state2_w,state3_w))
#now to reshape and merge
state_melt1 <- melt(state_df1, measure.vars = c("state1","state2","state3"), variable.name = "State_Num", value.name = "State_Value")
state_melt2 <- melt(state_df2, measure.vars = c("state1_w","state2_w","state3_w"), variable.name = "State_W", value.name = "State_WValue")
state_melt <- data.frame(state_melt1,state_melt2)

#now making the plot
p1 <- ggplot(data = state_melt, aes(State_Num,State_Value,weight = State_WValue))
p1 + geom_violin(fill = "green")

重みが 1 に加算されないというエラー メッセージがいくつか表示されますが、ここでは領域を状態空間確率に比例させたいと考えています。

于 2012-09-26T15:52:16.893 に答える
2
  text(x=(1:3)+.2, y=-0.5, 
      labels=paste0( "prob=\n", 
                    round( sapply(list(state1, state2, state3), mean)/
                                      length(c(state1, state2, state3)) 
                           ,2) ) )
于 2012-09-26T01:10:04.763 に答える