Este es el desarrollo de la tercer evaluación del curso de “Modelo Econométrico con RStudio” realizado por EDUCATE Perú Consultores.
Se recomienda ingresar al siguiente enlace para visualizar resultados:
Para realizar este set de preguntas, trabajaremos con el paquete “car”, el cual nos dará la base de datos “Prestige”. A continuación realizamos los siguientes comandos:
# Instalaremos y llamaremos a los siguientes paquetes:
install.packages("car")
install.packages("carData")
library("carData")
library("car")
# Asignamos el nombre "data" a la base "Prestige" y Visualizamos el resultado:
data <- Prestige
head(data)
## education income women prestige census type
## gov.administrators 13.11 12351 11.16 68.8 1113 prof
## general.managers 12.26 25879 4.02 69.1 1130 prof
## accountants 12.77 9271 15.70 63.4 1171 prof
## purchasing.officers 11.42 8865 9.11 56.8 1175 prof
## chemists 14.62 8403 11.68 73.5 2111 prof
## physicists 15.64 11030 5.13 77.6 2113 prof
Con la base de datos “data”, realizar un cambio de variables y de etiquetas de tal modo que se presenten de la siguiente manera:
1.1. Para renombrar las variables, utilizaremos el paquete “plyr” y procedemos a renombrar cada variable con la función “rename”
install.packages("plyr")
library("plyr")
# Renombramos utilizando la función rename
data = rename(data,c(education="educ",income="ing",women="mujeres",
prestige="prestigio",census="cod",type="tipo"))
head(data)
## educ ing mujeres prestigio cod tipo
## gov.administrators 13.11 12351 11.16 68.8 1113 prof
## general.managers 12.26 25879 4.02 69.1 1130 prof
## accountants 12.77 9271 15.70 63.4 1171 prof
## purchasing.officers 11.42 8865 9.11 56.8 1175 prof
## chemists 14.62 8403 11.68 73.5 2111 prof
## physicists 15.64 11030 5.13 77.6 2113 prof
1.2. Para etiquetar las variables, utilizaremos el paquete “Hmisc” y procedemos a renombrar cada variable con la función “label”
install.packages("Hmisc")
library("Hmisc")
# Etiquetamos con la función label
label(data$educ)="Promedio de años de estudio del trabajador nombrado"
label(data$ing)="Promedio de ingreso en dólares del nombrado"
label(data$mujeres)="Porcentaje de mujeres nombradas"
label(data$prestigio)="Valoración de prestigio de Pineo-Porter"
label(data$cod)="Código de ocupación en el censo"
label(data$tipo)="Tipo de ocupación en 3 niveles"
# Visualizamos los resultados con los cambios realizados:
str(data)
## 'data.frame': 102 obs. of 6 variables:
## $ educ : 'labelled' num 13.1 12.3 12.8 11.4 14.6 ...
## ..- attr(*, "label")= chr "Promedio de años de estudio del trabajador nombrado"
## $ ing : 'labelled' int 12351 25879 9271 8865 8403 11030 8258 14163 11377 11023 ...
## ..- attr(*, "label")= chr "Promedio de ingreso en dólares del nombrado"
## $ mujeres : 'labelled' num 11.16 4.02 15.7 9.11 11.68 ...
## ..- attr(*, "label")= chr "Porcentaje de mujeres nombradas"
## $ prestigio: 'labelled' num 68.8 69.1 63.4 56.8 73.5 77.6 72.6 78.1 73.1 68.8 ...
## ..- attr(*, "label")= chr "Valoración de prestigio de Pineo-Porter"
## $ cod : 'labelled' int 1113 1130 1171 1175 2111 2113 2133 2141 2143 2153 ...
## ..- attr(*, "label")= chr "Código de ocupación en el censo"
## $ tipo : Factor w/ 3 levels "bc","prof","wc": 2 2 2 2 2 2 2 2 2 2 ...
## ..- attr(*, "label")= chr "Tipo de ocupación en 3 niveles"
Visualizamos los tipos de variables que la conforman:
| Variable | Tipo |
|---|---|
| educ | numérico |
| ing | entero |
| mujeres | numérico |
| prestigio | numérico |
| cod | entero |
| tipo | factor |
Realizar un cambio de variable o recodificación en la variable tipo con las siguientes características:
Visualizando los valores de la variable “tipo”.
str(data$tipo)
## Factor w/ 3 levels "bc","prof","wc": 2 2 2 2 2 2 2 2 2 2 ...
## - attr(*, "label")= chr "Tipo de ocupación en 3 niveles"
Verificamos que la variable “tipo” es factor, y para realizar la transformación necesitamos que la variable sea character por lo que realizamos el paso previo (convertir la variable a character):
data$tipo<-as.character(data$tipo)
str(data$tipo)
## chr [1:102] "prof" "prof" "prof" "prof" "prof" "prof" "prof" "prof" ...
Para finalmente convertirla de la siguiente forma:
data$tipo[data$tipo=="bc" ]= 1
data$tipo[data$tipo=="prof"]= 2
data$tipo[data$tipo=="wc" ]= 3
str(data$tipo)
## chr [1:102] "2" "2" "2" "2" "2" "2" "2" "2" "2" "2" "2" "2" "2" "2" ...
table(data$tipo)
##
## 1 2 3
## 44 31 23
Hecho el paso 2, aplicar sobre la variable tipo un cambio a factor, en donde se genere las siguientes etiquetas de valor:
Para realizar un cambio a factor debemos realizar el siguiente paso:
data$tipo<-as.factor(data$tipo)
str(data$tipo)
## Factor w/ 3 levels "1","2","3": 2 2 2 2 2 2 2 2 2 2 ...
Para finalmente convertirla de la siguiente forma:
data$tipo=factor(data$tipo,
levels=c(1,2,3),
labels=c("Cuello azul",
"Profesional",
"Cuello blanco")
)
table(data$tipo)
##
## Cuello azul Profesional Cuello blanco
## 44 31 23
En el word o pdf generado haz un resumen de no más de tres lineas de cada una de las definiciones de cuello azul y cuello blanco.
Cuello azul: Se puede definir como el trabajador que realiza labores manuales o labores en el proceso de fabricación, usualmente pertenecen a una clase más baja, perciben menos ingresos y tienen menores años de escolaridad en comparación con los trabajadores de cuello blanco.
Cuello blanco: Se puede definir como el trabajador que realiza labores en oficina, usualmente pertenecen a una clase más alta, perciben mayores ingresos y tienen mayores años de escolaridad en comparación con los trabajadores de cuello azul.
Define las características y diferencias entre los comando rbind, merge y Reduce.
# Construimos data_1:
a <- c(1,4)
b <- c(2,5)
c <- c(3,6)
data_1 <- data.frame(a,b,c)
# Construimos data_2:
a <- c(7,10,13)
b <- c(8,11,14)
c <- c(9,12,15)
data_2 <- data.frame(a,b,c)
data_rbind <- rbind(data_1, data_2)
# Construimos data_3:
a <- c(1,4,7,13)
d <- c("UNI","UNI","UNMSM","UNMSM")
data_3 <- data.frame(a,d)
# Ejemplo 1: Solo mostraremos los datos emparejados
# Realizamos el emparejamiento ("merge"), en función de la variable "a":
data_merge1 <- merge(data_rbind, data_3, by = "a")
data_merge1
## a b c d
## 1 1 2 3 UNI
## 2 4 5 6 UNI
## 3 7 8 9 UNMSM
## 4 13 14 15 UNMSM
# Ejemplo 2: Mostraremos todos los datos incluso los no emparejados
# Realizamos el emparejamiento ("merge"), en función de la variable "a":
data_merge2 <- merge(data_rbind, data_3, by = "a", all=T)
data_merge2
## a b c d
## 1 1 2 3 UNI
## 2 4 5 6 UNI
## 3 7 8 9 UNMSM
## 4 10 11 12 <NA>
## 5 13 14 15 UNMSM
Nota: Reduce fusiona las bases eliminando missing y variables repetidas, no es recomendable utilizarla para fusionar varias bases a la vez.
# Ejemplo: Solo mostraremos los datos emparejados
data_reduce <- Reduce(merge, list(data_rbind,data_3))
data_reduce
## a b c d
## 1 1 2 3 UNI
## 2 4 5 6 UNI
## 3 7 8 9 UNMSM
## 4 13 14 15 UNMSM
Realizar un gráfico pie para la variable tipo.
Para realizar el gráfico de pie requerimos realizar algunos pasos previos para su realización, por ello realizaremos los siguientes comandos:
# Paso 1: Obtenemos los valores de cada categoría
porcentajes <- as.numeric(round(((prop.table(table(data$tipo)))*100),2))
# Paso 2: Realizaremos etiquetas de cada categoría
etiquetas <- c("Cuello azul", "Profesional", "Cuello blanco")
etiquetas <- paste(etiquetas, porcentajes)
etiquetas <- paste(etiquetas, "%", sep = "")
# Paso 3: Graficamos el pie
pie(porcentajes, etiquetas,
main = "Gráfico de torta 1",
col = c("Blue","green3","White"))
Elaborar un histograma, y un histograma de densidad junto con la linea de función de distribución normal sobre las variables educación e ingreso.
Para realizar los histogramas, utilizaremos la función hist, y utilizaremos el argumento prob= TRUE para mostrar la función de distribución Normal.
par(mfrow=c(2,2))
# ---------------
# Histograma de Educación
hist(data$educ, xlab = "Años de educación", main = "Histograma de educación",
col="gold")
# Histograma de Educación con Curva Normal
z1 <- data$educ
m1<-mean(z1)
std1<-sqrt(var(z1))
hist(z1, xlab = "Años de educación", col = "gold",
main="Histograma y Curva Normal", prob=T)
curve(dnorm(x, mean=m1, sd=std1),col="darkblue", lwd=2, add=TRUE, yaxt="n")
# ---------------
# Histograma de Ingresos
hist(data$ing, xlab = "Ingresos", main = "Histograma de ingresos",
col="orange1")
# Histograma de Educación con Curva Normal
z2 <- data$ing
m2<-mean(z2)
std2<-sqrt(var(z2))
hist(z2, xlab = "Ingresos", col = "orange1",
main="Histograma y Curva Normal", prob=T)
curve(dnorm(x, mean=m2, sd=std2),col="darkblue", lwd=2, add=TRUE, yaxt="n")
Elaborar un diagrama de cajas sobre la variable mujeres y dar la interpretación1. Puedes ayudarte de comandos estadísticos adicionales para dar mejor tu interpretación (es opcional).
Para realizar el diagrama de cajas, utilizaremos la función boxplot; a continuación presentamos los siguientes comandos para su realización:
Según el gráfico de cajas, se puede observar que la mitad de mujeres nombradas en las distintas actividades se concentra por debajo del 13.6%, ello se debería a que la mayoría de hombres ocupan este cargo.
A su vez, en promedio, solo el 28.97% logra ser nombrada dentro de las actividades que desarrollan.
par(mfrow = c(1,2))
# Box Plot
boxplot(data$mujeres, main="Diagrama de cajas participación \n
de mujeres nombradas",border="blue")
# Histograma
z3 <- data$mujeres
m3<-mean(z3)
std3<-sqrt(var(z3))
hist(z3, xlab = "Porcentaje", col = "Purple",
main="Histograma y Curva Normal", prob=T)
curve(dnorm(x, mean=m3, sd=std3),col="darkblue", lwd=2, add=TRUE, yaxt="n")
# Estadísticos
summary(z3)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 3.592 13.600 28.979 52.203 97.510
Haz un gráfico de dispersion sobre las variable prestigio (“y”) e ingreso (“x”), junto con su linea regresora.
Para realizar el gráfico de dispersión, relaizaremos el siguiente comando
# Fijamos la base
attach(data)
# Graficamos (x=Ingresos vs y=Prestigio)
plot(ing, prestigio, xlab = "Ingreso", ylab = "Prestigio",
main = "Dispersión entre ingreso y el prestigio",ylim=c(0,100))
abline(lm(prestigio~ing),col="red")
Elabora una matriz de dispersiones sobre la base de datos con todas las variables.
Finalmente presentamos una matriz de dispersión:
pairs(~prestigio + ing + educ + mujeres, data = data, main ="Matriz de dispersiones simple")
Opcionalmente presentamos la siguiente matriz:
# Instalamos y llamamos al siguiente paquete:
install.packages("psych")
library("psych")
# Y ejecutamos el sigueinte comando
pairs.panels(data, pch=21,main="Matriz de Dispersión, Histograma y Correlación")
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS, coperquispe@gmail.com↩