Escolar Documentos
Profissional Documentos
Cultura Documentos
Introduccin o
Qu es R? Cmo descargar e instalar el programa. Formas de obtener ayuda. Algunas e o caracter sticas generales. Atributos
Grcos con R a
Comandos de alto y bajo nivel. Parmetros. Divisiones de la ventana grca. Dispositivos a a grcos. a
Introduccin a la programacin en R o o
Funciones. Sentencias de control. Cmo organizar las funciones. o
Berrendero (UAM) R Febrero 10 1 / 50
Qu es R? e
El entorno R es un conjunto integrado de programas para manejo de datos, clculo y grcos. Incluye: a a R. Becker, J. Chambers y A. Wilks desarrollaron el lenguaje S en los AT&T Laboratories El lenguaje S tiene dos implementaciones: una comercial, llamada SPlus, y otra gratuita, llamada R. R fue escrito originalmente por Ross Ihaka y Robert Gentleman (R & R) en 1996. Actualmente, es desarrollado y mantenido por un equipo de unas 18 personas, el llamado R Development Core Team. La pgina principal de R es: a http://www.r-project.org/ Comandos para manejar y almacenar conjuntos de datos Operadores para llevar a cabo clculos con vectores y matrices a Comandos para llevar a cabo diversos anlisis de datos a Comandos para grcos a Un lenguaje de programacin relativamente simple o La aplicabilidad de R se puede extender mediante paquetes de funciones. La versin base contiene aproximadamente 25 paquetes. La pgina web o a permite disponer de muchos ms. a
Direccin principal: http://www.r-project.org o Entrar en CRAN (a la izquierda de la pantalla). Elegir una localizacin conveniente. o Elegir el enlace correspondiente al sistema operativo que nos interese y entrar en base. Bajar y ejecutar en nuestro ordenador el chero que aparece en Download R *.*.* for Windows (si hemos elegido windows).
Obtener ayuda
Mediante help(comando) se obtiene ayuda sobre cada comando o conjunto de datos. La funcin example(comando) proporciona ejemplos de uso del o comando. El comando help.search(tema) proporciona una lista de comandos relacionados con tema. Para abrir una ventana de ayuda HTML, help.start(). Una lista de los paquetes disponibles se obtiene con library() y otra con los conjuntos de datos disponibles se obtiene con data().
Atributos
Cada objeto tiene unos atributos que determinan sus propiedades. > getwd() [1] "C:/Archivos de programa/R/R-2.9.2" Clases de objetos (atributo class) que contienen datos: vector, factor, array, matrix, data.frame, ts, list. class(objeto) Funciones genricas: el resultado depende de la clase. e Podemos cambiar el directorio de trabajo en el men Archivo, opcin u o Cambiar dir... Al salir, si respondemos armativamente a la pregunta, se guardan todos los objetos en el chero .RData, en el directorio de trabajo. Resulta conveniente tener un directorio de trabajo diferente para cada proyecto. Atributos intr nsecos: mode y length. Length: nmero de elementos de un objeto. length(objeto) u Mode: tipo bsico de elementos de un objeto: numeric, character, a complex, logical, function, expression. mode(objeto). Atributos no intr nsecos: Informacin complementaria. o attributes() Por ejemplo, una matriz tiene los atributos dim y dimnames
Ficheros de datos
Para crear un conjunto de datos fichero de R a partir de un chero de datos de texto datos.txt en el directorio de trabajo:
fichero <- read.table(datos.txt,header=F,sep= ,dec=.)
Vectores
Algunos ejemplos sobre cmo construir vectores y extraer informacin o o sobre sus elementos:
> seq(1,5,0.5) [1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 > rep(1,10) [1] 1 1 1 1 1 1 1 1 1 1 > x = 1:10 > x [1] 1 2 3 4 5 6 7 8 9 10 > x[-2] [1] 1 3 4 5 6 7 8 9 10 > x[3:5] [1] 3 4 5 > x[x<=6] [1] 1 2 3 4 5 6 > x[x<=6] = 1 > x [1] 1 1 1 1 1 1 7 8 9 10
Tambin se puede usar scan(datos.txt), pero en este caso el e resultado es un vector y no un chero de datos. Una variable de un chero se identica como fichero$variable Si lo que queremos es generar fichero que incluya los vectores x, y, z de la misma longitud:
fichero <- data.frame(x,y,z)
Valores especiales
Las coordenadas de los vectores pueden tomar alguno de los siguientes valores especiales: NA, NaN, Inf NA: Signica Not Available. Es util cuando nos falta algn dato. u NaN: Signica Not a Number. Aparece como resultado de operaciones cuyo resultado es ambiguo o inexistente en el conjunto de nmeros reales. u Inf: Signica Innity. Las funciones is.na(x) y is.nan(x) detectan qu coordenadas de un e vector x son NA o NaN
Ejemplos: Dene x = c(NA,NaN,Inf,0,3) y efecta las operaciones siguientes, tratando de u entender el resultado: 1/x x-x 1/x - (x-x) is.na(x) y is.nan(x)
Matrices
El comando matrix(x,nrow=m,ncol=n) permite crear una matriz de n columnas y m las con los elementos de x: > matrix(1:10,ncol=5,nrow=2) [,1] [,2] [,3] [,4] [,5] [1,] 1 3 5 7 9 [2,] 2 4 6 8 10 > matrix(1:5,ncol=5,nrow=2) [,1] [,2] [,3] [,4] [,5] [1,] 1 3 5 2 4 [2,] 2 4 1 3 5
Extraer elementos.
> x[1,2] > [1] 3 > x[1,] [1] 1 3 5 2 4 > x[,1] [1] 1 2 > x[,-{2:4}] [,1] [,2] [1,] 1 4 [2,] 2 5 > x[,{2:4}] [,1] [,2] [,3] [1,] 3 5 2 [2,] 4 1 3
Pegar vectores.
> x <- 1:4 > y <- 5:8 > rbind(x,y) [,1] [,2] [,3] [,4] x 1 2 3 4 y 5 6 7 8 > cbind(x,y) x y [1,] 1 5 [2,] 2 6 [3,] 3 7 [4,] 4 8
Operacin o Producto matricial Producto elemento a elemento Calcular la traspuesta de A Resolver el sistema Ax = b Calcular la inversa de A Calcular los autovalores y autovectores de A Suma de los elementos de A Promedio de los elementos de cada columna de A
El comando apply
Un comando importante para operar matricialmente es: apply(x,n,comando) , donde x es una matriz n vale 1 (las) o 2 (columnas) comando es cualquier comando que opere sobre vectores Con apply(x,n,comando) se aplica comando a todas las las o columnas de la matriz x Ejemplo: Creamos una matriz: x = matrix(1:6,2) Qu ocurre si hacemos mean(x)? e Cul es el resultado de apply(x,1,mean)? a Cul es el resultado de apply(x,2,mean)? a
Factores
Los factores se usan para especicar los grupos a los que pertenecen elementos de otros vectores.
> x <- c(rep(0,5),rep(2,5)) > fx <- factor(x) > fx [1] 0 0 0 0 0 2 2 2 2 2 Levels: 0 2 > y <- c(rnorm(5),rnorm(5,mean=2)) > y [1] 0.4495409 1.0131287 0.4293730 0.5483923 0.7747539 3.4454587 2.3241129 [8] 3.7019041 1.3317599 1.8880221
El comando tapply se usa para aplicar un comando a unos datos por grupos denidos por un factor: > medias <- tapply(y,fx,mean) > medias 0 2 0.6430378 2.5382515 # calcula medias por grupos
Factores
Listas
Una lista es una coleccin de objetos de R que, por la razn que sea o o conviene agrupar. Los objetos pueden tener distintos tipos y caracter sticas Para denir una lista: milista = list(nombre=Pepe,no.hijos=3, edades.hijos=c(4,7,9)) El comando anterior dene una lista llamada milista con tres elementos: nombre, no.hijos y edades.hijos. Para ver el contenido de un elemento escribe, por ejemplo, milista$nombre Los elementos tambin estn numerados. El comando milista[[1]] (con e a doble corchete) equivale al anterior
Podemos recodicar una variable (transformndola en un factor) de la a manera siguiente: > x <- rnorm(1000) > fx <- factor(cut(x,breaks=c(-6,0,6), labels=c(negativos,positivos))) > table(fx) # obtiene la tabla de frecuencias fx negativos positivos 486 514
El comando sapply
Podemos tambin extraer elementos de los elementos de una lista. Toma e como ejemplo los comandos siguientes: milista$edades.hijos[2], milista[[3]][2]
El comando sapply(lista, comando) aplica un comando a cada uno de los elementos que forman una lista Los archivos de datos o data frames pueden considerarse listas, siendo cada variable un elemento El chero faithful contiene datos sobre duracin de erupciones y tiempo o entre ellas del geyser Old Faithful. Una descripcin del chero se obtiene o haciendo help(faithful) Una forma rpida de obtener una descripcin estad a o stica de las dos variables es mediante sapply(faithful,summary)
Cul es la diferencia entre milista[1] y milista[[1]]? a Cul es el resultado de milista[2:3]? a Y el resultado de milista[[2:3]]?
Modelos de probabilidad
Cada distribucin importante tiene un nombre en R: o norm, binom, pois, exp, t, chisq, f,...
El chero iris contiene medidas (largo y ancho) del ptalo y spalo de e e 150 lirios de tres especies. Para ms informacin, help(iris) a o Para poder trabajar directamente con los nombres de las variables, attach(iris) Qu calcula cada uno de los comandos siguientes? e
summary(iris) sapply(iris,summary) tapply(Sepal.Length,Species,summary)
A cada nombre de distribucin se le antepone un prejo que o determina una funcin relacionada: o
Prejo d p q r Funcin o Funcin de densidad f (x) o Funcin de distribucin F (x) o o Funcin cuant o lica F 1 (p) Generador de nmeros aleatorios u
Ejemplos: La mediana de una exponencial de parmetro = 2 se obtiene a mediante qexp(0.5,2) La probabilidad de que una v.a. 2 sea menor o igual que 7 es 5 pchisq(7,5) Determina un valor x tal que P(Z > x) = 0.3, donde Z es una v.a. con distribucin normal o
Anlisis descriptivo a
Comparacin de medias o
Medidas numricas bsicas: summary(x), var(x), sd(x), e a mean(x), median(x), cor(x,y), cov(x,y) Principales grcos: hist(x), boxplot(x), qqnorm(x); a qqline(x), plot(x,y) plot(ecdf(x),verticals=T,do.points=F), barplot(table(x)), pie(table(x)) Bondad de ajuste: ks.test(x,distribucin,...) o
> x <- rnorm(100) > ks.test(x,pnorm,0,1) One-sample Kolmogorov-Smirnov test data: x D = 0.0878, p-value = 0.4236 alternative hypothesis: two.sided
Ejemplo:
> t.test(x,y,alternative=two.sided,var.equal=T) Two Sample t-test data: x and y t = -2.2274, df = 18, p-value = 0.03892 alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: -1.87127689 -0.05468917 sample estimates: mean of x mean of y -0.05219967 0.91078336
Comparacin de proporciones o
Para comparar dos proporciones o una proporcin con p0 jo o
prop.test(x, n, p = NULL, alternative = c("two.sided", "less", "greater"), conf.level = 0.95, correct = TRUE)
Modelos lineales
Para ajustar un modelo de regresin o lm(formula,data=data.frame) Para llevar a cabo un anlisis de la varianza a aov(formula,data=data.frame) El ajuste de un modelo lineal generalizado se hace mediante glm(formula,family,data=data.frame) Para especicar el modelo que queremos ajustar se utiliza el argumento formula El chero en el que estn los datos se especica con el argumento a data
La siguiente tabla muestra ejemplos de especicaciones del modelo. y, x, x1, x2 son variables cuantitativas y A, B son factores.
La siguiente tabla contiene informacin para extraer los elementos o ms importantes de la salida: a
summary plot anova coef fitted residuals Resumen de los principales resultados Grcos para diagnstico del modelo a o Tabla de anlisis de la varianza a Estimadores de los coecientes del modelo Valores ajustados del modelo Residuos del modelo
ijk
Nombre Regresin lineal simple o Regresin simple a travs del origen o e Regresin mltiple o u ANOVA con un factor ANOVA con dos factores aditivo ANOVA con dos factores e interacciones
Por ejemplo summary(lm(y~ x)). Para los tres ultimos elementos son equivalentes, por ejemplo, residuals(lm(y~ x)) y lm(y~ x)$residuals
Comandos de alto nivel: Son comandos con los que se puede crear un grco nuevo. a Comandos de bajo nivel: Son comandos que permiten aadir n elementos (puntos, l neas, texto,etc.) a un grco ya existente a Parmetros: Permiten modicar el aspecto de los grcos. a a Paquetes especializados: Los paquetes grid y lattice, distribuidos con la versin bsica de R, contienen ms comandos para o a a nuevos grcos. a
Para cada funcin hay una serie de argumentos opcionales. o Estos son los ms importantes a
axes = T type = p xlim=c(inf,sup) , ylim=c(inf,sup) xlab=, ylab= main= sub= Si F, no se dibujan los ejes de coordenadas Tipo de grco: p (puntos), l (l a neas), b (puntos conectados por l neas), etc. Especica los l mites de los ejes Leyendas de los ejes T tulo del grco a Subt tulo del grco a
Parmetros grcos a a
La siguiente tabla contiene los ms importantes y cul es su funcin a a o Los grcos se pueden personalizar a travs de ms de 60 parmetros. a e a a
points(x,y) lines(x,y) text(x,y,labels) abline(a,b) abline(h=a) abline(lm) abline(v=a) polygon(x,y) legend(x,y,legend) title() locator(n) Aade puntos de coordenadas (xi , yi ) n Aade l n neas en lugar de puntos Aade el texto labelsi en (xi , yi ) n Dibuja la recta de pendiente b y trmino independiente a e Dibuja la recta horizontal y = a Dibuja una recta de regresin o Dibuja la recta vertical x = a Dibuja un pol gono uniendo los puntos (xi , yi ) Aade la leyenda legend en (x, y ) n Aade un t n tulo Devuelve las coordenadas de n puntos sealados con el ratn n o
La mayor de los parmetros (pero no todos) se pueden usar como a a argumentos en los comandos de alto y bajo nivel. En este caso tienen efecto en el grco que estamos dibujando en este momento. a Tambin pueden jarse valores jos de los parmetros mediante el e a comando par. Por ejemplo, par(bg=yelow) hace que todos los grcos tengan a fondo amarillo.
Parmetros grcos a a
Ejemplo
La tabla siguiente contiene los principales parmetros y el aspecto del a grco que controlan a
bg bty cex col lty lwd pch pty Color del fondo (vase colors()) e Tipo de ejes (o,l,c,7,u,] Tamao de los s n mbolos y texto Color de los s mbolos y texto Tipo de l neas (1, continua; 2, discontinua; 3, puntos;...) Ancho de l neas (por defecto, lwd=1) Tipo de s mbolo Tipo de regin de dibujo ( cuadrada s, o maximal m) o
# Abrimos el fichero de los datos library(boot); data(salinity); attach(salinity) # El grafico mas simple plot(dis,sal) # Un grafico con opciones y par\{a}metros plot(dis,sal,col.axis=blue,xlab=Caudal,ylab=Salinidad,pch=15,bty=l, main=Salinidad en funcion del caudal,col=red) # Representamos (con doble grosor) la recta de # minimos cuadrados abline(lm(sal~dis),lwd=2)
Resultado
Los paquetes lattice y grid contienen muchas ms funciones para a obtener grcos. a Constituyen un sistema alternativo para el que no son vlidas las a opciones y comandos que hemos descrito hasta ahora. Podemos sin embargo usar cualquiera de estos paquetes en la misma sesin de R o
14
12
Salinidad
10
sal
10
12
14
22
24
26
28 dis
30
32
22
24
26
28
30
32
Caudal
Para usar los comandos debemos antes cargar los paquetes mediante library(lattice) o library(grid) Veamos un ejemplo de funcin de lattice: densityplot o
virginica
0.25 2.5 2.0 1.5 1.0 0.5 0.15
0.20
Density
Density
0.0
setosa
2.5 2.0 1.5
versicolor
0.10
0.0 0 2 4 6 8
Petal.Length
Petal.Length
densityplot(Petal.Length)
Dispositivos grcos a
El dispositivo por defecto es una ventana grca que se abre a automticamente. a Mediante windows() podemos abrir nuevas ventanas, a las que se asignan nmeros diferentes. La ultima ventana abierta es la que est u a activa. Con dev.set(n) activamos la ventana n. Otros dispositivos: (vase help(Devices)) e
pdf(): Env los grcos a un chero .pdf a a jpeg(): Env los grcos a un chero .jpg a a
> layout(matrix(1:6,2,3,byrow=T));layout.show(6)
Grco de la prctica a a
14
14
12
12
q q q qqq q q q q
10
10
q qq q q q
Obs.16
q q
22
24
26 dis
28
30
32
sal
Los valores por defecto de los argumentos no son obligatorios. Tampoco los argumentos son obligatorios.
q q
22
24
26
28
30
32
Una funcin devuelve como resultado el valor de la ultima expresin o o evaluada, o lo que aparezca en la sentencia return
Posibles llamadas a esta funcin: o mifuncion(1) mifuncion(1,2) mifuncion(b=4,a=1) mifuncion(1,2,3) Cul es el resultado en cada caso? a
Ejercicio
El comando for
Para repetir B veces el mismo clculo se puede usar: a for (i in 1:B){ expresiones de R } Escribe la funcin anterior en el editor de R o Crgala en el rea de trabajo (usando source o marcando con el a a ratn) o Llmala de distintas formas: con un slo argumento, con dos a o argumentos en diversos rdenes, con tres argumentos. o Ejemplo: x = 0 for(i in 1:5){ x = x + i } x [1] 15
El comando if
Solucin o
ejercicioif <- function(x){ y = x n <- length(x) for (i in 1:n){ if (x[i] > 0) y[i] <- 1 else y[i] <- 0 } return(y) } # Otra implementacion (mas elegante) ejercicioif2 = function(x){ y = 0*x y[x>0] = 1 return(y) }
Para ejecutar comandos de forma condicional, podemos usar if (condicion){ R expr } else { R expr } Ejercicio: Escribe una funcin tal que, dado un vector x = (x1 , . . . , xn ) o produce un nuevo vector y = (y1 , . . . , yn ) con yi = 1 si xi > 0, y yi = 0 si xi 0.