首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有略读的输出置信区间

带有略读的输出置信区间
EN

Stack Overflow用户
提问于 2018-06-16 05:16:06
回答 2查看 185关注 0票数 1

我正在尝试向skimr生成的输出中添加一个置信区间

代码语言:javascript
复制
library(skimr); library(Rmisc)

skim_with(numeric = list(CI = Rmisc::CI), append = FALSE)

skim(mtcars)

Skim summary statistics
 n obs: 32 
 n variables: 11 

── Variable type:numeric ──────────────────────────────────────────────────────────────────────────────────────────────────────────
 variable                    CI
       am   upp: 0.59, mea: 0  
     carb   upp: 3.39, mea: 2  
      cyl   upp: 6.83, mea: 6  
     disp upp: 275.41, mea: 230
     drat   upp: 3.79, mea: 3  
     gear   upp: 3.95, mea: 3  
       hp upp: 171.41, mea: 146
      mpg  upp: 22.26, mea: 20 
     qsec  upp: 18.49, mea: 17 
       vs   upp: 0.62, mea: 0  
       wt   upp: 3.57, mea: 3  

这并不是很有效,因为缺少置信区间的下限。如何获得置信区间的上下限以使用skimr

EN

回答 2

Stack Overflow用户

发布于 2018-06-16 05:25:28

我能想到的唯一方法就是使用暴力,重复CI计算:

代码语言:javascript
复制
skim_with(numeric = list(mean = mean,
                         lwr=~Rmisc::CI(.)["lower"],
                         upr=~Rmisc::CI(.)["upper"]),
         append=FALSE)

也许有一些方法可以用quosures等来做,但我不想冒着在周五下午思考它而让我的大脑爆炸的风险。

票数 2
EN

Stack Overflow用户

发布于 2018-06-16 05:48:26

实际上,skim-result中的值比其print.skim_df输出显示的值多得多。看看dput(skim(mtcars))吧。

代码语言:javascript
复制
class(skim(mtcars))
[1] "skim_df"    "tbl_df"     "tbl"        "data.frame"
print.data.frame(skim(mtcars))
# gives a long result

   variable    type stat level       value   formatted
1       mpg numeric   CI upper  22.2635715  upp: 22.26
2       mpg numeric   CI  mean  20.0906250  mea: 20.09
3       mpg numeric   CI lower  17.9176785  low: 17.92
4       cyl numeric   CI upper   6.8313934   upp: 6.83
5       cyl numeric   CI  mean   6.1875000   mea: 6.19
6       cyl numeric   CI lower   5.5436066   low: 5.54
7      disp numeric   CI upper 275.4065392 upp: 275.41
#   snipped the rest.....

我基本上删除了skim_df-classes,并使用reshape2::dcast处理data.frame版本。

代码语言:javascript
复制
reshape2::dcast( as.data.frame(skim(mtcars))[c('variable','level','value')],
                 variable~level ,value.var='value')
   variable       lower       mean       upper
1        am   0.2263446   0.406250   0.5861554
2      carb   2.2301583   2.812500   3.3948417
3       cyl   5.5436066   6.187500   6.8313934
4      disp 186.0372108 230.721875 275.4065392
5      drat   3.4037903   3.596563   3.7893347
6      gear   3.4214933   3.687500   3.9535067
7        hp 121.9679499 146.687500 171.4070501
8       mpg  17.9176785  20.090625  22.2635715
9      qsec  17.2044883  17.848750  18.4930117
10       vs   0.2557828   0.437500   0.6192172
11       wt   2.8644785   3.217250   3.5700215

然后,我测试了一下as.data.frame是否真的需要,但实际上并不需要,所以下面的代码更简洁:

代码语言:javascript
复制
reshape2::dcast( skim(mtcars),
                 variable~level , value.var='value')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50882759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档