Date post: | 04-Jul-2015 |
Category: |
Education |
Upload: | blanca-vargas-govea |
View: | 994 times |
Download: | 1 times |
RTaller de Introduccion
Blanca A. Vargas [email protected]
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
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
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