title: “Actividad_Salaries” author: “Pedro Kuperman” date: ‘2022-04-26’ output: html_document
#{r setup, include=FALSE} #knitr::opts_chunk$set(echo = TRUE) #
Salaries es un dataset perteneciente al paquete carData. El conjunto de datos consta de salarios de nueve meses recopilados de 397 profesores universitarios en los EE. UU. durante 2008 a 2009. Además de los salarios, también se recopiló el rango del profesor, el sexo, la disciplina, los años de doctorado y los años de servicio. Así, hay un total de 397 campos y 6 variables, que se describen a continuación.
#Creamos una funcion para instalar los paquetes que sea necesario utilizar.
install_packages <- function(pkg) {
# Install package if it is not already
if (!(pkg %in% installed.packages()[, "Package"])){
install.packages(pkg, repos='http://cran.us.r-project.org')
}
library(pkg, character.only = TRUE)
} # end installPackages()
pkg_list = c("tidyverse", "modelr", "carData", "car", "modeest","FinCal" )
lapply(pkg_list, install_packages)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✓ ggplot2 3.3.5 ✓ purrr 0.3.4
## ✓ tibble 3.1.6 ✓ dplyr 1.0.8
## ✓ tidyr 1.2.0 ✓ stringr 1.4.0
## ✓ readr 2.1.2 ✓ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
##
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
##
## recode
## The following object is masked from 'package:purrr':
##
## some
## Registered S3 method overwritten by 'rmutil':
## method from
## print.response httr
## [[1]]
## [1] "forcats" "stringr" "dplyr" "purrr" "readr" "tidyr"
## [7] "tibble" "ggplot2" "tidyverse" "stats" "graphics" "grDevices"
## [13] "utils" "datasets" "methods" "base"
##
## [[2]]
## [1] "modelr" "forcats" "stringr" "dplyr" "purrr" "readr"
## [7] "tidyr" "tibble" "ggplot2" "tidyverse" "stats" "graphics"
## [13] "grDevices" "utils" "datasets" "methods" "base"
##
## [[3]]
## [1] "carData" "modelr" "forcats" "stringr" "dplyr" "purrr"
## [7] "readr" "tidyr" "tibble" "ggplot2" "tidyverse" "stats"
## [13] "graphics" "grDevices" "utils" "datasets" "methods" "base"
##
## [[4]]
## [1] "car" "carData" "modelr" "forcats" "stringr" "dplyr"
## [7] "purrr" "readr" "tidyr" "tibble" "ggplot2" "tidyverse"
## [13] "stats" "graphics" "grDevices" "utils" "datasets" "methods"
## [19] "base"
##
## [[5]]
## [1] "modeest" "car" "carData" "modelr" "forcats" "stringr"
## [7] "dplyr" "purrr" "readr" "tidyr" "tibble" "ggplot2"
## [13] "tidyverse" "stats" "graphics" "grDevices" "utils" "datasets"
## [19] "methods" "base"
##
## [[6]]
## [1] "FinCal" "modeest" "car" "carData" "modelr" "forcats"
## [7] "stringr" "dplyr" "purrr" "readr" "tidyr" "tibble"
## [13] "ggplot2" "tidyverse" "stats" "graphics" "grDevices" "utils"
## [19] "datasets" "methods" "base"
Creamos una variable de tipo dataframe para revisar caractericticas del conjunto la función Head para visualizar el conjunto de
df <- Salaries
nrow(df)
## [1] 397
colnames(df)
## [1] "rank" "discipline" "yrs.since.phd" "yrs.service"
## [5] "sex" "salary"
rank_sum <- summary(df$rank)
print(rank_sum)
## AsstProf AssocProf Prof
## 67 64 266
sex_sum <- summary(df$sex)
sex_sum
## Female Male
## 39 358
Variables
Rank: Caulitativa contiene los niveles de profesor, profesor asistente o profesor asociado.
Discipline: es de tipo Caulitativa y contiene los niveles “A”(theoretical departments) o “B”(applied departments).
yrs.since.phd: es de tipo Cuantitativa y muestra los años desde que realizó el PhD.
yrs.service: es de tipo Cuantitativa y muestra los años de servicio que lleva una persona.
sex: es de tipo Caulitativa y muestra los sexos Masculino o Femenino.
salary: es de tipo Cuantitativa y muestra el salario de los profesores.
3. Caracterización del conjunto de datos
Se utilizaran las variables: “rank”, “discipline”, “yrs.since.phd”, “yrs.service”, “salary”.
Medidas de tendencia central
summary(Salaries)
## rank discipline yrs.since.phd yrs.service sex
## AsstProf : 67 A:181 Min. : 1.00 Min. : 0.00 Female: 39
## AssocProf: 64 B:216 1st Qu.:12.00 1st Qu.: 7.00 Male :358
## Prof :266 Median :21.00 Median :16.00
## Mean :22.31 Mean :17.61
## 3rd Qu.:32.00 3rd Qu.:27.00
## Max. :56.00 Max. :60.00
## salary
## Min. : 57800
## 1st Qu.: 91000
## Median :107300
## Mean :113706
## 3rd Qu.:134185
## Max. :231545
Medias
sapply(Salaries[,c(3,4,6)], mean)
## yrs.since.phd yrs.service salary
## 22.31486 17.61461 113706.45844
Medianas
sapply(Salaries[,c(3,4,6)], median)
## yrs.since.phd yrs.service salary
## 21 16 107300
Moda
#Utilizamos la libreria "modeest")
#Importamos modeest para calcular las modas
library(modeest)
Moda de Rank
mfv(Salaries$rank)
## [1] Prof
## Levels: AsstProf AssocProf Prof
Moda de discipline
mfv(Salaries$discipline)
## [1] B
## Levels: A B
Moda de yrs.since.phd:
mfv(Salaries$yrs.since.phd)
## [1] 4
Moda de yrs.service:
mfv(Salaries$yrs.service)
## [1] 3
Moda de salary:
mfv(Salaries$salary)
## [1] 92000
Medidas de Variabilidad
Rangos:
Rango de yrs.since.phd:
max(Salaries$yrs.since.phd)-min(Salaries$yrs.since.phd)
## [1] 55
Rango de yrs.service:
max(Salaries$yrs.service) - min(Salaries$yrs.service)
## [1] 60
Rango de salary:
max(Salaries$salary) - min(Salaries$salary)
## [1] 173745
Varianzas:
Varianza de yrs.since.phd:
var(Salaries$yrs.since.phd)
## [1] 166.0749
Varianza de yrs.service.phd:
var(Salaries$yrs.service)
## [1] 169.1567
Varianza de salary.phd:
var(Salaries$salary)
## [1] 917425865
Desviacion Estandar:
sapply(Salaries[,c(3,4,6)], sd)
## yrs.since.phd yrs.service salary
## 12.88700 13.00602 30289.03869
Coeficiente de Variación:
library(FinCal)
Coeficiente de variacion de yrs.since.phd:
coefficient.variation(sd(Salaries$yrs.since.phd), mean(Salaries$yrs.since.phd))
## [1] 0.5775077
Coeficiente de variacion de yrs.service::
coefficient.variation(sd(Salaries$yrs.service), mean(Salaries$yrs.service))
## [1] 0.7383657
Coeficiente de variacion de yrs. salary:
coefficient.variation(sd(Salaries$salary), mean(Salaries$salary))
## [1] 0.2663792
Medidas de Colocación
Cuantiles
Cuantiles de yrs.since.phd
quantile(Salaries$yrs.since.phd, c(0.25, 0.5, 0.75))
## 25% 50% 75%
## 12 21 32
Cuantiles de yrs.service
quantile(Salaries$yrs.service, c(0.25, 0.5, 0.75))
## 25% 50% 75%
## 7 16 27
Cuantiles de salary
quantile(Salaries$salary, c(0.25, 0.5, 0.75))
## 25% 50% 75%
## 91000 107300 134185
Medidas de Forma y Simetría
Asimetría
asimetrico <- function(bd){
x = 0
y = 0
p = length(bd)
g3 = 0
for (i in 1:p) {
x = x +((bd[i]-mean(bd))/ sd(bd))^3
}
x
y = (p)/((p - 1)*(p - 2))
g3 = round((y*x),8)
paste("Asimetrico: ", g3)
}
Coeficiente de asimetría de yrs.since.phd:
asimetrico(Salaries$yrs.since.phd)
## [1] "Asimetrico: 0.30087955"
Coeficiente de asimetría de yrs.service:
asimetrico(Salaries$yrs.service)
## [1] "Asimetrico: 0.65056948"
Coeficiente de asimetría de salary:
asimetrico(Salaries$salary)
## [1] "Asimetrico: 0.71456845"
Curtosis:
kurtosis=function(x){
exp1=sum(((x-mean(x))/sd(x))^4)
n=length(x)
exp2=((n*(n+1))/((n-1)*(n-2)*(n-3)))
exp3=((3*(n-1)^2)/((n-2)*(n-3)))
kurt=exp1*exp2-exp3
return(kurt)
}
Curtosis de yrs.since.phd:
kurtosis(Salaries$yrs.since.phd)
## [1] -0.7944173
Curtosis de de yrs.service
kurtosis(Salaries$yrs.service)
## [1] -0.3114232
Curtosis de salary:
kurtosis(Salaries$salary)
## [1] 0.2153502
3. Representación Grafica de Datos
Grafica de densidad:
par(mfrow=c(1,3))
plot(density(Salaries$yrs.since.phd), main = "Gráfico 1", col="blue", sub="Densidad de Years since PhD", xlab="")
plot(density(Salaries$yrs.service), main = "Gráfico 2", col="green", sub = "Densidad de Years of service", xlab="")
plot(density(Salaries$salary), main = "Gráfico 3", col="purple", sub = "Densidad de Salary", xlab="")
Diagramas Circulares:
Gráfico de Sexo:
ptjs = as.numeric(round(((prop.table(table(Salaries$sex)))*100),2))
tags = c("Femenino", "Masculino")
tags = paste(tags, ptjs)
tags <- paste(tags, "%", sep = "")
pie(ptjs, tags,
main = "Gráfico 4",
sub = "Gráfico de torta de Sexo",
col = c("blue", "violetred1", "green3", "cornsilk", "red"))
Gráfico de Rango:
ptjs = as.numeric(round(((prop.table(table(Salaries$rank)))*100),2))
tags = c("AsstProf", "AssocProf", "Prof")
tags = paste(tags, ptjs)
tags <- paste(tags, "%", sep = "")
pie(ptjs, tags,
main = "Gráfico Rango",
sub = "Gráfico de torta de Rango",
col = c("green3", "cornsilk", "cyan"))
Gráfico de Disciplina:
ptjs = as.numeric(round(((prop.table(table(Salaries$discipline)))*100),2))
tags = c("A", "B")
tags = paste(tags, ptjs)
tags <- paste(tags, "%", sep = "")
pie(ptjs, tags,
main = "Gráfico Disciplina",
sub = "Gráfico de torta de Disciplina",
col = c("violetred1", "cyan"))
Diagramas de Dispersión:
par(mfrow=c(1,3))
plot(Salaries$yrs.since.phd, col="yellow", main = "Gráfico 7", sub="Dispersión de Years since PhD", xlab="")
plot(Salaries$yrs.service, col="green", main = "Gráfico 8", sub="Dispersión de Years of Service", xlab="")
plot(Salaries$salary, col="blue", main = "Gráfico 9", sub="Dispersión de Salary", xlab="")
Diagramas de Barras:
par(mfrow=c(2,2))
barplot(table(Salaries$rank), col = c("green3", "cornsilk", "cyan"), main = "Gráfico ", sub="Gráfico de barras de Rangos")
barplot(table(Salaries$discipline), col = c("pink", "cyan"), main = "Gráfico ", sub="Gráfico de barras de Disciplinas")
barplot(table(Salaries$sex), col = c("violetred1", "purple"), main = "Gráfico ", sub="Gráfico de barras de Sexos")
Histogramas:
par(mfrow=c(2,2))
hist(Salaries$yrs.since.phd, col = "#1effb1", sub = "Histograma de Years Since PhD", main = "Gráfico 13", xlab="")
hist(Salaries$yrs.service, col = "pink", sub = "Histograma de years of service", main = "Gráfico 14", xlab="")
hist(Salaries$salary, col = "#8c39a9", sub = "Histograma de salary", main = "Gráfico 15", xlab="")
Boxplots:
par(mfrow=c(2,2))
boxplot(Salaries$yrs.since.phd, col = "#1effb1", sub = "Boxplot de Years Since PhD", main = "Gráfico ", xlab="")
boxplot(Salaries$yrs.service, col = "pink", sub = "Bosplot de years of service", main = "Gráfico ", xlab="")
boxplot(Salaries$salary, col = "#8c39a9", sub = "Bosplot de salary", main = "Gráfico ", xlab="")
Existe un cuerpo docente de 397 educadores, los cuales son 39 femeninos y 358 masculinos. Hay 67 profesores asistentes y 64 asociados, a parte de 266 del cuerpo general.
Otras consideraciones del analisis son:El salario mejor pagado es de 92.000.
La variable cuantitativa con datos más cercanos es yrs.since.phd.
Los profesores cuentan con un rangos tienen aproximado 17 años de servicio.
Y finalmente, l rango que menor cantidad de personas tiene en la muestra es AssocProf.