Você está na página 1de 13

Esquema

Introduccin o

Introduccin al programa estad o stico de distribucin libre R o


Jos R. Berrendero e
Departamento de Matemticas a Universidad Autnoma de Madrid o joser.berrendero@uam.es Febrero 2010

Qu es R? Cmo descargar e instalar el programa. Formas de obtener ayuda. Algunas e o caracter sticas generales. Atributos

Manejo de cheros de datos, vectores y matrices


Lectura y creacin de cheros de datos. Trabajando con vectores, matrices, factores y o listas.

Estimacin e inferencia con R en diferentes modelos estad o sticos


Modelos de probabilidad. Anlisis descriptivo. Comparacin de dos muestras. Anlisis de a o a la varianza. Regresin lineal. o

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

Descargar e instalar el programa

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

Algunas caracter sticas bsicas a


Lenguaje orientado a objetos: Variables, datos, resultados, funciones,... se almacenan en el rea de trabajo en forma de objetos a con un nombre. Sobre los objetos pueden actuar operadores y funciones. Cada objeto tiene unos atributos que determinan la forma de actuar de los operadores y las funciones. Los nombres de los objetos empiezan por una letra. R distingue maysculas y minsculas. u u El operador de asignacin de valores a un objeto es x = 10 o x <o 10. Escribiendo el nombre de un objeto accedemos a su contenido. Los comandos ls() y ls.str() generan listas de los objetos en el rea de trabajo. a Con rm() podemos borrar objetos.

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

Area y directorio de trabajo


Para conocer el directorio en el que estamos trabajando:

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

Operaciones con vectores y matrices

Operaciones con vectores y matrices

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

Expresin de R o A%*%B A*B t(A) solve(A,b) solve(A) eigen(A) sum(A) colMeans(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

Trabajo con listas

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]]?

Ejercicio: datos iris

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

Para comparar las medias de de dos muestras, el comando bsico es a


t.test(x, y, alternative = c("two.sided", "less", "greater"), mu = 0, paired = FALSE, var.equal = FALSE, conf.level = 0.95)

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

Ejemplo: Proporcin muestral: 20/46. Proporcin poblacional: p. o o 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

Sintaxis para las frmulas o

Resultados de los comandos lm y aov

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

Sintaxis en R y~ x y~ x-1 y~ x1 + x2 y~ A y~ A+B y~ A*B

Modelo 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

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

Grcos: estructura de comandos a

Comandos de alto nivel

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

Ya hemos visto los principales:


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

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

Comandos de bajo nivel

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

Otros paquetes grcos a

Salinidad en funcin del caudal

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

Grcos especiales: densityplot a

Grcos especiales: densityplot a

virginica
0.25 2.5 2.0 1.5 1.0 0.5 0.15

0.20

Density

Density

q qqqq q q qqqqqqq q q qq qqqq q qq qqqqqq q q q

0.0

setosa
2.5 2.0 1.5

versicolor

0.10

0.05 1.0 0.5 0.00


q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q

0.0 0 2 4 6 8

qq qqqq qqqq q qqq qq qqqq q

q q qqq qqqqqqqq q qqqqqqqqqq q q q q qq

Petal.Length

Petal.Length

densityplot(Petal.Length)

densityplot( ~ Petal.Length | Species)

Dispositivos grcos a

Particin de la ventana grca o a


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

El resultado de un comando grco no se asigna a un objeto sino a a un dispositivo (graphic device).


1 3

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

Formato de una funcin de R o


En R el usuario puede programar sus propias funciones.
q

14

14

12

12

q q q qqq q q q q

El formato general de una funcin es: o


q q q q q q q

10

10

q qq q q q

Obs.16

q q

22

24

26 dis

28

30

32

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

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

Cargar una funcin en el rea de trabajo o a


Antes de utilizar una funcin hay que cargarla en el rea de trabajo. Para o a ello, hay varias alternativas: Escribir el cdigo directamente en la consola (slo funciones muy o o sencillas) Escribir el cdigo en un chero de texto, marcarlo con el ratn y o o copiarlo en la consola Escribir el cdigo en un chero de texto, guardar el chero en el o directorio de trabajo y ejecutar source(fichero) Una vez cargada la funcin en la memoria activa, ya puede utilizarse o Cualquier asignacin de valores a variables dentro de una funcin se lleva a o o cabo de forma local. Se pierde al salir de la funcin. o

Un ejemplo muy simple

mifuncion = function(a,b=3,...){ z = a + b/2 + ... return(z) }

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.

Você também pode gostar