Professional Documents
Culture Documents
Universidad de Cantabria
Material elaborado por M. Dolores Fras, Jes
us Fernandez y Sixto Herrera profesores del
Departamento de Matematica Aplicada y Ciencias de la Computacion.
Introduccion a R
El paquete R1 es una colecci
on de programas libres2 dise
nada para el analisis estadstico de datos,
que permite desde los an
alisis descriptivos mas sencillos (como tablas de frecuencias simples, calculo de
la media o correlaciones) a procedimientos inferenciales mas complejos (como contraste de hipotesis,
analisis de la varianza o el an
alisis de componentes principales). Solo unas pocas de las posibilidades
de analisis que ofrece R ser
an abordadas en este curso.
R realiza tres funciones esenciales: (1) leer datos, (2) especificar el tipo de analisis que se quiere
realizar con esos datos y (3) mostrar los resultados obtenidos tras los analisis. La seleccion de una
metodologa apropiada al caso de estudio, as como la interpretacion de los resultados es tarea del
investigador. Por este motivo resulta necesario que el investigador conozca el fundamento te
orico
de los distintos metodos estadsticos disponibles con el objeto de que la aplicacion del analisis y la
interpretacion de los resultados se realice de forma satisfactoria.
1
2
Contenido
1. Objetivos del curso
2. Instalaci
on de R
2.1. Microsoft Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3. Mac Os X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
3
3
3
3. Estructura de R
3.1. Comienzo de sesi
on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. Ventana de
ordenes (consola) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
4
4
4. RStudio
5. Ayuda en R
6. Instalaci
on y utilizaci
on de libreras en R
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
7
9
10
11
8. Creaci
on de funciones
13
9. Leer/Importar datos
13
10.Representaciones gr
aficas
14
1.
Con este manual se pretende que el alumno se familiarice con el paquete R y sea capaz de utilizarlo
como una herramienta de aplicaciones estadsticas a traves de las practicas que se plantean en clase.
Para ello se propone al alumno que ejecute cada una de las ordenes que se van introduciendo en el
manual, as como los ejercicios propuestos en las secciones Practica t
u mismo que serviran para
asimilar contenidos.
Todos los ficheros utilizados en este manual se pueden descargar de la web de la asignatura en la
plataforma de moodle de la Universidad de Cantabria.
2.
Instalaci
on de R
2.1.
Microsoft Windows
2.2.
Linux
A traves de la p
agina inicial de R se accede a la descarga de R para diferentes versiones de Linux:
Debian, Redhat, Suse y Ubuntu
http://cran.r-project.org/bin/linux/
Se recomienda seguir las instrucciones que se indican en la web en cada uno de los casos.
2.3.
Mac Os X
3.
Estructura de R
3.1.
Comienzo de sesi
on
Tras arrancar el programa, aparece una ventana de ordenes titulada Consola R que indica la
version de R y c
omo obtener informaci
on acerca de la licencia de uso.
R version 3.2.1 (2015-06-18) -- "World-Famous Astronaut"
Copyright (C) 2015 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type license() or licence() for distribution details.
Natural language support but running in an English locale
R is a collaborative project with many contributors.
Type contributors() for more information and
citation() on how to cite R or R packages in publications.
Type demo() for some demos, help() for on-line help, or
help.start() for an HTML browser interface to help.
Type q() to quit R.
>
Ademas al arrancar R vemos que tambien se especifican varias ordenes muy u
tiles para obtener
ayuda acerca de las distintas funciones de R como help() o help.start(). Tambien nos indica como
salir de R con la funci
on q().
Para ir desarrollando la pr
actica de una manera mas ordenada, se recomienda crearos un directorio
de trabajo en vuestro ordenador en el que vamos a ir guardando ficheros de datos, graficas, etc. Para
ello ejecutamos la funci
on setwd (set working directory) indicando el path completo del directorio
3.2.
Ventana de o
rdenes (consola)
Por debajo del ttulo, esta ventana contiene una barra con los siguientes men
us, cuyas opciones
principales destacamos a continuaci
on. En Linux R se ejecuta directamente en una terminal por lo
que estos men
us no aparecen.
Archivo Operaciones b
asicas con los ficheros: Abrir script, Imprimir, Salir, etc.
Editar Tpico men
u con opciones de edicion (copiar, pegar, ...).
Misc Opciones avanzadas.
Paquetes Permite gestionar los paquetes adicionales de R. Nos interesara la opcion:
Seleccionar espejo CRAN Para activar una URL de donde descargar distintos paquetes de
R.
Instalar paquete Permite seleccionar los paquetes que se quieren instalar.
4
Cargar paquete Para activar un paquete en concreto. Importante: una vez que un paquete ya
ha sido instalado en el ordenador, para poder utilizarlo solo tenemos que cargarlo, no hay
que volverlo a instalar cada vez que iniciamos R.
Ayuda Informaci
on abundante sobre R.
4.
RStudio
La consola no es la forma m
as eficiente de trabajar con R, ya que en muchos casos nos interesar
a corregir entradas de c
odigo ya ejecutadas, retocarlas, repetirlas, crear nuestras propias funciones, etc.
Existen varias herramientas que permiten trabajar con R de una forma mucho mas amigable, creando
nuestros propios scripts de c
odigo que podremos guardar en un fichero y recuperar posteriormente.
Algunos ejemplos son RStudio y R-Comander. En nuestro caso nos vamos a centrar en la herramienta
RStudio.
RStudio (http://rstudio.org/) es una GUI (Graphical User Interface) para R programada en C,
multiplataforma (Windows, Linux y Mac). Esta herramienta a
una todos los entornos y guarda la
filosofa de los comandos aportando algunas ayudas que hacen mas llevadera la programacion con R.
Otra definicion de RStudio: es un entorno libre y de codigo abierto de desarrollo integrado (IDE) de
R. Se puede ejecutar en el escritorio o incluso a traves de Internet mediante el servidor RStudio. Entre
otras cosas encontramos que RStudio nos permite:
Abrir varios scripts a la vez.
Ejecutar pedazos de c
odigo con solo marcarlo en los script.
Mostrar el workspace.
Mostrar los objetos del workspace.
Integra la ayuda.
Integra las libreras.
Su instalaci
on es muy sencilla sin m
as que ejecutar el archivo que se descarga de su pagina web.
Con esta herramienta podemos generar nuestro propio script (Figura 2 ventana de edicion de los
comandos) en el que iremos escribiendo todas las ordenes de R y que podremos guardar en cualquier
momento y volver a usar despues. Los scripts de R tienen extension .R. Ademas podemos a
nadir
comentarios en los scripts empezando todas las lneas de comentario con el comando #.
5.
Ayuda en R
R ofrece distintas formas de buscar ayuda dependiendo de nuestras necesidades. Probar a ejecutar
las siguientes opciones de ayuda en la ventana de ejecucion de RStudio (Figura 2 ventana de ejecuci
on
de los comandos):
>help() Muestra una ventana de ayuda general sobre R
>help.start() Arranca un manual de ayuda completo en formato html, utilizando el navegador del
sistema.
>help(mean) Muestra una ventana de ayuda sobre la funcion mean que calcula la media aritmetica.
>?mean Lo mismo que el ejemplo anterior.
>help("[") Muestra una ayuda sobre el caracter [ , que es un caracter especial que forma parte del
lenguaje R.
> apropos("mean") Muestra las funciones cuyo nombre contenga la cadena de caracteres que se escribe entre comillas, en este caso mean.
> help.search("mean") Busca informacion sobre objetos o funciones que tengan relacion con la cadena de caracteres escrita entre comillas en el propio nombre o en las palabras clave de su documentaci
on.
6.
Instalaci
on y utilizaci
on de libreras en R
La instalaci
on b
asica de R que se instala por defecto contiene un n
umero limitado de libreras que
nos permiten aplicar las funciones m
as habituales. Sin embargo, en muchas ocasiones nos encontramos
ante la necesidad de aplicar otro tipo de analisis que no estan incluidos en este paquete basico. Dado el
caracter libre y colaborativo de este software, en la mayoria de los casos nuestro problema ya ha sido
abordado y resuelto por otro usuario el cual ha aportado su solucion a modo de librera que ha puesto
a disposicion del resto de la comunidad de usuarios de R de forma libre. De esta manera, nosotros
podemos simplemente usar dicha libreria.
El primer paso, y normalmente el m
as complejo, es buscar en la red alguna solucion a nuestro
problema. En caso de encontrarla, podemos estar en alguna de estas situaciones:
El paquete se encuentra en repositorio denominado CRAN (Comprehensive R Archive Network).
Este sera el caso m
as sencillo ya que se podra instalar directamente desde RStudio o llamar a la
funcion install.packages(nombre libreria) haciendo referencia al nombre de la librera entre
comillas. Una vez instalado el paquete hay que activarlo con el comando library(), de modo
que ya este listo para ser usado. La instalacion de una librera solo sera necesaria la primera
vez, mientras que la activaci
on debe realizarse siempre que iniciemos una sesion en R en la que
queramos aplicar las funciones de una determinada librera ya instalada que no estaba incluida
en el paquete b
asico.
Si el paquete no est
a en el repositorio oficial de R, debemos descargar el paquete en local desde la
6
pagina web que lo ofrece. En el caso de tener que descargar el paquete comprimido, la funci
on de
instalacion permite tambien cargar el paquete desde la carpeta local en la que tengamos el archivo
comprimido. Dependiendo del Sistema Operativo, el archivo comprimido tendra una extensi
on
(p.e. .zip en windows), aunque normalmente se define explcitamente a cual corresponde cada
una. En este caso debemos ejecutar la orden
install.packages("./pathLocal/nombre paquete.tar.gz",repos=NULL,type="source")
Finalmente, podemos querer cargar una funcion que hayamos programado nosotros mismos o nos
hayamos descargado en local, pero que no sea una librera. Para ello podemos usar el comando
source. El problema de este comando es que hay que volver a aplicarlo siempre que hagamos
un cambio en la funci
on que queramos utilizar.
Podeis instalaros desde CRAN la librera ISLR (install.packages(ISLR)). Esta librera contiene una colecci
on de bases de datos que se utilizan en en el libro An Introduction to Statistical
Learning with Applications in R de G. James. Una vez instalada y cargada la librera podeis ver
los datos que contiene la base de datos Auto ejecutando la orden Auto en la ventana de comandos
de RStudio o bien la orden help(Auto), para ver la descripcion de los datos contenidos en esa base.
Como se describe en la ayuda, se trata de una base de datos de 392 vehculos de 9 variables distintas.
7.
7.1.
Vectores
La estructura m
as simple en R es el vector, que es una coleccion ordenada de n
umeros. Para crear
un vector, x, consistente en cinco n
umeros, por ejemplo 10.4, 5.6, 3.1, 6.4 y 21.7, se usa la orden
> x <- c(10.4, 5.6, 3.1, 6.4, 21.7)
Esta es una asignaci
on en la que se utiliza la funcion c() que, en este contexto, puede tener un n
umero
arbitrario de vectores como argumento y cuyo valor es el vector obtenido mediante la concatenaci
on
de todos ellos. Un n
umero, por si mismo, se considera un vector de longitud uno.
Advierta que el operador de asignaci
on, (<-), no es el operador habitual en otros lenguajes, (en
R el = se reserva para otro prop
osito). La asignacion en R consiste en dos caracteres, < (menor que)
y - (guion), que obligatoriamente deben ir unidos y apuntan hacia el objeto que recibe el valor de
la expresion (x en este caso). La asignaci
on puede realizarse tambien mediante la funcion assign().
7
Practica t
u mismo
1) Utiliza la funci
on seq (consulta la ayuda para ver como se ejecuta esta funcion, recuerda: > ?seq)
para crear los siguientes vectores:
55, 56, 57, 58, 59
1, 3, 5, 7, 9, 11
Practica t
u mismo
2) Introduce el vector: x<-c(1,3,5,7,9) e intenta adivinar antes de calcular los resultados de las
siguientes instrucciones:
sum(x>5)
sum(x[x>5])
which(x>5)
x>5
Extrae el elemento de x que ocupa la posicion 2.
Extrae utilizando un u
nico comando, los 3 elementos de x que ocupan las posiciones de la 2 a la
4.
7.2.
Matrices
orden help()
Practica t
u mismo
3) Crea la siguiente matriz de datos: > m<-matrix(1:15, nrow=3) e intenta adivinar antes de calcular
los resultados de las siguientes instrucciones:
dim(m)
ncol(m)
nrow(m)
which(m>=5 & m<=8)
Extrae la primera fila.
Extrae el segundo elemento de la tercera columna.
7.3.
Factores
10
7.4.
Data frame
Un data frame (o tabla) es una generalizacion de las matrices donde cada columna puede contener
tipos de datos distintos al resto de columnas, manteniendo la misma longitud. Es lo que mas se parece
a una tabla de datos de cualquier paquete estadstico estandar. Se crean con la funcion data.frame().
En un data frame, los vectores de texto se transforman automaticamente en factores, el n
umero de
categoras o niveles vendr
a determinado por el n
umero de valores diferentes que contenga el vector.
Vamos a definir un data frame con los datos del grupo de personas definido anteriormente.
datos<- data.frame(nombre, edad, actividad)
Ejecutar el nombre del data frame creado para ver los datos que contiene.
Podemos seleccionar columnas concretas de un data frame usando los corchetes [ ] de forma similar
a la usada para seleccionar elementos de una matriz. Para acceder al vector que forma una de las
columnas de un dataframe usamos el operador $ (por ejemplo > datos$nombre).
Si queremos a
nadir otras variables a un data frame u
nicamente es necesario definir un nuevo vector,
del mismo tama
no que los anteriores, por ejemplo el peso, y usar la misma funcion.
peso <- c(56, 67, 87, 68, 79, 75, 76, 57)
datos<- data.frame(datos, peso)
Para editar un data frame definido podemos usar la funcion edit(dataframe). Sin embargo la
forma mas com
un de definir un data frame es leyendo un fichero de datos, como se vera mas adelante.
Por ejemplo, la base de datos Auto cargada antes de la librera ISLR es un data frame:
class(Auto)
y podemos acceder a alguna de las variables que contiene ese dataframe y realizar operaciones
aritmeticas con ellas en el caso de ser una variable numerica, como por ejemplo calcular la media con
la funcion mean:
class(Auto$cylinders)
mean(Auto$cylinders)
Con el comando attach, las columnas de un data.frame pasan a ser variables de tipo vector
simplificando as el c
odigo anterior en el que usabamos el operador $ para acceder a las variables del
data frame (> datos$nombre):
attach(Auto)
mean(cylinders)
El comando dettach deshace esta acci
on.
Trabajando con las variables de esa misma base de datos, podemos determinar por ejemplo el
n
umero de vehculos que tienen 6 cilindros o mas.
sum(cylinders>=6)
o el porcentaje de coches toyota corolla de esa base de datos.
sum(name=="toyota corolla")/length(name)
11
Practica t
u mismo
Practica t
u mismo
5) Con el data frame generado analiza los resultados de las siguientes instrucciones:
datos[2,]
datos[3,4]
datos[datos$Edad>20]
Cual es la diferencia entre ejecutar
attach(datos);datos[Edad>20,]
y ejecutar
Edad[Edad>20]
Altura[Edad>20 & Sexo=="M"]
12
8.
Creaci
on de funciones
El usuario puede crear sus propias funciones para realizar una tarea especfica. Ademas estas se
pueden empaquetar en grupos y tener siempre disponibles para todas las sesiones. La sintaxis es
sencilla:
nombre_funcion <- function (arg1, arg2,...){
#funcion de usuario
sentencias a ejecutar
return (objeto a devolver)
}
Por ejemplo,
mi_primera_funcion <- function(x){
f <- sqrt(1-exp(-x^2))
return (f)
}
Una vez guardada en un fichero la funcion creada por el usuario, el comando source() nos permitira usarla cuando sea necesaria.
source(mi_primera_funcion)
mi_primera_funcion(3)
Practica t
u mismo
9.
Leer/Importar datos
Desde R se pueden leer datos directamente de aquellos ficheros propios de R. Estos ficheros tienen
extension .rda. La funcion load() nos permite abrir este tipo de ficheros.
Vamos a cargar como ejemplo el fichero Pulsaciones.rda disponible en la pagina web de la
asignatura.
Pulsaciones<-load("Pulsaciones.rda")
Este fichero contiene registros de 92 personas de diferentes variables (visualizar el contenido). A
una parte de los individuos de esta muestra se les pide que corran durante un tiempo y a otros no. La
primera columna (Pulse1) contiene datos del pulso de cada individuo al inicio de la prueba, la columna
2 (Pulse2) recoge el pulso de los individuos al finalizar la prueba. La columna 3 (Correr) indica si el
individuo es del grupo de los que corrieron en la prueba o no. La columna 4 (Fumar) recoge si fuma o
no fuma, la columna 5 (Sexo) indica si es hombre o mujer. Las columnas 6 (Altura) y 7 (Peso) recogen
los datos de la altura (cm) y el peso (Kg) respectivamente. Por u
ltimo la columna 8 (Actividad) indica
que tipo de actividad fsica realiza el individuo normalmente en su vida diaria, baja, media o alta.
En RStudio se puede abrir un fichero con extension .rda directamente desde el men
u Archivo.
13
Para leer otro tipo de datos guardados en ficheros que no son propios de R se necesita importar esos datos indicando a R ciertas caractersticas sobre como estan almacenados los datos en el
fichero. Una funci
on muy utilizada para importar datos no nativos de R guardados en ASCII es
read.table(). Esta funci
on autom
aticamente convierte los datos en un data frame. Cargamos ahora
el fichero santander.txt disponible en la web de la asignatura. Antes de abrir este fichero de datos
con R podeis abrirlo con cualquier editor de texto para ver el formato de los datos que contiene.
santander1<-read.table("santander.txt")
santander2<-read.table("santander.txt", header=TRUE)
Comparar el resultado de las dos
ordenes ejecutadas antes para cargar los datos del fichero
santander.txt. Cu
al es la correcta? El parametro header sera TRUE o FALSE si la primera fila del fichero contiene el nombre de las variables o no. Por defecto toma el valor FALSE (no tiene
cabeceras). Otra opci
on de esta funci
on es sep que representa el delimitador o separador de campos. Por defecto esta opci
on toma como separador de campos el espacio en blanco, pero se pueden
especificar otros si es necesario. De forma parecida trabaja la funcion read.csv(). Para importar
correctamente los datos desde R debeis conocer de antemano todas estas caractersticas de los datos
(cabeceras, separador, caracter decimal, etc).
Desde R tambien se pueden importar ficheros creados con Microsoft Excel, aquellos con extensi
on
.xls. La funcion read.xls, incluida en la librera gdata, nos permite leer este tipo de ficheros. Debeis
instalar (una sola vez) y cargar esta librera si no esta disponible.
Practica t
u mismo
7) Utilizando los datos del fichero Pulsaciones.rda, calcula los siguientes valores:
1. Calcular el n
umero de personas que miden menos de 183 cm.
2. Calcular el porcentaje de personas que miden menos de 183 cm.
3. Determinar las mujeres que miden menos de 170 cm.
10.
Representaciones gr
aficas
Los graficos b
asicos en 2-D se encuentran en el paquete base de R (plot, hist, boxplot, etc.). Las
funciones basicas mas importantes son:
plot: por defecto genera un gr
afico de puntos.
lines: a
nade lneas a un gr
afico.
points: a
nade puntos a un gr
afico.
text: a
nade etiquetas de texto a un grafico.
title: a
nade etiquetas a los ejes X e Y, un ttulo, subttulo.
axis: modifica los ticks de los ejes y sus etiquetas.
Veamos un ejemplo usando el fichero de datos Pulsaciones.rda.
14
plot(Altura, Peso)
plot(Altura, Peso, ylim=c(60,70))
lines(c(160,190), c(65,65), col="red", lwd=2)
points(c(175), c(65), pch=3, col="blue", lwd=3)
points(c(175,180), c(60,65), pch=3, col="green", lwd=4)
text(170, 68, "Fake point")
title(main="Grafico de prueba", cex.main=1.5)
axis(1, col="violet")
axis(2, col="magenta")
Existen muchos parametros de estas funciones que pueden ser sobreescritos usando la funcion par
(consulta la ayuda ?par).
> plot(Altura,
> par("pch") #
[1] 1
> par("lwd") #
[1] 1
> par(lwd=4)
> par(pch=2)
> plot(Altura,
Peso)
Plot symbol
Line width
Peso)
Practica t
u mismo
8) El fichero de datos santander.txt contiene los datos de temperatura media mensual medida en
Santander desde 1950 hasta 2003. Se pide:
1. Representar las temperaturas medias registradas en febrero durante el periodo 1950-1960. Indicar
en que a
no se registr
o la temperatura mas baja.
2. Representar las temperaturas medias de julio y agosto entre los a
nos 1970 y 1980 y encontrar
graficamente en que a
nos esta fue mayor en julio.
15