r: taller de introducción

Post on 04-Jul-2015

998 Views

Category:

Education

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Taller de Introducción a R

TRANSCRIPT

RTaller de Introduccion

Blanca A. Vargas Goveablanca.vg@gmail.com

cenidet

Cuernavaca, Mor., 11 de Noviembre de 2011

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

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

¿Que es R?

Lenguaje.

Manipulacion de datos.

Tecnicas estadısticas.

Graficas.

Entorno para proceso estadıstico y visualizacion.

Software libre.

4 / 68

¿Por que R?: Satisfaccion

http://www.rexeranalytics.com/

5 / 68

¿Por que R?: Continuidad

6 / 68

Entonces, ¿R es lo maximo?

7 / 68

Ejemplo de aplicacion

http://blog.diegovalle.net/

8 / 68

Minerıa de datos: explicando el pasado

Mapa9 / 68

Minerıa de datos: prediciendo el futuro

10 / 68

Taller: exploracion usando R

11 / 68

¿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

Tu turno

13 / 68

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

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

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

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

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

Tu turno

19 / 68

Numeros

var1 <- 54

var1

var2 <- sqrt(var1*8)

var2

20 / 68

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

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

Exportar e importar datos

setwd("path_name")

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

na.strings = "NULL")

23 / 68

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

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

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

Muestra aleatoria

set.seed(32)

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

dsmall

27 / 68

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

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

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

Tu turno

31 / 68

Conceptos basicos

32 / 68

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

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

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

Conceptos basicos

33 / 68

Conceptos basicos

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

33 / 68

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

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

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

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

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

Medidas

Min, max

Media

Mediana

Moda

Rango

Cuantiles (25,50,75)

Varianza

Desviacion estandar

Asimetrıa

Curtosis

37 / 68

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

Moda

Mode <- function (x) {

cngtable <- table(x)

n <- length(cngtable)

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

mode

}

moda <- Mode(age)

moda

39 / 68

Rango

Rng <- function(x) {

rangem <- diff(range(x))

rangem

}

rango <- Rng(age)

rango

40 / 68

Cuantiles

Quantiles <- function(x) {

quants <- quantile(x)

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

quantval

}

q <- Quantiles(sort(age))

q

41 / 68

Media

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

media

42 / 68

Mediana

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

mediana

43 / 68

Varianza

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

varianza

44 / 68

Desviacion estandar

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

sd

45 / 68

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

Puntos 1/3

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

plot(age,credit_amount)

Puntos 2/3

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

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

Puntos 3/3

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

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

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

Histograma simple 1/2

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

hist(credit_amount)

51 / 68

Histograma simple 2/2

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

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

52 / 68

Barras 1/3

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

counts <- table(housing)

barplot(counts, main="Housing")

53 / 68

Barras 2/3

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

counts <- table(class)

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

54 / 68

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

Matriz de dispersion

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

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

main="Simple Scatterplot Matrix")

56 / 68

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

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

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

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

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

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

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

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

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

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

R Taller de Introduccion is licensed under a

Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.

68 / 68

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

top related