Ras*_*l89 10 r linechart ggplot2 confidence-interval trend
上次我询问如何计算每个测量时间(周)的平均分数,对于多个受访者重复测量的变量(procras).所以我的(简化)长格式数据集看起来像下面的例子(这里有两个学生,5个时间点,没有分组变量):
studentID week procras
1 0 1.4
1 6 1.2
1 16 1.6
1 28 NA
1 40 3.8
2 0 1.4
2 6 1.8
2 16 2.0
2 28 2.5
2 40 2.8
Run Code Online (Sandbox Code Playgroud)
使用dplyr我会得到每个测量场合的平均分数
mean_data <- group_by(DataRlong, week)%>% summarise(procras = mean(procras, na.rm = TRUE))
Run Code Online (Sandbox Code Playgroud)
看起来像这样:
Source: local data frame [5 x 2]
occ procras
(dbl) (dbl)
1 0 1.993141
2 6 2.124020
3 16 2.251548
4 28 2.469658
5 40 2.617903
Run Code Online (Sandbox Code Playgroud)
使用ggplot2,我现在可以绘制随时间的平均变化,并通过轻松调整dplyr的group_data(),我也可以获得每个子组的平均值(例如,男性和女性的每次平均得分).现在我想在mean_data表中添加一个列,其中包括每个场合平均得分95%-CIs的长度.
http://www.cookbook-r.com/Graphs/Plotting_means_and_error_bars_(ggplot2)/解释了如何获取和绘制CI,但这种方法似乎一旦我想为任何子组执行此操作就会出现问题,对吧?那么有没有办法让dplyr在mean_data中自动包含CI(基于组大小等)?之后,将新值作为CI绘制到我希望的图表中应该相当容易.谢谢.
sbo*_*sel 20
您可以使用mutate一些额外的功能手动完成summarise
library(dplyr)
mtcars %>%
group_by(vs) %>%
summarise(mean.mpg = mean(mpg, na.rm = TRUE),
sd.mpg = sd(mpg, na.rm = TRUE),
n.mpg = n()) %>%
mutate(se.mpg = sd.mpg / sqrt(n.mpg),
lower.ci.mpg = mean.mpg - qt(1 - (0.05 / 2), n.mpg - 1) * se.mpg,
upper.ci.mpg = mean.mpg + qt(1 - (0.05 / 2), n.mpg - 1) * se.mpg)
#> Source: local data frame [2 x 7]
#>
#> vs mean.mpg sd.mpg n.mpg se.mpg lower.ci.mpg upper.ci.mpg
#> (dbl) (dbl) (dbl) (int) (dbl) (dbl) (dbl)
#> 1 0 16.61667 3.860699 18 0.9099756 14.69679 18.53655
#> 2 1 24.55714 5.378978 14 1.4375924 21.45141 27.66287
Run Code Online (Sandbox Code Playgroud)
我使用gmodels包中的ci命令:
library(gmodels)
your_db %>% group_by(gouping_variable1, grouping_variable2, ...)
%>% summarise(mean = ci(variable_of_interest)[1],
lowCI = ci(variable_of_interest)[2],
hiCI = ci(variable_of_interest)[3],
sd = ci (variable_of_interest)[4])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9140 次 |
| 最近记录: |