title: “Actividad_Salaries” author: “Pedro Kuperman” date: ‘2022-04-26’ output: html_document

#{r setup, include=FALSE} #knitr::opts_chunk$set(echo = TRUE) #

Base de Datos Salaries

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"

2. Identificando variables:

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="")

Resumen

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.