Statisztika egyszerűen

Mágikus jelek nélkül...

Diagramkészítés lustáknak – A „Six Sigma in R” sorozat újabb gyöngyszeme

2021. február 12. 08:00 - glantos70

Six Sigma in R

Az előző néhány hét cikkei eléggé sok energiát kivettek belőlem, a Bayes-i keresési algoritmus (A USS Scorpion nyomában – A Bayes-i keresési algoritmusok alkalmazása) bemutatása nagyon szép téma, de az R kód részletes ismertetése (Szimat, szimat …! – Bayes-i keresési algoritmus R-ben - 1. rész) azért kicsit sokat kivett belőlem. Ezért most egy fokkal könnyedebb témát választottam a hétre, úgy döntöttem, hogy folytatom a korábban megkezdett Six Sigma in R sorozatot. Mivel ráakadtam egy egészen jól használható interaktív diagramkészítő csomagra, most ezt fogom kipróbálni. Unboxing, ahogy én szoktam...

Amikor először találkozom egy ismeretlen adatsorral, két dologgal szoktam kezdeni. Az egyik, hogy leíró statisztikai elemzéssel („Six Sigma in R” sorozat – Leíró statisztika R-ben) megvizsgálom az adatok legfontosabb tulajdonságait, a másik pedig az, hogy többféle módon is ábrázolom az adatokat, mert ugye egy kép többet mond ezer szónál. Sajnos, ahogy azt már korábban is láthattuk, az R nem igazán felhasználóbarát, ha csak néhány gyors adatelemzést szeretnénk elvégezni. Márpedig kinek van arra ideje, hogy órákig programozgasson csak azért, hogy megnézzen néhány diagramot. Emiatt felcsillant a szemem, ahogy a neten böngészgetve egyszer csak ráakadtam az esquisse nevű R csomagra, amely egy (majdnem) teljesen interaktív diagramkészítő eszköz. Ezt ki kell próbálnom!

Az esquisse csomagot a szokásos módon lehet telepíteni az RStudio csomagtelepítő menüjéből, illetve parancssorból az

install.packages("esquisse")

parancs segítségével. Szerencsére a csomag csont nélkül feltelepült, nem jött vissza semmilyen hibaüzenet. A csomagot a

library(esquisse)

parancs segítségével lehet betölteni. A betöltéskor semmilyen visszajelzést sem ad az R, úgyhogy csak a hibaüzenet hiányából és a kurzor újbóli megjelenéséből lehet következtetni arra, hogy a betöltés sikeres volt. A valódi változást az jelenti, amikor elindítjuk az esquisser() parancsot. Az esquisser() parancsot szokásosan különféle paraméterekkel is el lehet indítani. Az én favoritom az alábbi változat.

esquisser(viewer = "browser")

Ennek az az előnye, hogy nem egy RStudio ablakban, hanem az alapértelmezett böngészőben fog megnyílni az interaktív felület. Az RStudio ablakos megoldás nekem nem igazán jött be, az ablak elrendezése sem volt jó és például az adattábla választó ablak sem működött megfelelően, a böngészőben viszont tökéletes volt az élmény. Legelőször egy külön ablak jelenik meg, ahol az adatábrázoláshoz használatos adattáblát lehet betölteni.

A történet érdekessége, hogy itt csak néhány előre beállított adattáblából lehet választani, gondolom a kipróbálás kedvéért. Persze saját adattáblát is meg lehet nyitni, csak nem itt és nem így. Az fentiektől eltérő adattáblát az esquisser() parancsban zárójelben kell megadni.

esquisser(viewer = "browser", data = "mpg")

Itt csak arra kell vigyázni, hogy például az mpg nevű adattábla a ggplot2 csomag része. Ha az nincs betöltve, akkor azt a

library(ggplot2)

parancs használatával be kell tölteni. De onnantól simán megy a dolog, ha így indítjuk el az esquisser()-t, akkor nem jelenik meg a fenti ablak, hanem egyből a diagramszerkesztő oldal nyílik meg. Visszatérve az adatbeviteli ablakra, a középső részen kiválaszthatjuk, hogy az adattábla melyik mezőit akarjuk betölteni, …

… az alsó részen pedig a betöltendő mezők adattípusát (szám, szöveg, stb.) állíthatjuk be.

Hasznos apróság, hogy az adattábla mezőinek típusát az esquisse színkóddal jelöli. A piros szín diszkrét, a kék folytonos változót jelöl, a szürke az időváltozókat, a zöld pedig az egyedi azonosítókat jelöli. A jelmagyarázat az ablak közepe felé van.

Ez az ablak később is bármikor megnyitható, így a betöltött adatokat bármikor átalakíthatjuk az igényeinknek megfelelően.

Amikor elérkezünk a diagram szerkesztő felületre, akkor a következő kép tárul elénk a böngészőben. (Arra ügyelnünk kell, hogy amikor a böngészőben dolgozunk, akkor az RStudio termináljában nem tudunk dolgozni, azaz R parancsokat nem tudunk futtatni, mert az RStudio ilyenkor a böngészőre „figyel”… Azt mondjuk nem próbáltam, hogy megnyitok egyszerre két RStudio-t, az egyikben futtatom az esquisser-t, a másikban még dolgozom az R-rel. Lehet, hogy működik, lehet, hogy nem...)

Felső sötétkék sáv bal szélén lehet újra megnyitni az adatokról szóló ablakot, amiről fentebb már írtam. Alatta a sárga körre kattintva lehet kiválasztani a diagram típusát. Mellette vannak a betöltött adattábla mezői színkódolva. Az alattuk lévő üres cellákba lehet egérrel áthúzgálni az egyes mezőket, így szerkeszthető össze a diagram, amely a képernyő közepén jelenik meg. Az alsó sorban újabb beállítási lehetőségeket láthatunk, amelyekből néhányat be is fogok majd mutatni a továbbiakban.

A felhasznált adattábla neve mpg és 38 darab 1998 és 2008 között gyártott különféle autó típus fogyasztási adatait tartalmazza. Az adatokat az EPA az Egyesült Államok Környezetvédelmi Ügynöksége (United States Environmental Protection Agency – EPA) tette közzé a https://fueleconomy.gov/ oldalon. Az adatsor 11 oszlopot (változót) és 234 sort tartalmaz. Az adattábla mezői a következő információkat tartalmazzák:

  • manufacturer – a gépkocsi gyártója (nissan, subaru, …)
  • model - a jármű modelljének a neve (corvette, mustang, civic, …)
  • displ – a motor hengerűrtartalma
  • year - a modell éve
  • cyl – a hengerek száma – 4, 5, 6, 8
  • trans – a váltó típusa (manuális vagy automata, különféle típusok)
  • drv  - a meghajtás típusa (f = elsőkerék meghajtás (front wheel drive), r = hátsókerék meghajtás (rear wheel drive), 4 = négykerék meghajtás (4wd))
  • cty – városi fogyasztás mérföld per gallonban
  • hwy – fogyasztás autópályán mérföld per gallonban
  • fl – üzemanyag típusa (fuel type: c - cng, d - diesel, e - ethanol, p - petrol vagy r
  • class – az autó osztálya (compact, suv, midsize, …)

Akkor kezdjük egy egyszerűbb példával. Ha a class mezőt áthúzzuk az x területre, akkor egy egyszerű oszlopdiagramot kapunk, amely az y tengelyen megmutatja, hogy hány SUV, compact, kétüléses, pickup, stb. van az adatbázisban.

Ha a drv mezőt áthúzzuk a Fill területre, akkor az oszlopokon belül látható lesz az is, hogy az egyes osztályokon belül mennyi az első-, hátsó-, és összkerék hajtású modellek száma. A jobb oldalon látható a színkódok jelentése.

Ha inkább arra lennék kíváncsi, hogy az egyes osztályokba tartozó kocsiknak mennyi a fogyasztása városban, akkor a drv mezőt visszahúzom a többi közé és a cty mezőt húzom be az y osztályba. Az esquisser() rögtön átvált a legoptimálisabb diagramtípusra, azaz dobozdiagramra. Figyeljük meg, hogy az x-tengelyen egy diszkrét (piros színű) változó van, míg az y-tengelyen egy folytonos (kék színű). Az esquisser() ez alapján automatikusan eldönti, hogy milyen típusú diagram alkalmazható az adatokra az adott elrendezésben. Meg lehet próbálni másikat is kiválasztani, de amit nem lehet, azt a program alapból nem engedi kiválasztani.

Az adatokat szűrni is lehet. Ha mondjuk csak a Nissan modelljeire vagyunk kíváncsiak, akkor alul a Data fülre rákattintva el tudjuk távolítani a nem kívánt gyártókat, és megjelennek a Nissan adatai. Ha később szükségünk van még más gyártók modelljeire, akkor azt vissza is lehet tenni.

A diagram ennek megfelelően így változott meg.

Például hasonlítsuk össze a Nissan és a Dodge fogyasztási adatait. A diagramból kiderül, hogy a Nissan járművei egyértelműen nagyobb távolságot tudnak megtenni egy gallon benzinnel, mint a Dodge-éi.

… és itt az eredmény.

Kíváncsi vagyok arra, hogy vajon hány automata és manuális váltós autója van a Nissan-nak és a Dodge-nak. Ezért a trans mezőt áthúztam a FacetColumn területre, illetve átváltottam oszlopdiagramra. Itt azért vigyázzunk, mert noha az y területen otthagytam a cty mezőt, az y tengelyen az adott kategóriába tartozó járművek darabszáma fog megjelenni!

Ha viszont visszaváltok a boxplot diagramra, akkor újra a fogyasztási adatok kerülnek elő. Mivel azonban a cikk célja nem az adatelemzés mélységeiben való elmélyülés, csak az esquisser() lehetőségeinek bemutatása, ezért most ezt itt abbahagyom.

A diagramnak címet, a tengelyeknek nevet is tudunk adni. Alul a Labels and Titles menüben a megfelelő mezőket kitöltve szépen értelmezhetővé lehet tenni a diagramot:

És ez jelenik meg a feliratok és a címkék beállítása után…

Ha elkészültünk a kívánt diagrammal, akkor az eredményt exportálhatjuk is.

Egyrészt az esquisser() létrehozza a diagram megrajzolásához szükséges R kódot. Ezt kimásolhatjuk és beilleszthetjük R-be vagy az RStudio programban elkészített szkriptfile-ba. Ezenkívül elmenthetjük a diagramot .png formátumúképként vagy powerpoint prezentációként is, de ehhez még az officer és az rvg csomagok telepítésére és elindítására is szükség lesz. Ha előre tudjuk, hogy powerpoint prezentációként is el akarjuk menteni a munkánkat, akkor ezt a két csomagot is érdemes még azelőtt betölteni az RStudio-ba, mielőtt elindítjuk az esquisser()-t, mert utólag már ezt nem tudjuk elvégezi. Ha az RStudio-ban leállítjuk a „figyelést”, azzal megszakítjuk a kapcsolatot az RStudio és a böngésző között, ehhez később már nem tudunk visszatérni és az addigi munkánk elvész. A végeredmény powerpoint-ban egyébként így néz ki.

Összegzés:

Nem biztos, hogy sikerült az esquisse csomag összes funkcióját maradéktalanul bemutatni, de azt hiszem a cikkben foglaltak talán elegendőek lesznek arra, hogy ezután felfedezd magadnak ezt a nagyszerű interaktív csomagot. Mondjuk a ggplot2 grafikai nyelvének legalább alapszintű ismerete még mindig előnyt jelent a kezelőeszközök jobb megértéséhez, de így már legalább nem szükséges előfeltétel. Az esquisse arra mindenképpen alkalmas, hogy az adatokkal való ismerkedés során néhány diagram segítségével gyorsan képet kapjunk az adathalmaz tartalmáról, ezek ismeretében pedig már esetleg tovább léphetünk a bonyolultabb diagramok felé. Bár sok esetben többre nincs is szükség... Amire viszont érdemes odafigyelni, hogy a vizsgált adattáblának sajnos meg kell felelnie bizonyos követelményeknek, azt az R-zsargon úgy hívja, hogy a táblának "tidy"-nak, azaz rendezettnek kell lennie. Erről most nem írtam részletesen, mert ez megint egy hosszabb lélegzetű történet...

Őszintén szólva most nagyot léptem előre abban az irányban, hogy megszeressem az R-t, a szimpátia eddig nem volt túlfűtött a részemről. Érdemes játszadozni az esquisse-el, mert azoknak, akik gyorsan és rugalmasan ki akarnak olvasni valamit az adatokból, ilyen eszközökre van szükségük. Én biztosan fogom még használni…

6 komment

A bejegyzés trackback címe:

https://statisztikaegyszeruen.blog.hu/api/trackback/id/tr9616345260

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

fordulo_bogyo 2021.02.18. 09:05:28

Naiv kerdes: milyen operacios rendszer alatt dolgozol? Valamiert linuxra tippelek, nem windowsra, nem IOS-re.
Jol gondolom?

glantos70 2021.02.18. 09:13:26

@fordulo_bogyo: Ez érdekes. Windows alatt dolgozom, de az R-t és az RStudio-t portable változatban használom. Az R változatszáma 3.6.3 (2020.02.29) az RStudio-é pedig 1.4.1103 "Wax Begonia" (458706c3, 2021-01-07) for Windows. Miért kérdezed?

Az esquisse programcsomag az első link, amit megadtál.
cran.r-project.org/web/packages/esquisse/readme/README.html

Bocs, hogy nem linkeltem be, valószínűleg tényleg illendő lett volna. Vagy csak a nem gyakran használt csomagok esetében kellene ezt megtenni? Mert ez is simán a CRAN szerveréről installálható, nem kell hozzá másik repository-t keresni...

fordulo_bogyo 2021.02.19. 14:22:23

@glantos70: Bocs. elkerulte a figyelmemet, hogy R alatt hasznalod ezt a csomagot, a paracssoros telepites es inditas az annyira nem windows jellegu.
Ha most jol ertem, akkor ez a R environmentben egy "plugin"?
Azert ertetlenkedek, mert nem ismerem az R-t, most arra gondolok, hogy az olyasmi lehet, mint a Matlab, amit valamilyen szinten hasznaltam.

glantos70 2021.02.19. 14:35:15

@fordulo_bogyo: Az egész R - RStudio kombó nem windows-os. Az R egy régi programnyelvre épül, amelyet S-nek hívtak annó (nagyon fantáziadús). Egy volt tanítványom azt mondta, hogy az RStudio felépítése hasonlít a Matlab-ra, de én meg azt nem ismerem, úgyhogy fogalmam sincs, hogy mennyire van igaza... :-)

Az egészet úgy képzeld el, mintha Turbo Pascal-ban programoznál. Van egy konzol, van egy ablak a változóknak, egy a szkripteknek, egy meg a diagramoknak és a csomagoknak. Megvannak a szokásos programozási eszközök is, van debug, be tudsz tenni töréspontokat, tudod figyelni a változók értékeit, stb. Pár dolgot el tudsz intézni windows-osan menükből meg ikonokból, de azért ez mégiscsak egy programozási nyelv. A csomagok telepítése meg olyan Python-os. Igazából a csomagok miatt tud az R ennyire sokoldalú lenni, bárki fejleszthet hozzá szinte bármit.

Létezik egy R Commander nevű kezelőfelület is az R-hez, de nekem az nem igazán jött be. A cégnél Minitab-ot használunk, ami fizetős, viszont cserébe van egy felhasználóbarát kezelőfelület, ami ugyan kevésbé testreszabható, viszont ha tudod mit csinálsz, akkor pillanatok alatt meg tudsz csinálni egy csomó dolgot.
süti beállítások módosítása