R, Rstudio, Tidyverse

Pokud čtete tuto knihu, jste pravděpodobně odhodlaní vrhnout se do světa analýzy dat. Nováčkům ve světě R ale hrozí při první návštěvě jisté zmatení. Zničehonic se na ně ze všech stran začne valit řada nových pojmů, ve kterých se může nejeden začátečník ztratit. To je zcela pochopitelné, R existuje již více než 20 let a za tu dobu se kolem něj rozrostl bohatý ekosystém rozšíření, organizací a akcí. Předtím, než se pustíme do detailů, si proto představíme tři pojmy, které by všichni uživatelé R měli znát: R, Rstudio a Tidyverse.

R

R je volně šiřitelný, otevřený programovací jazyk zaměřený specificky na vizualizaci a statistickou analýzu dat. Jeho počátky sahají do poloviny 90. let minulého století, kdy začal být vytvářen dvěma pracovníky Aucklandské university, Rossem Ihakem a Robertem Gentlemanem. Od té doby se stal stal jedním z nejpopulárnějších jazyků pro analýzu dat a drží se mezi nejpopulárnějšími jazyky vůbec. R je široce využívané jak pro akademický výzkum, tak v komerční i veřejné sféře.

Zatímco funkčnost jiných statistické programů, jako například SPSS nebo Excel, je omezená na autory předpřipravené nástroje a postupy, možnosti R jsou téměř neomezené. Kromě základních i pokročilých statistických analýz je možné R využít k psaní knih, článků, internetových stránek (včetně této) nebo webových aplikací. R je také využíváno řadou předních statistiků, jejichž práce se týká i sociálněvědního výzkumu.

PoznámkaČeská stopa v R

Přestože jeho počátky sahají na Nový Zéland, do historie R se významně zapsalo i několik rodáků z Česka. Jedním ze současných členů hlavního vývojářského týmu je Šimon Urbánek, který se mimo jiné zasloužil o vytvoření R verze pro MacOS. Verzi pro Windows, a nejen ji, spravuje druhý český člen týmu, Tomáš Kalibera. Neobyčejně velkou měrou přispěli k rozvoji R i Jan Vítek a Martin Modrák.

Cenou za široké možnosti R jsou vyšší nároky na jeho osvojení, jelikož na rozdíl od programů s grafickým rozhraním vyžaduje práce s R alespoň základní znalosti programování. Naštěstí již dnes existuje řada zdrojů a komunit, které mohou s tímto problémem pomoci. Pro inspiraci můžeme zmínit blog R-bloggers, skupinu Rladies nebo komunitní projekt Tidytuesday.

Rstudio

Dávno už jsou pryč časy, kdy práce s programovacími jazyky znamenala psaní kódu v jednoduché příkazové řádce (nebo nedej bože prorážení dírkovacích štítků!). Dnešní uživatelé mohou využívat sofistikovaných programů, jejich cílem je usnadnit každodenní práci. Těmto programům se říká integrované vývojářské prostředí (Integrated Development Environments) a jasně nejpopulárnějším IDE pro R je v současné době Rstudio.

Rstudio, vyvíjené společností Posit, bude kontrolovat váš kód, napovídat vám jména funkcí, exportovat grafy a mnoho dalšího. Nejedná se samozřejmě o jediné vývojářským prostředí pro R (konkurenty jsou například VScode, Vim nebo ESS Emacs), představuje však výbornou rovnováhu mezi výkonem a uživatelskou přívětivostí a skvělou volbou pro všechny nováčky.

PoznámkaPositron jako nástupce Rstudia?

Rstudio je léty prověřené IDE, na které spolehá velká část Rkovské komunity. Má však i jistá omezení. Nehodí se například pro další populární jazyky. Jeho autoři proto v roce 2024 představili nové IDE jménem Positron. Positron podporuje širší paletu programovacích jazyků a obsahuje další vychytávky, jako možnost rychle zobrazit sumarizační statistiky pro všechny proměnné. Zatím je ale dostupný pouze v beta verzi a jeho autoři usilovně pracují na jeho rozvoji. Většina z vás proto zatím doporučujeme držet se Rstudia, které je pro naše potřeby zcela dostatečné. Positron využíjí primárně ti, kteří do Rka přichází z Pythonu.

Tidyverse

Přestože jsou možnosti R nesmírně široké, zdaleka ne všechny nástroje vám budou k dispozici hned po jeho instalaci. Většina rozšíření pro R je distribuovaná formou balíčků (packages), které jsou volně dostupné ke stažení.

Balíčků, které do R přináší nové funkce, dnes existují desítky tisíc. Jednou z nejpopulárnějších rodin takových balíčků je Tidyverse, která rozšiřuje možnosti R zejména v oblastech manipulace a vizualizace dat. Mnoho úkonů, které se v základním R provádí velmi zdlouhavě nebo krkolomně, jsou v Tidyverse záležitostí na jeden dva řádky. Jednotlivé balíčky jsou také designovány tak, aby si spolu navzájem rozuměli a využívali identickou syntax. Stinnou stránkou živelné popularity R je, že řada jeho vývojářů má značně rozdílné představy o psání počítačového kódu. To vede k mnoha různým konvencím, které jsou pro běžného uživatele matoucí (např. mají funkce začínat velkým, nebo malým písmenem? mají se slova oddělovat potržítkem, nebo tečkou?). Všechny balíčky Tidyverse se drží jednotného stylu a je proto velice jednoduché jejich funkce kombinovat bez zbytečných zmatků. Jedná se tak o další způsob, jak ulehčit ponoření do R.

Rodina Tidyverse obsahuje osm hlavních balíčků. Není třeba si je pamatovat nazpaměť, budou nám vždy dostupné. Vyplatí se ale o nich alespoň slyšet, abychom věděli, kde hledat pomoc a nápovědu, pokud se někde zasekneme.

dplyr je balíček sloužící pro manipulaci s daty. Budeme ho používat pro čištění, transformaci a sumarizaci našich proměnných. Jeho nejvíce využívanými funkcemi jsou summarise() a mutate().

Jak již název napovídá, ggplot2 slouží k vizualizaci data a lze s ním hravě vytvářet jednoduché i komplexní grafy. Hlavní funkcí tohoto balíčku je ggplot().

Cílem balíčku tidyr je co nejvíce ulehčit čištění dat. Za tímto účelem obsahuje funkce pro práci s chybějícími hodnotami jako drop_na() nebo převádění dat mezi širokým a dlouhým formátem pomocí pivot_longer() a pivot_wider().

Většina dat, se kterými se v praxi setkáme, mají podobu tabulky, v Rkovském žargonu dataframu. A právě balíček tibble slouží k jejich efektivnímu zobrazování.

Balíček stringr slouží pro práci s nestruktorovaným textem, ať už se jedná o knihy, záznamy rozhovorů nebo odpovědi na otevřené otázky z dotazníkových šetření. Mezi příklady funkcí patří str_detect(), pro nacházení slov a slovních spojení, nebo str_replace() pro jejich nahrazení.

forcats slouží k práci se standardizovaným textem. O co se jedná? Zkrátka o kategoriální proměnné, ať už jde o likertovské položky, region bydliště nebo pohlaví.

Balíček readr nám bude pomáhat s importem a exportem dat, ať už se jedná o CSV formát pomocí funkce read_csv() nebo o Rkovský formát RDS pomocí read_rds().

Čas od času se dostaneme do situací, kdy budeme potřebovat komplexnější programovaní. Jak například říct Rku, aby vytvořilo graf pro všechny proměnné najednou? Právě k tomu slouží funkce balíčku purrr, jakou je třeba map().

Je nutné zmínit, že využívání Tidyverse není striktně nutné. Tidyverse vzniklo dlouho po vzniku samotného R a do dneška existuje mnoho uživatelů, pro které představuje základní R (nebo jiné balíčky pro analýzu dat) ideální pracovní prostředí. Nicméně, stejně jako u Rstudia, Tidyverse představuje skvělou rovnováhu mezi uživatelskou přívětivostí a flexibilitou práce.

Proč ne grafická rozhraní?

Nakonec si dovolíme krátce vyjádřit k tématu, pravidelně objevuje vždy, když dojde na výuku analýzy dat.

Na začátku jsme zmínili, že R je programovací jazyk a pro práci s ním je nutné znát základy programování. To striktně řečeno není úplně pravda. Protože je v R možné udělat téměř cokoliv, je možné v něm vytvořit i grafické rozhraní, a tím práci s ním přiblížit “klikacímu” softwaru jako je SPSS. Těchto rozhraní již dnes existuje celá řada, mezi nejpopulárnější se řadí například Jamovi a JASP. S využitím těchto rozhraní je možné analýzy “naklikávat” místo psaní programovacího kódu, čímž se výrazně snižuje vstupní bariéra. Grafická rozhraní ale podle našeho názoru mají tři velké slabiny, které dříve nebo později převáží nad jakýmikoliv potencionálními výhodami:

  • Grafická rozhraní nikdy nepokryjí vše, co R nabízí a co potřebujeme: Přestože většina grafických rozhraní nabízí široké možnosti pro jednoduchou manipulaci s daty a základní statistické postupy, žádné z nich nepokrývá všechny potřeby průměrného výzkumníka, což platí zvláště pro pokročilejší analýzy. Jinak řečeno, ten kdo se rozhodne vážněji zabývat kvantitativní analýzou, se dříve nebo později alespoň lehkému programování nevyhne. A čas do té doby strávený v grafických rozhraních mu v tu chvíli nebude příliš užitečný.

  • Grafické rozhraní jsou časově neefektivní: Nedokonalá nabídka není jediným problémem grafických rozhraní. I kdyby v nich byly obsaženy všechny nezbytné funkce, práce s grafickými rozhraními bude v dlouhodobém horizontu vždy pomalejší, než psaní kódů. Jedním z největších výhod, které počítače přinášejí, je možnost automatizace. Proč ručně vytvářet tucet kontingenčních tabulek nebo kontrolovat desítky proměnných, pokud to může počítač udělat za nás? Práce se skriptem nám umožní zadat počítači příkaz a nechat ho, ať ho sám provede na jakkoliv velkém počtu případů. Takovéto efektivity grafická rozhraní zkrátka nikdy nedosáhnou.

  • Klikání svádí k nereprodukovatelnosti: Počítačový skript není jen způsob, jak počítači říkat, co má dělat. Jedná se zároveň o detailní záznam celé naší práce. Kdokoliv, ať už mi sami nebo lidé se zájmem o naši práci, se mohou v budoucnu podívat, jak jsme v analýze postupovali a případně se naší prací inspirovat nebo ji vylepšit. To je nejen skvělý nástroj pro ušetření času, ale i cesta ke zkvalitnění vědeckého výzkumu jako takového. Práce v grafickém rozhraní bohužel řadu lidí svádí k rychlému naklikávání, po kterém často nezůstane nic kromě řady pochybných výsledků, jejichž původem si není nikdo jistý.