NMST539, LS 2015/16
Cvičenie 1 (praktické cvičenie 1)
(Základy práce so statistickým softwarom R)
(práca s daty a používanie Sweave)
Na úvod použijeme data mtcars ktoré sú štandardne obsiahnuté v distribúcii Rka.
head(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
dim(mtcars)
## [1] 32 11
summary(mtcars)
## mpg cyl disp hp
## Min. :10.40 Min. :4.000 Min. : 71.1 Min. : 52.0
## 1st Qu.:15.43 1st Qu.:4.000 1st Qu.:120.8 1st Qu.: 96.5
## Median :19.20 Median :6.000 Median :196.3 Median :123.0
## Mean :20.09 Mean :6.188 Mean :230.7 Mean :146.7
## 3rd Qu.:22.80 3rd Qu.:8.000 3rd Qu.:326.0 3rd Qu.:180.0
## Max. :33.90 Max. :8.000 Max. :472.0 Max. :335.0
## drat wt qsec vs
## Min. :2.760 Min. :1.513 Min. :14.50 Min. :0.0000
## 1st Qu.:3.080 1st Qu.:2.581 1st Qu.:16.89 1st Qu.:0.0000
## Median :3.695 Median :3.325 Median :17.71 Median :0.0000
## Mean :3.597 Mean :3.217 Mean :17.85 Mean :0.4375
## 3rd Qu.:3.920 3rd Qu.:3.610 3rd Qu.:18.90 3rd Qu.:1.0000
## Max. :4.930 Max. :5.424 Max. :22.90 Max. :1.0000
## am gear carb
## Min. :0.0000 Min. :3.000 Min. :1.000
## 1st Qu.:0.0000 1st Qu.:3.000 1st Qu.:2.000
## Median :0.0000 Median :4.000 Median :2.000
## Mean :0.4062 Mean :3.688 Mean :2.812
## 3rd Qu.:1.0000 3rd Qu.:4.000 3rd Qu.:4.000
## Max. :1.0000 Max. :5.000 Max. :8.000
Pripadne ‘summary’ pomocou jedného obrázku…
x <- mtcars[order(mtcars$mpg),] # sort by mpg
x$cyl <- factor(x$cyl) # it must be a factor
x$color[x$cyl==4] <- "red"
x$color[x$cyl==6] <- "blue"
x$color[x$cyl==8] <- "darkgreen"
dotchart(x$mpg,labels=row.names(x),cex=.7,groups= x$cyl,
main="Gas Milage for Car Models\ngrouped by cylinder",
xlab="Miles Per Gallon", gcolor="black", color=x$color)
Boxploty
Využijeme niekoľko štandardných grafických nástrojov, ktoré sú k dispozícii v Rku, aby sme získali základnu predstavu a štruktúre dat.
boxplot(mpg ~ cyl, col = "lightblue", xlab = "number of cylinders", ylab = "miles per galon", main= "")
Alebo dokonca zložitejší prípad zobrazujúci spotrebu v závislosti na dvoch rôznych faktoroch (s voľbou notched = TRUE ).
boxplot(mpg ~ cyl * am, col = c(1,2,1,2,1,2), xlab = "number of cylinders", ylab = "miles per galon | automatic transmission", main= "", notch = T)
## Warning in bxp(structure(list(stats = structure(c(21.5, 22.15, 22.8, 23.6,
## : some notches went outside hinges ('box'): maybe set notch=FALSE
Alebo celkom sofistikovany ‘histogram’, ktorý inkorporuje aj odhad hustoty (pomocou príkazu vioplot() z knižnice ‘vioplot’).
library(vioplot)
x1 <- mtcars$mpg[mtcars$cyl==4]
x2 <- mtcars$mpg[mtcars$cyl==6]
x3 <- mtcars$mpg[mtcars$cyl==8]
vioplot(x1, x2, x3, names=c("4 cyl", "6 cyl", "8 cyl"), col="gold")
title("Violin Plots of Miles Per Gallon")
Scatterploty
Inou (pomerne jednoduchou) možnosťou, ako globálne nahliadnúť na veličiny v datach, ktoré nás zaujímajú, je použiť ‘scatterplot matrix’.
pairs(~mpg+disp+drat+wt,data=mtcars,
main="Jednoduchá Scatterplot Matica")
A sofistikovanejšie verzie aj s odhadom hustoty (pomocou knižnice library(car) ).
library(car)
scatterplot.matrix(~mpg+disp+drat+wt|cyl, data=mtcars, main="")
Existujú samozrejme mnohé iné možnosti, ako využiť dostupné grafiké nástroje v Rku a vytvoriť case-specific obrázky, grafy. Hlavný dôraz je pritom kladený na vizuálnu stránku, graf by mal dostatočne názorne zobrazovať podstatnú štruktúru datového súboru.
3D Scatterploty
Ďalšiou možnosťou sú viacrozmerné grafy, limitovaný sme ale ľudskou schopnosťou takéto grafy dobre vnímať. V prípade 3D grafov ale často existuje opodstatnenie na ich využitie. Použijeme príkaz scatterplot3d z knižnice ‘library(scatterplot3d)’.
library(scatterplot3d)
## Warning: package 'scatterplot3d' was built under R version 3.1.3
s3d <-scatterplot3d(wt,disp,mpg, pch=16, highlight.3d=TRUE,
type="h", main="3D Scatterplot")
fit <- lm(mpg ~ wt+disp)
s3d$plane3d(fit)
Parallel Coordinates Plot
Pomocou príkazu parcoord() z knižnice ‘library(MASS)’.
library(MASS)
##
## Attaching package: 'MASS'
##
## The following object is masked from 'package:sm':
##
## muscle
colorVector <- rep("brown", dim(mtcars)[1])
colorVector[am == 0] <- "brown1"
colorVector[cyl == 6] <- "blue4"
colorVector[cyl == 6 & am == 0] <- "blue1"
colorVector[cyl == 4] <- "darkgreen"
colorVector[cyl == 4 & am == 0] <- "green"
parcoord(mtcars, col = colorVector, lty = gear)
A mnoho iných možnosti. Vždy je potrebné zvážiť, aký graf a ktoré grafické nástroje sú ideálne vzhľadom k problému a datovému súboru, ktorý je potrebné analyzovať.
Niekoľko dalších grafických príkazov, ktoré sú štandardne dostupné v Rku sú napr. barplot() , pie() , pie3d() , hist() , plot() a potom niekoľko dalších príkazov, ktoré je možne využiť na ‘dopracovanie’ resp. ‘dokreslenie’ obrázku/grafu, ktorý už existuje: napr. lines() , abline() , points() , text() , legend() , a ďalšie.
## Práca so Sweave Jednoduchý help na používanie Sweave a tiež Knit (ktorým bol vytvorený tento dokument) je na webovej stránke
https://support.rstudio.com/
Stručne a jednoducho je Sweave funkcia v Rku (teda Sweave() ), ktorá integruje Rko a LaTeX. Analogicky je tomu tak v pripade Knit , čo je opäť funkcia v Rku, ktorá integruje (kompiluje) Rko do HTML kódu.
Základom je vytvorenie klasického tex súboru (pre Sweave) a html súboru (pre Knit). Príslušné súbory sa ale neuložia ako tex a html , ale ako Rnw (Sweave) a Rmd (Knit).
Do týchto suborov je potom možne okrem tex kódu a html kódu vkladať aj vhodne označený R kod. Volanim funkcie Sweave("nazov_suboru.Rnw") alebo Knit(nazov_suboru.Rmd) Rko prejde celý dokument, tex a html kód ignoruje, R kód spracuje a výstupom je súbor tex (po použití Sweave), alebo html (po použití Knit). S týmito súbormi je ďalej možné pracovať ako s klasickými tex a html súbormi.
V prípade, že použijeme k práci user-friendly interface (asi jedna z najlepších možnosti je RStudio )
https://www.rstudio.com
tak je možné okamžite vytvárať PDF a HTML súbory priamo z Rnw a Rmd súborov a to pouze stlačením príslučného tlačítka v menu RStudia.
Podrobnejší návod na prácu so Sweave napr. tu:
http://gosset.wharton.upenn.edu/
Pre názornú ukážku ako vkládať R kód do Rnw resp. Rmd súboru, viď nasledujúce obrázky (otvorené v RStudio).
Domáca úloha
(Deadline: druhé cvičenie / 07.03.2016)
Na webovej stránke Doc. Hlávku
http://www1.karlin.mff.cuni.cz/~hlavka/teac.html
je k dispozícii niekoľko dátových súborov, ktoré do Rka stačí načítať pomocou príkazu load(nazov_suboru.rda) .
-
vyberte si jeden dátový súbor a načítajte ho v Rku;
-
vytvorte
Rnw súbor, ktorý bude obsahovať aspoň niekoľko popisných štatistík spočítaných z datového súboru, ktorý ste si zvolili;
-
využijte niektoré grafické nástroje, ktoré sme si ukázali na cvičení a vhodne ich aplikujte na niektoré premenné v zvolenom datovom súbore;
-
pokúste sa vymyslieť vhodný a užitočný graf/obrázok, v ktorom použijete niektoré z grafických príkazov vymenovaných na záver sekcie ‘Parallel Coordinates Plot’;
|