Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introduccin
R es un proyecto de software libre que constituye el estndar en
Computacin Estadstica (http://www.r-project.org)
Es una evolucin del lenguaje S (Bell Laboratories, 70s) iniciada por
Robert Gentleman and Ross Ihaka (90s) y soportada por una
ingente comunidad de desarrolladores sin nimo de lucro (Free
Software Foundation)
R proporciona la ms amplia variedad de tcnicas estadsticas y
grficas y es altamente configurable y extensible. Puede mezclarse
con otros entornos y/o lenguajes (Fortran, C, PHP, ...).
R es un lenguaje vectorial y orientado a objetos.
La lista de manuales puede encontrarse en
http://cran.r-project.org/doc/manuals/.
En su formato ms bsico dispone de una consola donde se teclean
los comandos y se muestra la respuesta del sistema a esos comandos
(lenguaje interpretado).
Objetos bsicos y lectura de datos con R
Mi primera sesin
45 + 26/2
> [1] 58
sqrt(25) + sin(pi/4)
> [1] 5.707107
# Borro objeto x
Workspace
El Workspace es el lugar donde se almacenan los objetos que se van
creando (como una carpeta). Al salir de la sesin nos pide si queremos
guardar el Workspace para tenerlo disponible la prxima vez que se inicie
sesin. (Se almacena como un fichero .RData en tu directorio de trabajo
que por defecto est oculto).
getwd() # Pregunto cual es mi directorio de trabajo
setwd("Z:/") # Establezco mi directorio de trabajo en Z:/
Operaciones matemticas
NA representa los valores perdidos (Not available)
Tambin estn definidos los indeterminados NaN y los tipos
especiales Inf, -Inf
c(5/0, -5/0, 0/0, sqrt(-4))
> Warning in sqrt(-4): Se han producido NaNs
> [1]
Inf -Inf
NaN
NaN
Uso
Operaciones aritmticas
Funciones trigonomtricas
Logaritmos
Nmeros combinatorios
Factorial
Redondeos
Objetos bsicos y lectura de datos con R
Uso
Suma los valores de x
Suma acumulada de los valores de x
Producto de todos los valores de x
Mximo/Mnimo de los valores de x
Rango de los valores de x
Longitud del vector
Ordena x de forma ascendente
Determina el orden en la secuencia
Media aritmtica
Mediana
Cuantiles principales
Cuasi varianza de x
Rango intercuartlico de x
Uso
Vector unin de los valores de x e y
Vector interseccin de x e y
Cules de x no estn en y
Subconjunto que cumple una condicin lgica
Operadores de comparacin
x==y
x<=y, x>=y
x!=y
Operadores lgicos
&
|
!
xor
Uso
Es x igual a y?
x menor (mayor) o igual que y?
x distinto de y?
Uso
AND lgico
OR lgico
Contrario de uno lgico
OR exclusivo
Objetos bsicos y lectura de datos con R
Indexado
Una de las operaciones ms importantes con variables aleatorias es
obtener subconjuntos del vector. El indexado de R es muy potente
x = 101:110
x[c(1, 5, 1, 2)]
# Todos menos el 1 y el 5.
> [1] 102 103 104 106 107 108 109 110
Objetos bsicos y lectura de datos con R
Matrices
Una matriz (para R) es un vector que tiene atributos de fila y columna.
La matriz se crea con el comando matrix y se rellena por defecto por
columnas.
A <- matrix(1:15, nrow = 3, ncol = 5)
print(A)
>
[,1] [,2] [,3] [,4] [,5]
> [1,]
1
4
7
10
13
> [2,]
2
5
8
11
14
> [3,]
3
6
9
12
15
Funciones de matrices
Funcin
dim(A)
+,-,*,/
A %* %B
t(A)
solve(A)
eigen(A)
chol(A)
rowMeans(A),rowSums(A)
colMeans(A),colSums(A)
Uso
Dimensin de la matriz A
Operacin de matrices elemento a elemento
Producto matricial
Transpuesta de una matriz A
Inversa de la matriz A
Descomposicin en autovalores y autovectores
Descomposicin de Cholesky
Medias y sumas por filas
Medias y sumas por columnas
Listas
Una lista es una coleccin de objetos (posiblemente diferentes entre
s) empaquetados conjuntamente.
milista = list(varx = x, matA = A)
[1] 101 102 103 104 105 106 107 108 109 110
milista[["matA"]]
>
[,1] [,2] [,3] [,4] [,5]
> [1,]
1
4
7
10
13
> [2,]
2
5
8
11
14
> [3,]
3
6
9
12
15
milista[[1]]
>
[1] 101 102 103 104 105 106 107 108 109 110
Data frame
Un data.frame es una estructura que permite almacenar datos ledos. Se
parece a una matriz con la diferencia de que cada columna puede ser de
distinto tipo. Debe cumplirse que la longitud de los vectores que la
componen sea la misma.
df = data.frame(var1 = 1:10, v2 = rep(c("A", "B"), 5))
>
[1]
df$v2
9 10
> [1] A B A B A B A B A B
> Levels: A B
df[, 1]
>
[1]
9 10
Objetos bsicos y lectura de datos con R
Escritura de archivos
Para cada funcin de lectura de archivos read.xxxx existe la
correspondiente write.xxxx que permite escribir un archivo con ese
formato. Habitualmente, se escribirn data.frame
Extensin
.csv, .csv2
.delim, .delim2
.fwf
.fortran
library(foreign)
.dbf
.dta
.epiinfo
.octave
.spss
.systat
.mtp
Tipo de fichero
Texto plano separado por comas (o punto y coma)
Texto plano separado por tabuladores
Texto plano con ancho fijo de las variables
Formato fijo de Fortran
Paquete con ms tipos de ficheros
DBASE y similares
Stata
Epi Info
Octave
SPSS
Systat
Minitab
Objetos bsicos y lectura de datos con R
Lectura de datos
Los datos siempre se cargan en una estructura tipo data.frame
datos = read.csv2("Alumnos15-16.csv", dec = ".") # Datos alumnos
attach(datos) #Truco para teclear Hermanos en vez de datos$Hermanos.
head(Hermanos) # Primeros valores de la variable Hermanos
> [1] 2 2 2 2 2 2
Factores
Un factor es un vector de datos cualitativos. A las categorias se les llama
niveles. Internamente se guarda como un vector de enteros.
f = factor(rep(c("Enfermo", "Sano"), c(3, 4)))
levels(f)
> [1] "Enfermo" "Sano"
head(as.numeric(f))
> [1] 1 1 1 2 2 2
nlevels(f)
> [1] 2
gl(5, 3)
> [1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5
> Levels: 1 2 3 4 5
Formulas
Las frmulas en R son objetos que se escriben en lenguaje simblico. El
formato general es y model donde model puede ser
x+z: Modelo aditivo de x y z
x:z: Trmino cruzado xz
x|z: x condicionado a z
x*z: Todos los trminos con x o z (x+z+x:z)
x %in % z: x anidado en z
(x+z)~2: Todos los trminos hasta grado 2
x-1: Se elimina el trmino independiente
I(x-log(z)): Se calcula la funcin x-log(z) y se usa
poly(x,3): Polinomios ortogonales hasta grado 3
Bucles e iteraciones I
Bucles e iteraciones II
v = numeric(10)
for (i in 1:10) {
v[i] = sample(1:10, 1)
}
v
>
[1] 6 4 2 9 7 6 7 8 3 3
i = 0
while (i < length(v)) {
i = i + 1
v[i] = v[i]^2
}
v
>
[1] 36 16
4 81 49 36 49 64
Funciones I
Una de las opciones ms interesantes de R es poder crear tus propias
funciones.
nombre<-function(arg1=val,arg2=val,...){expr}
Una vez en memoria se usa as: nombre(arg1,arg2)
No hace falta definir los tipos de argumentos.
No se chequean los parmetros hasta que se usan dentro de la
funcin.
Los argumentos de entrada puede ponerse en cualquier orden
especificando el nombre del argumento.
Se pueden asignar valores por defecto a los parmetros. Un
argumento sin valor por defecto lleva asociado NULL como valor.
Si se usa una variable dentro de una funcin y no est definida, se
busca recursivamente en la funcin que la llam y as sucesivamente
hasta que se llega al entorno global.
Se pueden incluir frmulas de los otros argumentos como valor por
defecto en un argumento.
Objetos bsicos y lectura de datos con R
Funciones II
Funciones III
mifuncion = function(a, b = 3, draw = FALSE, ...) {
z = a^b
if (draw) {
plot(z, ...)
}
return(z)
}
mifuncion(3, 3)
> [1] 27
mifuncion(b = 2, a = 5)
> [1] 25
mifuncion(seq(0, 1, length = 10), draw = TRUE, col = 2)
>
>
Funciones IV
Index
10
Grficos
Las funciones grficas se dividen en :
Funciones de 1 nivel: Crean ventanas grficas (si no hay abiertas),
establecen coordenadas y dibujan.
Funciones de 2 nivel: Aaden elementos grficos a ventanas ya
abiertas.
Los modificadores grficos (colores, aspecto, etc) suelen ser comunes a
todas las funciones grficas (vase par)
adj. Alineacin del texto [0,1]. 0=izq. 0.5=centro, 1=dcha.
col. Color para escribir elementos. (Puede especificarse como nmero
entero, nombre del color en ingls, formato hexadecimal o rgb)
lty. Tipo de lnea
pch. Formato de punto
lwd. Anchura de lnea
cex. Tamao del elemento.
xlim, ylim, zlim. Lmites para ejes
main, sub, xlab, ylab. Etiquetas de los ejes
Objetos bsicos y lectura de datos con R
plot()
plot es la funcin genrica para dibujar. El parmetro type especifica el
tipo de grfico ("l-lnea, "p-puntos, "b-puntos y lneas, "n-no dibuja, slo
crea las coordenadas, "h-lneas verticales, "s-tipo escalera).
plot(Altura, Peso, type = "p", main = "Dispersion", pch = 19,
col = c("red", "blue")[Sexo])
70
50
Peso
90
Dispersion
150
160
170
180
190
Altura
Objetos bsicos y lectura de datos con R
BAR
DEP
CEL
70
60
BAR
VAL
150
RMA
CEL
RMA
EIB
NIN
NIN NIN
RMA
RMA
AMA
CEL
BAR
EIB
DEP
NIN DEP
NIN
NIN
LPA NIN
DEP
RMA RAYRMA
RMA
RMA
NIN
RMA
BAR
DEP RMA
BAR
NIN
NIN DEPBAR CEL NIN
CEL
RMA
ABI BAR
NIN
NIN
NIN
DEP
NIN
NIN
DEP
NIN
NIN
RMACEL
NIN
RMA
RMA
BAR
DEP
NIN
NIN
NIN
RMA
NIN RMA
NIN
NIN
NIN
RMA
NIN NIN
RMA
NIN
NIN
50
Peso
80
90
Mujer
Hombre
160
170
NIN
180
190
Altura
Ejemplos I
par(mfrow = c(1, 2))
hist(Altura)
boxplot(Dinero ~ Equipo, col = rainbow(6), horizontal = TRUE)
RAY
DEP
10
ABI
5
0
Frequency
15
Histogram of Altura
150
160
170
180
190
50 100
200
Altura
Ejemplos II
par(mfrow = c(1, 2))
pie(table(Hermanos), main = "N de hermanos")
barplot(table(Equipo), cex.names = 0.6)
0
4
3
0 5
15
25
N de hermanos
ABI
BAR
DEP
LPA
RAY
VAL
Ejemplos III
60
40
Peso
80
100
150
160
170
180
190
Altura
Ejemplos IV
data(volcano)
par(mfrow = c(1, 2))
x = 1:nrow(volcano)
y = 1:ncol(volcano)
zlim = range(volcano)
zl = cut(volcano[2:nrow(volcano), 2:ncol(volcano)], 10)
clut = terrain.colors(10)
colores = clut[zl]
image(x, y, volcano)
contour(x, y, volcano, add = TRUE)
persp(x, y, volcano, theta = 45, phi = 45, col = colores, shade = 0.8,
box = FALSE, expand = 0.5, border = NA)
10 20 30 40 50 60
110
110
100
150
130
160
190
180
170
160
140
110
120
10
Ejemplos V
20
40
60
80
Ejemplos VI
require(lattice)
> Loading required package: lattice
require(latticeExtra)
> Loading required package: latticeExtra
> Loading required package: RColorBrewer
Ejemplos VII
18
16
14
12
10
15
tab
10
5
0
V
M
VAL
RMA
RAY
NIN
LPA
EIB
DEP
CEL
BAR
AMA
ABI
8
6
4
2
0
Ejemplos VIII
library(plotrix)
pie3D(table(Equipo), explode = 0.1, main = "Tarta 3D")
Tarta 3D
DEP
LPAEIB
CEL
NIN
RAY
BAR
AMA
VAL
ABI
RMA
Ejemplos IX
require(maps)
> Loading required package: maps
map("world", regions = "Spain")
title(main = "Ciudades de mas de 50000 hab.")
data(world.cities)
map.cities(world.cities, country = "Spain", minpop = 50000, maxpop = Inf,
pch = 20, col = "red")
Ejemplos X
Ejemplos XI
library(RgoogleMaps)
Fmat = c(-8.5578166, 42.8746166)
Santiago <- GetMap(center = "Campus de Santiago, Santiago de Compostela",
maptype = "satellite", zoom = 16, hl = "es")
PlotOnStaticMap(Santiago, lat = Fmat[2], lon = Fmat[1], pch = 20,
col = "red")
TextOnStaticMap(Santiago, lat = Fmat[2] - 5e-04, lon = Fmat[1] 1e-04, "Matematicas", adj = 0, cex = 1, col = "red", add = TRUE)
Ejemplos XII