Introducción y descripción

R es un lenguaje de programación diseñado principalmente para el análisis estadístico. Diseñado específicamente para manipular, visualizar y modelar datos, R brinda la posibilidad a sus usuarios de crear gráficos de gran utilidad y desarrollar modelos predictivos (bastante útiles en la econometría). R presenta una naturaleza de código abierto que fomenta una comunidad activa que contribuye con paquetes y extensiones, permitiendo a los usuarios acceder a herramientas especializadas y mantenerse nmactualizados con las últimas técnicas analíticas (Muchos de los paquetes que usaremos en este curso fueron implementados por la comunidad). Al brindar un entorno flexible y poderoso, R se ha convertido en una herramienta esencial en la toma de decisiones informadas basadas en datos en una amplia gama de campos, además, cuenta con una alta demanda laboral.

Esta primer sesión pretenderá introducir la sintaxis básica de R mediante la IDE (Integrated development enviroment), haciendo enfasis en variables numéricas, variables “strings”, variables lógicas y coleccionesbásicas, estructuras de flujo básicas y funciones. Posteriormente introducir el manejo de conceptos estadísticos en el programa así como los principales paquetes de R para estadística descriptiva y la econometría.

1. Números

En R podremos manipular variables numéricas. Esta sección presenta operaciones aritméticas con los números, colecciones básicas con números en R y funciones de variable.

Evidentemente, R nos permitirá hacer una gran cantidad de procesos con variables númericas, aquí presentaremos una base básica pero solida, recomendamos revisar documentación en internet para conocer más de las funciones en R.

5
## [1] 5
x =  33

class(x)
## [1] "numeric"

1.1. Operaciones aritméticas básicas

Con R podremos ejecutar las operaciones básicas de la aritmética, aquí podremos ver los comandos que han de usarse para llevara a cabo las operaciones.

Suma:

Para las sumas usamos el operador “+”

2 + 2 
## [1] 4
suma = 2 + 2 
class(suma)
## [1] "numeric"

También podremos emplear variables asiganadas para ejecutar operaciones, recoredmos que R es sensible a las mayusculas, por lo que no las variables “Numero”,“numero” y “NUMERO” NO son iguales.

a = 2
b = 3 
c = 5.5

a+b 
## [1] 5
suma_1 = a+b; suma_1
## [1] 5

Resta:

Para las restas “-”

resta = a - c
resta
## [1] -3.5
class(resta)
## [1] "numeric"

Multiplicación:

Para las multiplicaciones “*”

multiplicacion = a*c
multiplicacion
## [1] 11
class(multiplicacion)
## [1] "numeric"

División:

Para las divisiones “/”

division = b/a
division
## [1] 1.5
class(division)
## [1] "numeric"

Potencias:

Para potencias usamos “**”

potencia = a**b
potencia
## [1] 8
class(potencia)
## [1] "numeric"

Raices:

Para las raices, R presenta una función que genera la raíz cuadrada

raiz = sqrt(a)
raiz
## [1] 1.414214
class(raiz)
## [1] "numeric"

Sin embargo, recordemos que elevar a 1/2 produce el resultado de una raíz

a**1/2
## [1] 1

1.2. Colecciones básicas

En R podremos definir colecciones como: vectores, matrices y listas. Estas colecciones comprenden funciones útiles para la manipulación de datos, gran cantidad de los objetos que se usan en paquetes de econometría son listas y matrices.

Vectores:

Para definir un Vector usamos “c()”. Los vectores solo recibiran variables numéricas.

numeros = c(0,1,2,3,4,5,6,7,8,9)
numeros
##  [1] 0 1 2 3 4 5 6 7 8 9
class(numeros)
## [1] "numeric"

Si necesitamos crear vectores que sigan una secuencia específica, R ofrece un par de funciones básicas, entre ellas: iteración por n objetos y repeticiones

secuencia_simple = 0:10
secuencia_simple
##  [1]  0  1  2  3  4  5  6  7  8  9 10
secuencia_en_2 = seq(0,10, by = 2)
secuencia_en_2
## [1]  0  2  4  6  8 10
secuencia_repetida = rep(5,10)
secuencia_repetida
##  [1] 5 5 5 5 5 5 5 5 5 5

Es importante mencionar que podremos seleccionar un elemento de un vector por su posición usando “[]” y el número de la posición. Si usamos un “-” y la posición, R nos entregará todos los elementos del vector exceptuando el de la posición seleccionada.

vector = c(1,6,8,4,2,3)

vector[1]
## [1] 1
vector[-1]
## [1] 6 8 4 2 3

Listas:

Las listas se generan con el comando “list()”. Estas se diferencian en los vectores principalemente en que aceptan variables no numéricas, y no solo eso, también puedes incluir un vector dentro de una lista o una lista dentro de una lista.

lista = list(2,3,5,7,11)

lista_1 = list(1,"Hola", lista, vector)
lista_1
## [[1]]
## [1] 1
## 
## [[2]]
## [1] "Hola"
## 
## [[3]]
## [[3]][[1]]
## [1] 2
## 
## [[3]][[2]]
## [1] 3
## 
## [[3]][[3]]
## [1] 5
## 
## [[3]][[4]]
## [1] 7
## 
## [[3]][[5]]
## [1] 11
## 
## 
## [[4]]
## [1] 1 6 8 4 2 3
class(lista_1)
## [1] "list"
lista_1[2]
## [[1]]
## [1] "Hola"

Para seleccionar elementos de una lista, debemos asignar un nombre a cada elemento para usar el método de selección “$”, el cual no busca por posición si no por nombramiento.

lista_2 = list(uno = 1, nombre = "Japeto", lista_0 = lista, vector_0 = vector)

lista_2
## $uno
## [1] 1
## 
## $nombre
## [1] "Japeto"
## 
## $lista_0
## $lista_0[[1]]
## [1] 2
## 
## $lista_0[[2]]
## [1] 3
## 
## $lista_0[[3]]
## [1] 5
## 
## $lista_0[[4]]
## [1] 7
## 
## $lista_0[[5]]
## [1] 11
## 
## 
## $vector_0
## [1] 1 6 8 4 2 3
lista_2$uno
## [1] 1
lista_2$nombre
## [1] "Japeto"
lista_2$lista_0
## [[1]]
## [1] 2
## 
## [[2]]
## [1] 3
## 
## [[3]]
## [1] 5
## 
## [[4]]
## [1] 7
## 
## [[5]]
## [1] 11

Las listas no permiten la aplicación de funciones númericas como los vectores, esto debido a su clase

Matrices:

Para definir una matriz se usa “matrix()”, la forma de la sintaxis de la matriz obedece a un vector para ubicar los números, el número de filas y el número de columnas. Es decir: matrix( Vector, nrow = Número de filas, ncol = Número de columnas)

matriz = matrix(1:10, nrow = 5, ncol = 2)
matriz
##      [,1] [,2]
## [1,]    1    6
## [2,]    2    7
## [3,]    3    8
## [4,]    4    9
## [5,]    5   10
class(matriz)
## [1] "matrix" "array"
matriz_1 = matrix(1:10, nrow = 5, byrow = TRUE)
matriz_1
##      [,1] [,2]
## [1,]    1    2
## [2,]    3    4
## [3,]    5    6
## [4,]    7    8
## [5,]    9   10

A continuación, algunas de las funciones útiles para las operaciones matriciales.

matriz_prueba = matrix(c(4,12,9,11), nrow = 2)
matriz_prueba
##      [,1] [,2]
## [1,]    4    9
## [2,]   12   11
# Diagonal
diag(matriz_prueba)
## [1]  4 11
# Determinante
det(matriz_prueba)
## [1] -64
# Transpuesta
t(matriz_prueba)
##      [,1] [,2]
## [1,]    4   12
## [2,]    9   11
# Dimensión 
dim(matriz_prueba)
## [1] 2 2
# Inversa
solve(matriz_prueba)
##           [,1]      [,2]
## [1,] -0.171875  0.140625
## [2,]  0.187500 -0.062500

Como en la vida real, multiplicar una matriz no se hace de forma tan sencilla… En R, para multiplicar matrices usamos “%*%“.

matriz_prueba_trans = t(matriz_prueba)

matriz_prueba_trans %*% matriz_prueba
##      [,1] [,2]
## [1,]  160  168
## [2,]  168  202

1.3. Funciones de variable numérica útiles para el curso

A lo largo del curso de econometría II, se usarán operaciones en las sesiones regulares que serán fundamentales para el manejo de series de tiempo, entre ellas: el operador de diferencia y el logaritmo natural. En R se aplican como:

vector_prueba = c(5,3,13,46,12,45,6,13,5)


diff(vector_prueba)
## [1]  -2  10  33 -34  33 -39   7  -8
log(vector_prueba)
## [1] 1.609438 1.098612 2.564949 3.828641 2.484907 3.806662 1.791759 2.564949
## [9] 1.609438
diff(log(vector_prueba))
## [1] -0.5108256  1.4663371  1.2636920 -1.3437347  1.3217558 -2.0149030  0.7731899
## [8] -0.9555114

Recordemos que diferenciar un vector (o serie) implica la eliminación de un elemento.

length(vector_prueba)
## [1] 9
length(diff(vector_prueba))
## [1] 8

2. Carácteres y operadores lógicos

2.1. Carácteres