R
                              ´
          Taller de Introduccion


         Blanca A. Vargas Govea
          blanca.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 Graficas
      ´        ´
    Graficas estandar
    ggplot2

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
     ı




Mapa
                                         9 / 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´sticas
                                                            ı
                              ´         ´
   importantes que se utilizaran para analisis posteriores.


   ´
   Util para encontrar errores, ver patrones en los datos, encontrar y
               ´
   generar hipotesis.




                                                                    12 / 68
Tu turno




           13 / 68
´
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
´
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 de
                             ´
    trabajo para que automaticamente se cargue en la siguiente.
                    ´
Algunos comandos estandar para definir el espacio de trabajo son los
siguientes:

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 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
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


        ´
 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
´
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
´
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
´
Conceptos basicos




                    33 / 68
´
Conceptos basicos



Estad´stica descriptiva
     ı
                                                               ´
             Describe los datos sin ningun tipo de generalizacion.
                                        ´
             Ejemplo: porcentaje de menores de edad que utilizan
             redes sociales.




                                                                     33 / 68
´
Conceptos basicos



Estad´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
´
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
´
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
´
Tipos de analisis



Univariable
              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
´
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
Medidas




    Min, max   Cuantiles (25,50,75)

    Media      Varianza

    Mediana            ´     ´
               Desviacion estandar

    Moda       Asimetr´a
                      ı

    Rango      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 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
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=
   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)


                      75

                      70

                      65

                      60

                      55

                      50
                age




                      45

                      40

                      35

                      30

                      25

                      20


                           5000          10000    15000
                                  credit_amount

                                                          57 / 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)




                       80




                       60
               count




                       40




                       20




                       0

                            20   30   40         50   60   70
                                           age

                                                                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)


                       50




                       40




                       30
               count




                       20




                       10




                       0

                            20   30   40         50   60   70
                                           age

                                                                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 = "magen
    geom_vline(xintercept = media+sd, size = 0.5, colour = "bl
    geom_vline(xintercept = media-sd, size = 0.5, colour = "bl
ggsave(file = "../figures/gg-foo11.eps", width=5, height=5)

                            50




                            40




                            30
                    count




                            20




                            10




                            0

                                 35.55
                                         age
                                                         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)


                            400




                            300
                    count




                            200




                            100




                             0

                                  (18,30]   (30,40]   (40,50]
                                                         age
                                                                (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)


                            400




                            300
                    count




                            200




                            100




                             0

                                  (18,30]   (30,40]   (40,50]
                                                         age
                                                                (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)



                            700


                            600


                            500


                            400
                    count




                            300


                            200


                            100


                             0

                                  for free      own    rent
                                             housing




                                                              63 / 68
fill

d <- 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
Facetas
d <- 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
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
Otros recursos




   Machine learning
   R with Python
            ´
   Comparacion
   Libro




                      67 / 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

R: Taller de Introducción

  • 1.
    R ´ Taller de Introduccion Blanca A. Vargas Govea blanca.vg@gmail.com cenidet Cuernavaca, Mor., 11 de Noviembre de 2011
  • 2.
    Contenido ´ 1 Introduccion ´ 2 Tipos de datos y funciones basicas ´ 3 Analisis descriptivo ´ 4 Graficas ´ ´ Graficas estandar ggplot2 5 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?: Satisfaccion http://www.rexeranalytics.com/ 5 / 68
  • 6.
    ´ ¿Por que R?:Continuidad 6 / 68
  • 7.
    ´ Entonces, ¿R eslo maximo? 7 / 68
  • 8.
  • 9.
    Miner´a de datos:explicando el pasado ı Mapa 9 / 68
  • 10.
    Miner´a de datos:prediciendo el futuro ı 10 / 68
  • 11.
  • 12.
    ´ ¿Por que esimportante? ´ ´ 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 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
  • 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 los siguientes: 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
  • 17.
    Paquetes .libPaths() # obtieneel 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
  • 18.
    Scripts # en Linux RCMD 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 <-54 var1 var2 <- sqrt(var1*8) var2 20 / 68
  • 21.
    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
  • 22.
    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
  • 23.
    Exportar e importardatos setwd("path_name") credit <- read.csv(file = "../data/credit-g.csv", sep = ",", na.strings = "NULL") 23 / 68
  • 24.
    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
  • 25.
    ´ Renglones, columnas, m´nimoy 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
  • 26.
    Subconjuntos # Filtrando poredad mayor30 <- subset(credit, age >= 30) renmayor30 <- nrow(mayor30) renmayor30 en20y40 <- subset(credit, age >= 20 & age <= 40) ren20y40 <- nrow(en20y40) ren20y40 26 / 68
  • 27.
    Muestra aleatoria set.seed(32) dsmall <-credit[sample(nrow(credit), 10), ] dsmall 27 / 68
  • 28.
    Rangos # Filtrando porbins 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
  • 29.
    ´ Unicos, frecuencia yorden # 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
  • 30.
    Construyendo archivos desalida 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
  • 31.
    Tu turno 31 / 68
  • 32.
  • 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.
  • 37.
    ´ Conceptos basicos Estad´stica descriptiva ı ´ Describe los datos sin ningun tipo de generalizacion. ´ Ejemplo: porcentaje de menores de edad que utilizan redes sociales. 33 / 68
  • 38.
    ´ Conceptos basicos Estad´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 analisis Univariable 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 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
  • 45.
    Moda Mode <- function(x) { cngtable <- table(x) n <- length(cngtable) mode <- as.double(names(sort(cngtable)[n])) mode } moda <- Mode(age) moda 39 / 68
  • 46.
    Rango Rng <- function(x){ rangem <- diff(range(x)) rangem } rango <- Rng(age) rango 40 / 68
  • 47.
    Cuantiles Quantiles <- function(x){ quants <- quantile(x) quantval <- as.double(names(table(quants))) quantval } q <- Quantiles(sort(age)) q 41 / 68
  • 48.
  • 49.
  • 50.
  • 51.
    ´ ´ Desviacion estandar sd <- round(sd(age),2) sd 45 / 68
  • 52.
    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
  • 53.
    Puntos 1/3 png(filename ="../figures/foo1.png") # puntos plot(age,credit_amount)
  • 54.
    Puntos 2/3 png(filename ="../figures/foo1b.png") plot(dsmall$age,type= "o",col="blue")
  • 55.
    Puntos 3/3 png(filename ="../figures/foo1b.png") plot(dsmall$age,type= "o",col="blue")
  • 56.
    Bigotes png(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/2 png(filename= "../figures/foo3.png") hist(credit_amount) 51 / 68
  • 58.
    Histograma simple 2/2 png(filename= "../figures/foo4.png") hist(credit_amount, breaks=30, col="blue") 52 / 68
  • 59.
    Barras 1/3 png(filename ="../figures/foo5.png") counts <- table(housing) barplot(counts, main="Housing") 53 / 68
  • 60.
    Barras 2/3 png(filename ="../figures/foo6.png") counts <- table(class) barplot(counts, main="Personal status", horiz=TRUE) 54 / 68
  • 61.
    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
  • 62.
    ´ Matriz de dispersion png(filename= "../figures/foo9.png") pairs(~credit_amount+age+existing_credits+num_dependents,data= main="Simple Scatterplot Matrix") 56 / 68
  • 63.
    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) 75 70 65 60 55 50 age 45 40 35 30 25 20 5000 10000 15000 credit_amount 57 / 68
  • 64.
    Barras 1/2 d <-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/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) 50 40 30 count 20 10 0 20 30 40 50 60 70 age 59 / 68
  • 66.
    Histograma, media yDS 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 = "magen geom_vline(xintercept = media+sd, size = 0.5, colour = "bl geom_vline(xintercept = media-sd, size = 0.5, colour = "bl ggsave(file = "../figures/gg-foo11.eps", width=5, height=5) 50 40 30 count 20 10 0 35.55 age 60 / 68
  • 67.
    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) 400 300 count 200 100 0 (18,30] (30,40] (40,50] age (50,60] (60,70] (70,80] 61 / 68
  • 68.
    Cuts - themebw() 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) 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.
    fill d <- 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.
    Facetas d <- 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 a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. 68 / 68
  • 75.
    Bartlein, P. (2009). Dataanalysis 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