Análisis de la base de datos ds_salaries (Salarios en Data Science)

\(~\)

Objetivos

General:

  Aplicar los conocimientos aprendidos en el curso de R estudio (Coderhouse)

Específicos:

1. Explorar la base de datos ds_salaries 
2. Realizar un análisis de los componentes principales para optimizar la varianza.
3. Predecir la variable salary_in_usd mediante una regresión con KNN

\(~\) \(~\)

1.Se cargan las librerías

library(tidyverse)
library(plotly)
library(DT)
library(ggplot2)
library(knitr)
library(fdth)
library(purrr)
library(dplyr)
library(kableExtra)
library(GGally)
library(corrplot)
library(PerformanceAnalytics)
library(grDevices)
library(Hmisc) 
library(psych)
library(devtools)
library(factoextra)
library(ggbiplot)
library(MASS)
library(lattice)
library(caret)

\(~\) \(~\)

2.Inicio del análisis

\(~\)

Se carga la base de datos

\(~\)

Fuente de base de datos: Kaggle

Cual base de datos descargar:

Abrir este dataset

\(~\)

  Se carga el archivo csv a fin observar en primera instancia las dimensiones, columnas y tipo de datos:

Observación: Con el fin de mostrar conocimientos para trabajar con datos duplicados y NA, se agregan 3 filas al dataset original, luego se procederá a su eliminación para seguir trabajando con la fuente de datos original

\(~\)

2.1.Se analiza la existencia de datos duplicados y NA

## [[1]]
## [1] "Cantidad de valores duplicados que se eliminan:"
## 
## [[2]]
## [1] 2
## 
## [[3]]
## [1] "Total de valores NA que se eliminan:"
## 
## [[4]]
## [1] 4
## 
## [[5]]
## [1] "La posicion de los valores NA es:"
## 
## $ID
## integer(0)
## 
## $work_year
## [1] 608 609
## 
## $experience_level
## integer(0)
## 
## $employment_type
## integer(0)
## 
## $job_title
## [1] 608 609
## 
## $salary
## integer(0)
## 
## $salary_currency
## integer(0)
## 
## $salary_in_usd
## integer(0)
## 
## $employee_residence
## integer(0)
## 
## $remote_ratio
## integer(0)
## 
## $company_location
## integer(0)
## 
## $company_size
## integer(0)

2.2.Dimensiones del Dataset

## [1] "El dataframe no contiene duplicados ni valores NA; y tiene las siguientes dimensiones:"
## [2] "607"                                                                                   
## [3] "12"

2.3.Muestra del dataset

  A fines prácticos se muestran las primeras 10 filas del dataset original (para ampliar se puede visualizar el dataset consultando en el  link de la fuente de datos, anteriormente mencionado).
ID work_year experience_level employment_type job_title salary salary_currency salary_in_usd employee_residence remote_ratio company_location company_size
0 2020 MI FT Data Scientist 70000 EUR 79833 DE 0 DE L
1 2020 SE FT Machine Learning Scientist 260000 USD 260000 JP 0 JP S
2 2020 SE FT Big Data Engineer 85000 GBP 109024 GB 50 GB M
3 2020 MI FT Product Data Analyst 20000 USD 20000 HN 0 HN S
4 2020 SE FT Machine Learning Engineer 150000 USD 150000 US 50 US L
5 2020 EN FT Data Analyst 72000 USD 72000 US 100 US L
6 2020 SE FT Lead Data Scientist 190000 USD 190000 US 100 US S
7 2020 MI FT Data Scientist 11000000 HUF 35735 HU 50 HU L
8 2020 MI FT Business Data Analyst 135000 USD 135000 US 100 US L
9 2020 SE FT Lead Data Engineer 125000 USD 125000 NZ 50 NZ S

2.4.Descripción de las variables

  Se conocen primero cuales son las variables del dataset
##  [1] "ID"                 "work_year"          "experience_level"  
##  [4] "employment_type"    "job_title"          "salary"            
##  [7] "salary_currency"    "salary_in_usd"      "employee_residence"
## [10] "remote_ratio"       "company_location"   "company_size"

\(~\)

  Se decriben las variables
Variable Descripción
ID Columna que identifica a cada fila como unica (PK)
Work_year Año que se pago el salario
Experience_level Nivel de experiencia en el puesto durante el año con los siguientes valores posibles:
EN Entry-level / Junior MI Mid-level / Intermediate SE Senior-level / Expert EX Executive-level / Director
Employment_type Tipo de empleo para el puesto: PT Part-time FT Full-time CT Contract FL Freelance
Job_title Rol trabajado durante el año.
Salary Monto total del salario bruto pagado.
Salary_currency Moneda del salario pagado con el código de moneda ISO 4217.
Salary_in_usd El salario en USD (tasa de cambio dividida por la tasa promedio de USD para el año respectivo a través de
fxdata.foorilla.com).
Employee_residence País de residencia principal del empleado durante el año laboral como código de país ISO 3166.
Remote_ratio Cantidad total de trabajo realizado de forma remota, los valores posibles son los siguientes:
0 No remote work(lessthan 20%) 50 Partially remote 100 Fully remote (more than 80%)
Company_location País de la oficina principal del empleador o sucursal contratante como un código de país ISO 3166.
Company_size Número promedio de personas que trabajaron para la empresa durante el año:
S less than 50 employees (small) M 50 to 250 employees (medium) L more than 250 employees (large)

\(~\)

\(~\)

2.5.Estructura del dataset

## Rows: 607
## Columns: 12
## $ ID                 <int> 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 1…
## $ work_year          <int> 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 202…
## $ experience_level   <chr> "MI", "SE", "SE", "MI", "SE", "EN", "SE", "MI", "MI…
## $ employment_type    <chr> "FT", "FT", "FT", "FT", "FT", "FT", "FT", "FT", "FT…
## $ job_title          <chr> "Data Scientist", "Machine Learning Scientist", "Bi…
## $ salary             <int> 70000, 260000, 85000, 20000, 150000, 72000, 190000,…
## $ salary_currency    <chr> "EUR", "USD", "GBP", "USD", "USD", "USD", "USD", "H…
## $ salary_in_usd      <int> 79833, 260000, 109024, 20000, 150000, 72000, 190000…
## $ employee_residence <chr> "DE", "JP", "GB", "HN", "US", "US", "US", "HU", "US…
## $ remote_ratio       <int> 0, 0, 50, 0, 50, 100, 100, 50, 100, 50, 0, 0, 0, 10…
## $ company_location   <chr> "DE", "JP", "GB", "HN", "US", "US", "US", "HU", "US…
## $ company_size       <chr> "L", "S", "M", "S", "L", "L", "S", "L", "L", "S", "…

\(~\)

2.6.Transformación del dataset

Transformaciones necesarias que se realizan:

  1.Cambio del tipo de variable character a factor de las variables experience_level, employment_type, company_size

  2.Se eliminan las siguientes variables, las cuales se consideran redundantes: ID, Salary , Salary_currency

Se vuelve a mostrar la estructura con los cambios realizados

## Rows: 607
## Columns: 9
## $ work_year          <int> 2020, 2020, 2020, 2020, 2020, 2020, 2020, 2020, 202…
## $ experience_level   <fct> MI, SE, SE, MI, SE, EN, SE, MI, MI, SE, EN, MI, EN,…
## $ employment_type    <fct> FT, FT, FT, FT, FT, FT, FT, FT, FT, FT, FT, FT, FT,…
## $ job_title          <chr> "Data Scientist", "Machine Learning Scientist", "Bi…
## $ salary_in_usd      <int> 79833, 260000, 109024, 20000, 150000, 72000, 190000…
## $ employee_residence <chr> "DE", "JP", "GB", "HN", "US", "US", "US", "HU", "US…
## $ remote_ratio       <int> 0, 0, 50, 0, 50, 100, 100, 50, 100, 50, 0, 0, 0, 10…
## $ company_location   <chr> "DE", "JP", "GB", "HN", "US", "US", "US", "HU", "US…
## $ company_size       <fct> L, S, M, S, L, L, S, L, L, S, S, L, M, L, L, L, S, …

2.7.Estadistica Descriptiva (summary)

  Se muestra a continuación los principales estadísticos descriptivos (mínimo, máximo, cuartiles, promedio) para cada una de las variables  numéricas del dataset, mientras que para aquellas variables factor se muestra la frecuencia de cada categoría.
##    work_year    experience_level employment_type  job_title        
##  Min.   :2020   EN: 88           CT:  5          Length:607        
##  1st Qu.:2021   EX: 26           FL:  4          Class :character  
##  Median :2022   MI:213           FT:588          Mode  :character  
##  Mean   :2021   SE:280           PT: 10                            
##  3rd Qu.:2022                                                      
##  Max.   :2022                                                      
##  salary_in_usd    employee_residence  remote_ratio    company_location  
##  Min.   :  2859   Length:607         Min.   :  0.00   Length:607        
##  1st Qu.: 62726   Class :character   1st Qu.: 50.00   Class :character  
##  Median :101570   Mode  :character   Median :100.00   Mode  :character  
##  Mean   :112298                      Mean   : 70.92                     
##  3rd Qu.:150000                      3rd Qu.:100.00                     
##  Max.   :600000                      Max.   :100.00                     
##  company_size
##  L:198       
##  M:326       
##  S: 83       
##              
##              
## 

\(~\)

Interpretación por variable:

  work_year:  
  El dato mínimo que se espera de la variables es 2020; el 25% de los datos se alcanzan en “2021”, mientras que la mediana se ubica en 2022, el promedio no se debe tener en cuenta ya que la variable si bien es numérica hace referencia al dato año y tiene solo 3  valores posibles “ 2020-2021-2022”, el 75% de los datos se alcanza en 2022, siendo este ultimo el valor máximo esperado.

  experience_level: 
  Se muestra la frecuencia por cada categoría de la variable.

  employment_type: 
  Se muestra la frecuencia por cada categoría de la variable.

  job_title: 
  Se reconoce esta variable como carácter, es decir, como cadena de texto. Por lo tanto solo se menciona su longitud que refiere a 607    filas.

  salary_in_usd:  
  El dato mínimo que se espera de la variables es 2.859; el 25% de los datos se alcanzan en 62.726, mientras que la mediana se ubica en 101.570, el promedio es igual a 112.298, el 75% de los datos se alcanza en 150.000, siendo el valor máximo esperado 600.000

  employee_residence: 
  Se reconoce esta variable como carácter, es decir, como cadena de texto. Por lo tanto solo se menciona su longitud que refiere a 607   filas.

  remote_ratio:
  El dato mínimo que se espera de la variables es 0; el 25% de los datos se alcanzan en 50, mientras que la mediana se ubica en 100, el promedio no se debe tener en cuenta ya que la variable hace referencia a un dato con solo 3 valores posibles “ 0-50-100”, el 75% de los datos se alcanza en 100, siendo este ultimo el valor máximo esperado.

  company_location: 
  Se reconoce esta variable como carácter, es decir, como cadena de texto. Por lo tanto solo se menciona su longitud que refiere a 607 filas.

  company_size: 
  Se muestra la frecuencia por cada categoría de la variable.

2.8.Gráfico 1

Top 5 principales países de residencia en los que se realizaron contrataciones en Data Science en los últimos 3 años vs los 5 principales países donde está la ubicación principal de las empresas que realizan las contrataciones.

Grafico por Pais de residencia del empleado Data Scientist

## # A tibble: 1 × 1
##   Porc_acumulado
##            <dbl>
## 1          0.759

Interpretación del gráfico:

  Se puede observar que los 5 países, por orden descendente, que más contrataciones tienen son: US- Estados Unidos, GB- Reino Unido, IN-India, CA- Canadá y DE-Alemania

  Estos 5 países representan el 75,9% de los empleados contratados en Data scientist.

Gráfico por País de origen de las empresas que realizan contrataciones en Data Scientist

## # A tibble: 1 × 1
##   Porc_acumulado
##            <dbl>
## 1          0.799

Interpretación del gráfico:

  Se puede observar que los 5 países, por orden descendente, que más contrataciones realizaron son: US- Estados Unidos, GB- Reino Unido, CA-Canada, DE-Alemania y IN- India.

  Estos 5 países representan el 79.9% de las contrataciones en Data scientist.

Conclusión de ambos gráficos

  Comparando ambos gráficos se puede observar que en el top 5 se mantienen los mismos países y que en el segundo grafico estos representan en mayor parte a las contrataciones en Data Scientist.

  Tras analizar las variables se considera relevante conservar para el análisis la variable company_location (Pais de origen de las empresas que realizan las contrataciones) y eliminar de mismo la variable Employee_residence (país de procedencia del empleado).

\(~\)

2.9.Gráfico 2

Relación entre el Salario anual en dólares con el tipo de contratación y el nivel de experiencia, de acuerdo con el país de residencia con mayor contrataciones de puestos en Data Science (US)

Interpretación del grafico:

  Del grafico es posible observar que los EN- Entry-level definitivamente son los que menos ganan y en orden ascendente siguen los puestos    Junior, MI Mid-level e  Intermediate SE Senior-level y finalmente seguirían los Expert EX Executive-level que según la grafica son pocos.     

  Por otro lado, se puede notar que la gran mayoría de los trabajos son de tiempo completo, por lo cual se considera necesario analizar si  podría ser relevante contemplar en el análisis el resto de los tipo de empleo.

Tablas de contingencias

A continuación se realiza una tabla de contingencias donde se muestra la frecuencia del nivel de experiencia según el tipo de empleo, a fin de detectar si es relevante considerar todos los tipos de empleos para el resto del análisis.

##     
##       CT  FL  FT  PT
##   EN   2   0  79   7
##   EX   1   0  25   0
##   MI   1   3 206   3
##   SE   1   1 278   0

Antes de poder concluir se considera necesario mostrar la misma tabla en proporciones, la cual se puede ver a continuación.

##     
##               CT          FL          FT          PT
##   EN 0.003294893 0.000000000 0.130148270 0.011532125
##   EX 0.001647446 0.000000000 0.041186161 0.000000000
##   MI 0.001647446 0.004942339 0.339373970 0.004942339
##   SE 0.001647446 0.001647446 0.457990115 0.000000000

Interpretación

  De acuerdo con lo que se esperaba el 97% de los empleos se concentran en trabajos Full Time.

  Por lo que nos quedaremos con los datos que reúnan esta característica.

2.10.Transformación 2

  Se realiza una nueva transformación del dataset, se filtran los datos por tipo de trabajo Full Time (FT) y se eliminan las siguientes    variables: employment_type, Employee_residence

Se muestra a continuación la nueva estructura del dataset tras realizar las transformaciones que se mencionaron anteriormente.

## 'data.frame':    588 obs. of  7 variables:
##  $ work_year       : int  2020 2020 2020 2020 2020 2020 2020 2020 2020 2020 ...
##  $ experience_level: Factor w/ 4 levels "EN","EX","MI",..: 3 4 4 3 4 1 4 3 3 4 ...
##  $ job_title       : chr  "Data Scientist" "Machine Learning Scientist" "Big Data Engineer" "Product Data Analyst" ...
##  $ salary_in_usd   : int  79833 260000 109024 20000 150000 72000 190000 35735 135000 125000 ...
##  $ remote_ratio    : int  0 0 50 0 50 100 100 50 100 50 ...
##  $ company_location: chr  "DE" "JP" "GB" "HN" ...
##  $ company_size    : Factor w/ 3 levels "L","M","S": 1 3 2 3 1 1 3 1 1 3 ...

2.11.Estadisticas descriptivas 2 (describe)

  Seguidamente se verá un panorama más completo de las variables a trabajar. En el caso de las numéricas se muestra los estadísticos descriptivos, la cantidad de observaciones, los valores perdidos. Para las variables factors o categóricas, se muestra la frecuencia, las  proporciones y los valores perdidos. 
##                   vars   n      mean       sd   median   trimmed      mad  min
## work_year            1 588   2021.42     0.69   2022.0   2021.52     0.00 2020
## experience_level*    2 588      3.16     1.01      3.0      3.32     1.48    1
## job_title*           3 588     20.99    10.28     18.0     20.00     5.93    1
## salary_in_usd        4 588 113468.07 69476.47 104196.5 107675.82 63405.61 2859
## remote_ratio         5 588     70.75    41.00    100.0     75.85     0.00    0
## company_location*    6 588     36.10    15.80     48.0     38.22     0.00    1
## company_size*        7 588      1.80     0.65      2.0      1.75     0.00    1
##                      max  range  skew kurtosis      se
## work_year           2022      2 -0.76    -0.61    0.03
## experience_level*      4      3 -1.10     0.07    0.04
## job_title*            48     47  0.91     0.47    0.42
## salary_in_usd     600000 597141  1.66     6.56 2865.16
## remote_ratio         100    100 -0.89    -0.93    1.69
## company_location*     49     48 -0.77    -1.12    0.65
## company_size*          3      2  0.22    -0.71    0.03

De este análisis se puede observar que el dataset no tiene valores perdidos, como también la cantidad de valores únicos que posee cada variable. Luego, vemos actualizada y con un poco más de detalle la información estadística por variable que se había analizado anteriormente.

2.12.Gráficos varios

  Con el nuevo dataset se realizan varios gráficos para observar a las distintas variables individualmente.

## # A tibble: 1 × 1
##   Porc_acumulado
##            <dbl>
## 1          0.718

Interpretación de los resultados

  Los 5 empleos que más se contratan son para Data Scientist, Data Engineer, Data Analyst, Machine Learning Engineer y Research Scientist.        
  Estos representan el 71.8% de las contrataciones realizadas en los últimos 3 años.

Gráfico de barras de la variable remote_ratio

Interpretación del grafico

  La mayoría de los empleos son de manera remota.

Gráfico de barras de la variable work_year

Interpretación del gráfico

  Se puede observar que las contrataciones en Data Scientist está en auge, dado que a través de los años fue aumentando la cantidad de contrataciones en esta área.

Gráfico de barras de la variable experience_level

Interpretación del gráfico:

  Del grafico se puede observar que la mayoría de los empleados que trabajan en el área de Data Scientist son SE Senior-level, a ellos le   siguen los MI Mid-level, luego los EN- Entry-level y finalmente los EX Executive-level, que son los menos.

Gráfico de barras de la variable company_size

Interpretación del gráfico:

  Las empresas M (medianas) son las que más contrataciones en Data Scientist realizan.

A continuación se observan distintos gráficos que muestran la relación entre el salario en dólares y los distintos niveles de experiencia

Interpretación de los gráficos

  En el primer grafico se puede observar las distribuciones de la variable salary_in_usd por separado para cada tipo de experience_level.

  Luego, en el gráfico de violín se representa, en el eje vertical, la distribución de los datos como si se tratara de un gráfico de densidad, y se traza la imagen especular en el eje a fin de obtener el resultado en forma de ‘violín’ como se observa en la gráfica. Luego sobre este gráfico se superpone el boxplot.De esta manera podemos entender mejor la relación entre la distribución de los datos y el gráfico de cajas asociados a estos.

  Finalmente podría se concluir que son pocos los salarios en dólares que superan los 200.000usd y a su vez, se reconfirma que los mismos   aumentan a mayor nivel de experiencia.

\(~\) Salario medio en dólares, según el nivel de experiencia - Estados Unidos (US)

mediana_salary
136300

\(~\) \(~\)

2.13.Primera conclusión sobre los datos analizados hasta el momento

  Una vez analizados los resultados, se observa que en todos los casos hay una relación directa entre el nivel de experiencia y el salario, donde  a mayor nivel de experiencia mayor salario.

  A su vez, a medida que pasan los años las contrataciones van en aumento; por otro lado, son las medianas las empresas las que más contrataciones realizan, estos trabajos en su mayoría son remotos y el país con más contrataciones es Estados Unidos (US) 

3.Analisis de variables de a pares

3.1.Matriz de dispersión

  Se realiza una Matriz de Dispersión para observar cómo se relacionan las variables.

Interpretación

  Las matrices de dispersión son un método simple de presentar las relaciones entre pares de variables cuantitativas. Este gráfico consiste en una matriz donde cada entrada presenta un gráfico de dispersión sencillo. En la diagonal están los nombres de las variables, junto a su distribución y por fuera de la diagonal están los diagramas de dispersión y la recta regresión ajustada para cada combinación de variables.

  De esta matriz se puede destacar que de la relación entre company_size y salary_in_usd, surge que las grandes empresas son las que mejores sueldos pagan.

  Particularmente para observar esto último se grafica la distribución del salario en dólares según del nivel de experiencia y el tamaño de la empresa:

Interpretación

  Aquí se puede llegar a la misma conclusión, ya que se puede observar que igualmente para cada uno de los niveles de experiencia las grandes empresas son las que mejor pagan.

3.2.Analisis de correlación

  Antes de comenzar se transforman las variables experience_level y company_size en variables de tipo numero.

  Se muestra a continuación la nueva estructura.     

Se observa como fue la asignación de números para cada categoría de la variable experience_level)

##     
##        1   2   3   4
##   EN  79   0   0   0
##   EX   0  25   0   0
##   MI   0   0 206   0
##   SE   0   0   0 278

Se observa como fue la asignación de números para cada categoría de la variable company_size)

##    
##       1   2   3
##   L 193   0   0
##   M   0 318   0
##   S   0   0  77

Se muestra la correlación entre las variables.

##                  work_year experience_level salary_in_usd remote_ratio
## work_year             1.00             0.30          0.17         0.08
## experience_level      0.30             1.00          0.31         0.06
## salary_in_usd         0.17             0.31          1.00         0.13
## remote_ratio          0.08             0.06          0.13         1.00
## company_size          0.10            -0.04         -0.15         0.02
##                  company_size
## work_year                0.10
## experience_level        -0.04
## salary_in_usd           -0.15
## remote_ratio             0.02
## company_size             1.00

Interpretación

  La correlación mide la relación lineal entre dos variables y se mide con un coeficiente que va de -1 a 1.

  Según sea el valor del coeficiente de correlación se puede interpretar de la siguiente manera:

  r = 1, la relación es positiva perfecta
  0 < r < 1 la relación es positiva
  r = 0 no hay relación lineal
  -1 < r < 0 la relación es negativa
  r = -1 la relación es negativa perfecta

  Por ejemplo se observa una relación positiva entre experience_level y salary_in_usd; y a la vez, entre experience_level y work_year.

Analisis del coeficiente de correlación entre experience_level y salary_in_usd

  Coeficiente de correlación de la relación
## [1] 0.3123021

Interpretación

  Esto muestra que el coeficiente de correlación es igual a 0,31. Sin embargo, debemos saber si esta relación es estadísticamente significativa, para lo que requerimos el p-value.
## 
##  Pearson's product-moment correlation
## 
## data:  data3$salary_in_usd and data3$experience_level
## t = 7.9581, df = 586, p-value = 0.00000000000000908
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.2374403 0.3834762
## sample estimates:
##       cor 
## 0.3123021

Interpretación

  Se considera que si p_value es inferior a 0.01, se rechaza la hipótesis nula que predice que estas variables son independientes. 

  De acuerdo con la observación se da como resultado un p-value de 0.000, por lo que rechazamos la hipótesis nula de que la correlación es igual a cero, a un nivel de significancia del 1%. Por lo tanto, existe una relación estadísticamente significativa, donde si bien es una    relación baja, a medida que el experience_level, aumenta salary_in_usd

De acuerdo con la explicación anterior se muestra una matriz con todos los p-value para cada par variables.

##                  work_year experience_level salary_in_usd remote_ratio
## work_year             1.00             0.30          0.17         0.08
## experience_level      0.30             1.00          0.31         0.06
## salary_in_usd         0.17             0.31          1.00         0.13
## remote_ratio          0.08             0.06          0.13         1.00
## company_size          0.10            -0.04         -0.15         0.02
##                  company_size
## work_year                0.10
## experience_level        -0.04
## salary_in_usd           -0.15
## remote_ratio             0.02
## company_size             1.00
## 
## n= 588 
## 
## 
## P
##                  work_year experience_level salary_in_usd remote_ratio
## work_year                  0.0000           0.0000        0.0415      
## experience_level 0.0000                     0.0000        0.1422      
## salary_in_usd    0.0000    0.0000                         0.0018      
## remote_ratio     0.0415    0.1422           0.0018                    
## company_size     0.0143    0.2793           0.0002        0.6907      
##                  company_size
## work_year        0.0143      
## experience_level 0.2793      
## salary_in_usd    0.0002      
## remote_ratio     0.6907      
## company_size

3.3.Grafico resumen

  Para resumir, se muestra en la siguiente grafica la matriz de dispersión junto a cada una de las correlaciones para cada par de variables.

4.Analisis de los componentes principales (PCA)

  Anteriormente se viene trabajando con un dataset reducido a variables numéricas, por lo que se continua el análisis con el mismo set de datos. El cual tiene las siguientes características:
## [1] "El numero total de Filas es  588  numero total de Columnas es  5  y el numero de NA es  0"

Se muestra la estructura que resulta del análisis PCA

## Importance of components:
##                           PC1    PC2    PC3    PC4    PC5
## Standard deviation     1.2529 1.0537 0.9847 0.8442 0.7985
## Proportion of Variance 0.3139 0.2221 0.1939 0.1426 0.1275
## Cumulative Proportion  0.3139 0.5360 0.7299 0.8725 1.0000

Interpretación¨

  Las dos primeras variables del análisis resultan ser las más representativas para el análisis.

Se muestra a continuación un grafico de dispersión entre ellas.

Interpretación

  Según se muestra parecería existir cierta correlación entre el primer par de componentes principales.

4.1.Graficos

Se realiza un grafico de barras y grafico de líneas que muestra la variación de cada una de las componentes principales

Interpretación

  Tal como se menciono anteriormente las dos primeras son las que mayor variación representan.

El resultado final del análisis es el siguiente:

## Principal Component Analysis Results for variables
##  ===================================================
##   Name       Description                                    
## 1 "$coord"   "Coordinates for the variables"                
## 2 "$cor"     "Correlations between variables and dimensions"
## 3 "$cos2"    "Cos2 for the variables"                       
## 4 "$contrib" "contributions of the variables"
## Principal Component Analysis Results for variables
##  ===================================================
##   Name       Description                                    
## 1 "$coord"   "Coordinates for the variables"                
## 2 "$cor"     "Correlations between variables and dimensions"
## 3 "$cos2"    "Cos2 for the variables"                       
## 4 "$contrib" "contributions of the variables"
## Principal Component Analysis Results for individuals
##  ===================================================
##   Name       Description                       
## 1 "$coord"   "Coordinates for the individuals" 
## 2 "$cos2"    "Cos2 for the individuals"        
## 3 "$contrib" "contributions of the individuals"
## Principal Components Analysis
## Call: principal(r = data3, nfactors = 2, rotate = "none")
## Standardized loadings (pattern matrix) based upon correlation matrix
##                    PC1   PC2   h2   u2 com
## work_year         0.62  0.46 0.60 0.40 1.8
## experience_level  0.75  0.02 0.57 0.43 1.0
## salary_in_usd     0.70 -0.33 0.60 0.40 1.4
## remote_ratio      0.33  0.12 0.12 0.88 1.3
## company_size     -0.13  0.88 0.79 0.21 1.0
## 
##                        PC1  PC2
## SS loadings           1.57 1.11
## Proportion Var        0.31 0.22
## Cumulative Var        0.31 0.54
## Proportion Explained  0.59 0.41
## Cumulative Proportion 0.59 1.00
## 
## Mean item complexity =  1.3
## Test of the hypothesis that 2 components are sufficient.
## 
## The root mean square of the residuals (RMSR) is  0.16 
##  with the empirical chi square  311.61  with prob <  0.00000000000000000000000000000000000000000000000000000000000000000000097 
## 
## Fit based upon off diagonal values = 0.04

Interpretación

  Estos dos factores, logran explicar el 54% de la varianza del dataset.

4.2.Visualizaciones adicionales

Interpretación

  En el primer gráfico se ve la varianza explicada de cada uno de los factores, que ya se había visto anteriormente.
  
  Luego, se muestran los gráficos del primer componente principal contra el segundo; tal es así que, en la segunda se ve una primera aproximación del análisis.
  
  En la tercera se suma una representación del coseno al cuadrado donde están aquellos valores que menos se alejan del centro hasta aquellos que si se alejan del centro. 
  
  En el cuarto es una representación de variables sobre componentes principales.
  
  Tras ese, se ve como es la variación entre cada una de las variables con cada uno de los factores según se acercan o se alejan del centro. 
  Finalmente en el último, se combinan los puntos de la distribución con cada una de las variables y los factores.

5.Regresión con KNN

  Se desea predecir la variable salary_in_usd


  Se trabaja con el dataset reducido para variables numéricas.

5.1.Ajuste de Regresión 1

Primeros resultados del análisis

## k-Nearest Neighbors 
## 
## 588 samples
##   4 predictor
## 
## No pre-processing
## Resampling: Bootstrapped (25 reps) 
## Summary of sample sizes: 588, 588, 588, 588, 588, 588, ... 
## Resampling results across tuning parameters:
## 
##   k  RMSE      Rsquared   MAE     
##   5  65188.06  0.1547467  45529.26
##   7  64951.70  0.1459462  45645.04
##   9  65063.81  0.1397670  45636.31
## 
## RMSE was used to select the optimal model using the smallest value.
## The final value used for the model was k = 7.

Interpretación

  De los resultados del ajuste del modelo se puede ver con que cantidad de k vecinos corrió, y las métricas de error, RMSE y MAE como así también la bondad de ajuste con el R cuadrado. En este caso se observa el mejor ajuste según la métrica de RMSE; por lo que, el mejor modelo    fue k = 7.

  Aquí se observa el resultado dado por “plot”. Indicando el RMSE.

5.2.Ajuste de regresión 2

  Se analiza nuevamente reprocesando los datos antes de ejecutar el algoritmo
## k-Nearest Neighbors 
## 
## 397 samples
##   8 predictor
## 
## Pre-processing: centered (145), scaled (145) 
## Resampling: Bootstrapped (25 reps) 
## Summary of sample sizes: 397, 397, 397, 397, 397, 397, ... 
## Resampling results across tuning parameters:
## 
##   k  RMSE      Rsquared   MAE     
##   5  57504.89  0.2810105  41411.61
##   7  57679.83  0.2662186  42101.52
##   9  57812.55  0.2559944  42562.61
## 
## RMSE was used to select the optimal model using the smallest value.
## The final value used for the model was k = 5.

Interpretación

  En este caso el mejor ajuste según la métrica de RMSE y por lo tanto el mejor modelo, fue k = 9.

Bondad de Ajuste. ¿Qué porcentaje de la variabilidad de la variable “salary_in_usd” podemos explicar con nuestro modelo?

##                    [,1]
## salary_in_usd 0.5118466

Interpretación

  La variable salary_in_usd se puede explicar en un 51.2%

5.3.K Fold Cross-Validation

##                    [,1]
## salary_in_usd 0.7154345

Interpretación

  Se puede ver que entrenando el modelo con cross validation, se obtienen resultados más realistas, sobre en qué % se puede explicar de la variable salary_in_usd, indicando que la corrida anterior con un solo split, sub-ajusta, dado que el R2 da 51.2% en relación al R2 con cross validation de 71.54%

6.Conclusión final

  Con el análisis del dataset se pudo observar que las contrataciones en el área de Data Scientist por los últimos 3 años fueron en aumento, las mayores contrataciones las realizaron empresas de Estados Unidos (US), en su mayoría son empresas medianas, la forma de contratación principalmente es remota y full time.
  
  Encontramos una relación directa entre el nivel de experiencia y el salario anual en dolares, donde a mayor experiencia, mayor es el salario; por otra parte, cumpliendo con esta relación son las empresas grandes las que mejor pagan.

  Por otra parte, tras el análisis de los componentes principales se logra explicar el 54% de la varianza del dataset. 
  
  Y finalmente, mediante el modelo de regresión con KNN fue posible predecir el salario anual en dólares en un 71.54%.