Está en la página 1de 13

Esquema

Introduccion

Introduccin al entorno R
CEDEX: curso de formacin estadstica 16 de diciembre de 2005
R. Berrendero Jose Departamento de Matematicas Universidad Autonoma de Madrid

es R? Como Que descargar e instalar el programa. Formas de obtener ayuda. Algunas caracter sticas generales. Atributos

Manejo de cheros de datos, vectores y matrices


de cheros de datos. Trabajando con vectores y matrices. Lectura y creacion

e inferencia con R en diferentes modelos estad Estimacion sticos


de dos muestras. Analisis Modelos de probabilidad. Analisis descriptivo. Comparacion de la varianza. lineal. Regresion

Gracos con R
Comandos de alto y bajo nivel. Parametros. Divisiones de la ventana graca. Dispositivos gracos.

a la programacion en R Introduccion
Funciones. Sentencias de control. Como organizar las funciones.
al entorno R p. 1/48 Introduccion al entorno R p. 2/48 Introduccion

es R? Que
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 pagina principal de R es:

es R? Que
El entorno R es un conjunto integrado de programas para manejo de datos, calculo y gracos. Incluye: Comandos para manejar y almacenar conjuntos de datos Operadores para llevar a cabo calculos con vectores y matrices Comandos para llevar a cabo diversos analisis de datos Comandos para gracos relativamente simple Un lenguaje de programacion La aplicabilidad de R se puede extender mediante paquetes de funciones. base contiene aproximadamente 25 paquetes. La pagina La version web permite disponer de muchos mas.
al entorno R p. 3/48 Introduccion al entorno R p. 4/48 Introduccion

http://www.r-project.org/

Como descargar e instalar el programa


principal: Direccion

http://www.r-project.org

Entrar en CRAN (a la izquierda de la pantalla). conveniente (el mirror de Portugal suele ir Elegir una localizacion no funcionaba ultimamente). bastante rapido; el de Espana Elegir el enlace correspondiente al sistema operativo que nos interese y entrar en base. Bajar y ejecutar en nuestro ordenador el chero

R-2.2.0-win32.exe.

al entorno R p. 5/48 Introduccion

basica Paquetes en la version

Caracter sticas generales


Lenguaje orientado a objetos: Variables, datos, resultados, funciones,... se almacenan en el area de trabajo en forma de objetos con un nombre. Sobre los objetos pueden actuar operadores y funciones. Los nombres de los objetos empiezan por una letra. mayusculas y minusculas . de valores a un objeto es x El operador de asignacion

R distingue <- 10.

Escribiendo el nombre de un objeto accedemos a su contenido. Los comandos ls() y ls.str() generan listas de los objetos en Para cargarlos en memoria de trabajo:

library(nombre)

el area de trabajo. Con rm() podemos borrar objetos.


al entorno R p. 6/48 Introduccion al entorno R p. 7/48 Introduccion

Atributos
Cada objeto tiene unos atributos que determinan sus propiedades. Clases de objetos (atributo class) que contienen datos: vector, factor, array, matrix, data.frame, ts, list.

Ventana grfica

class(objeto)

Funciones genericas: el resultado depende de la clase. Atributos intr nsecos: mode y length. Length: numero de elementos de un objeto.

length(objeto)
Consola Ventana de Ayuda

Mode: tipo basico de elementos de un objeto: numeric, character, complex, logical, function, expression.

mode(objeto).

complementaria. Atributos no intr nsecos: Informacion

attributes() Por ejemplo, una matriz tiene los atributos dim y dimnames
al entorno R p. 8/48 Introduccion

Formas de obtener ayuda


Mediante help(comando) se obtiene ayuda sobre cada comando o conjunto de datos. example(comando) proporciona ejemplos de uso del La funcion comando. El comando help.search(tema) proporciona una lista de comandos relacionados con tema. Para abrir una ventana de ayuda HTML, help.start().

Ficheros de datos (data.frames)


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


se puede usar scan(datos.txt), pero en este caso el Tambien resultado es un vector y no un chero de datos. Una variable de un chero se identica como

fichero$variable

Una lista de los paquetes disponibles se obtiene con library() y otra con los conjuntos de datos disponibles se obtiene con data(). Si lo que queremos es generar fichero que incluya los vectores x, y,

z de la misma longitud:
ACTIVIDAD 1
al entorno R p. 9/48 Introduccion

fichero <- data.frame(x,y,z)


al entorno R p. 10/48 Introduccion

Vectores
Algunos ejemplos sobre como construir vectores regulares y extraer sobre sus elementos: informacion
> 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
al entorno R p. 11/48 Introduccion

Matrices
Una matriz es un vector con dos atributos adicionales:

dim: Contiene, por este orden el numero de las y de columnas. dimnames: Contiene los nombres de las las y/o las columnas.
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
al entorno R p. 12/48 Introduccion

Matrices
Extraer elementos.

Operaciones con vectores y matrices


Operacion Producto matricial Producto elemento a elemento Calcular la traspuesta de A Resolver el sistema Ax de R Expresion

> 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

A%*%B A*B t(A) solve(A,b) solve(A) eigen(A) sum(A) colMeans(A)

=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

al entorno R p. 13/48 Introduccion

al entorno R p. 14/48 Introduccion

Operaciones con vectores y matrices


apply permite evitar el uso de bucles y otras estructuras, La funcion trabajando directamente con matrices.

Factores y listas
Los factores se usan para especicar los grupos a los que pertenecen elementos de otros vectores.

apply(x,n,com)
anterior, x es una matriz, n puede valer 1 o 2 y com es En la funcion un nombre de comando que actua sobre vectores. Si n

= 1 se genera un nuevo vector como resultado de aplicar com a cada la de x. Si n = 2, se genera un nuevo vector como resultado de aplicar com a cada columna de x
Por ejemplo, apply(x,2,median) calcula las medianas de las columnas de x.

> x <- c(rep(0,5),rep(2,5)) > x [1] 0 0 0 0 0 2 2 2 2 2 > 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 > medias <- tapply(y,fx,mean) # calcula medias por grupos > medias 0 2 0.6430378 2.5382515

al entorno R p. 15/48 Introduccion

al entorno R p. 16/48 Introduccion

Factores y listas
Podemos recodicar una variable (transformandola en un factor) de la 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

Modelos de probabilidad
importante tiene un nombre en R: Cada distribucion

norm, binom, pois, exp, t, chisq, f,...


se le antepone un prejo que A cada nombre de distribucion relacionada con cada distribucion: determina una funcion
Prejo Funcion de densidad f (x) Funcion de distribucion F (x) Funcion cuant Funcion lica F 1 (p) Generador de numeros aleatorios

d p

Las listas son colecciones de objetos que, por alguna razon, queremos tener unidos bajo un mismo nombre. Para crearlas,

q r

nombre.lista <- list(objeto1,objeto2,...)


ACTIVIDAD 2
al entorno R p. 17/48 Introduccion

Ejemplos: La mediana de una exponencial de parametro obtiene mediante qexp(0.5,2) La probabilidad de que una v.a.

= 2 se

2 5 sea menor o igual que 7 es


al entorno R p. 18/48 Introduccion

pchisq(7,5).

Analisis descriptivo
Medidas numericas basicas:

Analisis descriptivo

Density

hist(x), boxplot(x), qqnorm(x); qqline(x), plot(x,y) plot(ecdf(x),verticals=T,do.points=F), barplot(table(x)), pie(table(x))


Principales gracos: Bondad de ajuste:

0.2

0.0

0 x

ecdf(x)

2
Normal QQ Plot

0.8

Fn(x)

> 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
al entorno R p. 19/48 Introduccion

0.4

0.0

0 x

2
2

0 1 2

ks.test(x,distribuci on,...)

Sample Quantiles

0 1 2

summary(x), var(x), sd(x), mean(x), median(x), cor(x,y), cov(x,y)

Histogram of x

0.4

Theoretical Quantiles

ACTIVIDAD 3
al entorno R p. 20/48 Introduccion

de dos muestras: medias Comparacion


Para comparar las medias de de dos muestras, el comando basico es
t.test(x, y, alternative = c("two.sided", "less", "greater"), mu = 0, paired = FALSE, var.equal = FALSE, conf.level = 0.95)

de dos muestras: proporciones Comparacion


con p0 jo Para comparar dos proporciones o una proporcion
prop.test(x, n, p = NULL, alternative = c("two.sided", "less", "greater"), conf.level = 0.95, correct = TRUE)

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

muestral: 20/46. Proporcion poblacional: p. Ejemplo: Proporcion

H0 : p 0.5, H1 : p < 0.5.


> prop.test(20,46,p=0.5,alternative=less,correct=F) 1-sample proportions test without continuity correction data: 20 out of 46, null probability 0.5 X-squared = 0.7826, df = 1, p-value = 0.1882 alternative hypothesis: true p is less than 0.5 95 percent confidence interval: 0.0000000 0.5552989 sample estimates: p 0.4347826
al entorno R p. 22/48 Introduccion

al entorno R p. 21/48 Introduccion

Modelos lineales
Para ajustar un modelo de regresion

Sintaxis para las formulas


La siguiente tabla muestra ejemplos de especicaciones del modelo.

lm(formula,data=data.frame)
Para llevar a cabo un analisis de la varianza

y, x, x1, x2 son variables cuantitativas y A, B son factores.

aov(formula,data=data.frame)
Sintaxis en R Modelo Nombre lineal simple Regresion simple a traves del origen Regresion multiple Regresion ANOVA con un factor ANOVA con dos factores aditivo ANOVA con dos factores e interacciones

El ajuste de un modelo lineal generalizado se hace mediante

y x y x-1 y x1 + x2

yi = 0 + 1 xi + i yi = xi + i y = 0 + 1 x1i + 2 x2i + i yij = + i + ij yijk = + i + j + ijk yijk = + i + j + ( )ij + ijk

glm(formula,family,data=data.frame)
Para especicar el modelo que queremos ajustar se utiliza el argumento formula los datos se especica con el argumento El chero en el que estan

y A y A+B y A*B

data
al entorno R p. 23/48 Introduccion al entorno R p. 24/48 Introduccion

Resultados de los comandos lm y aov


para extraer los elementos La siguiente tabla contiene informacion importantes de la salida: mas
summary plot anova coef fitted residuals
Resumen de los principales resultados Gracos para diagnostico del modelo Tabla de analisis de la varianza Estimadores de los coecientes del modelo Valores ajustados del modelo Residuos del modelo

Gracos: estructura de comandos


Comandos de alto nivel: Son comandos con los que se puede crear un graco nuevo. Comandos de bajo nivel: Son comandos que permiten anadir elementos (puntos, l neas, texto,etc.) a un graco ya existente Parametros: Permiten modicar el aspecto de los gracos. Paquetes especializados: Los paquetes grid y lattice, basica comandos distribuidos con la version de R, contienen mas para nuevos gracos.

Por ejemplo summary(lm(y

x)). Para los tres ultimos

elementos son equivalentes, por ejemplo,

residuals(lm(y x)) y lm(y x)$residuals


ACTIVIDAD 4
al entorno R p. 25/48 Introduccion

al entorno R p. 26/48 Introduccion

Comandos de alto nivel


Ya hemos visto los principales:

Comandos de bajo nivel


importantes y cual es su funcion La siguiente tabla contiene los mas
points(x,y) lines(x,y) text(x,y,labels)
Anade puntos de coordenadas (xi , yi ) Anade l neas en lugar de puntos Anade el texto labelsi en (xi , yi ) Dibuja la recta de pendiente b y termino independiente a Dibuja la recta horizontal y

plot, hist, boxplot, piechart, qqnorm, ...

hay una serie de argumentos opcionales. Para cada funcion importantes Estos son los mas
axes = T type = p
Si F, no se dibujan los ejes de coordenadas Tipo de graco:

abline(a,b) abline(h=a) abline(lm) abline(v=a) polygon(x,y) legend(x,y,legend) title() locator(n)

=a

Dibuja una recta de regresion Dibuja la recta vertical x

=a

p (puntos), l (l neas),

Dibuja un pol gono uniendo los puntos (xi , yi ) Anade la leyenda legend en (x, y ) Anade un t tulo Devuelve las coordenadas de n puntos senalados con el raton

b (puntos conectados por l neas), etc. xlim=c(inf,sup) , ylim=c(inf,sup) xlab=, ylab= main= sub=
Especica los l mites de los ejes Leyendas de los ejes T tulo del graco Subt tulo del graco

al entorno R p. 27/48 Introduccion

al entorno R p. 28/48 Introduccion

Parametros gracos
de mas de 60 Los gracos se pueden personalizar a traves parametros. La mayor a de los parametros (pero no todos) se pueden usar como argumentos en los comandos de alto y bajo nivel. En este caso tienen efecto en el graco que estamos dibujando en este momento. pueden jarse valores jos de los parametros Tambien mediante el comando par. Por ejemplo, par(bg=yelow) hace que todos los gracos tengan fondo amarillo.

Parametros gracos
La tabla siguiente contiene los principales parametros y el aspecto del graco que controlan
bg bty cex col lty lwd pch pty
Color del fondo (vease colors()) Tipo de ejes (o,l,c,7,u,] de los s Tamano 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 de dibujo ( cuadrada s, o maximal m) Tipo de region

al entorno R p. 29/48 Introduccion

al entorno R p. 30/48 Introduccion

Un ejemplo
# 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
14

Gracos: resultado del ejemplo

Salinidad en funcin del caudal

12

Salinidad
22 24 26 28 dis 30 32

10

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(saldis),lwd=2)

sal

10

12

14

22

24

26

28

30

32

Caudal

al entorno R p. 31/48 Introduccion

al entorno R p. 32/48 Introduccion

Gracos especiales:

pairs

Gracos especiales:

coplot
y | f) genera un

Si x es una matriz o chero de datos pairs(x) produce una matriz de diagramas de Por ejemplo, el comando dispersion.

Si x e y son vectores numericos y f es un factor coplot(x

para cada valor de f. Por ejemplo coplot(Petal.Width graco de dispersion

pairs(iris[,1:4],pch=c(rep(1,50),rep(3,50),rep(16,50)))
genera
2.0 3.0 4.0 0.5 1.5 2.5

Petal.Length | Species) genera


Given : Species
virginica versicolor

4.5 5.5 6.5 7.5

setosa

Sepal.Length

3.0

Sepal.Width

1 2 3 4 5 6 7

Petal.Width

2.0

Petal.Length

1.5

Petal.Width

0.5 1.0 1.5 2.0 2.5

2.5

0.5 1.0 1.5 2.0 2.5


2

4.0

0.5

Petal.Length
4.5 5.5 6.5 7.5 1 2 3 4 5 6 7

al entorno R p. 33/48 Introduccion

al entorno R p. 34/48 Introduccion

Gracos especiales:

persp y contour

Gracos especiales: otros paquetes gracos


funciones Los paquetes lattice y grid contienen muchas mas para obtener gracos. Constituyen un sistema alternativo para el que no son validas las opciones y comandos que hemos descrito hasta ahora. Podemos sin embargo usar cualquiera de estos paquetes en la misma de R sesion Para usar los comandos debemos antes cargar los paquetes mediante library(lattice) o library(grid) Veamos dos ejemplos de funciones de lattice:

# Densidad normal bidimensional x <- seq(-3,3,0.1); y <- seq(-3,3,0.1) aux <- function(x,y){1/(2*pi)*exp(-0.5*(x2+y2))};z <- outer(x,y,aux) layout(matrix(1:2,1,2)) persp(x,y,z,theta=45,phi=30,d=3,expand=0.75);contour(x,y,z,axes=F)

parallel y

Sepal.Length

setosa
Petal.Width

versicolor

Density

parallel( iris[,1:4] | Species)

z
x y
al entorno R p. 35/48 Introduccion

densityplot

al entorno R p. 36/48 Introduccion

Gracos especiales:

parallel

Gracos especiales:

densityplot

virginica
Petal.Width 0.25

Petal.Length 0.20 Sepal.Width 0.15

0.10

Petal.Length 0.05 Sepal.Width 0.00 Sepal.Length Min Max 0 2 4 6 8

Petal.Length

densityplot(Petal.Length)

al entorno R p. 37/48 Introduccion

al entorno R p. 38/48 Introduccion

Gracos especiales:

densityplot

Dispositivos gracos
El resultado de un comando graco no se asigna a un objeto sino a un

virginica
2.5 2.0 1.5 1.0 0.5

dispositivo (graphic device). El dispositivo por defecto es una ventana graca que se abre automaticamente.
versicolor

Density

0.0

setosa
2.5 2.0 1.5 1.0 0.5 0.0 2 4 6

Mediante windows() podemos abrir nuevas ventanas, a las que se asignan numeros diferentes. La ultima ventana abierta es la que activa. esta Con dev.set(n) activamos la ventana n.

Petal.Length

Otros dispositivos: (vease help(Devices)) pdf(): Env a los gracos a un chero .pdf jpeg(): Env a los gracos a un chero .jpg
al entorno R p. 39/48 Introduccion al entorno R p. 40/48 Introduccion

densityplot( Petal.Length | Species)

de la ventana graca Particion


> layout(matrix(1:4,2,2));layout.show(4)

de la ventana Gracos: particion


> layout(matrix(1:4,2,2),widths=c(1,3),heights=c(3,1));layout.show(4)

> layout(matrix(1:6,2,3,byrow=T));layout.show(6)

en cada subventana de Los gracos que vayamos generando se situaran


1 2 3

forma secuencial, en el orden correspondiente a los numeros. ACTIVIDAD 5

al entorno R p. 41/48 Introduccion

al entorno R p. 42/48 Introduccion

Graco de la practica

a la programacion en R Introduccion
En R el usuario puede programar sus propias funciones. es: El formato general de una funcion

14

14

Obs.16

nombre <- function(arg1=val1,arg2=val2,...) { expresiones de R }


Los valores por defecto de los argumentos no son obligatorios.

12

10

sal

10

12

22

24

26 dis

28

30

32

Tampoco los argumentos son obligatorios. devuelve como resultado el valor de la ultima Una funcion expresion evaluada, o lo que aparezca en la sentencia return de valores a variables dentro de una funcion se Cualquier asignacion

22

24

26

28

30

32

lleva a cabo de forma local. Se pierde al salir de la funcion.


al entorno R p. 43/48 Introduccion al entorno R p. 44/48 Introduccion

en R Un ejemplo de funcion
> + + + mi.fun <- function(a,b=3,...){ z <- a + b + ... return(z) }

Comandos de control
En R podemos usar los comandos de control que son habituales en otros lenguajes. Algunos de ellos son:

if (condicion) {expr1} else {expr2} for (n in 1:100) {expr}

Posibles llamadas a esta funcion:

while (condicion) {expr} repeat {expr}


El comando break se usa para interrumpir cualquier secuencia de las anteriores. Es la unica manera de interrumpir un repeat Siempre que sea posible conviene evitar estos comandos mediante el uso de calculo con matrices.
al entorno R p. 45/48 Introduccion al entorno R p. 46/48 Introduccion

mi.fun(1) mi.fun(1,2) mi.fun(b=2,a=1) mi.fun(1,2,3)

Como ejecutar las funciones


podemos escribir el codigo Para denir una nueva funcion, y guardarlo (en el directorio de trabajo) en un chero de texto funciones.R. El mismo chero puede contener varias funciones. Si entonces ejecutamos source(funciones.R), todas las funciones del chero se cargan en el espacio de trabajo, y ya se pueden usar. Las funciones de la memoria de trabajo son objetos (igual que vectores, matrices o data frames). Esto signica que pueden guardarse, junto con otros datos, mediante

informacion Referencias y mas


La ayuda de R es realmente util (al contrario de lo que sucede con otros programas). en la pagina Hay mucha documentacion web del programa. Ihaka, R. y Gentleman, R. (1996). R: A language for data analysis and graphics. Journal of computational and graphical statistics, 5, 299314. R Development Core Team (2005). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. ISBN 3-900051-07-0, URL:

save(lista,fichero.RData) y volverse a cargar en memoria con load(fichero.RData).


ACTIVIDAD 6
al entorno R p. 47/48 Introduccion

http://www.R-project.org.
Venables, W.N. y Ripley, R.D. (1994). Modern Applied Statistics with S-Plus, Springer.
al entorno R p. 48/48 Introduccion