Está en la página 1de 13

Esquema

Introducci on

Introducci on al programa estad stico de distribuci on libre R


Jos e R. Berrendero
Departamento de Matem aticas Universidad Aut onoma de Madrid joser.berrendero@uam.es Febrero 2010

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

Manejo de cheros de datos, vectores y matrices


Lectura y creaci on de cheros de datos. Trabajando con vectores, matrices, factores y listas.

Estimaci on e inferencia con R en diferentes modelos estad sticos


Modelos de probabilidad. An alisis descriptivo. Comparaci on de dos muestras. An alisis de la varianza. Regresi on lineal.

Gr acos con R
Comandos de alto y bajo nivel. Par ametros. Divisiones de la ventana gr aca. Dispositivos gr acos.

Introducci on a la programaci on en R
Funciones. Sentencias de control. C omo organizar las funciones.
Berrendero (UAM) R Febrero 10 1 / 50

Qu e es R?
El entorno R es un conjunto integrado de programas para manejo de datos, c alculo y gr acos. Incluye: 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 p agina principal de R es: http://www.r-project.org/ Comandos para manejar y almacenar conjuntos de datos Operadores para llevar a cabo c alculos con vectores y matrices Comandos para llevar a cabo diversos an alisis de datos Comandos para gr acos Un lenguaje de programaci on relativamente simple La aplicabilidad de R se puede extender mediante paquetes de funciones. La versi on base contiene aproximadamente 25 paquetes. La p agina web permite disponer de muchos m as.

Descargar e instalar el programa

Direcci on principal: http://www.r-project.org Entrar en CRAN (a la izquierda de la pantalla). Elegir una localizaci on conveniente. 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 b asicas


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. 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 may usculas y min usculas. El operador de asignaci on de valores a un objeto es x = 10 o x <10. Escribiendo el nombre de un objeto accedemos a su contenido. Los comandos ls() y ls.str() generan listas de los objetos en el area de trabajo. Con rm() podemos borrar objetos.

Obtener ayuda

Mediante help(comando) se obtiene ayuda sobre cada comando o conjunto de datos. La funci on example(comando) proporciona ejemplos de uso del 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 gen ericas: el resultado depende de la clase. Podemos cambiar el directorio de trabajo en el men u Archivo, opci on 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: n umero de elementos de un objeto. length(objeto) Mode: tipo b asico de elementos de un objeto: numeric, character, complex, logical, function, expression. mode(objeto). Atributos no intr nsecos: Informaci on complementaria. 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 c omo construir vectores y extraer informaci on 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

Tambi en se puede usar scan(datos.txt), pero en este caso el 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 u til cuando nos falta alg un dato. NaN: Signica Not a Number. Aparece como resultado de operaciones cuyo resultado es ambiguo o inexistente en el conjunto de n umeros reales. Inf: Signica Innity. Las funciones is.na(x) y is.nan(x) detectan qu e coordenadas de un vector x son NA o NaN
Ejemplos: Dene x = c(NA,NaN,Inf,0,3) y efect ua las operaciones siguientes, tratando de 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

Operaci on 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

Expresi on de R 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 e ocurre si hacemos mean(x)? Cu al es el resultado de apply(x,1,mean)? Cu al es el resultado de apply(x,2,mean)?

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 colecci on de objetos de R que, por la raz on que sea 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 tambi en est an numerados. El comando milista[[1]] (con doble corchete) equivale al anterior

Podemos recodicar una variable (transform andola 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

Trabajo con listas

El comando sapply

Podemos tambi en extraer elementos de los elementos de una lista. Toma 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 duraci on de erupciones y tiempo entre ellas del geyser Old Faithful. Una descripci on del chero se obtiene haciendo help(faithful) Una forma r apida de obtener una descripci on estad stica de las dos variables es mediante sapply(faithful,summary)

Cu al es la diferencia entre milista[1] y milista[[1]]? Cu al es el resultado de milista[2:3]? Y el resultado de milista[[2:3]]?

Ejercicio: datos iris

Modelos de probabilidad
Cada distribuci on importante tiene un nombre en R: norm, binom, pois, exp, t, chisq, f,...

El chero iris contiene medidas (largo y ancho) del p etalo y s epalo de 150 lirios de tres especies. Para m as informaci on, help(iris) Para poder trabajar directamente con los nombres de las variables, attach(iris) Qu e calcula cada uno de los comandos siguientes?
summary(iris) sapply(iris,summary) tapply(Sepal.Length,Species,summary)

A cada nombre de distribuci on se le antepone un prejo que determina una funci on relacionada:
Prejo d p q r Funci on Funci on de densidad f (x ) Funci on de distribuci on F (x ) Funci on cuant lica F 1 (p ) Generador de n umeros aleatorios

Ejemplos: La mediana de una exponencial de par ametro = 2 se obtiene mediante qexp(0.5,2) La probabilidad de que una v.a. 2 5 sea menor o igual que 7 es pchisq(7,5) Determina un valor x tal que P(Z > x ) = 0.3, donde Z es una v.a. con distribuci on normal

An alisis descriptivo

Comparaci on de medias

Medidas num ericas b asicas: summary(x), var(x), sd(x), mean(x), median(x), cor(x,y), cov(x,y) Principales gr acos: 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)) Bondad de ajuste: ks.test(x,distribuci on,...)
> 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 b asico es


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

Comparaci on de proporciones
Para comparar dos proporciones o una proporci on con p0 jo
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 regresi on lm(formula,data=data.frame) Para llevar a cabo un an alisis de la varianza 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 est an los datos se especica con el argumento data

Ejemplo: Proporci on muestral: 20/46. Proporci on poblacional: p . 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 f ormulas

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 informaci on para extraer los elementos m as importantes de la salida:
summary plot anova coef fitted residuals Resumen de los principales resultados Gr acos para diagn ostico del modelo Tabla de an alisis de la varianza 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 Regresi on lineal simple Regresi on simple a trav es del origen Regresi on m ultiple ANOVA con un factor ANOVA con dos factores aditivo ANOVA con dos factores e interacciones

Por ejemplo summary(lm(y~ x)). Para los tres u ltimos elementos son equivalentes, por ejemplo, residuals(lm(y~ x)) y lm(y~ x)$residuals

Gr acos: estructura de comandos

Comandos de alto nivel

Comandos de alto nivel: Son comandos con los que se puede crear un gr aco nuevo. Comandos de bajo nivel: Son comandos que permiten a nadir elementos (puntos, l neas, texto,etc.) a un gr aco ya existente Par ametros: Permiten modicar el aspecto de los gr acos. Paquetes especializados: Los paquetes grid y lattice, distribuidos con la versi on b asica de R, contienen m as comandos para nuevos gr acos.

Ya hemos visto los principales:


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

Para cada funci on hay una serie de argumentos opcionales. Estos son los m as importantes
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 gr aco: p (puntos), l (l neas), b (puntos conectados por l neas), etc. Especica los l mites de los ejes Leyendas de los ejes T tulo del gr aco Subt tulo del gr aco

Comandos de bajo nivel

Par ametros gr acos

La siguiente tabla contiene los m as importantes y cu al es su funci on Los gr acos se pueden personalizar a trav es de m as de 60 par ametros.
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) A nade puntos de coordenadas (xi , yi ) A nade l neas en lugar de puntos A nade el texto labelsi en (xi , yi ) Dibuja la recta de pendiente b y t ermino independiente a Dibuja la recta horizontal y = a Dibuja una recta de regresi on Dibuja la recta vertical x = a Dibuja un pol gono uniendo los puntos (xi , yi ) A nade la leyenda legend en (x , y ) A nade un t tulo Devuelve las coordenadas de n puntos se nalados con el rat on

La mayor a de los par ametros (pero no todos) se pueden usar como argumentos en los comandos de alto y bajo nivel. En este caso tienen efecto en el gr aco que estamos dibujando en este momento. Tambi en pueden jarse valores jos de los par ametros mediante el comando par. Por ejemplo, par(bg=yelow) hace que todos los gr acos tengan fondo amarillo.

Par ametros gr acos

Ejemplo

La tabla siguiente contiene los principales par ametros y el aspecto del gr aco que controlan
bg bty cex col lty lwd pch pty Color del fondo (v ease colors()) Tipo de ejes (o,l,c,7,u,] Tama no de los s 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 regi on de dibujo ( cuadrada s, o maximal m)

# 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 gr acos

Salinidad en funcin del caudal

Los paquetes lattice y grid contienen muchas m as funciones para obtener gr acos. Constituyen un sistema alternativo para el que no son v alidas las opciones y comandos que hemos descrito hasta ahora. Podemos sin embargo usar cualquiera de estos paquetes en la misma sesi on de R

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 funci on de lattice: densityplot

Gr acos especiales: densityplot

Gr acos especiales: densityplot

virginica
0.25 2.5 2.0 1.5 1.0 0.5 0.15

0.20

Density

Density

G G G GG G G G GG G GG G G G G G G GGG G GGG GG G G G GG

0.0

setosa
2.5 2.0 1.5

versicolor

0.10

0.05 1.0 0.5 0.00


G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G

0.0 0 2 4 6 8

G G G GG G G G GG G GG G GG G G G G GG

G G G G G G G GG G G G G G G GG G G G G G G G G G GG G G G G

Petal.Length

Petal.Length

densityplot(Petal.Length)

densityplot( ~ Petal.Length | Species)

Dispositivos gr acos

Partici on de la ventana gr aca


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

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


1 3

El dispositivo por defecto es una ventana gr aca que se abre autom aticamente. Mediante windows() podemos abrir nuevas ventanas, a las que se asignan n umeros diferentes. La u ltima ventana abierta es la que est a activa. Con dev.set(n) activamos la ventana n. Otros dispositivos: (v ease help(Devices))
pdf(): Env a los gr acos a un chero .pdf jpeg(): Env a los gr acos a un chero .jpg

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

Gr aco de la pr actica

Formato de una funci on de R


En R el usuario puede programar sus propias funciones.
G

14

14

12

12

G G G GGG G G G G

El formato general de una funci on es:


G G G G G G G

10

10

G GG G G G

Obs.16

G G

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

22

24

26

28

30

32

Una funci on devuelve como resultado el valor de la u ltima expresi on evaluada, o lo que aparezca en la sentencia return

Cargar una funci on en el area de trabajo


Antes de utilizar una funci on hay que cargarla en el area de trabajo. Para ello, hay varias alternativas: Escribir el c odigo directamente en la consola (s olo funciones muy sencillas) Escribir el c odigo en un chero de texto, marcarlo con el rat on y copiarlo en la consola Escribir el c odigo en un chero de texto, guardar el chero en el directorio de trabajo y ejecutar source(fichero) Una vez cargada la funci on en la memoria activa, ya puede utilizarse Cualquier asignaci on de valores a variables dentro de una funci on se lleva a cabo de forma local. Se pierde al salir de la funci on.

Un ejemplo muy simple

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

Posibles llamadas a esta funci on: mifuncion(1) mifuncion(1,2) mifuncion(b=4,a=1) mifuncion(1,2,3) Cu al es el resultado en cada caso?

Ejercicio

El comando for

Para repetir B veces el mismo c alculo se puede usar: for (i in 1:B){ expresiones de R } Escribe la funci on anterior en el editor de R C argala en el area de trabajo (usando source o marcando con el rat on) Ll amala de distintas formas: con un s olo argumento, con dos argumentos en diversos ordenes, con tres argumentos. Ejemplo: x = 0 for(i in 1:5){ x = x + i } x [1] 15

El comando if

Soluci on
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 funci on tal que, dado un vector x = (x1 , . . . , xn ) produce un nuevo vector y = (y1 , . . . , yn ) con yi = 1 si xi > 0, y yi = 0 si xi 0.

También podría gustarte