-
Notifications
You must be signed in to change notification settings - Fork 1
/
02.Rmd
55 lines (37 loc) · 10.4 KB
/
02.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# Алатки {#tools}
## Програмски јазик: `R`
Генерално земено, во денешно време, доколку анализирате податоци тоа веројатно го правите со помош на `Python` [@rossum1995python] (и пакети како: `pandas` [@mckinney2011pandas], `numpy` [@harris2020array], `matplotlib` [@barrett2005matplotlib]) или `R` [@R] (со пакети како: `dplyr` [@R-dplyr], `data.table` [@R-data.table], `ggplot2` [@R-ggplot2]). Доколку работите на пониско ниво или вашата работа е поблиска до математика, можеби користите `c#` за побрз код, но генерално, ретко кога јазик од типот на `c#` сe користи за интерактивна анализа на податоци, графирање, или машинско учење. Понови, и помалку распространети, јазици како `Julia` [@bezanson2017julia] имаат дополнителни предности со тоа што овозможуваат лесно пишување код во истражувачки сесии како `Python` или `R` но со брзина на компутација што е поблиска до `c#`. Во секој случај, препораките дадени во овој текст се апликабилни без разлика на програмскиот јазик што го користите.
Во овој текст генерално ќе работиме со софтверски алатки од `R` екосистемот. `R` е програмски јазик пред се наменет кон статистички анализи, и иако не е најраспространет или најшироко користен, е од особено значење за анализа на податоци, и следствено повторлива анализа на податоци. Главните причини за употребата на `R` авторите на овој текст секојдневно користат `R` и `Rstudio` и поради тоа што има еден куп дополнителни екстензии во оваа средина кои овозможуваат лесно пишување на повторливи технички извештаи, научни трудови (`Rmarkdown` [@R-rmarkdown]), книги (`bookdown` [@R-bookdown]), веб апликации (`shiny` [@R-shiny]), блогови (`blogdown` [@R-blogdown]), итн. Самиот овој текст го пишувамe со помош на [`bookdown`](https://bookdown.org/), што овозможува неверојатно лесно составање и објавивање на подолги текстови (книги) со поглавја, компјутерски код, и математичка нотација со едно копче во `Rstudio`. Заедницата на корисници на `R` е веројатно една од најактивните кога станува збор за повторливи анализи. На пример, организацијата [`rOpenSci`](https://ropensci.org/) комплетно посветена кон поддршка и развој за алатки (`R` библиотеки) за транспарентни, повторливи истражувања. За горе-долу комплетна листа на ресурси поврзани со оваа тема, посетете ја CRAN (Comprehensive R Archive Network) страницата посветена на повторлива наука: [CRAN Task View: Reproducible Research](https://cran.r-project.org/web/views/ReproducibleResearch.html).
Во овој текст немаме намера да навлегуваме длабоко во самото кодирање во `R`. Нашиот приод ќе биде да објасниме одреден принцип со обични зборови и да покажеме како тоа би можело да изгледа со `R` код. Што значи, дури и да не знаете ништо за `R` би можеле да го следите текстот и да ги употребите препораките во вашиот омилен програмски јазик за обработка на податоци.
Во некои делови ќе користиме материјали кои се специфични за `R` и `Rstudio` (на пример `Rmarkdown`) така што можеби ќе има технички детали кои нема да може да директно да ги примените во `Jypiter` тетратка или доколку работите во друг текст едитор (`VScode`). Но повторно, имајќи предвид дека препораките ќе тежнеат кон тоа како да пишуваме код којшто ќе бара минимална интервенција при (ре)анализа на податоци, ваквите аспекти специфични за `Rstudio` ќе бидат сведени на минимум. Генерално, целта ни е да креираме пакет (фолдер) за правење пита што вклучува се што е неопходно за нашиот пријател да може без многу мислење да ја направи истата пита. За да го олесниме овој процес, треба да се стремиме кон тоа да не користиме специјален тарун (софтвер) за да ги сукаме корите, бидејќи таков тарун можеби нема да биде лесно достапен за нашиот пријател. Со други зборови, повторувањето на нашите резултати генерално не треба да зависи од едиторот за текст којшто ние го користиме.
## Инсталација
Во овој прирачник нема многу програмски код кој би требало да го извршите додека читате --- целта секако ни е да не го направиме текстот премногу врзан со `R`. Но сепак, споменуваме некои `R` пакети и фунцкии кои можете да ги инсталирате со следниот код (под претпоставка дека веќе имате инсталирано [`R`](https://cloud.r-project.org/) (со или без [`Rstudio`](https://rstudio.com/products/rstudio/download/) )):
```{r, eval = FALSE}
# Извршете го следниот код
# за да ги инсталирате сите
# пакети користени во овој водич
paketi <- c(
"readr",
"dplyr",
"docopt",
"assertthat",
"devtools",
"usethis",
"prodigenr",
"rmarkdown",
"knitr"
)
install.packages(pkgs = paketi)
```
## Контрола на изворен код: `git`
Контрола на изворниот код, најчесто со `git` (поглавје \@ref(git)), е платформата што ни дава безбедност и слобода во секоја активност поврзана со програмски код, вклучително и при анализирање и ревизирање анализи на податоци. Во основа, `git` e систем за `undo`/`redo` на стероиди, што може да следи две или повеќе верзии на изворниот код (гранки), од два или повеќе компјутери, овозможува соработници од различни локации истовремено да праваt поправки и унапредувања без да си ги пребришуваат промените, и дозволува да се вратите на верзијата од пред два месеци без да ги изгубите меѓувремени промени. Во денешно време е невозможно да се замисли организација која зависи од програмски код за дел од своите фунцкии без употреба на `git` (или друг систем на контрола на изворен код). Стриктно гледано, `git` не е неопходен за правење повторливи анализи. Можно е да напишеме и споделиме скрипта која обработува некои податоците без да ги следиме промените на тој код. Но имајќи во предвид дека при обработка на податоци постојано се соочуваме со одлуки и ревизии, веројатно е ќе се најдеме на брег на река каде што ќе сакаме целиот товар да го спакуваме во водоотпорена вреќа пред да ја преминеме реката. `git` го овозможува токму тоа и скоро сигурно ќе го користите доколку работите на транспарентната анализа на податоци.
## Резиме
Корисно е да ги табулираме овие алатки во споредба со компонентите кои ги воведовме претходно во поглавје \@ref(analogy)):
```{r, echo=FALSE, tidy=FALSE}
analogy <- c("Состојки", "Рецепта", "Алатки", "Кујна")
component <- c("Податоци", "Изворен код", "Зависности на кодот", "Виртуелен контејнер")
tool <- c("csv, MySQL", "R скрипта со git контрола", "dplyr, ggplot2", "docker (во следното издание)")
df <- data.frame(analogy, component, tool)
names(df) <- c("Аналог", "Компонента", "Алатка")
knitr::kable(df, caption = "Компонентите на повторување на анализа со соодветните софтверски алатки.")
```