75
R Taller de Introducci´ on Blanca A. Vargas Govea [email protected] cenidet Cuernavaca, Mor., 11 de Noviembre de 2011

R: Taller de Introducción

Embed Size (px)

DESCRIPTION

Taller de Introducción a R

Citation preview

Page 1: R: Taller de Introducción

RTaller de Introduccion

Blanca A. Vargas [email protected]

cenidet

Cuernavaca, Mor., 11 de Noviembre de 2011

Page 2: R: Taller de Introducción

Contenido

1 Introduccion

2 Tipos de datos y funciones basicas

3 Analisis descriptivo

4 GraficasGraficas estandarggplot2

5 Minerıa de datos

6 Otros recursos

2 / 68

Page 3: R: Taller de Introducción

R y yo

Evaluacion de sistemas de recomendacion.

Analisis descriptivo de datos.

Manipulacion de datos: construccion de archivos.

Usuario-item-rating.

Contexto.

Seleccion de atributos.

Scripts para evaluacion.

Graficas.

R es parte de las herramientas, otras: Weka, scripts en Python, Excel.

3 / 68

Page 4: R: Taller de Introducción

¿Que es R?

Lenguaje.

Manipulacion de datos.

Tecnicas estadısticas.

Graficas.

Entorno para proceso estadıstico y visualizacion.

Software libre.

4 / 68

Page 5: R: Taller de Introducción

¿Por que R?: Satisfaccion

http://www.rexeranalytics.com/

5 / 68

Page 6: R: Taller de Introducción

¿Por que R?: Continuidad

6 / 68

Page 7: R: Taller de Introducción

Entonces, ¿R es lo maximo?

7 / 68

Page 8: R: Taller de Introducción

Ejemplo de aplicacion

http://blog.diegovalle.net/

8 / 68

Page 9: R: Taller de Introducción

Minerıa de datos: explicando el pasado

Mapa9 / 68

Page 10: R: Taller de Introducción

Minerıa de datos: prediciendo el futuro

10 / 68

Page 11: R: Taller de Introducción

Taller: exploracion usando R

11 / 68

Page 12: R: Taller de Introducción

¿Por que es importante?

Describe los datos mediante tecnicas estadısticas y graficas.

Da un primer acercamiento a los datos y extrae caracterısticasimportantes que se utilizaran para analisis posteriores.

Util para encontrar errores, ver patrones en los datos, encontrar ygenerar hipotesis.

12 / 68

Page 13: R: Taller de Introducción

Tu turno

13 / 68

Page 14: R: Taller de Introducción

Instalacion

Instalar R [R Development Core Team, 2010] . Disponible paraLinux, MacOS X y Windows:en http://cran.r-project.org/mirrors.html.

Puede usarse en consola o instalar un IDE.Sugerencia: RStudio http://www.rstudio.org/.

El conjunto de datos que se usara es credit-g.csv [Hofmann, 1994].En modo consola:

$ R

14 / 68

Page 15: R: Taller de Introducción

Como obtener ayuda

help.start() # ayuda general

help(nombrefuncion) # detalles sobre la func.

?funcion # igual que el anterior

apropos("solve") # lista funciones que contienen "solve"

example(solve) # muestra un ejemplo del uso de "solve"

help("*")

vignette()

vignette("foo")

data() # muestra los datos disponibles

help(datasetname) # detalles de los datos

15 / 68

Page 16: R: Taller de Introducción

Espacio de trabajo

Es el entorno de tu sesion actual en R e incluye cualquier objeto:vectores, matrices, dataframes, listas, funciones.

Al finalizar la sesion se puede guardar el actual espacio detrabajo para que automaticamente se cargue en la siguiente.

Algunos comandos estandar para definir el espacio de trabajo son lossiguientes:

getwd() # muestra el directorio actual

ls() # lista los objetos en el espacio de trabajo

setwd(mydirectory) # cambia el path a mydirectory

setwd("c:/docs/mydir") # notar / en vez de \ en Windows

setwd("/usr/rob/mydir") # en Linux

history() # despliega los 25 comandos recientes

history(max.show=Inf) # despliega los comandos previos

q() # quit R.

16 / 68

Page 17: R: Taller de Introducción

Paquetes

.libPaths() # obtiene el path

library() # muestra los paquetes instalados

search() # muestra los paquetes cargados

# descarga e instala paquetes del repositorio CRAN

install.packages("nombredelpaquete")

library(package) # carga el paquete

17 / 68

Page 18: R: Taller de Introducción

Scripts

# en Linux

R CMD BATCH [options] my_script.R [outfile]

# en ms windows (ajustar el path a R.exe)

"C:\Program Files\R\R-2.5.0\bin\R.exe" CMD BATCH

--vanilla --slave "c:\my projects\my_script.R"

source("myfile")

sink("record.lis") # la salida va al archivo record.lis

18 / 68

Page 19: R: Taller de Introducción

Tu turno

19 / 68

Page 20: R: Taller de Introducción

Numeros

var1 <- 54

var1

var2 <- sqrt(var1*8)

var2

20 / 68

Page 21: R: Taller de Introducción

Vectores

vector <- c(1,2,3,4,5)

vector[0]

vector[1]

cadena <- "uno"

cadena

lcadena <- c("casa","manzana","uva")

lcadena

vlogico <- c(TRUE,FALSE,TRUE,TRUE,FALSE)

vlogico

21 / 68

Page 22: R: Taller de Introducción

Dataframes

c1 <- c(25,26,27,28)

c2 <- c("Ana", "Lola", "Luis", "Pedro")

c3 <- c(TRUE,TRUE,TRUE,FALSE)

mydata <- data.frame(c1,c2,c3)

names(mydata) <- c("ID","Nombre","Aprobado") #nombres de var.

22 / 68

Page 23: R: Taller de Introducción

Exportar e importar datos

setwd("path_name")

credit <- read.csv(file = "../data/credit-g.csv", sep = ",",

na.strings = "NULL")

23 / 68

Page 24: R: Taller de Introducción

Despliegue de objetos

ls() # lista de objetos

names(credit) # variables de credit

str(credit) # estructura de credit

levels(credit$foreign_worker) # niveles(valores de variable)

dim(credit) # dimensiones (ren x cols)

class(credit) # clase del objeto

credit # objeto

head(credit, n=10)

tail(credit, n=10)

credit$purpose

#purpose

attach(credit) # coloca la bd en el path

purpose

24 / 68

Page 25: R: Taller de Introducción

Renglones, columnas, mınimo y maximo

# Explorando conteo

ren <- nrow(credit) # raw row count

col <- ncol(credit)

# Min y Max

agemin <- min(age,na.rm = TRUE) # min sin NULLS en age

agemax <- max(age,na.rm = TRUE)

ammin <- min(credit_amount,na.rm = TRUE)

ammax <- max(credit_amount,na.rm = TRUE)

25 / 68

Page 26: R: Taller de Introducción

Subconjuntos

# Filtrando por edad

mayor30 <- subset(credit, age >= 30)

renmayor30 <- nrow(mayor30)

renmayor30

en20y40 <- subset(credit, age >= 20 & age <= 40)

ren20y40 <- nrow(en20y40)

ren20y40

26 / 68

Page 27: R: Taller de Introducción

Muestra aleatoria

set.seed(32)

dsmall <- credit[sample(nrow(credit), 10), ]

dsmall

27 / 68

Page 28: R: Taller de Introducción

Rangos

# Filtrando por bins

agebin = cut(age,breaks = c(18,30,40,50,60,70,80))

agebinfile <- data.frame(purpose,credit_amount,

personal_status,housing,job,

age=agebin,class)

agebinfile

28 / 68

Page 29: R: Taller de Introducción

Unicos, frecuencia y orden

# unicos

unicos <- unique(class)

unicos

nhousing <- length(unique(class))

nhousing

# table

mycredit <- table(dsmall$class)

mycredit

mycredit <- table(dsmall$age,dsmall$credit_amount)

mycredit

# ordenar

mycredit <- table(dsmall$housing)

mycredit

mylist <- sort(mycredit,decreasing = TRUE)

mylist

29 / 68

Page 30: R: Taller de Introducción

Construyendo archivos de salida

oframe = data.frame(purpose,credit_amount,personal_status,

housing,job,age=agebin,class)

write.table(oframe, row.names = FALSE,

sep = ";",quote = FALSE,

file="../data/output01_data.csv")

30 / 68

Page 31: R: Taller de Introducción

Tu turno

31 / 68

Page 32: R: Taller de Introducción

Conceptos basicos

32 / 68

Page 33: R: Taller de Introducción

Conceptos basicos

Poblaci onEs el conjunto completo de elementos de nuestro interes.Las caracterısticas de una poblacion son las medidasestadısticas de cada uno de sus elementos.

32 / 68

Page 34: R: Taller de Introducción

Conceptos basicos

Poblaci onEs el conjunto completo de elementos de nuestro interes.Las caracterısticas de una poblacion son las medidasestadısticas de cada uno de sus elementos.

MuestraEs una proporcion de la poblacion. Una muestra poseelas mismas caracterısticas de la poblacion si se obtienealeatoriamente.

32 / 68

Page 35: R: Taller de Introducción

Conceptos basicos

Poblaci onEs el conjunto completo de elementos de nuestro interes.Las caracterısticas de una poblacion son las medidasestadısticas de cada uno de sus elementos.

MuestraEs una proporcion de la poblacion. Una muestra poseelas mismas caracterısticas de la poblacion si se obtienealeatoriamente.

[Bartlein, 2009, Trochim, 2006, Quick, 2009, Wackerly et al., 2002]

32 / 68

Page 36: R: Taller de Introducción

Conceptos basicos

33 / 68

Page 37: R: Taller de Introducción

Conceptos basicos

Estadıstica descriptivaDescribe los datos sin ningun tipo de generalizacion.Ejemplo: porcentaje de menores de edad que utilizanredes sociales.

33 / 68

Page 38: R: Taller de Introducción

Conceptos basicos

Estadıstica descriptivaDescribe los datos sin ningun tipo de generalizacion.Ejemplo: porcentaje de menores de edad que utilizanredes sociales.

Inferencia estadısticaGeneraliza o induce algunas propiedades de la poblaciona partir de la cual los datos se tomaron. Ejemplo: ¿es lasatisfaccion del usuario de sistemas de recomendacionsignificativamente diferente entre hombres y mujeres?

33 / 68

Page 39: R: Taller de Introducción

Conceptos basicos

Variables categ oricasNo aparecen de forma numerica y tienen dos o mascategorıas o valores. Pueden ser nominales y ordinales.Una variable nominal no tiene un orden (e.g., rojo,amarillo, suave), mientras que la ordinal designa un orden(e.g., primer lugar, segundo lugar).

34 / 68

Page 40: R: Taller de Introducción

Conceptos basicos

Variables categ oricasNo aparecen de forma numerica y tienen dos o mascategorıas o valores. Pueden ser nominales y ordinales.Una variable nominal no tiene un orden (e.g., rojo,amarillo, suave), mientras que la ordinal designa un orden(e.g., primer lugar, segundo lugar).

Variables num ericasSon aquellas que pueden tomar cualquier valor dentro deun intervalo finito o infinito.

34 / 68

Page 41: R: Taller de Introducción

Tipos de analisis

Univariableen el cual se exploran las variables o atributos uno poruno.

Bivariableen el cual simultaneamente se analizan dos variablespara conocer la relacion entre ellas, su fuerza o si haydiferencias entre ellas y el significado de las mismas. Elanalisis bivariable puede ser entre dos variablesnumericas, dos variables categoricas y una variablenumerica y una categorica.

35 / 68

Page 42: R: Taller de Introducción

Analisis univariable

Variables categ oricasel analisis exploratorio basicamente es un conteo delnumero de valores de la variable especificada y elporcentaje de valores de la variable especıfica. Seutilizan las graficas de barras y de pay.

Variables num ericasse analizan calculando el mınimo, maximo, media,mediana, moda, rango, los cuantiles, la varianza, ladesviacion estandar, el coeficiente de variacion, laasimetrıa y la curtosis. Se visualizan mediantehistogramas y graficas de bigotes.

36 / 68

Page 43: R: Taller de Introducción

Medidas

Min, max

Media

Mediana

Moda

Rango

Cuantiles (25,50,75)

Varianza

Desviacion estandar

Asimetrıa

Curtosis

37 / 68

Page 44: R: Taller de Introducción

En R

setwd("path_name")

credit <- read.csv(file = "../data/credit-g.csv",sep = ",",

na.strings = "NULL")

attach(credit)

Cargar librerıa moments

install.packages("moments")

library(moments)

38 / 68

Page 45: R: Taller de Introducción

Moda

Mode <- function (x) {

cngtable <- table(x)

n <- length(cngtable)

mode <- as.double(names(sort(cngtable)[n]))

mode

}

moda <- Mode(age)

moda

39 / 68

Page 46: R: Taller de Introducción

Rango

Rng <- function(x) {

rangem <- diff(range(x))

rangem

}

rango <- Rng(age)

rango

40 / 68

Page 47: R: Taller de Introducción

Cuantiles

Quantiles <- function(x) {

quants <- quantile(x)

quantval <- as.double(names(table(quants)))

quantval

}

q <- Quantiles(sort(age))

q

41 / 68

Page 48: R: Taller de Introducción

Media

media <- round(mean(age),2)

media

42 / 68

Page 49: R: Taller de Introducción

Mediana

mediana <- round(median(age),2)

mediana

43 / 68

Page 50: R: Taller de Introducción

Varianza

varianza <- round(var(age),2)

varianza

44 / 68

Page 51: R: Taller de Introducción

Desviacion estandar

sd <- round(sd(age),2)

sd

45 / 68

Page 52: R: Taller de Introducción

Cargando datos

setwd("path")

credit <- read.csv(file = "../data/credit-g.csv", sep = ",",

na.strings = "NULL")

attach(credit)

set.seed(32) # Muestra

dsmall <- credit[sample(nrow(credit), 5), ]

dsmall

46 / 68

Page 53: R: Taller de Introducción

Puntos 1/3

png(filename = "../figures/foo1.png") # puntos

plot(age,credit_amount)

Page 54: R: Taller de Introducción

Puntos 2/3

png(filename = "../figures/foo1b.png")

plot(dsmall$age,type= "o",col="blue")

Page 55: R: Taller de Introducción

Puntos 3/3

png(filename = "../figures/foo1b.png")

plot(dsmall$age,type= "o",col="blue")

Page 56: R: Taller de Introducción

Bigotes

png(filename = "../figures/foo2.png")

boxplot(age)

Un valor atıpico es una observacion numericamente distante del resto de losdatos y puede representar datos erroneos. Se considera un valor atıpico elque se encuentra 1,5 veces esa distancia de uno de esos cuartiles (atıpicoleve) o a 3 veces esa distancia (atıpico extremo).

50 / 68

Page 57: R: Taller de Introducción

Histograma simple 1/2

png(filename = "../figures/foo3.png")

hist(credit_amount)

51 / 68

Page 58: R: Taller de Introducción

Histograma simple 2/2

png(filename = "../figures/foo4.png")

hist(credit_amount, breaks=30, col="blue")

52 / 68

Page 59: R: Taller de Introducción

Barras 1/3

png(filename = "../figures/foo5.png")

counts <- table(housing)

barplot(counts, main="Housing")

53 / 68

Page 60: R: Taller de Introducción

Barras 2/3

png(filename = "../figures/foo6.png")

counts <- table(class)

barplot(counts, main="Personal status", horiz=TRUE)

54 / 68

Page 61: R: Taller de Introducción

Barras 3/3

png(filename = "../figures/foo6a.png")

myfile <- data.frame(dsmall$age,dsmall$residence_since,

dsmall$duration)

barplot(as.matrix(myfile), main="Credito", ylab= "Total",

beside=TRUE, col=rainbow(5), cex.names=0.9)

legend("topright", c("e1","e2","e3","e4","e5"), bty="n",

fill=rainbow(5))

55 / 68

Page 62: R: Taller de Introducción

Matriz de dispersion

png(filename = "../figures/foo9.png")

pairs(~credit_amount+age+existing_credits+num_dependents,data=cred

main="Simple Scatterplot Matrix")

56 / 68

Page 63: R: Taller de Introducción

Bigotes

d <- ggplot(data = credit, aes(x = credit_amount, y = age))

d + geom_boxplot(outlier.shape = 4) + theme_bw() +

scale_y_continuous(breaks = seq(0, 100, by = 5))

ggsave(file = "../figures/gg-boxplot.eps", width=5, height=5)

credit_amount

age

20

25

30

35

40

45

50

55

60

65

70

75

5000 10000 15000

(o) gg-boxplot57 / 68

Page 64: R: Taller de Introducción

Barras 1/2

d <- ggplot(data = credit, aes(age))

d + geom_bar() + theme_bw()

ggsave(file = "../figures/gg-foo10.eps", width=5, height=5)

age

coun

t

0

20

40

60

80

20 30 40 50 60 70

58 / 68

Page 65: R: Taller de Introducción

Barras 2/2

d <- ggplot(data = credit, aes(age))

d + geom_bar(binwidth = 0.1) + theme_bw()

ggsave(file = "../figures/gg-foo10a.eps", width=5, height=5)

age

coun

t

0

10

20

30

40

50

20 30 40 50 60 70

59 / 68

Page 66: R: Taller de Introducción

Histograma, media y DS

d <- ggplot(data = credit, aes(age))

d + geom_histogram(aes(y = ..count..),binwidth = 0.5) +

theme_bw() +

scale_x_continuous(breaks = c(media)) +

geom_vline(xintercept = media, size = 0.5, colour = "magenta")

geom_vline(xintercept = media+sd, size = 0.5, colour = "blue",

geom_vline(xintercept = media-sd, size = 0.5, colour = "blue",

ggsave(file = "../figures/gg-foo11.eps", width=5, height=5)

age

coun

t

0

10

20

30

40

50

35.55

60 / 68

Page 67: R: Taller de Introducción

Cuts

agebin = cut(age,breaks = c(18,30,40,50,60,70,80))

agebinfile <- data.frame(purpose,credit_amount,personal_

status,housing,job,age=agebin,class)

agebinfile

d <- ggplot(data = agebinfile, aes(age))

d + stat_bin(aes(ymax = ..count..), geom = "bar") + theme_bw()

ggsave(file = "../figures/gg-foo12.eps", width=5, height=5)

age

coun

t

0

100

200

300

400

(18,30] (30,40] (40,50] (50,60] (60,70] (70,80] 61 / 68

Page 68: R: Taller de Introducción

Cuts - theme bw()

agebin = cut(age,breaks = c(18,30,40,50,60,70,80))

agebinfile <- data.frame(purpose,credit_amount,personal_

status,housing,job,age=agebin,class)

agebinfile

d <- ggplot(data = agebinfile, aes(age))

d + stat_bin(aes(ymax = ..count..), geom = "bar") + theme_bw()

ggsave(file = "../figures/gg-foo12.eps", width=5, height=5)

age

coun

t

0

100

200

300

400

(18,30] (30,40] (40,50] (50,60] (60,70] (70,80] 62 / 68

Page 69: R: Taller de Introducción

Eliminando theme bw()

d <- ggplot(credit, aes(housing))

d + geom_bar()

ggsave(file = "../figures/gg-foo13.eps", width=5, height=5)

housing

coun

t

0

100

200

300

400

500

600

700

for free own rent

63 / 68

Page 70: R: Taller de Introducción

fill

d <- ggplot(credit, aes(age,fill=housing))

d + geom_bar()

ggsave(file = "../figures/gg-foo14.eps", width=5, height=5)

age

coun

t

0

20

40

60

80

20 30 40 50 60 70

housing

for free

own

rent

64 / 68

Page 71: R: Taller de Introducción

Facetas

d <- ggplot(credit, aes(age))

d + geom_bar()+facet_wrap(~ housing)

ggsave(file = "../figures/gg-foo15.eps", width=5, height=5)

age

coun

t 0

20

40

60

0

20

40

60

for free

rent

20 30 40 50 60 70

own

20 30 40 50 60 70

65 / 68

Page 72: R: Taller de Introducción

Minerıa de datos: librerıas

Clasificacion.Regresion lineal en R.Particionamiento recursivo y arboles de regresionClasificacion y arboles de regresionnnet: redes neuronales feed-forward

Agrupacion.Agrupacion en R

Reglas de asociacion.arules: Reglas de asociacion

Seleccion de atributos.FSelector: Selecting attributesCaret: librerıas diversas

Minerıa de textos.tm: librerıa para minerıa de texto

66 / 68

Page 74: R: Taller de Introducción

R Taller de Introduccion is licensed under a

Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.

68 / 68

Page 75: R: Taller de Introducción

Bartlein, P. (2009).

Data analysis and visualization.http://geography.uoregon.edu/bartlein/old_courses/geog414f03/lectures/lec04.htm.

Hofmann, H. (1994).

UCI machine learning repository.http://bit.ly/laDAFC.

Quick, J. M. (2009).

R tutorial series: Summary and descriptive statistics.http://www.r-bloggers.com/r-tutorial-series-summary-and-descriptive-statistics/.

R Development Core Team (2010).

R: A language and environment for statistical computing.http://www.R-project.org.

Trochim, W. M. (2006).

Research methods knowledge base.http://geography.uoregon.edu/bartlein/old_courses/geog414f03/lectures/lec04.htm.

Wackerly, D. D., Scheaffer, R. L., & Mendenhall, W. (2002).

Estadıstica matematica con aplicaciones.Mexico, 6 edition.

68 / 68