2017-08-16 33 views
0

questionから、いくつかのダミーデータを作成します。その後、ggplot2が理解できる形式に変換され、時間の経過とともに変化する変化を示す簡単なグラフが生成されます。時系列データのggplot2における平均を信頼区間でプロットする

test_data <- 
    data.frame(
    var0 = 100 + c(0, cumsum(runif(49, -20, 20))), 
    var1 = 150 + c(0, cumsum(runif(49, -10, 10))), 
    var2 = 120 + c(0, cumsum(runif(49, -5, 10))), 
    date = seq(as.Date("2002-01-01"), by="1 month", length.out=100) 
) 
# 
library("reshape2") 
library("ggplot2") 
# 
test_data_long <- melt(test_data, id="date") # convert to long format 

ggplot(data=test_data_long, 
     aes(x=date, y=value, colour=variable)) + 
    geom_line() + theme_bw() 

私は、同じグラフに3 varの平均をプロットし、平均の信頼区間を示したいと思います。 、可能であれば+ -1SD。これについては、herehereのように、stat_summary()関数を使用することができます。

以下のいずれかのコマンドを追加することで、平均値も信頼区間も得られません。どんな提案も大歓迎です。

stat_summary(fun.data=mean_cl_normal) 
    #stat_summary(fun.data ="mean_sdl", mult=1, geom = "smooth") 
    #stat_summary(fun.data = "mean_cl_boot", geom = "smooth") 

答えて

3

私は、標準偏差を持つすべての3つのパラメータ(VAR0、VAR1とVAR3)のおたく表示平均正しく理解している場合。

私はあなたに2つの解決策があります。実際によく働く、あなたstat_summary()が言及した意味するものではあり

library(dplyr) 
library(magrittr) 
q <- test_data 
q <- q %>% rowwise() %>% transmute(date, mean=mean(c(var0,var1,var2), na.rm=TRUE), sd = sd(c(var0,var1,var2), na.rm=TRUE)) 

eb <- aes(ymax = mean + sd, ymin = mean - sd) 
ggplot(data = q, aes(x = date, y = mean)) + 
    geom_line(size = 2) + 
    geom_ribbon(eb, alpha = 0.5) 

enter image description here

第二ソリューション:まず一つはdplyrパッケージと標準偏差と平均行方向、さらにディスプレイの計算geom_ribbon()使用を暗示します

ggplot(data=test_data_long, aes(x=date, y=value)) + 
    stat_summary(fun.data ="mean_sdl", mult=1, geom = "smooth") + theme_bw() 

enter image description here

を:あなたが提供したコード
関連する問題