library(PERUanalytics)
library(ggplot2)
library(scales)
library(dplyr)

Na przykładzie średniego zużycia paliwa w zależności od liczby biegów z data frame'u mtcars zaprezentuje działanie fuckcji boot_ci korzystając ze starego kodu oraz za pomocą zmodyfikowanej wersji tej funkcji w połączeniu z pakietem dplyr. (Pomijając, że to się da na pewno zrobić milion razy lepiej nawet bez dplyra. Tak to jest jak się napisze kawałek kodu 2 lata temu a potem bezmyślnie kopiuje.)

Dla każdej z tych kategorii będzie policzony confidence interval:

categories <- unique(mtcars$gear)

Niezbędne obliczenia:

val <- vector()
min <- vector()
max <- vector()
noGears <- vector()
sample <- vector()
median <- vector()
for (i in 1:length(categories)) {
        tmp <- subset(mtcars, gear == categories[i])
        tmpRes <- boot_ci(tmp$mpg, mean)
        val <- c(val, tmpRes$val)
        min <- c(min, tmpRes$min)
        max <- c(max, tmpRes$max)
        noGears <- c(noGears, categories[i])
        sample <- c(sample, NROW(tmp))
        median <- c(median, median(tmp$mpg))
}

Sklejenie wszystkiego do kupy:

chartData <- data.frame(noGears, sample, val, median, min, max)

Stworzenie wykresu:

ggplot(chartData, aes(x = noGears, y = val, min = min, max = max)) +
        geom_bar(stat = "identity", fill = categorical_colors[1]) +
        geom_errorbar(width = 0.25) +
        geom_errorbar(aes(min = median, max = median), color = "#000000", size = 2) +
        theme_peru()

Jak można do zrobić używając pakietu dplyr? Z wykorzystaniem fukcji do, która pozwala na drastyczne skrócenie ilości linii kodu. Wystarczy jedna linijka kodu!!!

chartData2 <- mtcars %>% group_by(gear) %>% 
        do(boot_ci(.$mpg, mean, median = T, dfoutput = T))

A następnie generujemy ten sam wykres co powyżej:

ggplot(chartData2, aes(x = gear, y = val, min = min, max = max)) +
        geom_bar(stat = "identity", fill = categorical_colors[1]) +
        geom_errorbar(width = 0.25) +
        geom_errorbar(aes(min = median, max = median), color = "#000000", size = 2) +
        theme_peru()


Nicolabo/PERUanalytics documentation built on May 7, 2019, 6:18 p.m.