R загрузится через все столбцы в кадре данных - PullRequest
1 голос
/ 16 июня 2019

Я пытаюсь получить загрузочную описательную статистику для столбцов фрейма данных, используя boot () в R. Я не могу понять, как написать функцию «статистики», необходимую для загрузки, чтобы она проходила через всестолбцы и возвращает 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 строки для каждой группы.

Я хотел бы сделать то же самое, но длястолбец в кадре данных вместо групп случаев.

Я вроде как колебался.Кажется, что это не должно быть так сложно сделать, но все примеры и учебные пособия онлайн либо для одного столбца (что я могу сделать просто отлично, указав его в статистической функции), либо для более хитрых манипуляций, таких как ввыше.

Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 18 июня 2019

Я смог понять это, используя 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!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...