Está en la página 1de 7

#####################################

# EPA! - Microeconomics 1 #
# Tutorial 1 : R Basics #
#####################################

#----------------------------------------------------
#-------------- R Basics ---------------------------
#----------------------------------------------------

#Primera sesión:

# Outline:
# 1. Curso introductorio
# 2. Introducción: configuración de R
# 3. Comenzando - R como calculadora
# 4. Tipos de datos R
# 5. Usando paquetes en R
# 6. Demostración empírica

#####|| 1. Curso introductorio ||#####

# Script elaborado por: Juan David ramirez, Juan Diego Mayorga, Alberto J. Ocampo

# Presentado por: Juan Diego Mayorga

# ¿Qué esperas de EPA!?


# ¿Has usado un lenguaje de programación antes?

#####|| 2. Introducción: configuración de R ||#####

# ¿Qué es R?

# ¿Por qué R?
# * ¿Adivina qué? ¡¡está libre!!
# * Flexible

# Shut up and take my... time?

https://cran.r-project.org/bin/windows/base/

# Usaremos un gran entorno para ejecutar R:


https://rstudio.com/products/rstudio/download/

#####|| 3. Comenzando - R como calculadora ||#####

1+1

2+3

log(1)*502

sqrt(4)*sqrt(49)

# Caveat: Order matters. Have you heard de P.E.M.D.A.S.?

# paréntesis, exponentes, multiplicación/división, adición/sustracción

12/4*5+6

12/4*(5+6)

#####|| 4. Tipos de datos R ||#####

# Variable: asignar un valor a un objeto

a <- 5

class(a)

b = log(6)

5 -> m

c <- "wood"
class(c)
# Ahora nuestras variables tienen valores. Si queremos mostrar esos valores,
# necesitamos la función de impresión - Print en ingles

print(c)

# Vectores: pueden ser vectores numéricos (varios escalares), vectores de


caracteres
# ("cadenas") o vectores lógicos (Verdadero / Falso)

c(12,5,6,8,9)

c()

vec1 <- c(1,2,3)

vec2<- c(4,5,6)

z <- c("wood","wood","bricks")

# ¿Qué pasa si combinamos distintas clases elememntos dentro de un vector?

l <- c("m",1)

class(l)

## Learning Self-assessment:
# 1) Piense en 4 familias que conoce. Cree un vector que contenga el número de
# miembros en cada una de esas 4 familias.
# 2) Para las mismas 4 familias, cree un nuevo vector que contenga la cantidad
# de dormitorios que cada familia tiene en casa.

# Para recuperar información de las estructuras de datos,


# necesitamos usar índices: []

z[2]
vec2[3]

# Matrix: varios vectores de la misma longitud

?matrix

matrix(c(1,5,9,27),nrow=2,ncol=2, byrow=TRUE)

matriz1_byrow<- matrix(c(1,2,3,4,5,6), nrow=2, byrow=TRUE) # byrow: if FALSE the


matrix is filled
# by columns, otherwise the matrix is filled by rows.

matriz1<- matrix(c(21,18,70,80,183,153), nrow=2, byrow=F)


colnames(matriz1) <- c("edad","peso","altura")

rownames(matriz1) <- c("Pepe","Pancho")

matriz2<- matrix(c(vec1, vec2), nrow=2, byrow=TRUE)

# Podemos indexar una matriz también


# [filas, columnas]

matriz1[1,] # Filas
matriz1[,2] # Columnas
matriz1[1,3] # Combinado ¿Qué pasará?

matriz1[1,c(1,3)]

## Autoevaluación del aprendizaje: crea una matriz de 3x3 que contenga en la


# primera columna los nombres de 3 de tus amigos, en la segunda columna incluye
# sus apellidos.

#Caveat: ¿Puedes crear una matriz con vectores de diferentes tipos?

matriz2<- matrix(c(vec1, z), nrow=3, byrow=F)

### Tipos de datos avanzados

# Arreys: Matrices with more than 2 dimensions. Still we can't include different
# modes of data.

# Data Frame: more general than a matrix, a data frame allows columns with
# different modes.

# Lists: similar to an ordered vector, a list is an ordered collection of OBJECTS

##### 5. Usando paquetes en R #####

# Functions: es un "programa" normalmente con una entrada y una salida. Algunos


# de ellos vienen con R, otros son creados por usuarios (Open Source).
# Las funciones son bastante útiles para realizar todo tipo de análisis de datos.

# Si alguna vez encuentra una función que no sabe, siempre


# puede usar la función de ayuda en R

?seq

## Sequence Generation: dos métodos seq () funciona pero también:


2:10
seq(from=2,to=10)
5:1

seq(from=1,to=10,by=3)

seq(length=10,from=1,by=3)

## Autoevaluación del aprendizaje: Genere una secuencia de 100 a 1000 que aumente
en 50

# Packages: Biblioteca de funciones. Los paquetes suelen tener


# usos específicos: Mapas, Gráficos, Economía, ...
# ¿Cómo instalar?

?install.packages()

# Example: ggplot
install.packages("ggplot2") # Un paquete hecho especialmente para graficar.
# Ahora sabes por qué nunca lograste obtener esos increíbles gráficos en
PowerPoint.

# Después de instalar el paquete, debemos decirle a R que lo usaremos

?library()

# Si tuviéramos que usar ggplot, entonces necesitamos lo siguiente:

library(ggplot2)

#####|| 6. Demostración empírica ||######

# La mayoría de las veces los economistas pasan de observaciones anecdóticas que


# permiten la generación de hipótesis a inferencias causales.
# Para hacer esos datos y en muchos casos los microdatos son imprescindibles.
# Empecemos por la observación

#https://www.gapminder.org/dollar-street?topic=walls&max=1382&regions=am&min=160

# ¡Estudiamos para ser científicos sociales! Seguimos un método científico y


# creamos o aplicamos modelos. Lo aprenderás durante los próximos semestres.
# ¡A esta altura, comencemos a involucrarnos con los microdatos y algunas
estadísticas descriptivas!

# Data Source: http://microdatos.dane.gov.co/index.php/catalog/565/get_microdata


# Módulos para el ejercicio: Datos de la vivenda y su entorno (Capitulo B) y Fuerza
de trabajo (capítulo K)

setwd("C:/Users/juand/OneDrive - Universidad del rosario/GAMMA/EPA! - Microeconomía


I/Sesión 1") #working directory

# OJO CON LOS "\" a R no le gustan estos, tienes que cambiarlos por "/"
install.packages("readxl") # Necesitamos un paqute para leer archivos csv.
library(readxl)

EM2017 <- read_excel("Base_encuesta_MP.xlsx")

# Estadísticas descriptivas ----------------------------------------------

# La variable INGRESO_LABORAL representa el ingreso mensual promedio de las


# diferentes personas en Bogotá que responden la encuesta

# 1. Media de los ingresos

mean(EM2017$INGRESO_LABORAL)
class(EM2017$INGRESO_LABORAL)

# Hogares con grietas en los pisos


mean(EM2017$GRIETAS_PISO, na.rm = TRUE)
# na.rm=TRUE indica que faltan valores en la variable

# Ingreso medio
median(EM2017$INGRESO_LABORAL)
medianWa <- median(EM2017$INGRESO_LABORAL)
mediana_inc <- options("scipen"=100, "digits"=4)
mediana_inc
mediana_inc <- medianWa

# Summary: min, max, mean, median


summary(EM2017$INGRESO_LABORAL)
summary(EM2017$GRIETAS_PISO)

# Supongamos que la pobreza se define como personas con un salario inferior al


promedio.
# Creemos una variable para el estado de pobreza:

EM2017$Poor <- ifelse(EM2017$INGRESO_LABORAL <= medianWa, 1, 0)

# Ahora calculemos estadísticas descriptivas para hogares con humedades en techos o


paredes.
table(EM2017$HUMEDALES_TECHOS_PAREDES)

# Ahora veamos la misma estadística pero por estado de pobreza


table(EM2017$Poor, EM2017$HUMEDALES_TECHOS_PAREDES)
#Poor in rows, humidity in the columns
# 5898 de los pobres tienen humedades
# 3487 de los no-pobres tienen humedadess

# Distribución del ingreso


hist(EM2017$INGRESO_LABORAL,
main="Income Dist.",
xlab="Monthly income",
col="red")

# ¡Podemos hacer graficos mas avanzados si utilizamos el paquete ggplot!

qplot(EM2017$INGRESO_LABORAL,) +
geom_histogram(fill='darkblue') +
theme_minimal() +
labs(title = "Distribución Ingreso Laboral - EM 2017",
x="Ingreso laboral")

# ¿Recuerdas los primeros ejercicios que hicimos hoy? Es posible que haya
# estado completando las observaciones de una encuesta de hogares ...
# Echemos un vistazo a los materiales de construcción de muros en Bogotá:
table(EM2017$MATERIAL_PAREDES_ext)
#Ejercicio: Tabla de freuencias de material de pisos

#### Recuerde: ¡Para aprender R como máximo, necesita saber cómo buscar en Google!
# Lo más probable es que encuentre aquí todas las respuestas a sus preguntas R más
filosóficas:
https://stackoverflow.com/

También podría gustarte