Introducción

Este curso está basado en el documento Curso básico de R del profesor Francesc Carmona del Departamento de Estadística de la Universitat de Barcelona.

El objetivo principal del mismo es proporcionar los elementos básicos para empezar a trabajar con el lenguaje de programación R en el ámbito de la Estadística. Está enfocado a estudiantes que empiezan con su trabajo fin de grado o trabajo fin de master, por tanto, todo comentario para la mejora del texto (en fondo y forma) será gratamente bienvenido.

¿Por qué elegir R en lugar de S, Matlab, Python, SPSS, etc., etc., etc.?

Esta es una de las primeras preguntas que te plantearás cuando comiences con tu investigación. Actualmente (año 2014) hay gran cantidad de software que podría ser válido para realizar el estudio estadístico de tus datos. Sin embargo, no todo ese software es libre/gratuito, está mantenido (con actualizaciones periódicas) de forma continua por un grupo sólido de investigadores, y es multiplataforma (lo puedes utilizar en sistemas GNU-Linux, MacOSX o Windows). Desde esta perspectiva, recomendaríamos especialmente dos lenguajes de programación: R y Python.

Actualmente S y R son los dos lenguajes más utilizados en investigación estadística. Este curso se centrará en R, cuyos mayores atractivos son:

Sin embargo no todo es bueno. Los mayores inconvenientes que encontrarás en el uso de R son:

Todo el software necesario para trabajar con R se puede encontrar en http://cran.es.r-project.org/bin. Una vez allí, elige el archivo para instalar de acuerdo a la arquitectura de tu ordenador. R consta de un sistema base y de paquetes adicionales que extienden su funcionalidad. Puedes encontrar una lista de dichos paquetes en http://cran.es.r-project.org/web/packages/.

¿Cómo iniciamos una sesión?

Como hemos dicho antes, R es un programa multiplataforma y en general se ejecutará de forma distinta en cada uno de los ordenadores:

Existe la posibilidad también de utilizar alguna interfaz de programación de aplicaciones (IPA) o API (del inglés Application Programming Interface) para R, por ejemplo Rstudio (también multiplataforma), que ejecutará R en un entorno más amigable. En cualquier caso, se puede adaptar el inicio de una sesión en R (ej., qué paquetes se cargan, mensajes, etc.). Ver sección 10.8 en An introduction to R.

A continuación os exponemos una sesión inicial con cálculos estadísticos básicos. Podéis cortar y pegar el código en vuestra terminal/consola de R. Observad además que el símbolo # indica el principio de un comentario, es decir, esa línea no se ejecutará.

Ejemplo 1. R como calculadora

2 + 2
sqrt(10)
2 * 3 * 4 * 5
# Intereses sobre 1000 euros
1000 * (1 + 0.075)^5 - 1000
# R conoce pi
pi
# Circunferencia de la Tierra en el Ecuador en km
2 * pi * 6378
# Convertimos ángulos a radianes y luego calculamos el seno
sin(c(0, 30, 45, 60, 90) * pi/180)

Ejemplo 2. Una sesión con elementos estadísticos

# 5 números aleatorios de una distribución normal de media 0 y desviación
# típica 1
rnorm(5, mean = 0, sd = 1)
# asignamos unos números a un objeto (un vector) x
x <- rnorm(5)
# muestra un resumen de x (un summary 'inteligente')
summary(x)
# o también:
w <- summary(x)
w
print(w)  # escribir w y print(w) produce el mismo resultado
## summary(x) TAMBIÉN es un objeto.

Ejemplo 3. Ayuda dentro del programa

rnorm
help(rnorm)
# más fácil ?rnorm
`?`(rnorm)
help.start()
# ?help.search
`?`(help.search)
help.search("normal")
# ?apropos
`?`(apropos)
apropos("normal")
# ?demo
`?`(demo)
demo(graphics)
demo(persp)
demo(lm.glm)

!Cuidado¡

?if # mal
help("if") # bien

Ejemplo 4. Un típico ejercicio de clase

Sea \( X \) una v.a. con distribución exponencial de parámetro \( \alpha \) y \( X_1,X_2,\dots,X_n \) una muestra aleatoria simple. Se sabe que la distribución de \( Z=n\cdot\min\{X_1,X_2,\dots,X_n\} \) es exponencial de parámetro \( \alpha \).

alpha <- 0.01
n <- 50
m <- 1000
datos <- matrix(rexp(n * m, alpha), ncol = n)
fz <- function(x) n * min(x)
z <- apply(datos, 1, fz)
mean(z)  # debe ser 1/alpha=100 aprox

hist(z, freq = F)
curve(dexp(x, rate = alpha), add = T)

ks.test(z, "pexp", alpha)

¿Por qué usar R desde un editor?

Cuando trabajes con otros investigadores será muy importante que compartas no sólo tus resultados, sino también el código con el que los has obtenido. De esta forma estarás dando toda la información sobre tu investigación de manera reproducible (http://iai.asm.org/content/78/12/4972.full). Para crear el código R que utilizarás en tu investigación necesitarás un editor de texto.

Existen editores de texto que se han especializado para trabajar de forma cómoda con el lenguaje de progrmación R. Ten en cuenta que el uso de scripts y el mantenimiento del código ordenado y comentado es una “buena práctica estadística”. Para todo ello es muy recomendable leer la guía de estilo http://google-styleguide.googlecode.com/svn/trunk/Rguide.xml.

Algunos editores de texto te ayudarán con los colores de sintaxis, la completación de paréntesis, etc. Nuestra recomendación es que utilices un editor de texto que sea multiplataforma (sobre todo si trabajas con otros investigadores), y cuya interfaz pueda utilizarse además para otros paquetes estadísticos (ej., SAS, XLispStat, Arc, etc.), numéricos (ej., Octave) o procesador de texto (LaTeX).

A los usuarios de R nos gusta mucho Rstudio, y es muy recomendable para principiantes. Si eres programador en otros lenguajes (como Python o LaTeX) una buena opción sería Sublime Tex, pero este último es de pago. La alternativa es XEmacs con su versión para estadística ESS, aunque no es muy conocido para los usuarios de Windows (mejor con las modificaciones de J. Fox).

En el entorno Windows también se utiliza mucho Tinn-R y R-WinEdt.