R: Taller de Introducción

  • 756 views
Uploaded on

Taller de Introducción a R

Taller de Introducción a R

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
756
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
30
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. R ´ Taller de Introduccion Blanca A. Vargas Govea blanca.vg@gmail.com cenidetCuernavaca, Mor., 11 de Noviembre de 2011
  • 2. Contenido ´1 Introduccion ´2 Tipos de datos y funciones basicas ´3 Analisis descriptivo ´4 Graficas ´ ´ Graficas estandar ggplot25 Miner´a de datos ı6 Otros recursos 2 / 68
  • 3. 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
  • 4. ´¿Que es R? Lenguaje. ´ Manipulacion de datos. ´ Tecnicas estad´sticas. ı ´ Graficas. ´ Entorno para proceso estad´stico y visualizacion. ı Software libre. 4 / 68
  • 5. ´ ´¿Por que R?: Satisfaccionhttp://www.rexeranalytics.com/ 5 / 68
  • 6. ´¿Por que R?: Continuidad 6 / 68
  • 7. ´Entonces, ¿R es lo maximo? 7 / 68
  • 8. ´Ejemplo de aplicacionhttp://blog.diegovalle.net/ 8 / 68
  • 9. Miner´a de datos: explicando el pasado ıMapa 9 / 68
  • 10. Miner´a de datos: prediciendo el futuro ı 10 / 68
  • 11. ´Taller: exploracion usando R 11 / 68
  • 12. ´¿Por que es importante? ´ ´ Describe los datos mediante tecnicas estad´sticas y graficas. ı Da un primer acercamiento a los datos y extrae caracter´sticas ı ´ ´ importantes que se utilizaran para analisis posteriores. ´ Util para encontrar errores, ver patrones en los datos, encontrar y ´ generar hipotesis. 12 / 68
  • 13. Tu turno 13 / 68
  • 14. ´Instalacion Instalar R [R Development Core Team, 2010] . Disponible para Linux, 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
  • 15. ´Como obtener ayudahelp.start() # ayuda generalhelp(nombrefuncion) # detalles sobre la func.?funcion # igual que el anteriorapropos("solve") # lista funciones que contienen "solve"example(solve) # muestra un ejemplo del uso de "solve"help("*")vignette()vignette("foo")data() # muestra los datos disponibleshelp(datasetname) # detalles de los datos 15 / 68
  • 16. 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 de ´ trabajo para que automaticamente se cargue en la siguiente. ´Algunos comandos estandar para definir el espacio de trabajo son lossiguientes:getwd() # muestra el directorio actualls() # lista los objetos en el espacio de trabajosetwd(mydirectory) # cambia el path a mydirectorysetwd("c:/docs/mydir") # notar / en vez de en Windowssetwd("/usr/rob/mydir") # en Linuxhistory() # despliega los 25 comandos recienteshistory(max.show=Inf) # despliega los comandos previosq() # quit R. 16 / 68
  • 17. Paquetes.libPaths() # obtiene el pathlibrary() # muestra los paquetes instaladossearch() # muestra los paquetes cargados# descarga e instala paquetes del repositorio CRANinstall.packages("nombredelpaquete")library(package) # carga el paquete 17 / 68
  • 18. Scripts# en LinuxR CMD BATCH [options] my_script.R [outfile]# en ms windows (ajustar el path a R.exe)"C:Program FilesRR-2.5.0binR.exe" CMD BATCH --vanilla --slave "c:my projectsmy_script.R"source("myfile")sink("record.lis") # la salida va al archivo record.lis 18 / 68
  • 19. Tu turno 19 / 68
  • 20. Numeros ´var1 <- 54var1var2 <- sqrt(var1*8)var2 20 / 68
  • 21. Vectoresvector <- c(1,2,3,4,5)vector[0]vector[1]cadena <- "uno"cadenalcadena <- c("casa","manzana","uva")lcadenavlogico <- c(TRUE,FALSE,TRUE,TRUE,FALSE)vlogico 21 / 68
  • 22. Dataframesc1 <- 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
  • 23. Exportar e importar datossetwd("path_name")credit <- read.csv(file = "../data/credit-g.csv", sep = ",", na.strings = "NULL") 23 / 68
  • 24. Despliegue de objetosls() # lista de objetosnames(credit) # variables de creditstr(credit) # estructura de creditlevels(credit$foreign_worker) # niveles(valores de variable)dim(credit) # dimensiones (ren x cols)class(credit) # clase del objetocredit # objetohead(credit, n=10)tail(credit, n=10)credit$purpose#purposeattach(credit) # coloca la bd en el pathpurpose 24 / 68
  • 25. ´Renglones, columnas, m´nimo y maximo ı# Explorando conteoren <- nrow(credit) # raw row countcol <- ncol(credit)# Min y Maxagemin <- min(age,na.rm = TRUE) # min sin NULLS en ageagemax <- max(age,na.rm = TRUE)ammin <- min(credit_amount,na.rm = TRUE)ammax <- max(credit_amount,na.rm = TRUE) 25 / 68
  • 26. Subconjuntos# Filtrando por edadmayor30 <- subset(credit, age >= 30)renmayor30 <- nrow(mayor30)renmayor30en20y40 <- subset(credit, age >= 20 & age <= 40)ren20y40 <- nrow(en20y40)ren20y40 26 / 68
  • 27. Muestra aleatoriaset.seed(32)dsmall <- credit[sample(nrow(credit), 10), ]dsmall 27 / 68
  • 28. Rangos# Filtrando por binsagebin = 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
  • 29. ´Unicos, frecuencia y orden# unicosunicos <- unique(class)unicosnhousing <- length(unique(class))nhousing# tablemycredit <- table(dsmall$class)mycreditmycredit <- table(dsmall$age,dsmall$credit_amount)mycredit# ordenarmycredit <- table(dsmall$housing)mycreditmylist <- sort(mycredit,decreasing = TRUE)mylist 29 / 68
  • 30. Construyendo archivos de salidaoframe = 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
  • 31. Tu turno 31 / 68
  • 32. ´Conceptos basicos 32 / 68
  • 33. ´Conceptos basicos ´ Poblacion ´ Es el conjunto completo de elementos de nuestro interes. ´ Las caracter´sticas de una poblacion son las medidas ı estad´sticas de cada uno de sus elementos. ı 32 / 68
  • 34. ´Conceptos basicos ´ Poblacion ´ Es el conjunto completo de elementos de nuestro interes. ´ Las caracter´sticas de una poblacion son las medidas ı estad´sticas de cada uno de sus elementos. ı Muestra ´ ´ Es una proporcion de la poblacion. Una muestra posee ´ las mismas caracter´sticas de la poblacion si se obtiene ı aleatoriamente. 32 / 68
  • 35. ´Conceptos basicos ´ Poblacion ´ Es el conjunto completo de elementos de nuestro interes. ´ Las caracter´sticas de una poblacion son las medidas ı estad´sticas de cada uno de sus elementos. ı Muestra ´ ´ Es una proporcion de la poblacion. Una muestra posee ´ las mismas caracter´sticas de la poblacion si se obtiene ı aleatoriamente. [Bartlein, 2009, Trochim, 2006, Quick, 2009, Wackerly et al., 2002] 32 / 68
  • 36. ´Conceptos basicos 33 / 68
  • 37. ´Conceptos basicosEstad´stica descriptiva ı ´ Describe los datos sin ningun tipo de generalizacion. ´ Ejemplo: porcentaje de menores de edad que utilizan redes sociales. 33 / 68
  • 38. ´Conceptos basicosEstad´stica descriptiva ı ´ Describe los datos sin ningun tipo de generalizacion. ´ Ejemplo: porcentaje de menores de edad que utilizan redes sociales.Inferencia estad´stica ı Generaliza o induce algunas propiedades de la poblacion ´ a partir de la cual los datos se tomaron. Ejemplo: ¿es la ´ satisfaccion del usuario de sistemas de recomendacion ´ significativamente diferente entre hombres y mujeres? 33 / 68
  • 39. ´Conceptos basicos ´Variables categoricas ´ No aparecen de forma numerica y tienen dos o mas ´ categor´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
  • 40. ´Conceptos basicos ´Variables categoricas ´ No aparecen de forma numerica y tienen dos o mas ´ categor´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 numericas Son aquellas que pueden tomar cualquier valor dentro de un intervalo finito o infinito. 34 / 68
  • 41. ´Tipos de analisisUnivariable en el cual se exploran las variables o atributos uno por uno. Bivariable ´ en el cual simultaneamente se analizan dos variables ´ para conocer la relacion entre ellas, su fuerza o si hay ´ diferencias entre ellas y el significado de las mismas. El ´ analisis bivariable puede ser entre dos variables ´ ´ ´ numericas, dos variables categoricas y una variable ´ ´ numerica y una categorica. 35 / 68
  • 42. ´Analisis univariable ´Variables categoricas ´ ´ el analisis exploratorio basicamente es un conteo del numero de valores de la variable especificada y el ´ porcentaje de valores de la variable espec´fica. Se ı ´ utilizan las graficas de barras y de pay. ´Variables numericas ´ se analizan calculando el m´nimo, maximo, media, ı mediana, moda, rango, los cuantiles, la varianza, la ´ ´ ´ desviacion estandar, el coeficiente de variacion, la asimetr´a y la curtosis. Se visualizan mediante ı ´ histogramas y graficas de bigotes. 36 / 68
  • 43. Medidas Min, max Cuantiles (25,50,75) Media Varianza Mediana ´ ´ Desviacion estandar Moda Asimetr´a ı Rango Curtosis 37 / 68
  • 44. En Rsetwd("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
  • 45. ModaMode <- function (x) { cngtable <- table(x) n <- length(cngtable) mode <- as.double(names(sort(cngtable)[n])) mode}moda <- Mode(age)moda 39 / 68
  • 46. RangoRng <- function(x) { rangem <- diff(range(x)) rangem}rango <- Rng(age)rango 40 / 68
  • 47. CuantilesQuantiles <- function(x) { quants <- quantile(x) quantval <- as.double(names(table(quants))) quantval}q <- Quantiles(sort(age))q 41 / 68
  • 48. Mediamedia <- round(mean(age),2)media 42 / 68
  • 49. Medianamediana <- round(median(age),2)mediana 43 / 68
  • 50. Varianzavarianza <- round(var(age),2)varianza 44 / 68
  • 51. ´ ´Desviacion estandarsd <- round(sd(age),2)sd 45 / 68
  • 52. Cargando datossetwd("path")credit <- read.csv(file = "../data/credit-g.csv", sep = ",", na.strings = "NULL")attach(credit)set.seed(32) # Muestradsmall <- credit[sample(nrow(credit), 5), ]dsmall 46 / 68
  • 53. Puntos 1/3png(filename = "../figures/foo1.png") # puntosplot(age,credit_amount)
  • 54. Puntos 2/3png(filename = "../figures/foo1b.png")plot(dsmall$age,type= "o",col="blue")
  • 55. Puntos 3/3png(filename = "../figures/foo1b.png")plot(dsmall$age,type= "o",col="blue")
  • 56. Bigotespng(filename = "../figures/foo2.png")boxplot(age) ´ ´Un valor at´pico es una observacion numericamente distante del resto de los ı ´datos y puede representar datos erroneos. Se considera un valor at´pico el ıque se encuentra 1,5 veces esa distancia de uno de esos cuartiles (at´pico ıleve) o a 3 veces esa distancia (at´pico extremo). ı 50 / 68
  • 57. Histograma simple 1/2png(filename = "../figures/foo3.png")hist(credit_amount) 51 / 68
  • 58. Histograma simple 2/2png(filename = "../figures/foo4.png")hist(credit_amount, breaks=30, col="blue") 52 / 68
  • 59. Barras 1/3png(filename = "../figures/foo5.png")counts <- table(housing)barplot(counts, main="Housing") 53 / 68
  • 60. Barras 2/3png(filename = "../figures/foo6.png")counts <- table(class)barplot(counts, main="Personal status", horiz=TRUE) 54 / 68
  • 61. Barras 3/3png(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
  • 62. ´Matriz de dispersionpng(filename = "../figures/foo9.png")pairs(~credit_amount+age+existing_credits+num_dependents,data= main="Simple Scatterplot Matrix") 56 / 68
  • 63. Bigotesd <- 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) 75 70 65 60 55 50 age 45 40 35 30 25 20 5000 10000 15000 credit_amount 57 / 68
  • 64. Barras 1/2d <- ggplot(data = credit, aes(age))d + geom_bar() + theme_bw()ggsave(file = "../figures/gg-foo10.eps", width=5, height=5) 80 60 count 40 20 0 20 30 40 50 60 70 age 58 / 68
  • 65. Barras 2/2d <- ggplot(data = credit, aes(age))d + geom_bar(binwidth = 0.1) + theme_bw()ggsave(file = "../figures/gg-foo10a.eps", width=5, height=5) 50 40 30 count 20 10 0 20 30 40 50 60 70 age 59 / 68
  • 66. Histograma, media y DSd <- 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 = "magen geom_vline(xintercept = media+sd, size = 0.5, colour = "bl geom_vline(xintercept = media-sd, size = 0.5, colour = "blggsave(file = "../figures/gg-foo11.eps", width=5, height=5) 50 40 30 count 20 10 0 35.55 age 60 / 68
  • 67. Cutsagebin = cut(age,breaks = c(18,30,40,50,60,70,80))agebinfile <- data.frame(purpose,credit_amount,personal_ status,housing,job,age=agebin,class)agebinfiled <- 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) 400 300 count 200 100 0 (18,30] (30,40] (40,50] age (50,60] (60,70] (70,80] 61 / 68
  • 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)agebinfiled <- 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) 400 300 count 200 100 0 (18,30] (30,40] (40,50] age (50,60] (60,70] (70,80] 62 / 68
  • 69. Eliminando theme bw()d <- ggplot(credit, aes(housing))d + geom_bar()ggsave(file = "../figures/gg-foo13.eps", width=5, height=5) 700 600 500 400 count 300 200 100 0 for free own rent housing 63 / 68
  • 70. filld <- ggplot(credit, aes(age,fill=housing))d + geom_bar()ggsave(file = "../figures/gg-foo14.eps", width=5, height=5) 80 60 housing for free count own 40 rent 20 0 20 30 40 50 60 70 age 64 / 68
  • 71. Facetasd <- ggplot(credit, aes(age))d + geom_bar()+facet_wrap(~ housing)ggsave(file = "../figures/gg-foo15.eps", width=5, height=5) for free own 60 40 20 0 count rent 60 40 20 0 20 30 40 50 60 70 20 30 40 50 60 70 age 65 / 68
  • 72. Miner´a de datos: librer´as ı ı ´ Clasificacion. ´ Regresion lineal en R. ´ ´ Particionamiento recursivo y arboles de regresion ´ ´ ´ Clasificacion y arboles de regresion nnet: redes neuronales feed-forward ´ Agrupacion. ´ Agrupacion en R ´ Reglas de asociacion. ´ arules: Reglas de asociacion ´ Seleccion de atributos. FSelector: Selecting attributes Caret: librer´as diversas ı Miner´a de textos. ı tm: librer´a para miner´a de texto ı ı 66 / 68
  • 73. Otros recursos Machine learning R with Python ´ Comparacion Libro 67 / 68
  • 74. ´ R Taller de Introduccion is licensed under aCreative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. 68 / 68
  • 75. 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