簡體   English   中英

用ggplot繪制具有置信區間的均值

[英]plotting the means with confidence intervals with ggplot

我有一些從模型收集的數據。 我想繪制一段時間內的人口數量。 我有每個時間步驟的人口規模,並且有100個重復樣本。 我想繪制每個時間步的平均人口規模以及95%的置信區間(如果可能的話,以陰影表示)。

我以前沒有用過ggplot 到目前為止,我一直在使用R中的普通(基本)圖。 但是我想看看ggplot會是什么樣子。

這是我到目前為止的內容:

ggplot(data=model1, aes(x=steps., y= pop-size, col='blue')) + 
   geom_line()

這樣可以繪制所有點,看起來不錯,但是我不知道如何繪制均值並添加置信區間。

由於您已經復制了數據,並且想要繪制均值/ CL,因此最好使用stat_summary(...) ,它專門用於匯總數據(您猜對了)。 基本上,它將函數應用於每個x值的所有y值(例如, mean(...)函數),然后使用您指定的任何幾何圖形繪制結果。 這是一個例子:

# sample data - should be provided in question
set.seed(1)      # for reproducible example
time <- 1:25
df   <- data.frame(time,
                   pop=rnorm(100*length(time), mean=10*time/(25+time)))

library(ggplot2)
ggplot(df, aes(x=time, y=pop))+ 
  stat_summary(geom="ribbon", fun.data=mean_cl_normal, width=0.1, conf.int=0.95, fill="lightblue")+
  stat_summary(geom="line", fun.y=mean, linetype="dashed")+
  stat_summary(geom="point", fun.y=mean, color="red")

因此,這里有3層:使用mean(...)函數匯總y值的層,以及使用geom="line"繪圖的層,使用geom="line"進行相同匯總的層,但使用geom="point"繪圖,以及一個使用geom="ribbon"的圖層。此geom需要yminymax美觀度,因此我們使用內置的ggplot函數mean_cl_normal來生成誤差,假設誤差是正態分布的,因此均值遵循t分布。 鍵入?hmisc以獲取有關對置信度限制有用的各種功能的文檔。 圖層按代碼順序渲染,因此,由於要着色,我們需要首先放置錯誤功能區。

最后,當然可以使用dplyr或類似的工具自己匯總數據,但是我真的不知道這樣做的意義。

更新 (基於最近的評論):看起來最新版本的ggplot2 (2.0.0)具有不同的方式來指定fun.data的參數。 在新版本中適用:

ggplot(df, aes(x=time, y=pop))+ 
    stat_summary(geom="ribbon", fun.data=mean_cl_normal, 
                 fun.args=list(conf.int=0.95), fill="lightblue")+
    stat_summary(geom="line", fun.y=mean, linetype="dashed")+
    stat_summary(geom="point", fun.y=mean, color="red")

我認為width=...參數的問題更加微妙:實際上是不需要的(在原始答案中,我使用了誤差線,並且當我將其更改為功能區時,忘記刪除此參數)。 較舊的ggplot2版本忽略了無關的參數(因此,沒有錯誤)。 顯然,新版本更加嚴格。 可能更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM