R es el entorno de programación y un lenguaje de popular utilización en al ámbito de la estadística. Una de las principales ventajas de este programa es su gratuidad. Es similar a otros paquetes de programación como Matlab (no gratuito), y mucho más simple que otros lenguajes como C++ o Fortran.

Se puede utilizar R en su plataforma original, pero por motivos educacionales es preferible trabajar en R desde R-studio (también gratuito), por disponer este último de ventanas mejor organizadas y contar con más opciones gráficas.

Comenzando a utilizar el R

Instalar R en el ordenador

Para utilizar R primero debes instalar R en tu ordenador. Sigue las instrucciones:

  • pincha en el link http://cran.r-project.org
  • pincha download R for Windows (si utilizas linux o alguna otra plataforma elige el fichero de descarga correspondiente)
  • pincha en base
  • elige Download R 3.1.1 for Windows (o la versión mas actualizada que figure en la web) y elige las opciones por defecto en los cuadros de instalación.

Una vez hayas instalado R en tu ordenador, busca el icono de R en el escritorio y haz doble click. Verás una ventana como esta:

R in your computer


esta es la interfaz de R. Te recomendamos sin embargo que utilizes R-sutdio como interfaz de programación. Para ello debes instalar R-studio. Haz un click en el link anterior (www.rstudio.prg) y sigue las intrucciones:

  • abre http://www.rstudio.com
  • click Download Rstudio
  • click Download Rstudio Desktop
  • elige la versión adecuada para tu sistema operativo
  • descarga el fichero .exe y ejecutalo
  • elige las respuestas por defecto en las ventanas de instalación

Una vez finalizada la instalación haz doble-click en el icono de R-studio. Podrás ver las siguientes ventanas:

R in your computer

  • Console windows: aquí es donde escribimos los comandos que R interpreta y que nos permiten hacer analisis estadístico.
  • Editor window: en algunas ocasiones nos interesa utilizar reiteradas veces los comandos que R ejecuta. Esta ventana sirve para ir guardando los comandos que vamos ejecutando en R. Si quieres ejecutar algunos de los comandos guardados, simplemente los seleccionas en esta ventana y presionas CTRL + R, de esta manera los comandos selecionados se ejecutan en la consola de R.
  • Workspace: aquí podrás observar los elementos que R mantiene en su memoria.
  • Files / Plots / Packages / Help: desde esta ventanas podrás visualizar los gráficos creados, abrir ficheros, ver que paquetes tienes instalados y recurrir a la ayuda del programa.

Librerias

R puede realizar varias tareas de análisis estadístico y de datos. Los comandos necesesarios para ejecutar estas tareas se encuentran en los paquetes o librerias. Con la instalación estandard de R, la mayor parte de estos paquetes se instalan automaticamente.

En caso de necesitar alguna paquete adicional debes instalarlo manualmente y leer el paquete antes de utilizarlo. Para ello debes utilizar la siguiente intrucción que debes escribir en la consola de R:

install.packages('package_name')
library(package_name)

Primeros ejemplos de funciones en R

R como calculadora

R puede utilizarse como calculadora. Simplemente escribe la operación que deseas realizar a continuación del simbolo “>” ay presiona la tecla enter. Aquí algunos ejemplos:

1 + 1
## [1] 2
2*2
## [1] 4
3^3
## [1] 27
1 + 1 - sin(2*pi) + 4^2 
## [1] 18

Para obener información adicional sobre las operaciones matemáticas habituales (las que encuentras en una calculadora de mano) tipea help() + arithmetic, trig (para funciones trigonométricas), log para funciones logaritmicas o special para funciones especiales.

En R se pueden salvar los resultados de una operación o calcula:

a = 2*5
b = 2^2
a + b
## [1] 14

Verás que a y b aparecen en la ventana del workspace, esto quiere decir que ahora R recuerda los valores de a y b. Si quieres borrar todo el contenido de la memoria de R, tipea:

rm(list=ls())

Si encambio, solo deseas borrar a:

rm(a)

Scalares, vectores y Matrices en R

Como cualquier otro programa, R organiza números en scalares (simples números), vectores (una fila de números) y matrices (una colección de vectores).

La manera de crear vectores en R es la siguiente:

scalar = 10
vector = c(1,2,3)

Para crear una matriz, primero necesitamos crear un vector con todos los elementos de la matriz y luego indicarle a R en cuantas filas y columnas organizar los elementos de este vector con el comando: matrix(data, nrow, ncol). Aquí tenemos un ejemplo:

scalar = 10
vector = c(1,2,3)
matrix = matrix(c(1,2,3,4,5,6,7,8,9), ncol=3)
# Esta matriz contiene los números del 1 al 9.

# Para recobrar los elementos simplemente escribimos:
scalar
## [1] 10
vector
## [1] 1 2 3
matrix
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9

Para examinar la lingitud de un vecto utilizamos la función lenght, mientras que para recuperar las dimensiones de una matriz utilizamos la función dim.

length(a) # Retorna la longitud del vector 'a'.
dim(B)    # Retorna las dimensiones de la matriz 'B'.
Funciones sobre Matrices
  • mode(A): propiedades de los elementos que contiene la matriz A.
  • dim(A): dimensiones de la matriz A.
  • colnames(A)= c(‘varname_1’, … ,‘varname_n’): asignar conmbre a las columnas de la matriz A (rownames(A) hace lo mismo con las filas de la matriz A).
  • cbind() and rbind(): concatenar (unir) matrices por columna y por filas respectivamente. He aquí algunos ejemplos de los comandos antes mencionados:
A = matrix(c(1,2,3,4,5,6,7,8,9), ncol=3)
dim(A) # Gives number of rows and columns
## [1] 3 3
colnames(A)=c('col1','col2','col3')
A
##      col1 col2 col3
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
B=rbind(A,A)
B # rbind concatenate A with A by rows.
##      col1 col2 col3
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
## [4,]    1    4    7
## [5,]    2    5    8
## [6,]    3    6    9

Arrays, data frames y listas

Existen otros elementos un tanto mas sofisticados con los que trabajar en R. Un array es una colección de matrices o vectores (de igual dimensión). Un data frame is similar a una matriz, pero en el podemos guardad de manera indiferente columnas con números y letras, esto hace que los data frames se utilizen de manera natural para guardar datos en R. Una lista es una colección de cualquiera de los elementos anteriores, pudiendo contener scalares, vectores, matrices, arrays, data frames e inclusive otras listas.

Construyendo funciones en R

R trabaja con funciones que operan sobre los elementos de R. Por ejemplo, si queremos computar la media de un vector de números, utilizamos la función mean, como en el siguiente ejemplo:

a = c(1,2,3,4,5)
mean(a)
## [1] 3

Una de las fortalezas de R es su versatilidad para crear funciones propias. La estructura de una función es de esta manera:

myfunction <- function(arg1, arg2, ... ){
statements
return(object)
}

Como ejemplo se propone una función que suma los elementos de un vector:

sumvector <- function(x){
output = sum(x)
return(output)
}

a = c(1,2,3,4,5,6,7,8,9,10)
sumvector(a)
## [1] 55

Leyendo y examinando datos

R puede leer y trabajar con casi todo tipo de fichero de datos. La manera más versatil de trabajar con datos externos es guardando la base de datos en un data frame. Para leer los datos que pueden provenir de un fichero externo utilizaremos el comando “read.table”, como en el siguiente ejemplo:

Mydataframe = read.table('http://data.princeton.edu/wws509/datasets/effort.dat')
head(Mydataframe) # para ver las primeras filas de los datos.
##           setting effort change
## Bolivia        46      0      1
## Brazil         74      0     10
## Chile          89     16     29
## Colombia       77     16     25
## CostaRica      84     21     29
## Cuba           89     15     40

Alternativamente, puedes bajar los datos y salvarlos en un fichero local. En este caso, para leer los datos de un fichero local:

Mydataframe = read.table('C:/.../effort.dat')

Casi todos los formatos de datos son soportados por R, en caso de necesitar mas ayuda tipea help(read.table) en la consola. Otras funciones útiles para leer datos son las siguientes:

  • choose.files(): para seleccionar manualmente un fichero de datos a leer en R.
  • scan(file = ‘C:/…/yourfile.dat’): es otra instrucción útil para leer ficheros externos.
  • Mas ejemplos sobre como importar/exportar datos en y desde R en este link

Attachando, accediendo y editando matrices y data frames

Para trabajar con los nombre de las columnas de una matriz o un data frame necesitamos hacer un attach de los nombre de las columnas:

attach(Mydataframe)

De esta forma, podremos referirnos a las columnas del data frame (o la matriz) en la consola y R entenderá que se trata de una columna del data frame o de la matriz.

Para acceder o ver una columna particular de un data frame o matriz, utilizamos el simbolo $:

head(Mydataframe$setting)  # para visualizar los primeros elementos de la columna llamada "setting"
## [1] 46 74 89 77 84 89

Para filtrar elementos por filas o columnas utilizamos los operadores [ ‘row’ , ‘col’ ], he aquí un ejemplo:

Mydataframe["Chile", c("setting", "effort")] # aquí veremos de la fila que contiene a chile, las columnas "setting" y "effort".
##       setting effort
## Chile      89     16

En caso de trabajar con matrices o vectors el operador [ ‘row’ , ‘col’ ] también funciona. He aquí un ejemplo:

a = c(1,2,3,4,5)
a[3] # accedemos al 3er elemento del vector a.
## [1] 3
B = matrix(c(1,2,3,4), ncol=2)
B[1,2] # accedemos al elemento de la 1ra fila, 2da columna de la matriz B.
## [1] 3
B[2, ] # accedemos a toda la segunda fila de B.
## [1] 2 4

Funciones standard para crear y editar vectores y matrices

La función rep vectores con numeros (o sequencias de números) repetidos. La función seq sequencias de valores. Los siguientes ejemplos ilustran estas funciones:

a = rep(3, 8) # Generamos un vector que contiene el número 3, 8 veces.
a
## [1] 3 3 3 3 3 3 3 3
B = matrix(seq(1,9,by=1), ncol=3)
B # Una matriz con la sequencias de los números del 1 al 9, de 1 en 1.
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9

La función apply ejecuta funciones de R sobre filas o columnas de una matriz. Como ejemplo, consideremos el computo de la media por filas y por culumnas de una matriz con números:

B = matrix(seq(1,9,by=1), ncol=3)
apply(B, 1, mean) ### Calculamos la media por filas de B.
## [1] 4 5 6
apply(B, 2, mean) ### Calculamos la media por columnas de B.
## [1] 2 5 8

Para editar los elementos de una matriz o un vector utilizamos <- como en el siguiente ejemplo:

B = matrix(seq(1,9,by=1), ncol=3)
B[3,] <- 15 # Cambiamos la ultima fila de la matriz, sustituyendo sus valores por 15. 
B
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]   15   15   15

Graficos en R

R es una herramienta excelente para crear gráficas, desde histogramas y gráficos de barras hasta complejos dibujos diseñados por el propio usuario.

Los siguientes son comandos útiles para gestionar las ventanas de gráficos en R:

  • win.graph() or x11(): crea una ventana gráfica en R
  • dev.off(): apaga todas las ventanas gráficas.

La función par() nos permite organizar múltiples gráficas en una sola ventana. He aquí un ejemplo de como generar dos histogramas en la misma ventana:

x=rnorm(100)
par(mfrow=c(1,2)) # mfrow=c(1,2) organizar los graficos en 1 fila, 2 columnas. 
hist(x)           # el primer hist en la 1ra fila 1ra col
hist(x, col=2)    # el segundo hist en la 1ra fila 2da col

plot of chunk unnamed-chunk-22

La función hist(var) genera un histograma de la variable var. Existen muchas opciones para configurar una gráfica. En el siguiente ejemplo dibujamos una gráfico de barras y un boxplot de las notas de una clase de 20 estudiantes con la función barplot:

# Barplot and boxplot:
marks=c(6,7,5,7,7,8,7,6,9,7,4,10,6,8,8,9,5,6,4,8)
table <- table(marks)
table
## marks
##  4  5  6  7  8  9 10 
##  2  2  4  5  4  2  1
par(mfrow=c(1,2))
barplot(table,col='red' ,main='Barplot Marks')
boxplot(marks,col='blue',main='Boxplot Marks')

plot of chunk unnamed-chunk-23

Otro ejemplo de gráfico de barras con múltiples casos:

data(VADeaths)
VADeaths
##       Rural Male Rural Female Urban Male Urban Female
## 50-54       11.7          8.7       15.4          8.4
## 55-59       18.1         11.7       24.3         13.6
## 60-64       26.9         20.3       37.0         19.3
## 65-69       41.0         30.9       54.6         35.1
## 70-74       66.0         54.3       71.1         50.0
barplot(VADeaths)

plot of chunk unnamed-chunk-24

La función plot se utiliza para graficar lineas o puntos, como en los ejemplos a continuación:

x <- seq (-5, 5, length = 50)
par(mfrow=c(1,4))
plot(x,                             main='Plot of x') # First plot
plot(abs(x), type='l',              main='Plot of |x|') # Second plot
plot((x-3)/(1 + x^2),type='l',col='red',main='Plot of (x-3)/(1 + x^2)') # Third plot
plot(sin(x/2),type='l',col='blue',  main='Plot of sin(x/2)') # Forth plot 

plot of chunk unnamed-chunk-25

Tambien podemos utilizar la función plot() para hacer scatterplots en una matriz:

data(iris)
head(iris)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa
plot(iris[, 1:4], pch='*', col =iris$Species)

plot of chunk unnamed-chunk-26

Parámetros útiles para la función plot:
  • axes = F: si queremos ocultar los ejes del gráfico.
  • type = ‘p’, ‘l’, ‘b’: para dibujar puntos (p), lineas (p) o ambos (b).
  • xlab = ‘X nombre’ y ylab = ‘Y nombre’: para dar nombre a los ejes (X,Y).
  • pch: para especificar el simbolo a utilizar en el gráfico (puntos, rectángulos, triángulos, etc). col: el color de la linea/puntos.
  • main: para incluír un titulo en la gráfica.

Para ilustrar la potencia gráfica de R, se incluyen los siguientes gráficos:

library(lattice)
b0 <- 10
b1 <- .5
b2 <- .3
g <- expand.grid(x = 1:20, y = 1:20)
g$z <- b0 + b1*g$x + b2*g$y

wireframe(z ~ x * y, data = g,
              screen = list(z = 10, x = -60), drape=TRUE)

plot of chunk unnamed-chunk-27

library(plot3D)
# 3D Plot of Half of a Torus
par(mar = c(2, 2, 2, 2))
par(mfrow = c(1, 1))
R <- 3
r <- 2
x <- seq(0, 2*pi,length.out=50)
y <- seq(0, pi,length.out=50)
M <- mesh(x, y)
 
alpha <- M$x
beta <- M$y
  
surf3D(x = (R + r*cos(alpha)) * cos(beta),
       y = (R + r*cos(alpha)) * sin(beta),
       z = r * sin(alpha),
       colkey=FALSE,
       bty="b2",
       main="Half of a Torus")

plot of chunk unnamed-chunk-28

plot of chunk unnamed-chunk-29

SNW

SVM

Funciones estadísticas báscias en R

Las siguentes son funciones de uso estadístico básico en R:

  • mean(): calcula la media.
  • median(): calcula la mediana.
  • min() y max(): calcula máximo y mínimo.
  • range(): Devuelve el máximo y mínimo valor en un vector o matriz.
  • quantile(): calcula los quantiles.
  • var(): calcula la varianza.
  • sd(): calcula la desviación estandard.
  • summary(x): retorna los estadísticos básicos de un vector con datos: mean, min, max etc.

  • cumsum(); cumprod(); cummin(); cummax(): funciones acumulativas sobre vectores.

  • cor.test(): lleva a cabo un test de correlación.
  • density(x): estima la densidad con un kernel.
  • ks.test(): Kolmogorov-Smirnov tests.
  • loess() and lowess(): dibuja una versión suavizada de los datos en un scatter.

  • rnorm(), runif(): genera datos de una distribución normal o uniforme.

  • t.test(): Student’s t-test
  • sample(): para generar muestras aleatorias
  • ecdf(): computa la distrución empírica de los datos.
  • qqplot(): gráfica de cuantiles.

Otras funciones útiles puedes consultarlas en el siguiente link