首页 文章

使用dplyr计算95%-CI的长度

提问于
浏览
6

上次我询问如何计算每个测量时间(周)的平均分数,对于多个受访者重复测量的变量(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

使用dplyr我会得到每个测量场合的平均分数

mean_data <- group_by(DataRlong, week)%>% summarise(procras = mean(procras, na.rm = TRUE))

看起来像这样:

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

使用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绘制到我希望的图表中应该相当容易 . 谢谢 .

2 回答

  • 11

    你可以在 summarise 中使用 mutate 一些额外的功能手动完成

    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
    
  • 3

    我使用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])
    

相关问题