我正在尝试使用R中的boot()获取数据帧各列的引导式描述性统计信息。我不知道如何编写引导所需的“统计”函数,以便它能够遍历所有列并分别返回4个统计信息。
我基本上是试图从介绍自举的一本书中修改代码,但是该示例使用dlply根据另一列的组名将一列中的数值分组。我不需要那一步;我只需要对每一列做同样的事情。我从下面的教科书中复制了代码:
library(boot)
library(plyr)
library(moments)
DescStat <- function(data, i) {
+ temp <- data[i,]
+ desc <- dlply(temp, "GroupName", summarize, mean = mean(ValueColumn), sd = sd(ValueColumn), skew = skewness(ValueColumn), kurt = kurtosis(ValueColumn))
+ l.desc <- unlist(desc)
+ return(l.desc)
+}
DasBoot <- boot(dataframe, DescStat, 1000)
print(DasBoot)
这将返回一个表格,其中包含每个统计信息以及偏倚和SE,每行分别显示。因此,Group1的均值和偏差以及SE,然后是下一行的Group1 SD,偏差和SE,然后在列表中,每组4行。
我想做完全相同的事情,但是要对数据框中的列而不是对案例进行分组。
我一直在挣扎。似乎应该没有那么难,但是所有在线示例和教程要么只针对一列(我可以通过在statistic函数中指定它来做得很好),要么针对诸如以上。
任何帮助将不胜感激。
答案 0 :(得分:1)
我可以使用apply()
或purrr::map()
来弄清楚。这是统计函数,不需要安装任何额外的软件包(tidyverse):
> ApStat <- function(data, i) {
+ temp <- data[i,]
+ desc <- apply(temp, 2, FUN = function(x) {
+ list(mean = mean(x, 0.2), sd = sd(x),
+ skew = skewness(x), kurt = kurtosis(x))
+ })
+ l.desc <- unlist(desc)
+ return(l.desc)
+ }
感谢r / rstats的家伙/女孩!