Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

R: Taller de Introducción

1,526 views

Published on

Taller de Introducción a R

Published in: Education
  • Be the first to comment

  • Be the first to like this

R: Taller de Introducción

  1. 1. R ´ Taller de Introduccion Blanca A. Vargas Govea blanca.vg@gmail.com cenidetCuernavaca, Mor., 11 de Noviembre de 2011
  2. 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. 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. 4. ´¿Que es R? Lenguaje. ´ Manipulacion de datos. ´ Tecnicas estad´sticas. ı ´ Graficas. ´ Entorno para proceso estad´stico y visualizacion. ı Software libre. 4 / 68
  5. 5. ´ ´¿Por que R?: Satisfaccionhttp://www.rexeranalytics.com/ 5 / 68
  6. 6. ´¿Por que R?: Continuidad 6 / 68
  7. 7. ´Entonces, ¿R es lo maximo? 7 / 68
  8. 8. ´Ejemplo de aplicacionhttp://blog.diegovalle.net/ 8 / 68
  9. 9. Miner´a de datos: explicando el pasado ıMapa 9 / 68
  10. 10. Miner´a de datos: prediciendo el futuro ı 10 / 68
  11. 11. ´Taller: exploracion usando R 11 / 68
  12. 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. 13. Tu turno 13 / 68
  14. 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. 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. 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. 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. 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. 19. Tu turno 19 / 68
  20. 20. Numeros ´var1 <- 54var1var2 <- sqrt(var1*8)var2 20 / 68
  21. 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. 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. 23. Exportar e importar datossetwd("path_name")credit <- read.csv(file = "../data/credit-g.csv", sep = ",", na.strings = "NULL") 23 / 68
  24. 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. 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. 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. 27. Muestra aleatoriaset.seed(32)dsmall <- credit[sample(nrow(credit), 10), ]dsmall 27 / 68
  28. 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. 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. 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. 31. Tu turno 31 / 68
  32. 32. ´Conceptos basicos 32 / 68
  33. 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. 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. 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. 36. ´Conceptos basicos 33 / 68
  37. 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. 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. 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. 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. 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. 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. 43. Medidas Min, max Cuantiles (25,50,75) Media Varianza Mediana ´ ´ Desviacion estandar Moda Asimetr´a ı Rango Curtosis 37 / 68
  44. 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. 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. 46. RangoRng <- function(x) { rangem <- diff(range(x)) rangem}rango <- Rng(age)rango 40 / 68
  47. 47. CuantilesQuantiles <- function(x) { quants <- quantile(x) quantval <- as.double(names(table(quants))) quantval}q <- Quantiles(sort(age))q 41 / 68
  48. 48. Mediamedia <- round(mean(age),2)media 42 / 68
  49. 49. Medianamediana <- round(median(age),2)mediana 43 / 68
  50. 50. Varianzavarianza <- round(var(age),2)varianza 44 / 68
  51. 51. ´ ´Desviacion estandarsd <- round(sd(age),2)sd 45 / 68
  52. 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. 53. Puntos 1/3png(filename = "../figures/foo1.png") # puntosplot(age,credit_amount)
  54. 54. Puntos 2/3png(filename = "../figures/foo1b.png")plot(dsmall$age,type= "o",col="blue")
  55. 55. Puntos 3/3png(filename = "../figures/foo1b.png")plot(dsmall$age,type= "o",col="blue")
  56. 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. 57. Histograma simple 1/2png(filename = "../figures/foo3.png")hist(credit_amount) 51 / 68
  58. 58. Histograma simple 2/2png(filename = "../figures/foo4.png")hist(credit_amount, breaks=30, col="blue") 52 / 68
  59. 59. Barras 1/3png(filename = "../figures/foo5.png")counts <- table(housing)barplot(counts, main="Housing") 53 / 68
  60. 60. Barras 2/3png(filename = "../figures/foo6.png")counts <- table(class)barplot(counts, main="Personal status", horiz=TRUE) 54 / 68
  61. 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. 62. ´Matriz de dispersionpng(filename = "../figures/foo9.png")pairs(~credit_amount+age+existing_credits+num_dependents,data= main="Simple Scatterplot Matrix") 56 / 68
  63. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 73. Otros recursos Machine learning R with Python ´ Comparacion Libro 67 / 68
  74. 74. ´ R Taller de Introduccion is licensed under aCreative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. 68 / 68
  75. 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

×