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.
Para utilizar R primero debes instalar R en tu ordenador. Sigue las instrucciones:
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:
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:
Una vez finalizada la instalación haz doble-click en el icono de R-studio. Podrás ver las siguientes ventanas:
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)
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)
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'.
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
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.
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
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:
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
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
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:
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
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')
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)
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
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)
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)
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")
Las siguentes son funciones de uso estadístico básico en R:
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.
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.
qqplot(): gráfica de cuantiles.
Otras funciones útiles puedes consultarlas en el siguiente link