Поглавје 2 Алатки

2.1 Програмски јазик: R

Генерално земено, во денешно време, доколку анализирате податоци тоа веројатно го правите со помош на Python (Rossum 1995) (и пакети како: pandas (McKinney and others 2011), numpy (Harris et al. 2020), matplotlib (Barrett et al. 2005)) или R (R Core Team 2020) (со пакети како: dplyr (Wickham, François, et al. 2020), data.table (Dowle and Srinivasan 2019), ggplot2 (Wickham, Chang, et al. 2020)). Доколку работите на пониско ниво или вашата работа е поблиска до математика, можеби користите c# за побрз код, но генерално, ретко кога јазик од типот на c# сe користи за интерактивна анализа на податоци, графирање, или машинско учење. Понови, и помалку распространети, јазици како Julia (Bezanson et al. 2017) имаат дополнителни предности со тоа што овозможуваат лесно пишување код во истражувачки сесии како Python или R но со брзина на компутација што е поблиска до c#. Во секој случај, препораките дадени во овој текст се апликабилни без разлика на програмскиот јазик што го користите.

Во овој текст генерално ќе работиме со софтверски алатки од R екосистемот. R е програмски јазик пред се наменет кон статистички анализи, и иако не е најраспространет или најшироко користен, е од особено значење за анализа на податоци, и следствено повторлива анализа на податоци. Главните причини за употребата на R авторите на овој текст секојдневно користат R и Rstudio и поради тоа што има еден куп дополнителни екстензии во оваа средина кои овозможуваат лесно пишување на повторливи технички извештаи, научни трудови (Rmarkdown (Allaire et al. 2020)), книги (bookdown (Xie 2020b)), веб апликации (shiny (Chang et al. 2020)), блогови (blogdown (Xie 2020a)), итн. Самиот овој текст го пишувамe со помош на bookdown, што овозможува неверојатно лесно составање и објавивање на подолги текстови (книги) со поглавја, компјутерски код, и математичка нотација со едно копче во Rstudio. Заедницата на корисници на R е веројатно една од најактивните кога станува збор за повторливи анализи. На пример, организацијата rOpenSci комплетно посветена кон поддршка и развој за алатки (R библиотеки) за транспарентни, повторливи истражувања. За горе-долу комплетна листа на ресурси поврзани со оваа тема, посетете ја CRAN (Comprehensive R Archive Network) страницата посветена на повторлива наука: CRAN Task View: Reproducible Research.

Во овој текст немаме намера да навлегуваме длабоко во самото кодирање во R. Нашиот приод ќе биде да објасниме одреден принцип со обични зборови и да покажеме како тоа би можело да изгледа со R код. Што значи, дури и да не знаете ништо за R би можеле да го следите текстот и да ги употребите препораките во вашиот омилен програмски јазик за обработка на податоци.

Во некои делови ќе користиме материјали кои се специфични за R и Rstudio (на пример Rmarkdown) така што можеби ќе има технички детали кои нема да може да директно да ги примените во Jypiter тетратка или доколку работите во друг текст едитор (VScode). Но повторно, имајќи предвид дека препораките ќе тежнеат кон тоа како да пишуваме код којшто ќе бара минимална интервенција при (ре)анализа на податоци, ваквите аспекти специфични за Rstudio ќе бидат сведени на минимум. Генерално, целта ни е да креираме пакет (фолдер) за правење пита што вклучува се што е неопходно за нашиот пријател да може без многу мислење да ја направи истата пита. За да го олесниме овој процес, треба да се стремиме кон тоа да не користиме специјален тарун (софтвер) за да ги сукаме корите, бидејќи таков тарун можеби нема да биде лесно достапен за нашиот пријател. Со други зборови, повторувањето на нашите резултати генерално не треба да зависи од едиторот за текст којшто ние го користиме.

2.2 Инсталација

Во овој прирачник нема многу програмски код кој би требало да го извршите додека читате — целта секако ни е да не го направиме текстот премногу врзан со R. Но сепак, споменуваме некои R пакети и фунцкии кои можете да ги инсталирате со следниот код (под претпоставка дека веќе имате инсталирано R (со или без Rstudio )):

# Извршете го следниот код
# за да ги инсталирате сите 
# пакети користени во овој водич

paketi <- c(
  "readr",
  "dplyr",
  "docopt",
  "assertthat",
  "devtools",
  "usethis",
  "prodigenr",
  "rmarkdown",
  "knitr"
)

install.packages(pkgs = paketi)

2.3 Контрола на изворен код: git

Контрола на изворниот код, најчесто со git (поглавје 7), е платформата што ни дава безбедност и слобода во секоја активност поврзана со програмски код, вклучително и при анализирање и ревизирање анализи на податоци. Во основа, git e систем за undo/redo на стероиди, што може да следи две или повеќе верзии на изворниот код (гранки), од два или повеќе компјутери, овозможува соработници од различни локации истовремено да праваt поправки и унапредувања без да си ги пребришуваат промените, и дозволува да се вратите на верзијата од пред два месеци без да ги изгубите меѓувремени промени. Во денешно време е невозможно да се замисли организација која зависи од програмски код за дел од своите фунцкии без употреба на git (или друг систем на контрола на изворен код). Стриктно гледано, git не е неопходен за правење повторливи анализи. Можно е да напишеме и споделиме скрипта која обработува некои податоците без да ги следиме промените на тој код. Но имајќи во предвид дека при обработка на податоци постојано се соочуваме со одлуки и ревизии, веројатно е ќе се најдеме на брег на река каде што ќе сакаме целиот товар да го спакуваме во водоотпорена вреќа пред да ја преминеме реката. git го овозможува токму тоа и скоро сигурно ќе го користите доколку работите на транспарентната анализа на податоци.

2.4 Резиме

Корисно е да ги табулираме овие алатки во споредба со компонентите кои ги воведовме претходно во поглавје 1.1):

Table 2.1: Компонентите на повторување на анализа со соодветните софтверски алатки.
Аналог Компонента Алатка
Состојки Податоци csv, MySQL
Рецепта Изворен код R скрипта со git контрола
Алатки Зависности на кодот dplyr, ggplot2
Кујна Виртуелен контејнер docker (во следното издание)

Литература

Allaire, JJ, Yihui Xie, Jonathan McPherson, Javier Luraschi, Kevin Ushey, Aron Atkins, Hadley Wickham, Joe Cheng, Winston Chang, and Richard Iannone. 2020. Rmarkdown: Dynamic Documents for R. https://github.com/rstudio/rmarkdown.

Barrett, Paul, John Hunter, J Todd Miller, J-C Hsu, and Perry Greenfield. 2005. “Matplotlib–a Portable Python Plotting Package.” In Astronomical Data Analysis Software and Systems Xiv, 347:91.

Bezanson, Jeff, Alan Edelman, Stefan Karpinski, and Viral B Shah. 2017. “Julia: A Fresh Approach to Numerical Computing.” SIAM Review 59 (1): 65–98. https://doi.org/10.1137/141000671.

Chang, Winston, Joe Cheng, JJ Allaire, Yihui Xie, and Jonathan McPherson. 2020. Shiny: Web Application Framework for R. http://shiny.rstudio.com.

Dowle, Matt, and Arun Srinivasan. 2019. Data.table: Extension of ‘Data.frame‘. https://CRAN.R-project.org/package=data.table.

Harris, Charles R, K Jarrod Millman, Stéfan J van der Walt, Ralf Gommers, Pauli Virtanen, David Cournapeau, Eric Wieser, et al. 2020. “Array Programming with Numpy.” Nature 585 (7825): 357–62.

McKinney, Wes, and others. 2011. “Pandas: A Foundational Python Library for Data Analysis and Statistics.” Python for High Performance and Scientific Computing 14 (9).

R Core Team. 2020. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.

Rossum, Guido. 1995. “Python Reference Manual.”

Wickham, Hadley, Winston Chang, Lionel Henry, Thomas Lin Pedersen, Kohske Takahashi, Claus Wilke, Kara Woo, Hiroaki Yutani, and Dewey Dunnington. 2020. Ggplot2: Create Elegant Data Visualisations Using the Grammar of Graphics. https://CRAN.R-project.org/package=ggplot2.

Wickham, Hadley, Romain François, Lionel Henry, and Kirill Müller. 2020. Dplyr: A Grammar of Data Manipulation. https://CRAN.R-project.org/package=dplyr.

Xie, Yihui. 2020a. Blogdown: Create Blogs and Websites with R Markdown. https://github.com/rstudio/blogdown.

Xie, Yihui. 2020b. Bookdown: Authoring Books and Technical Documents with R Markdown. https://github.com/rstudio/bookdown.