159
Introducci´ on a R Dpto. Ciencias de la Computaci´ on e Inteligencia Artificial Universidad de Sevilla

Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Introduccion a R

Dpto. Ciencias de la Computacion e Inteligencia ArtificialUniversidad de Sevilla

Page 2: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Contenidos

1 Introduccion

2 Vectores

3 Otros tipos de datosArrayFactoresListas y marcos de datos

4 Distribuciones de probabilidad

5 Graficos en RGraficos univariantesGraficos multivariantesGraficos por defecto VS lattice

6 Programacion en R

Page 3: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Introduccion

Instalacion

• El proyecto R (Windows, Mac-OS, Linux,. . . )

• Licencia GPL

• R-Studio Un entorno de desarrollo

Descripcion

• Lenguaje para el analisis de dato y la modelizacion.

• Analisis grafico y estadıstico

• Lenguaje de programacion orientado a objetos

• Ampliable a traves de numerosas bibliotecas disponibles

Page 4: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Guiones

• Conjunto de instrucciones que el interprete debe calcularsucesivamente.

• Las expresiones se escriben en ficheros de texto (con extension.R) y se envıan a la consola de R

Page 5: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

R-Studio

Page 6: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Espacio/Directorio de trabajo

Espacio de trabajo (workspace)

• Conjunto de objetos definidos durante una sesion de trabajocon R que no se han borrado expresamente.

• Fichero con extension .RData• Se carga con la instruccion load

Directorio de trabajo (Working Directory)Lugar de referencia que utiliza R para localizar los ficheros que leey escribe

• getwd()

• setwd(’directorio’)

Page 7: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Espacio/Directorio de trabajo

Espacio de trabajo (workspace)

• Conjunto de objetos definidos durante una sesion de trabajocon R que no se han borrado expresamente.

• Fichero con extension .RData• Se carga con la instruccion load

Directorio de trabajo (Working Directory)Lugar de referencia que utiliza R para localizar los ficheros que leey escribe

• getwd()

• setwd(’directorio’)

Page 8: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Extensiones

Es posible extender R a traves de paquetes/bibliotecas.

• lattice: Biblioteca de graficoslibrary(lattice)

• ade4: Analisis de datos ecologicos

• class: Funciones de clasificacion

• seqinr: Analisis de secuencias

• Existen multiples repositorios• Bioconductor: http://www.bioconductor.org

install.packages("bioconductor",repos="www.bioconductor.org")

Page 9: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Ayuda

> ?mean

> help(mean)

> ??regresion

> help.search(’regression’)

• Description: Breve descripcion.

• Usage: Nombre de los argumentos y sus valores por defecto.

• Arguments: Descripcion detallada de cada argumento.

• Details: Descripcion detallada del comportamiento.

• Value: Descripcion detallada del valor devuelto por la funcion.

• See Also: Otras ayudas relacionadas.

• Examples: Ejemplos de uso.

Page 10: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Primeras nociones

• R distingue entre mayusculas y minusculas

> a <- 3

> A <- 5

> a

[1] 3

> A

[1] 5

• Identificadores validos: Cualquier combinacion de sımbolosalfanumericos junto con el punto y . No puede empezar conun dıgito.

• No renombrar las funciones de R (c, t,. . . )

Page 11: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Expresiones/Asignaciones

• Hay dos tipos de comandos: expresiones y asignaciones• Expresion. El resultado se muestra por pantalla y no se guarda.

> rnorm(5)

[1] 0.71690438 0.07539554 0.73687196 -0.43048351 -0.31119274

• Asignacion: no se muestra nada y se guarda

> v <- rnorm(4)

> v

[1] 0.46212728 -0.87838057 0.83872171 0.01630945

Page 12: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Vectores

• La estructura de datos mas simple.

• Coleccion ordenada de datos (todos del mismo tipo). Coercion

> x <- c(1, 2.5, c(4.2, 9, 7), FALSE) ; x

[1] 1.0 2.5 4.2 9.0 7.0 0.0

> x[1] <- 9 ; x

[1] 9.0 2.5 4.2 9.0 7.0 0.0

• Operaciones vectorizadas (se aplican a cada elemento)

• El mas corto se recicla (hasta la longitud del mas largo).

> y <- c(x,0,x) ; length(y)

[1] 13

> v <- 2*x + y + 1

Mensajes de aviso perdidos

In 2 * x + y :

longitud de objeto mayor no es multiplo de longitud de menor

> v

[1] 28.0 8.5 13.6 28.0 22.0 1.0 19.0 15.0 11.9 23.2 24.0 8.0 19.0

Page 13: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Vectores

• La estructura de datos mas simple.

• Coleccion ordenada de datos (todos del mismo tipo). Coercion

> x <- c(1, 2.5, c(4.2, 9, 7), FALSE) ; x

[1] 1.0 2.5 4.2 9.0 7.0 0.0

> x[1] <- 9 ; x

[1] 9.0 2.5 4.2 9.0 7.0 0.0

• Operaciones vectorizadas (se aplican a cada elemento)

• El mas corto se recicla (hasta la longitud del mas largo).

> y <- c(x,0,x) ; length(y)

[1] 13

> v <- 2*x + y + 1

Mensajes de aviso perdidos

In 2 * x + y :

longitud de objeto mayor no es multiplo de longitud de menor

> v

[1] 28.0 8.5 13.6 28.0 22.0 1.0 19.0 15.0 11.9 23.2 24.0 8.0 19.0

Page 14: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Generacion de secuencias

• El operador : (tiene la maxima precedencia)

> 1:15

[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

• La funcion seq(from,to,by,length.out)

> seq(from=1, to=15, by=3)

[1] 1 4 7 10 13

• La funcion rep

> rep(c(1,2,3), times=3)

[1] 1 2 3 1 2 3 1 2 3

> rep(c(1,2,3), each=3)

[1] 1 1 1 2 2 2 3 3 3

> rep(c(1,2,3), times=c(3,2,1))

[1] 1 1 1 2 2 3

Page 15: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Operaciones elementales

• +, -, *, /, , %%, %/%, sum, prod, cumsum, cumprod

• sin, cos, tan, asin, acos, atan, abs, sqrt, diff

• log, exp, max, min, pmax, pmin, cummax, cummin

• rev, range, length, sort, order

• summary, mean, median, var, sd, quantile, IQR

• round, ceiling, floor, trunc, signif

> max(x)

[1] 9

> sort(x)

[1] 0.0 1.0 2.5 4.2 7.0 9.0

> order(x)

[1] 6 1 2 3 5 4

Page 16: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Inf, NA, NaN

> sqrt(-17)

[1] NaN

> sqrt(-17+0i)

[1] 0+4.123106i

> pi

[1] 3.141593

> pi / 0

[1] Inf

> (- pi) / 0

[1] -Inf

> 0 / 0

[1] NaN

> Inf - Inf

[1] NaN

> NA * 2

[1] NA

Page 17: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Operaciones de conjuntos

• union, intersect, setdiff, setequal, is.element,

%in%, match

> conj1 <- unique(c(1,2,3,4,3,2,3,1,4)) ; conj1

[1] 1 2 3 4

> conj2 <- c(3,4,5)

> conj3 <- c(2,4,3,1)

> intersect(conj1,conj2)

[1] 3 4

> setequal(conj1,conj3)

[1] TRUE

> is.element(2,conj1)

[1] TRUE

> c(2,6,4,8) %in% conj1

[1] TRUE FALSE TRUE FALSE

> match(c(2,1),conj3)

[1] 1 4

Page 18: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Cadenas de caracteres

• Delimitadas por ", ’

• \\, \", \n, \t

> paste(c("X","Y"), 1:10, sep="")

[1] "X1" "Y2" "X3" "Y4" "X5" "Y6" "X7" "Y8" "X9" "Y10"

> strsplit(c("acgtca","acgtaccgtacgact"), split="")

[[1]]

[1] "a" "c" "g" "t" "c" "a"

[[2]]

[1] "a" "c" "g" "t" "a" "c" "c" "g" "t" "a" "c" "g" "a" "c" "t"

> strsplit(c("acgtca","acatgaccgtatgact"), split="atg")

[[1]]

[1] "acgtca"

[[2]]

[1] "ac" "accgt" "act"

Page 19: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Valores logicos

• Comparacion: ==, !=, <, <=, >, >=

• Operadores: &, &&, |, ||, xor, !

> x <- 11:20

> !(x > 15)

[1] TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE

> x < 13 | x >= 17

[1] TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE

> ((-2:2) >= 0) & ((-2:2) <= 0)

[1] FALSE FALSE TRUE FALSE FALSE

> ((-2:2) >= 0) && ((-2:2) <= 0)

[1] FALSE

> ((0:2) <= 0) & ((0:2) >= 0)

[1] TRUE FALSE FALSE

> ((0:2) <= 0) && ((0:2) >= 0)

[1] TRUE

Page 20: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Seleccion/Modificacion de datos

• Vector de posiciones

> x[c(1,2,3,2,11)]

[1] 11 12 13 12 NA

> x[11] <- 21 ; x

[1] 11 12 13 14 15 16 17 18 19 20 21

> x[c(1,2,3)] <- 3:1 ; x

[1] 3 2 1 14 15 16 17 18 19 20 21

> x[1:3] <- c(5,6)

Mensajes de aviso perdidos

In x[1:3] <- c(5, 6) :

numero de items para para sustituir no es un multiplo de ...

> x

[1] 5 6 5 14 15 16 17 18 19 20 21

> x <- c(11,12,13,x[4:10]) ; x

[1] 11 12 13 14 15 16 17 18 19 20

Page 21: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Seleccion de datos

• Vector de exclusiones

> x[-c(1,7,5)]

[1] 12 13 14 16 18 19 20

• Vector de valores logicos

> y <- 1:10; x[y > 5]

[1] 16 17 18 19 20

> x[c(TRUE,FALSE,FALSE)]

[1] 11 14 17 20

• Vector de nombres

> names(x) <- letters[1:10] ; x

a b c d e f g h i j

11 12 13 14 15 16 17 18 19 20

> x[c(’b’,’f’,’c’)]

b f c

12 16 13

Page 22: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Algunos ejemplos

> x <- c(2, 3, 5, 7, 11, 13)

> which.max(x)

[1] 6

> which(x > 5)

[1] 4 5 6

> length(x > 5)

[1] 6

> length(which(x > 5))

[1] 3

> sum(x > 5)

[1] 3

> sum(x[x > 5])

[1] 31

> x < 3 | x > 5

[1] TRUE FALSE FALSE TRUE TRUE TRUE

> which(x < 3 | x > 5)

[1] 1 4 5 6

> length(which(x < 3 | x > 5))

[1] 4

> sum(x < 3 | x > 5)

[1] 4

Page 23: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 1

En el vector notas se guardan las notas de cien estudiantes de unafacultad. Se pide calcular:

• La media, la mediana y la desviacion tıpica de las notas.

• El numero de estudiantes con una nota superior a 5 e inferioro igual a 8.

• La nota del trigesimo octavo estudiante con mejor puntuacion.

# Media de las notas ; Mediana de las notas ; Desviacion tıpica

mean(notas) ; median(notas) ; sd(notas)

# N. de estudiantes con nota superior a 5 e inferior o igual a 8.

sum(5 < notas & notas <= 8)

# Nota del 38 mejor estudiante

sort(notas, decreasing = T)[38]

Page 24: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 1

En el vector notas se guardan las notas de cien estudiantes de unafacultad. Se pide calcular:

• La media, la mediana y la desviacion tıpica de las notas.

• El numero de estudiantes con una nota superior a 5 e inferioro igual a 8.

• La nota del trigesimo octavo estudiante con mejor puntuacion.

# Media de las notas ; Mediana de las notas ; Desviacion tıpica

mean(notas) ; median(notas) ; sd(notas)

# N. de estudiantes con nota superior a 5 e inferior o igual a 8.

sum(5 < notas & notas <= 8)

# Nota del 38 mejor estudiante

sort(notas, decreasing = T)[38]

Page 25: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 2

Realizada una encuesta en una ciudad, se han agrupado losnegocios hoteleros por el numero de plazas:

Plazas No de hotelesMenos de 100 25100-200 37200-300 12300-500 22500-600 21600-700 13700-800 5800-1000 3mas de 1000 2

• La tabla de frecuencias completa.

• El numero de negocios con mas de 300 plazas.

• Porcentaje de negocios con mas de 100 y menos de 500.

• La media, mediana y moda de la distribucion, si es posible.

Page 26: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

# Extremos inferiores de los intervalos.

li <- c(0, 100, 200, 300, 500, 600, 700, 800, 1000) ; li

# Extremos superiores de los intervalos.

Li <- c(100, 200, 300, 500, 600, 700, 800, 1000, Inf) ; Li

n_negocios <- c(25, 37, 12, 22, 21, 13, 5, 3, 2) ; n_negocios

# Frecuencias absolutas

ni <- n_negocios ; ni

# Total

n <- sum(ni) ; n

# Frecuencias relativas

fi <- round(ni/n, digits = 2) ; fi

# Frecuencias absolutas acumuladas

Ni <- cumsum(ni) ; Ni

# Frecuencias relativas acumuladas

cumsum(fi)

Page 27: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

# Negocios con mas de 300 plazas

sum(ni[300 <= li])

# Negocios con mas de 100 y menos de 500 plazas

entre.100.500 <- sum(ni[100 < Li & Li <= 500]) ; entre.100.500

# Porcentaje respecto del total de negocios

round((entre.100.500 * 100) / n, digits = 2)

# La media no se puede calcular, pues no se conocen todas las marcas

# de clase (el ultimo intervalo es [1000, Inf)).

Page 28: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Mediana (j intervalo donde la frecuencia acumulada llega hasta lamitad de la suma de las frecuencias absolutas)

lj +n2 − Nj−1

nj∗ cj

# Tama~nos de los intervalos

ci <- Li - li ; ci

# Intervalo de la mediana

jmed <- which(n/2 <= Ni)[1] ; jmed

# Mediana

li[jmed] + (n/2 - Ni[jmed-1])/ni[jmed] * ci[jmed]

Page 29: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Mediana (j intervalo donde la frecuencia acumulada llega hasta lamitad de la suma de las frecuencias absolutas)

lj +n2 − Nj−1

nj∗ cj

# Tama~nos de los intervalos

ci <- Li - li ; ci

# Intervalo de la mediana

jmed <- which(n/2 <= Ni)[1] ; jmed

# Mediana

li[jmed] + (n/2 - Ni[jmed-1])/ni[jmed] * ci[jmed]

Page 30: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Moda (j intervalo que tiene mayor altura)

lj +hj − hj−1

(hj − hj−1) + (hj − hj+1)∗ cj

(alturas hi =

nici

)

# Alturas

hi <- ni / ci

# Intervalo de la moda

j.moda <- which.max(hi) ; j.moda

# Moda

li[j.moda] +

(hi[j.moda] - hi[j.moda-1]) /

((hi[j.moda] - hi[j.moda-1]) + (hi[j.moda] - hi[j.moda+1])) *

ci[j.moda]

Page 31: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Moda (j intervalo que tiene mayor altura)

lj +hj − hj−1

(hj − hj−1) + (hj − hj+1)∗ cj

(alturas hi =

nici

)# Alturas

hi <- ni / ci

# Intervalo de la moda

j.moda <- which.max(hi) ; j.moda

# Moda

li[j.moda] +

(hi[j.moda] - hi[j.moda-1]) /

((hi[j.moda] - hi[j.moda-1]) + (hi[j.moda] - hi[j.moda+1])) *

ci[j.moda]

Page 32: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Otros tipos de conjuntos de datos

• Arrays y matrices (matrix): generacion multidimensional delos vectores. Todos los elementos de la matriz han de ser delmismo tipo.

• Factores (factor): utiles para el uso de datos categoricos.

• Listas (list): generalizacion de los vectores donde loselementos pueden ser de diferentes tipos (incluso vectores onuevas listas).

• Data frames: listas donde los diferentes elementos tienen lamisma longitud.

• Funciones (function): conjunto de codigo de R ejecutable yparametrizable.

Page 33: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Otros tipos de conjuntos de datos

• Arrays y matrices (matrix): generacion multidimensional delos vectores. Todos los elementos de la matriz han de ser delmismo tipo.

• Factores (factor): utiles para el uso de datos categoricos.

• Listas (list): generalizacion de los vectores donde loselementos pueden ser de diferentes tipos (incluso vectores onuevas listas).

• Data frames: listas donde los diferentes elementos tienen lamisma longitud.

• Funciones (function): conjunto de codigo de R ejecutable yparametrizable.

Page 34: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Otros tipos de conjuntos de datos

• Arrays y matrices (matrix): generacion multidimensional delos vectores. Todos los elementos de la matriz han de ser delmismo tipo.

• Factores (factor): utiles para el uso de datos categoricos.

• Listas (list): generalizacion de los vectores donde loselementos pueden ser de diferentes tipos (incluso vectores onuevas listas).

• Data frames: listas donde los diferentes elementos tienen lamisma longitud.

• Funciones (function): conjunto de codigo de R ejecutable yparametrizable.

Page 35: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Otros tipos de conjuntos de datos

• Arrays y matrices (matrix): generacion multidimensional delos vectores. Todos los elementos de la matriz han de ser delmismo tipo.

• Factores (factor): utiles para el uso de datos categoricos.

• Listas (list): generalizacion de los vectores donde loselementos pueden ser de diferentes tipos (incluso vectores onuevas listas).

• Data frames: listas donde los diferentes elementos tienen lamisma longitud.

• Funciones (function): conjunto de codigo de R ejecutable yparametrizable.

Page 36: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Otros tipos de conjuntos de datos

• Arrays y matrices (matrix): generacion multidimensional delos vectores. Todos los elementos de la matriz han de ser delmismo tipo.

• Factores (factor): utiles para el uso de datos categoricos.

• Listas (list): generalizacion de los vectores donde loselementos pueden ser de diferentes tipos (incluso vectores onuevas listas).

• Data frames: listas donde los diferentes elementos tienen lamisma longitud.

• Funciones (function): conjunto de codigo de R ejecutable yparametrizable.

Page 37: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Array

• Todos los datos del mismo tipo

• Atributo dim

> x <- 1:42 ; dim(x) <- c(3,7,2) ; x

, , 1

[,1] [,2] [,3] [,4] [,5] [,6] [,7]

[1,] 1 4 7 10 13 16 19

[2,] 2 5 8 11 14 17 20

[3,] 3 6 9 12 15 18 21

, , 2

[,1] [,2] [,3] [,4] [,5] [,6] [,7]

[1,] 22 25 28 31 34 37 40

[2,] 23 26 29 32 35 38 41

[3,] 24 27 30 33 36 39 42

> x[15]

15

Page 38: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Array y seleccion de datos

> x[c(FALSE,TRUE,FALSE),-c(1,7),2]

[1] 26 29 32 35 38

> x[-2,,1]

[,1] [,2] [,3] [,4] [,5] [,6] [,7]

[1,] 1 4 7 10 13 16 19

[2,] 3 6 9 12 15 18 21

> x <- array(1:5,dim=c(3,7,2))

> x[1:2,2:5,2] <- 99 ; x

, , 1

[,1] [,2] [,3] [,4] [,5] [,6] [,7]

[1,] 1 4 2 5 3 1 4

[2,] 2 5 3 1 4 2 5

[3,] 3 1 4 2 5 3 1

, , 2

[,1] [,2] [,3] [,4] [,5] [,6] [,7]

[1,] 2 99 99 99 99 2 5

[2,] 3 99 99 99 99 3 1

[3,] 4 2 5 3 1 4 2

Page 39: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Matrices (un caso particular)

> a <- matrix(1:20,5,4) ; a

[,1] [,2] [,3] [,4]

[1,] 1 6 11 16

[2,] 2 7 12 17

[3,] 3 8 13 18

[4,] 4 9 14 19

[5,] 5 10 15 20

> ncol(a)

[1] 4

> b <- matrix(21:32, nrow=3, byrow=T)

> rownames(b) <- letters[1:3]; colnames(b) <- LETTERS[1:4]; b

A B C D

a 21 22 23 24

b 25 26 27 28

c 29 30 31 32

> b["a","A"]

[1] 21

> b["a",]

A B C D

21 22 23 24

Page 40: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

rbind y cbind

> a %*% t(b)

a b c

[1,] 790 926 1062

[2,] 880 1032 1184

[3,] 970 1138 1306

[4,] 1060 1244 1428

[5,] 1150 1350 1550

> cbind(rbind(a,b),1:8)

A B C D

1 6 11 16 1

2 7 12 17 2

3 8 13 18 3

4 9 14 19 4

5 10 15 20 5

a 21 22 23 24 6

b 25 26 27 28 7

c 29 30 31 32 8

Page 41: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Algunas funciones

• t, det, diag

• solve(A, B) resuelve A ∗ X = B, solve(A) devuelve A−1

> apply(b, 1, sum)

a b c

90 106 122

> apply(b, 2, mean)

A B C D

25 26 27 28

> rowSums(b)

a b c

90 106 122

> colMeans(b)

A B C D

25 26 27 28

> solve(matrix(c(3,1,2,-1),nrow=2),c(5,0))

[1] 1 1

Page 42: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 3

Crear la siguiente matriz:

4,5 -2,1 6,3 2,7 1,6-2,6 3,6 8,4 5,2 8,32,5 1,7 3,7 -4,4 3,73,8 5,8 5,2 1,9 -4,2

Y calcular la fila y columna del mayor y menor elemento.

A <- matrix(c(4.5, -2.6, 2.5, 3.8, -2.1, 3.6, 1.7, 5.8, 6.3, 8.4,

3.7, 5.2, 2.7, 5.2, -4.4, 1.9, 1.6, 8.3, 3.7, -4.2),

nrow = 4)

# Fila del maximo

which.max(apply(A, 1, max))

# Columna del mınimo

which.min(apply(A, 2, min))

Page 43: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 3

Crear la siguiente matriz:

4,5 -2,1 6,3 2,7 1,6-2,6 3,6 8,4 5,2 8,32,5 1,7 3,7 -4,4 3,73,8 5,8 5,2 1,9 -4,2

Y calcular la fila y columna del mayor y menor elemento.

A <- matrix(c(4.5, -2.6, 2.5, 3.8, -2.1, 3.6, 1.7, 5.8, 6.3, 8.4,

3.7, 5.2, 2.7, 5.2, -4.4, 1.9, 1.6, 8.3, 3.7, -4.2),

nrow = 4)

# Fila del maximo

which.max(apply(A, 1, max))

# Columna del mınimo

which.min(apply(A, 2, min))

Page 44: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Factores

> fr <- factor(c("Sı", "No", "No", "Sı")); fr

[1] Sı No No Sı

Levels: No Sı

> table(fr)

No Sı

2 2

> fr <- factor(c("Sı", "No", "No", "Sı"), levels = c("No", "Sı", "O"),

labels = c("No fumador", "Fumador", "NS/NC")); fr

[1] Fumador No fumador No fumador Fumador

Levels: No fumador Fumador NS/NC

> table(fr)

No fumador Fumador NS/NC

2 2 0

> nlevels(fr)

[1] 3

> levels(fr)

[1] "No fumador" "Fumador" "NS/NC"

Page 45: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Factores ordenados

> fc <- factor(c("Muchos", "Pocos", "Pocos", "Bastantes"),

levels = c("Pocos", "Bastantes", "Muchos"),

ordered = TRUE) ; fc

[1] Muchos Pocos Pocos Bastantes

Levels: Pocos < Bastantes < Muchos

> sum(fc < "Muchos")

[1] 3

> ordered(c("Muchos", "Pocos", "Pocos", "Bastantes"),

levels = c("Pocos", "Bastantes", "Muchos"))

[1] Muchos Pocos Pocos Bastantes

Levels: Pocos < Bastantes < Muchos

> table(fr,fc)

fc

fr Pocos Bastantes Muchos

No fumador 2 0 0

Fumador 0 1 1

NS/NC 0 0 0

Page 46: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Factores

• La funcion tapply permite aplicar una operacion a un vectoragrupando previamente los datos en cada uno de los nivelesproporcionados por un factor.

• Reordenar los niveles de un factor: reorder (el factor cuyosniveles hay que reordenar; un vector de la misma longitud acuyos subconjuntos de valores correspondientes a cada niveldel factor se aplicara la funcion que determina el orden; esafuncion).

• Una variable cuantitativa se puede transformar en una variablecualitativa.

Page 47: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

tapply,reorder

> head(Cebada)

Cosecha Variedad A~no Lugar

1 27.00000 Manchuria 1931 University Farm

2 48.86667 Manchuria 1931 Waseca

3 27.43334 Manchuria 1931 Morris

4 39.93333 Manchuria 1931 Crookston

5 32.96667 Manchuria 1931 Grand Rapids

6 28.96667 Manchuria 1931 Duluth

> head(Cebada$Variedad)

[1] Manchuria Manchuria Manchuria Manchuria Manchuria Manchuria

10 Levels: Glabron Manchuria No.457 No.462 No.475 ... Wisconsin No.38

> tapply(Cebada$Cosecha, Cebada$Variedad, median)

Glabron Manchuria No.457 No.462 ...

32.40000 30.96667 33.96666 30.45000 ...

> Variedad_re <- reorder(Cebada$Variedad, Cebada$Cosecha, median)

> head(Variedad_re)

Manchuria Manchuria Manchuria Manchuria Manchuria Manchuria

10 Levels: Svansota No.462 Manchuria No.475 Velvet ... Trebi

> tapply(Cebada$Cosecha, Variedad_re, median)

Svansota No.462 Manchuria No.475

28.55000 30.45000 30.96667 31.06667

Page 48: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Factores

> num <- c(10, 0, 4, 8, 5, 22)

> interv <- cut(num, breaks = 4); interv

[1] (5.49,11] (-0.022,5.49] (-0.022,5.49]

[4] (5.49,11] (-0.022,5.49] (16.5,22]

Levels: (-0.022,5.49] (5.49,11] (11,16.5] (16.5,22]

> interv <- cut(num, breaks = c(0, 5, 10, 30), right=F); interv

[1] [10,30) [0,5) [0,5) [5,10) [5,10) [10,30)

Levels: [0,5) [5,10) [10,30)

> interv <- cut(num, breaks = c(0, 5, 10, 30), order=T,

labels = c("Poco","Bastante","Mucho"),

include.lowest = TRUE) ; interv

[1] Bastante Poco Poco Bastante Poco Mucho

Levels: Poco < Bastante < Mucho

> table(interv)

Poco Bastante Mucho

3 2 1

> which("Poco" < interv )

[1] 1 4 6

Page 49: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 4

Se ha realizado un experimento para estudiar como afecta laconcentracion de nitrogeno del suelo al crecimiento de dos especiesde plantas. Los vectores especie, nitrogeno y ganancia.peso

guardan, respectivamente, para cada planta la especie (A o B) a laque pertenecen, la concentracion de nitrogeno del suelo en el queesta plantada y la ganancia de peso obtenida.

• Clasificar la concentracion de nitrogeno del suelo en 4intervalos con aproximadamente el mismo numero de datos

• Para cada uno de los intervalos anteriores calcular la media deganancia de peso de cada especie de planta.

• ¿Afecta por igual al crecimiento de las dos especies laconcentracion de nitrogeno del suelo?

Page 50: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

# Intervalos de concentracion de nitrogeno

intervalos.nitrogeno <-

cut(nitrogeno, breaks = quantile(nitrogeno),

include.lowest = TRUE) ; intervalos.nitrogeno

# Media de la ganancia de peso segun la concentracion y la especie

tapply(ganancia.peso, list(especie, intervalos.nitrogeno), mean)

# El peso aumenta con la concentracion de nitrogeno, mas en la especie

# A que en la B

Page 51: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 5Se considera publicitar unas galletas saladas de un cierto tipo de fibra: laspersonas a regimen consumiran las galletas antes del almuerzo, llenando susestomagos de tal forma que se sentiran menos hambrientos y comeran menos.Un laboratorio ha estudiado si serıan realmente efectivas.Se proporcionaron a distintos grupos de personas con sobrepeso uno de lostipos de galletas y se les permitio comer despues todo lo que quisieran. Secontrolo la cantidad de comida consumida y el peso, ası como cualquier efectosecundario producido.Los vectores galleta, calorias y molestias contienen el tipo de galletaconsumida (Sin fibra, Fibra de goma, Ambos tipos, Salvado), las calorıasconsumidas y el grado de molestias desarrolladas (Ninguna, Baja, Media yAlta) por cada persona.

• Para cada tipo de galleta, la media de calorıas consumidas.

• Ordenar los tipos de galletas segun su efectividad.

• Calcular la tabla de doble entrada del tipo de galleta consumido respectoal grado de molestias desarrollado.

• Calcular la tabla de contingencia del tipo de galleta consumido por laspersonas que no desarrollaron un grado medio o alto de molestias.

Page 52: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

# Media de calorıas consumidas segun el tipo de galleta

calorias.medias <- tapply(calorias, galleta, mean) ; calorias.medias

# Tipos de galletas ordenados por efectividad

names(sort(calorias.medias))

# Tabla doble entrada: tipo de galleta, grado de molestias

table(molestias, galleta)

# Tabla contingencia: tipo de galleta consumido por personas con pocas

# o ninguna molestia

table(galleta[molestias < "Media"])

# Las galletas mas efectivas son las que producen mayores molestias.

Page 53: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Listas

> lst <- list(nombre="Carlos", num.hijos=3, edad.hijos=c(4,7,9))

> lst$apellido <- "Garcıa"; lst

$nombre

[1] "Carlos"

$num.hijos

[1] 3

$edad.hijos

[1] 4 7 9

$apellido

[1] "Garcıa"

> length(lst)

[1] 4

> lst[1]

$nombre

[1] "Carlos"

> lst[[3]][2]

[1] 7

> lst$num.hijos

[1] 3

> lst["nombre"]

$nombre

[1] "Carlos"

Page 54: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Marcos de datos

> df <- data.frame(Nombre=c("Pedro","Marıa","Jose","Marta"),

Edad=c(27,34,40,39),

Poblacion=c("Malaga","Madrid","Leon","Barcelona"),

Sexo=c("H","M","H","M"),

Casado=c(F,T,T,F)); df

Nombre Edad Poblacion Sexo Casado

1 Pedro 27 Malaga H FALSE

2 Marıa 34 Madrid M TRUE

3 Jose 40 Leon H TRUE

4 Marta 39 Barcelona M FALSE

> attach(df)

> Nombre

[1] Pedro Marıa Jose Marta

Levels: Jose Marıa Marta Pedro

> Edad

[1] 27 34 40 39

> detach(df)

> Edad

Error: objeto ’Edad’ no encontrado

Page 55: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Marcos de datos

> names(df)

[1] "Nombre" "Edad" "Poblacion" "Sexo" "Casado"

> rownames(df)

[1] "1" "2" "3" "4"

> ncol(df)

[1] 5

> df$Nombre

[1] Pedro Marıa Jose Marta

Levels: Jose Marıa Marta Pedro

> df[1:3]

Nombre Edad Poblacion

1 Pedro 27 Malaga

2 Marıa 34 Madrid

3 Jose 40 Leon

4 Marta 39 Barcelona

> df[1,3]

[1] Malaga

Levels: Barcelona Leon Madrid Malaga

Page 56: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Operaciones simultaneas

• Las funciones lapply y sapply aplica una operacion a cadaelemento de una lista.

• La funcion by permite aplicar una operacion a un marco dedatos agrupando previamente las filas de datos en cada unode los niveles proporcionados por una lista de factores.

• La funcion aggregate permite aplicar una operacion a cadacolumna de un marco de datos agrupando previamente losdatos en cada uno de los niveles proporcionados por una listade factores.

Page 57: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Operaciones simultaneas> df <- data.frame(altura=c(150,135,210,140), peso=c(65,61,100,65),

sexo=c("H", "M", "H", "M"))

> apply(df[-3], 2, sd)

altura peso

34.73111 18.26426

> lapply(df[-3], sum)

$altura

[1] 635

$peso

[1] 291

> sapply(df[-3], sum)

altura peso

635 291

> by(df[-3], df$sexo, prod)

sexo: H

[1] 204750000

--------------------------------------------------------------------

sexo: M

[1] 74938500

> aggregate(df[-3], list(df$sexo), mean)

Group.1 altura peso

1 H 180.0 82.5

2 M 137.5 63.0

Page 58: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Marcos de datos: read.table

• Todas las filas tienen el mismo numero de elementos menos laprimera que tiene un elemento menos.

• La primera fila contiene los nombres de las columnas.

• El primer elemento del resto de filas es el nombre de cada fila

• Los datos estan separados por espacios en blanco.

• El separador de los decimales es un punto.

• Los valores desconocidos se expresan con NA.

• write.table

Page 59: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Marcos de datos: read.csv

• La primera fila contiene los nombres de las columnas.

• Las filas no tienen nombre.

• Las filas que tengan menos elementos que la mas larga soncompletadas con valores NA.

• Los datos estan separados por comas.

• El separador de los decimales es un punto.

• Los valores desconocidos se expresan con NA.

Page 60: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Marcos de datos: read.csv2

• La primera fila contiene los nombres de las columnas.

• Las filas no tienen nombre.

• Las filas que tengan menos elementos que la mas larga soncompletadas con valores NA.

• Los datos estan separados por puntos y coma.

• El separador de los decimales es una coma.

• Los valores desconocidos se expresan con NA.

Page 61: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 6

En el marco de datos vehiculos aparece la relacion de ventas delano 2001 organizadas por provincias (filas) y tipos de vehıculos(columnas). Se distingue tres modos de ventas (n-nuevos,i-importacion, u-usados).

• Calcular: el total de camiones, de cualquier tipo, vendidos enSevilla. El total de vehıculos vendidos en 2001. El total devehıculos nuevos vendidos en cada provincia. Las 10provincias con mayores ventas.

# Camiones vendidos en Sevilla, Total

sum(v["Sevilla", 1:3]) ; sum(v)

# Nuevos en cada provincia

apply(v[,seq(1,18,3)],1,sum)

# 10 mejores provincias

row.names(v)[order(apply(v, 1, sum), decreasing=T)[1:10]]

Page 62: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 6

En el marco de datos vehiculos aparece la relacion de ventas delano 2001 organizadas por provincias (filas) y tipos de vehıculos(columnas). Se distingue tres modos de ventas (n-nuevos,i-importacion, u-usados).

• Calcular: el total de camiones, de cualquier tipo, vendidos enSevilla. El total de vehıculos vendidos en 2001. El total devehıculos nuevos vendidos en cada provincia. Las 10provincias con mayores ventas.

# Camiones vendidos en Sevilla, Total

sum(v["Sevilla", 1:3]) ; sum(v)

# Nuevos en cada provincia

apply(v[,seq(1,18,3)],1,sum)

# 10 mejores provincias

row.names(v)[order(apply(v, 1, sum), decreasing=T)[1:10]]

Page 63: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 7

Se ha medido el nivel de glucosa en sangre de distintos sujetos endiversos momentos antes y despues de ingerir alcohol. Para cadasujeto se realizo el experimento en dos situaciones: en condicionesnormales y tras haber ingerido un aditivo dietetico.El marco de datos alcohol contiene los datos de las siguientesvariables:

• Sujeto: un numero identificador de cada sujeto delexperimento.

• Aditivo: el sujeto ingirio o no el aditivo dietetico.

• Tiempo: momento en que se realizo la medicion, relativo almomento en que se ingirio alcohol.

• Glucosa: nivel medido de glucosa en sangre.

Page 64: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 7(Cont.)

• Los valores de la variable Tiempo representan periodos de diezminutos. Transformarla para que representen el total deminutos relativo al momento en que se ingirio alcohol.

• Calcular, para cada momento en que se realizo una medicion ypara las dos situaciones en las que se realizo el experimento,la media del nivel de glucosa en sangre medido.

# Minutos relativos al momento de ingerir alcohol

alcohol$Tiempo <- alcohol$Tiempo * 10

# Media del nivel de glucosa con o sin ingerir aditivo para cada

# momento de medicion.

aggregate(alcohol["Glucosa"],

list(Aditivo = alcohol$Aditivo, Tiempo = alcohol$Tiempo),

mean)

Page 65: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 7(Cont.)

• Los valores de la variable Tiempo representan periodos de diezminutos. Transformarla para que representen el total deminutos relativo al momento en que se ingirio alcohol.

• Calcular, para cada momento en que se realizo una medicion ypara las dos situaciones en las que se realizo el experimento,la media del nivel de glucosa en sangre medido.

# Minutos relativos al momento de ingerir alcohol

alcohol$Tiempo <- alcohol$Tiempo * 10

# Media del nivel de glucosa con o sin ingerir aditivo para cada

# momento de medicion.

aggregate(alcohol["Glucosa"],

list(Aditivo = alcohol$Aditivo, Tiempo = alcohol$Tiempo),

mean)

Page 66: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Distribucion normal

• Generacion aleatoria: rnorm(n, mean = 0, sd = 1)

• Funcion de densidad:

• Funcion de distribucion:

• Funcion cuantil:

Page 67: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Distribucion normal

• Generacion aleatoria: rnorm(n, mean = 0, sd = 1)

• Funcion de densidad:

• Funcion de distribucion:

• Funcion cuantil:

Page 68: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Distribucion normal

• Generacion aleatoria: rnorm(n, mean = 0, sd = 1)

• Funcion de densidad: P(X = x) = f (x)

• Funcion de distribucion:

• Funcion cuantil:

Page 69: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Distribucion normal

• Generacion aleatoria: rnorm(n, mean = 0, sd = 1)

• Funcion de densidad: dnorm(x, mean = 0, sd = 1)

• Funcion de distribucion:

• Funcion cuantil:

Page 70: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Distribucion normal

• Generacion aleatoria: rnorm(n, mean = 0, sd = 1)

• Funcion de densidad: dnorm(x, mean = 0, sd = 1)

• Funcion de distribucion:

• Funcion cuantil:

Page 71: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Distribucion normal

• Generacion aleatoria: rnorm(n, mean = 0, sd = 1)

• Funcion de densidad: dnorm(x, mean = 0, sd = 1)

• Funcion de distribucion: P(X <= x) =∫ x−∞ f (x)dx

• Funcion cuantil:

Page 72: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Distribucion normal

• Generacion aleatoria: rnorm(n, mean = 0, sd = 1)

• Funcion de densidad: dnorm(x, mean = 0, sd = 1)

• Funcion de distribucion: pnorm(x, mean = 0, sd = 1)

• Funcion cuantil:

Page 73: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Distribucion normal

• Generacion aleatoria: rnorm(n, mean = 0, sd = 1)

• Funcion de densidad: dnorm(x, mean = 0, sd = 1)

• Funcion de distribucion: pnorm(x, mean = 0, sd = 1)

P(X >= x) =∫∞x f (x)dx

• Funcion cuantil:

Page 74: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Distribucion normal

• Generacion aleatoria: rnorm(n, mean = 0, sd = 1)

• Funcion de densidad: dnorm(x, mean = 0, sd = 1)

• Funcion de distribucion: pnorm(x, mean = 0, sd = 1)

pnorm(x, mean = 0, sd = 1, lower.tail = FALSE)

• Funcion cuantil:

Page 75: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Distribucion normal

• Generacion aleatoria: rnorm(n, mean = 0, sd = 1)

• Funcion de densidad: dnorm(x, mean = 0, sd = 1)

• Funcion de distribucion: pnorm(x, mean = 0, sd = 1)

pnorm(x, mean = 0, sd = 1, lower.tail = FALSE)

• Funcion cuantil:

Page 76: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Distribucion normal

• Generacion aleatoria: rnorm(n, mean = 0, sd = 1)

• Funcion de densidad: dnorm(x, mean = 0, sd = 1)

• Funcion de distribucion: pnorm(x, mean = 0, sd = 1)

pnorm(x, mean = 0, sd = 1, lower.tail = FALSE)

• Funcion cuantil: P(X <= p) = x

Page 77: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Distribucion normal

• Generacion aleatoria: rnorm(n, mean = 0, sd = 1)

• Funcion de densidad: dnorm(x, mean = 0, sd = 1)

• Funcion de distribucion: pnorm(x, mean = 0, sd = 1)

pnorm(x, mean = 0, sd = 1, lower.tail = FALSE)

• Funcion cuantil: qnorm(x, mean = 0, sd = 1)

Page 78: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Distribucion normal

• Generacion aleatoria: rnorm(n, mean = 0, sd = 1)

• Funcion de densidad: P(X = x) = f (x)dnorm(x, mean = 0, sd = 1)

• Funcion de distribucion: P(X <= x) =∫ x−∞ f (x)dx

pnorm(x, mean = 0, sd = 1)

P(X >= x) =

∫ ∞x

f (x)dx

pnorm(x, mean = 0, sd = 1, lower.tail = FALSE)

• Funcion cuantil: P(X <= p) = xqnorm(x, mean = 0, sd = 1)

Page 79: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Otras distribuciones

Distribucion Nombre en R Parametros

beta beta shape1, shape2binomial binom size, probCauchy cauchy location, scalechi-cuadrado chisq dfexponencial exp rateF f df1, df2gamma gamma shape, scalegeometrica geom probhipergeometrica hyper m, n, knormal logarıtmica lnorm meanlog, sdloglogıstica logis location, scalemultinomial multinom size, probbinomial negativa nbinom size, probnormal norm mean, sdPoisson pois lambdat de Student t dfuniforme unif min, maxWeibull weibull shape, scale

Page 80: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Muestreo

• Permutaciones aleatorias: sample(sucesion)

• Sin remplazamiento: sample(muestra, size = n)• Con remplazamiento:sample(muestra, size = n, replace = TRUE)

• Con distintas probabilidades:sample(muestra, size = n, prob = probabilidades)

# 10 tiradas de un dado cargado (sobre el 6).

sample(1:6, 10, replace = T, prob = c(rep(1/11, 5), 6/11))

Page 81: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 8

Sea X una variable aleatoria con distribucion binomial negativa deparametros 3 (numero de exitos) y 0.2 (probabilidad de exitos).

• Calcular P(X = 12), P(X ≤ 15), P(X > 22) y P(2 < X ≤ 10).

• Calcular los cuartiles. ¿Cuanto vale P(X ≤ Qi ) para i=1, 2, 3?

s <- 3 ; p <- 0.2

# P(X = 12), P(X <= 15), P(X > 22)

dnbinom(12, s, p) ; pnbinom(15, s, p) ; 1 - pnbinom(22, s, p)

# P(2 < X <= 10)

sum(dnbinom(3:10, s, p))

# Calculo de los cuartiles

cuartiles <- qnbinom(c(0.25, 0.5, 0.75), s, p) ; cuartiles

# Probabilidades acumuladas de los cuartiles

pnbinom(cuartiles, s, p)

Page 82: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 8

Sea X una variable aleatoria con distribucion binomial negativa deparametros 3 (numero de exitos) y 0.2 (probabilidad de exitos).

• Calcular P(X = 12), P(X ≤ 15), P(X > 22) y P(2 < X ≤ 10).

• Calcular los cuartiles. ¿Cuanto vale P(X ≤ Qi ) para i=1, 2, 3?

s <- 3 ; p <- 0.2

# P(X = 12), P(X <= 15), P(X > 22)

dnbinom(12, s, p) ; pnbinom(15, s, p) ; 1 - pnbinom(22, s, p)

# P(2 < X <= 10)

sum(dnbinom(3:10, s, p))

# Calculo de los cuartiles

cuartiles <- qnbinom(c(0.25, 0.5, 0.75), s, p) ; cuartiles

# Probabilidades acumuladas de los cuartiles

pnbinom(cuartiles, s, p)

Page 83: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Objetivos

Comunicar de ideas complejas con claridad, precision y eficiencia.

• Mostrar los datos.

• Inducir a pensar sobre el contenido en lugar de lametodologıa, el diseno grafico o la tecnologıa que lo produjo

• Evitar la distorsion en la comunicacion de los datos.

• Presentar muchos numeros en un pequeno espacio.

• Hacer que grandes conjuntos de datos tengan coherencia.

• Inducir a la comparacion entre diferentes partes de los datos.

• Revelar detalles, desde un perspectiva global o particular.

• Tener un proposito razonablemente claro: la descripcion, laexploracion, la tabulacion o la decoracion.

• Estar integrado con las descripciones estadısticas y verbales,

Page 84: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Recomendaciones

• Hacer que los datos sobresalgan. Evitar lo superfluo.

• Utilizar elementos prominentes para mostrar los datos.

• Hacer la region de datos menor que la region delimitada porlas escalas. Las marcas hacia afuera.

• No congestionar la region de datos.

• No exagerar el numero de marcas (de 3 a 10 marcas).

• Utilizar una lınea cuando haya un valor que deba verse atraves del grafico, pero que no interfiera con los datos.

• Las etiquetas no deben interferir o congestionar el grafico.

• Evitar colocar claves en el interior. Colocar las notas en eltexto o la explicacion.

• Los sımbolos o conjuntos de datos que se superpongan debenpoder ser reconocidos facilmente.

Page 85: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Dispositivos graficos

R puede generar graficos en casi cualquier tipo de dispositivografico o de impresion.

• la ventana de RStudio (por defecto);

• postscript, pdf y bmp, para generar ficheros PostScript, PDFy Mapa de Puntos (BMP)

• png y jpeg, para generar imagenes PNG y JPEG.

histogram(rnorm(1000))

png(file="histograma.png")

histogram(rnorm(1000))

dev.off()

histogram(rnorm(1000))

savePlot(file="histograma.png", type="png")

trellis.device("png", file = "histograma.png")

histogram(rnorm(1000))

dev.off()

Page 86: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Parametros comunes

Para mayorıa de las funciones graficas

• data: Marco de datos con las variables a partir de las cualesse construye el grafico

• horizontal: Determina el sentido del grafico

• main: Tıtulo principal

• sub: Subtıtulo

• xlab, ylab: Etiquetas de los ejes X e Y

• xlim, ylim: Lımites de los ejes X e Y

Page 87: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Diagrama de dispersion

Muestra los valores dibujando un punto por cada dato.

> head(faithful$eruptions)

[1] 3.600 1.800 3.333 2.283 4.533 2.883

> stripplot(~eruptions, data = faithful,

main = "Erupciones del geiser Old Faithful",

xlab = "Duracion (en minutos)")

> savePlot("erupciones.png")

Page 88: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Diagrama de caja y bigote

Un rectangulo entre el primer y el tercer cuartil, en su interior lamediana. A ambos lados dos lıneas con los valores que seencuentran a lo sumo a una distancia de 1.5 veces el rangointercuartılico. Cualquier otro valor se marca individualmente.

> bwplot(~Sepal.Width, data = iris, main = "Ancho de los Sepalos",

xlab = "")

Page 89: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Varios diagramas de caja y bigote

Para comparar las distribuciones para distintas agrupaciones en losdatos podemos realizar un diagrama por cada uno.

> bwplot(Sepal.Width~Species, data = iris,

main = "Ancho de los Sepalos", xlab = "")

Page 90: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Histograma

Se divide el rango de datos en clases, se calcula la frecuencia dedatos para cada clase y se dibuja una barra por clase (ancho laamplitud de la clase y superficie proporcional a la frecuencia)

> histogram(~eruptions, data = faithful, type = "count",

main = "Erupciones del geiser Old Faithful",

xlab = "Duracion (en minutos)",

ylab = "No de erupciones")

Page 91: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Histograma (Cont.)

Fijar el numero de clases (por defecto usa la regla de Sturges,log2(n) + 1), sus extremos y/o utilizar las frecuencias relativas.

> print(histogram(faithful$eruptions, type = "percent", nint = 20),

split = c(1,1,2,1), more=T)

> print(histogram(faithful$eruptions, type = "density",

breaks = c(0, 2, 3, 3.5, 4, 4.5, 5, 5.5)),

split = c(2,1,2,1))

Page 92: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Grafico de densidad

> densityplot(faithful$eruptions, plot.points = "jitter",

main = "Erupciones del geiser Old Faithful",

xlab = "Duracion (en minutos)", ylab = "Probabilidad")

Opciones de plot.points: valor logico, ”rug” o ”jitter”

Page 93: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Diagrama de barras

Una barra por cada dato, la longitud de cada barra es proporcionalal valor del dato. Para conjuntos de datos pequenos.

> barchart(sort(tapply(drosophila$fecundidad, drosophila$linea, mean)),

xlab="", main="Fecundidad media de cada lınea genica")

Page 94: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Diag. de barras (variables cualitativas)

Frecuencias absolutas de los distintas categorıas de esa variable.

> barchart(table(iris$Species),

horizontal=FALSE,

main = "Numero de plantas estudiadas segun la especie",

xlab = "Especie de lirio")

Page 95: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Diag. de barras (grupos de valores)

Por cada grupo de valores, un grupo de barras

> barchart(Departamento ~ Solicitudes, groups = Resultado,

data = UCBAdmisiones, auto.key=T)

Page 96: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Diagrama de puntos

Un punto por cada dato en una coordenada vertical distinta.

> dotplot(sort(islands[islands < islands["Java"]]),

xlab="Superficie en millas cuadradas")

Page 97: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 9

En este ejercicio trabajaremos con los datos relativos a lapoblacion mundial en los anos 1950 y 2000. Para ello seproporciona la siguiente informacion:

• continente al que pertenece cada uno de los paıses.

• area (en km2) ocupada por cada uno de los paıses.

• poblacion de los paıses en los anos 1950 y 2000.

> head(censo)

Continente Area P1950 P2000

Afghanistan Asia 647500 8150368 25888797

Albania Europe 28748 1227156 3490435

Algeria Africa 2381740 8892718 31193917

American Samoa Oceania 199 19100 65446

Andorra Europe 468 6176 66824

Angola Africa 1246700 4117617 10132376

Page 98: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 9

1 Comparar la distribucion de las poblaciones en los anos 1950 y2000. Para cada una de las variables crea un histograma ¿Quelos esta distorsionando? Elimina las causas y crealos de nuevo.

2 Comparar el aumento de poblacion durante esos 50 anos encada continente. Crea un diagrama de barras que muestre,para cada continente, dos barras adosadas indicando lapoblacion en cada ano. ¿Que continente ha crecido mas?

3 Variacion de la distribucion de la poblacion segun elcontinente. Crea, para cada ano, un grafico diagramas de cajay bigote mostrando la distribucion en cada uno de loscontinentes (procura eliminar los elementos distorsionadores).¿Que relacion observas entre los continentes en ambos anos?

4 Comparar la densidad de poblacion por continentes calculandola media, en los anos 1950 y 2000 respectivamente, de cadauno. Crear un grafico de puntos de los resultados obtenidos.¿Que ha ocurrido a lo largo de esos 50 anos?

Page 99: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 9

# Eliminamos los paıses con mayor poblacion (representan

# alrededor del 15del total)

histogram(censo$P1950)

histogram(log(censo$P1950,10))

histogram(censo$P1950[censo$P1950 < 1e7])

# Analgo para el a~no 2000.

# Calculamos el area y la poblacion de cada continente

censoC <- aggregate(censo[-1], censo[1], sum)

# Creamos un marco de datos que nos permita agrupar los datos

# obtenidos con comodidad

censoTC <- data.frame(Continente = rep(censoC$Continente,2),

A~no = as.character(rep(c(1950,2000),each=5)),

Poblacion = c(censoC$P1950,censoC$P2000))

barchart(A~no ~ Poblacion, groups = Continente, data = censoTC,

auto.key=T)

Page 100: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 9

# Incluımos los dos graficos en una misma imagen

print(bwplot(Continente[P1950 < 1e7] ~ P1950[P1950 < 1e7], data = censo,

xlab="Poblacion en el a~no 1950"),

split = c(1,1,2,1), more=T)

print(bwplot(Continente[P2000 < 1e7] ~ P2000[P2000 < 1e7], data = censo,

xlab="Poblacion en el a~no 2000"),

split = c(2,1,2,1))

# Creamos un marco de datos con las densidades de poblacion por

# continente que nos permita agrupar los datos con comodidad.

censoDC <- data.frame(Continente = rep(censoC$Continente,2),

A~no = as.character(rep(c(1950,2000),each=5)),

Densidad = c(censoC$P1950/censoC$Area,

censoC$P2000/censoC$Area))

dotplot(A~no ~ Densidad, groups=Continente, data=censoDC,

auto.key=T)

Page 101: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Diagrama de dispersion bivariante

Dibuja un punto por cada par de valores.ejeY ~ ejeX

> A~no <- 1700:1988

> xyplot(sunspot.year ~ A~no)

> xyplot(sunspot.year ~ A~no, type = "b")

> xyplot(sunspot.year ~ A~no, type = "s")

Page 102: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Matriz de diagramas de dispersion

> splom(environmental)

Page 103: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Tecnicas de visualizacion (I)

Anadir una ligera perturbacion a los datos: jitter

> xyplot(Sepal.Length ~ Petal.Length, data = iris)

> xyplot(jitter(Sepal.Length) ~ jitter(Petal.Length), data = iris)

Page 104: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Tecnicas de visualizacion (II)

Razon de aspecto: Relacion entre la altura y la anchura

> f <- function (x) {if (x < 0) x^2 else 10*x}

> ex <- -10:10 ; ey <- sapply(ex, f)

> xyplot(ey ~ ex, type = "l", aspect = 1, xlab = "x", ylab = "f(x)")

> xyplot(ey ~ ex, type = "l", aspect = 1/10, xlab = "x", ylab = "f(x)")

> xyplot(ey ~ ex, type = "l", aspect = 10, xlab = "x", ylab = "f(x)")

Page 105: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Regresion lineal simple

Anadir la recta de regresion

> lm(ozone ~ wind, data = environmental)

Coefficients:

(Intercept) wind

99.054 -5.731

> xyplot(ozone ~ wind, data = environmental, type = c("p", "r"),

aspect = "xy")

Page 106: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Ajuste de una curva

Ajuste de loess:

• alfa (span): si aumenta la curva se hace mas suave

• lambda (degree): grado de ciertos polinomios (1 o 2)

xyplot(ozone ~ wind, data = environmental, type = c("p", "smooth"),

aspect = "xy", span = 0.6, degree = 2)

Page 107: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Distribucion en paneles (trellis)

En cada panel se dibuja el grafico correspondiente a unsubconjunto de datos que se obtienen a partir de variablescondicionantes:

• ~ x | g1 * g2 * ...: histograma, grafico de densidad,matriz de dispersion

• y ~ x | g1 * g2 * ...: diagramas de caja y bigote,barras, puntos y dispersion

Page 108: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

> dotplot(variety ~ yield | year * site, data = barley,

xlab="", layout = c(6,2))

Page 109: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Condicionante cuantitativa

> E.shingle <- equal.count(ethanol$E, number = 9, overlap = 1/4)

> xyplot(NOx ~ C | E.shingle, data = ethanol, aspect = "xy",

xlab = "Razon de compresion",

ylab = "Oxidos de nitrogeno (microgramos/J)")

Page 110: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Superposicion de paneles

> xyplot(Sepal.Length+Sepal.Width ~ Petal.Length+Petal.Width | Species,

data = iris, auto.key = list(column = 2),

xlab = "Longitud y anchura del petalo",

ylab = "Longitud y anchura del sepalo")

Page 111: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 10

El asma es una enfermedad caracterizada por vıas respiratorias quese estrechan causando dificultad para pasar el aire. Se ha realizadoun experimento para determinar la eficacia de un nuevomedicamento. Se proporcionaron a una serie de pacientes tresmedicamentos: un placebo , el medicamento estandar y el nuevo.Para controlar la eficacia se midio el Volumen Espiratorio Forzado,VEF1, once horas antes de iniciar el tratamiento y cada horadurante las ocho siguientes al inicio del mismo (a mayor valor,mayor efectividad del medicamento).El marco de datos asma contiene los datos de las siguientesvariables:

• Paciente: un numero identificador de cada paciente.

• Medicamento: medicamento proporcionado al paciente.

• Hora: momento en que se midio el VEF1.

• VEF1: valor medido del VEF1.

Page 112: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 10

• Seleccionar los datos del paciente 1 y el medicamento nuevo yconstruir un grafico que muestre la evolucion en el tiempo delVEF1.

paciente1.Nuevo <- asma[asma$Paciente == "1" & asma$Medicamento == "Nuevo",

c("Hora", "VEF1")]

xyplot(VEF1 ~ Hora, data = paciente1.Nuevo, type= "l", aspect = "xy",

main = "Evolucion a lo largo del tiempo del valor de VEF1

para el paciente 1 y el medicamento nuevo",

xlab = "Hora",

ylab = "VEF1")

Page 113: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 10

• Seleccionar los datos del paciente 1 y el medicamento nuevo yconstruir un grafico que muestre la evolucion en el tiempo delVEF1.

paciente1.Nuevo <- asma[asma$Paciente == "1" & asma$Medicamento == "Nuevo",

c("Hora", "VEF1")]

xyplot(VEF1 ~ Hora, data = paciente1.Nuevo, type= "l", aspect = "xy",

main = "Evolucion a lo largo del tiempo del valor de VEF1

para el paciente 1 y el medicamento nuevo",

xlab = "Hora",

ylab = "VEF1")

Page 114: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 10

• Seleccionar todos los datos correspondientes al paciente 1 yconstruir un grafico que muestre como evoluciono en eltiempo el valor de VEF1 para cada uno de los tresmedicamentos, diferenciando estos con distintos colores.

paciente1 <- asma[asma$Paciente == "1", -1]

xyplot(VEF1 ~ Hora, data = paciente1, type = "l", aspect = "xy",

group = Medicamento, auto.key = list(points=F, lines=T),

main = "Evolucion a lo largo del tiempo del valor de VEF1

para el paciente 1 y cada uno de los tres medicamentos",

xlab = "Hora",

ylab = "VEF1")

Page 115: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 10

• Seleccionar todos los datos correspondientes al paciente 1 yconstruir un grafico que muestre como evoluciono en eltiempo el valor de VEF1 para cada uno de los tresmedicamentos, diferenciando estos con distintos colores.

paciente1 <- asma[asma$Paciente == "1", -1]

xyplot(VEF1 ~ Hora, data = paciente1, type = "l", aspect = "xy",

group = Medicamento, auto.key = list(points=F, lines=T),

main = "Evolucion a lo largo del tiempo del valor de VEF1

para el paciente 1 y cada uno de los tres medicamentos",

xlab = "Hora",

ylab = "VEF1")

Page 116: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 10

• Usar la funcion aggregate para calcular, para cadamedicamento y para cada hora, la media de los valores deVEF1 medidos para cada paciente. Construir un grafico quemuestre como evoluciono en el tiempo el valor medio de VEF1para cada uno de los tres medicamentos, diferenciando estoscon distintos colores. ¿Se puede pensar que el medicamentonuevo es mas efectivo que el medicamento estandar?

medias.Medicamento.Hora <-

aggregate(asma["VEF1"],

list(Medicamento = asma$Medicamento, Hora = asma$Hora),

mean)

xyplot(VEF1 ~ Hora, data = medias.Medicamento.Hora, type = "l",

aspect = "xy",

group = Medicamento, auto.key = list(points=F,lines=T),

main = "Evolucion a lo largo del tiempo del valor medio de VEF1

para cada uno de los tres medicamentos",

xlab = "Hora", ylab = "VEF1")

Page 117: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 10

• Usar la funcion aggregate para calcular, para cadamedicamento y para cada hora, la media de los valores deVEF1 medidos para cada paciente. Construir un grafico quemuestre como evoluciono en el tiempo el valor medio de VEF1para cada uno de los tres medicamentos, diferenciando estoscon distintos colores. ¿Se puede pensar que el medicamentonuevo es mas efectivo que el medicamento estandar?

medias.Medicamento.Hora <-

aggregate(asma["VEF1"],

list(Medicamento = asma$Medicamento, Hora = asma$Hora),

mean)

xyplot(VEF1 ~ Hora, data = medias.Medicamento.Hora, type = "l",

aspect = "xy",

group = Medicamento, auto.key = list(points=F,lines=T),

main = "Evolucion a lo largo del tiempo del valor medio de VEF1

para cada uno de los tres medicamentos",

xlab = "Hora", ylab = "VEF1")

Page 118: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Superposicion de paneles

> densityplot(~height, data = singer, groups = voice.part,

bw = 1.5, auto.key = list(columns = 4))

Page 119: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

plot

Nube de puntos:

> plot(1:100)

Page 120: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

plot/xyplot

> plot(x=1:10, y=1:10,pch=3, col="red")

> points(c(2,2), c(4,5),pch=5,col="blue")

Page 121: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

plot/xyplot

> xyplot(1:10 ~ 1:10,

panel = function (x, y) {

panel.xyplot(x, y, pch=3, col="red")

panel.points(c(2,2), c(4,5), pch=5, col="blue")})

Page 122: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

plot/bwplot

> a <- 1:100 ; b <- factor(rep(1:5,20))

> plot(b,a)

Page 123: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

plot/bwplot

> bwplot(a~b)

Page 124: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

plot/splom

> d <- data.frame(norm=rnorm(10),unif=runif(10),expo=rexp(10))

> plot(d)

Page 125: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

plot/splom

> splom(d)

Page 126: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

plot

> a <- rnorm(10) ; par(mfrow=c(2,3))

> plot(a,type="p",main="Tıtulo (tipo p)",sub="Subtıtulo",

xlab="Etiqueta eje x",ylab="Etiqueta eje y",xlim=c(1,10))

> plot(a,type="l",main="Tıtulo (tipo l)",sub="Subtıtulo",

xlab="Etiqueta eje x",ylab="Etiqueta eje y",xlim=c(1,10))

> plot(a,type="b",main="Tıtulo (tipo b)",sub="Subtıtulo",

xlab="Etiqueta eje x",ylab="Etiqueta eje y",xlim=c(1,10))

> plot(a,type="h",main="Tıtulo (tipo h)",sub="Subtıtulo",

xlab="Etiqueta eje x",ylab="Etiqueta eje y",xlim=c(1,10))

> plot(a,type="s",main="Tıtulo (tipo s)",sub="Subtıtulo",

xlab="Etiqueta eje x",ylab="Etiqueta eje y",xlim=c(1,10))

> plot(a,type="o",main="Tıtulo (tipo o)",sub="Subtıtulo",

xlab="Etiqueta eje x",ylab="Etiqueta eje y",xlim=c(1,10))

Page 127: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

plot

Page 128: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

plot

> plot(rnorm(15,10,5),col="red",type="l")

> lines(rnorm(15,10,5),col="blue",type="p",pch=1)

> lines(rnorm(15,10,5),col="green",type="b",pch=2)

> title(main="Mi grafico")

> legend("topright", c("lineas","puntos","ambos") ,

+ lty=1:3, col=c("red", "blue","green"), bty="n", cex=.75)

Page 129: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

plot/xyplot

> data(iris)

> attach(iris)

> plot(Sepal.Length, Sepal.Width, col=Species, pch=as.numeric(Species))

> legend(’topright’, levels(Species), lty=1, col=1:3, bty=’n’, cex=.75)

Page 130: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

plot/xyplot

xyplot(Sepal.Width ~ Sepal.Length, groups = Species, pch=1:3, col=1:3,

key = list(lines=list(col=1:3), corner=c(1,1),

text=list(c("Setosa", "Versicolor", "Virginica"))))

Page 131: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

pairs/splom

> pairs(iris[,1:4], pch=as.numeric(Species), col=Species)

Page 132: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

pairs/splom

> splom(iris[,1:4], groups=Species, pch=1:3, col = 1:3)

Page 133: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

barplot/barchart

> par(mfrow=c(1,2))

> barplot(1:10)

> m <- matrix(1:10,2,5,byrow=T)

> barplot(m,horiz=TRUE, beside=TRUE, col=c("blue","gray"))

Page 134: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

barplot/barchart

> barchart(1:10~1:10, horizontal = F)

> barchart(rep(1:5, each=2)~1:10, groups = rep(c(1,2), 5),

ylab="", xlab="")

Page 135: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

boxplot/bwplot

> d <- data.frame(expo=rexp(10), norm=rnorm(10), unif=runif(10))

> boxplot(d)

Page 136: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

boxplot/bwplot

> bwplot(expo + norm + unif ~ rep(c("expo", "norm", "unif"), each = 10),

data = d, horizontal = F, xlab="", ylab="")

Page 137: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

hist/histogram

> rmt <- matrix(rexp(1000 * 16), nrow = 16) ; par(mfrow=c(1,3))

> mns <- cbind(rmt[1, ], apply(rmt[1:4, ], 2, mean),

apply(rmt, 2, mean))

> hist(mns[, 1])

> hist(mns[, 2], main = "Media de muestras de tama~no 4")

> hist(mns[, 3], main = "Media de muestras de tama~no 16")

Page 138: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

hist/histogram

> histogram(mns[, 1], type="count")

> histogram(mns[, 2], type="count")

> histogram(mns[, 3], type="count")

Page 139: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

hist/histogram

> data.mns = data.frame(mns = c(mns),

ssz = gl(3, 1000, labels = c("1", "4", "16")))

> histogram(~ mns | ssz, data = data.mns, layout = c(3, 1),

main = "Histogramas de las medias segun el tama~no de la muestra")

Page 140: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

hist/histogram

> meds <- cbind(rmt[1, ], apply(rmt[1:4, ], 2, median),

apply(rmt, 2, median))

> alldat <- data.frame(sim = c(mns, meds),

ssz = gl(3, 1000, labels = c("1", "4","16")),

type = gl(2, 3000, labels = c("Media", "Mediana")))

> histogram(~sim | ssz * type, data = alldat, layout = c(3, 2),

main = "Histogramas de medias y medianas segun el tama~no de la muestra")

Page 141: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

hist/histogram

> a <- rnorm(1000) ; par(mfrow=c(1,2))

> hist(a, col="blue", border="white", prob=TRUE)

> lines(density(a), col="orange", lwd=3)

> hist(a,col="blue", border="white", prob=TRUE, breaks=25)

> lines(density(a), col="orange", lwd=3)

Page 142: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

hist/histogram

> histogram(~ a, type = "density",

panel = function(x, ...) {

panel.histogram(x, ..., col="blue", border="white")

panel.densityplot(x,..., col = "orange", lwd=3)})

> histogram(~ a, type = "density",

panel = function(x, ...) {

panel.histogram(x, breaks=25, col="blue", border="white")

panel.densityplot(x,..., col = "orange", lwd=3)})

Page 143: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

pie

Diagrama de sectores

> pie(c(5,3,14,7,9,24), labels=paste("Grupo",1:6), main="Sectores")

> pie(c(5,3,14,7,9,24), labels=paste("Grupo",1:6), main="Sectores",

density = 10, angle = 60 + 10 * 1:6)

Page 144: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

coplot

> x <- rnorm(100) ; y <- rnorm(100)

> f1 <- factor(rep(c("a","b","c","c","a"),20))

> f2 <- factor(rep(c("e","f","g","e","f"),20))

> coplot(x~y|f1)

> coplot(x~y|f1+f2)

Page 145: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

lattice: escala logarıtmica y curvasuavizada

> xyplot(dist ~ speed, data = cars,

main = "Conjunto de datos: cars (escala logarıtmica)",

xlab = "Velocidad (mph)", ylab = "Distancia de franado (ft)",

scales = list(x=list(equispaced.log = FALSE,log=TRUE),

y=list(equispaced.log = FALSE,log=TRUE)),

panel = function(x, y) {panel.xyplot(x, y)

panel.loess(x, y, span=1, col="red")})

Page 146: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Otras opciones (I)

Para cualquiera de los tıtulos

> xyplot(ozone^0.5 ~ wind, data = environmental,

ylab = expression(sqrt("Concentracion de ozono")),

xlab = list(label = "Velocidad del viento",

cex = 2, col = "red", font = 3))

Page 147: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Otras opciones (II)

Elegir parte de un factor

> bwplot(Species ~ Sepal.Length, data = iris,

subset = Species != "setosa")

Page 148: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Otras opciones (III)

Recorrido y seleccion de paneles

> histogram(~ height | voice.part, data = singer, layout = c(3, 3))

> histogram(~ height | voice.part, data = singer, layout = c(3, 3),

as.table=T, skip = c(rep(FALSE, 4), TRUE, rep(FALSE, 4)))

Page 149: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

plot/panel

> rojos <- runif(10,1,10)

> verdes <- runif(10,1,10)

> lineas <- runif(10, 1, 10)

> textos <- runif(10,1,10)

> poligono <- runif(8,1,10)

> plot(1:10, 1:10, axes = FALSE, xlab = "", ylab = "")

> points(rojos[1:5], rojos[6:10], cex=1.5, col="red")

> points(verdes[1:5], verdes[6:10], cex=1.7, col="green", pch="+")

> lines(1:10, lineas, lty=2, lwd=2)

> text(textos[1:5], textos[6:10], cex=1.7, col= rainbow(5),

labels=c("uno", "dos", "tres", "cuatro", "cinco"))

> abline(h=5, lty=4)

> polygon(poligono[1:4], poligono[5:8], col="blue")

> title("Grafico inventado")

> legend(8, 3, lty = c(1:3), col = rainbow(3),

legend = c("uno","dos","tres"))

Page 150: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

plot/panel

Page 151: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

plot/panel

> xyplot(1:10 ~ 1:10, xlab = "", ylab = "", col="black",

scales = list(x = list(labels=c("uno", "tres", "cinco",

"siete", "nueve"),

at = seq(1,10,by=2)),

y = list(labels=1:10, at=1:10)),

main = "Grafico inventado",

key = list(text = list(c("uno", "dos", "tres")),

x=0.8, y=0.3, lines=list(col=rainbow(3), lty=1:3)),

panel = function (x, y, ...) {

panel.xyplot(x, y, ...)

panel.points(rojos[1:5], rojos[6:10], cex=1.5, col="red")

panel.points(verdes[1:5], verdes[6:10], cex=1.7, col="green",

pch="+")

panel.lines(1:10, lineas, lty=2, lwd=2, col="black")

panel.text(textos[1:5], textos[6:10], cex=1.7, col=rainbow(5),

labels = c("uno", "dos", "tres", "cuatro", "cinco"))

panel.abline(h=5, lty=4)

panel.polygon(poligono[1:4], poligono[5:8], col="blue")})

Page 152: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

plot/panel

Page 153: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 11

A partir del marco de datos turismos generar un grafico como el dela imagen con los porcentajes de cuota de mercado de las 10marcas que han realizado un mayor numero de ventas.

Page 154: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Problema 11

tur.por <- apply(turismos[-1],2,sum)*100/sum(turismos[-1])

tur.por.sort <- sort(tur.por,decreasing=TRUE,index.return=TRUE)

tur.por.dat <- as.vector(tur.por.sort$x[1:10])

tur.por.nom <- colnames(turismos)[-1][tur.por.sort$ix][1:10]

b <- barplot(tur.por.dat,main="Ventas nacionales de coches",

sub="Cuota de mercado",ylim=c(0,15),axes=FALSE,col=rainbow(10))

text(b,tur.por.dat+0.5,format(tur.por.dat,digits=3),cex=0.8)

text(b,2,format(tur.por.nom),srt=90,font=4,cex=0.8)

barchart(tur.por.dat~1:10, horizontal=F,

main="Ventas nacionales de coches",

sub="Cuota de mercado", scales=list(draw=F),

ylim=c(-1,15), xlab="",ylab="", col=rainbow(10),

panel = function(x,y,...) {

panel.barchart(x, y, ...)

panel.text(1:10, tur.por.dat+0.5,

format(tur.por.dat,digits=3),cex=0.8)

panel.text(1:10, 1,format(tur.por.nom),

srt=90,font=4,cex=0.8) })

Page 155: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Agrupacion de expresiones

• Las expresiones pueden ser agrupadas entre llaves:

• En una misma lınea han de separarse por ;

{

a <- 0; b <- 1

c <- a+b

}

• El valor que devuelve el grupo es el valor de la ultimaexpresion

Page 156: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Condicional: if e ifelse

if (condicion) consecuencia [else alternativa]

• Condicion tiene que devolver un unico valor logico

• Si consecuencia y/o alternativa son un grupo deexpresiones han de ir entre llaves

• Si condicion devuelve el valor TRUE se obtiene el valor deconsecuencia

• en caso contrario, se obtiene el valor de alternativa

ifelse(condicion,a,b)

• Devuelve un vector de la misma longitud que condicion, conlos elementos a[i] si condicion[i] tiene el valor TRUE, yb[i] en caso contrario.

Page 157: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

for, while, repeat

for (var in vector) expr

• expr se calcula tantas veces como elementos tenga vector

• la variable var toma como valor, en cada ocasion, cada unode los elementos de vector

while (condicion) expr

• se calcula expr mientras condicion tenga el valor TRUE

repeat expr

• se calcula expr mientras no se interrumpa explıcitamente conla instruccion break.

Page 158: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Ejemplos> a <- 1:5000; b <- 11:5010

> system.time(res <- a+b)

user system elapsed

0 0 0

> system.time({resFor <- c() ;

for (i in 1:5000) resFor[i] <- a[i]+b[i]})

user system elapsed

0.026 0.000 0.025

> system.time({resWhile <- c() ; i<-1 ;

while (i <= 5000) {resWhile[i] <- a[i]+b[i] ; i<- i+1}})

user system elapsed

0.028 0.000 0.027

> system.time({resRepeat <- c() ; i<-1 ;

repeat {if (i<=5000) {resRepeat[i] <- a[i]+b[i] ; i<- i+1}

else break}})

user system elapsed

0.028 0.000 0.028

> identical(res,resFor)

[1] TRUE

> identical(resFor,resWhile)

[1] TRUE

> identical(resWhile,resRepeat)

[1] TRUE

Page 159: Introducci on a R Dpto. Ciencias de la Computaci on e Inteligencia …cgdiaz/master/introduccionR.pdf · 2015-04-28 · Problema 1 En el vector notas se guardan las notas de cien

Definicion de funciones

nombre <- function(var1,...,varn) expr

• expr es una agrupacion de expresiones que utiliza var1,. . . varn

nombre(arg1,..., argn)

• valor de expr tras sustituir cada vari por el valor de argi

> ecGrado2 <- function(a, b, c)

{ disc <- (b^2)-(4*a*c)

sol1 <- (-b + sqrt(disc))/(2*a)

sol2 <- (-b - sqrt(disc))/(2*a)

c(sol1,sol2)

}

> ecGrado2(2,4,1)

[1] -0.2928932 -1.7071068

> "%porcentaje%" <- function(a,b) (a/(a+b))*100

> 4 %porcentaje% 6

[1] 40

>