Carga de datos formato csv

data <- read.csv("https://raw.githubusercontent.com/VictorGuevaraP/Mineria-de-datos-2020/master/PEA.csv", sep = ";")
head(data)
##   departamento    X1 X2    X3    X4    X8   X18    X20
## 1     Amazonas   290  1  2571  1737  1623   181  76285
## 2       Ancash  9018  3  6920  9904 15625  4937 102156
## 3     Apurímac  3049  2  1779  1431  1808  2062  54696
## 4     Arequipa 11243  0 13390 17503 28868 18404  76675
## 5     Ayacucho  7143  2  2639  3134  4166  4963  87986
## 6    Cajamarca 15355  6  9930  7112  7346  6572 242243

Evaluamos outliers

boxplot(data[,2:8])

Evaluamos NA’s

#install.packages("VIM")
library(VIM)
miss <- aggr(data, col=c('green', 'red'),
     ylab = c("Histograma de NAs", "Patrón"))

En el cuadro de proporcion de missings podemos observar que la data no cuenta con NA’s.

Limpieza la data

  1. Se hace uso de una función en este caso denominada replace_outliers para eliminar los valores outliers de la data.

Capar los valores extremos, es decir, localizar todo lo que cayera fuera del bigote más arriba o más abajo de 1,5 veces de el rango intercuartilico. Y decidir capar dichas obsevaciones sustituyendolas con el percentil número 5. En el caso de los que están debajo del bigote inferior y con el percentil 95 con los que están por encima del bigote superior.

replace_outliers <- function(x, removeNA = TRUE){
  qrts <- quantile(x, probs = c(0.25, 0.75), na.rm = removeNA)
  caps <- quantile(x, probs = c(.05, 0.95), na.rm = removeNA)
  iqr <- qrts[2]-qrts[1]
  h <- 1.5*iqr
  x[x<qrts[1]-h] <- caps[1]
  x[x>qrts[2]+h] <- caps[2]
  x
}
data$X1 <- replace_outliers(data$X1)
data$X2 <- replace_outliers(data$X2)
data$X3 <- replace_outliers(data$X3)
data$X4 <- replace_outliers(data$X4)
data$X8 <- replace_outliers(data$X8)
data$X18 <- replace_outliers(data$X18)
data$X20 <- replace_outliers(data$X20)

Selección de “variables numéricas”

new_data <- data[,2:8]

Filtros para la realización de PCA

library(corrplot)
cor(new_data)
##            X1         X2        X3        X4        X8       X18        X20
## X1  1.0000000 0.42023242 0.8811135 0.8335464 0.7722891 0.3669709 0.59018104
## X2  0.4202324 1.00000000 0.3624677 0.4225862 0.5248052 0.1655256 0.04644673
## X3  0.8811135 0.36246771 1.0000000 0.9146756 0.8738325 0.4199897 0.43712478
## X4  0.8335464 0.42258617 0.9146756 1.0000000 0.9796396 0.4828907 0.27636475
## X8  0.7722891 0.52480516 0.8738325 0.9796396 1.0000000 0.4844363 0.17347806
## X18 0.3669709 0.16552555 0.4199897 0.4828907 0.4844363 1.0000000 0.41516730
## X20 0.5901810 0.04644673 0.4371248 0.2763647 0.1734781 0.4151673 1.00000000
corrplot(cor(new_data))

En la gráfica, se puede interpretar lo siguiente:

En la barra vertical que se muestra en el gráfico. En el caso de -1 de color rojo representa una baja correlación entre las variables, por otro lado en 1 de color azúl representa una alta correlación entre las variables.

a. Existe correlación en las variables X1 con X3, X4 y X8. Por otro lado una mediana correlación con la variable X20.

b. En el caso de la variable X2 tiene una mediana correlación con la variable X8 y una baja correlación con las variables X3 y X4, con el resto de variables muestra una mediana correlación.

c. En el caso de la variable X3 existe una alta correlación con las variables X4 y X8 con X3, X4 y X8. Por otro lado una mediana correlación con la variable X20.

d. En el caso de la variable X18 muestra que existe poca correlación con el resto de variables.

library(PerformanceAnalytics)
chart.Correlation(new_data)

Nos muestra de manera porcentual la correlación que hay entre las variables.

set.seed(2018)

Pruebas de hipótesis

1ra Prueba

Formulación de hipótesis:

a. Ho: Matriz de correlación iguales de cero

b. H1: Matriz de correlación diferente de cero

#install.packages("psych")
library(psych)

Evaluamos el p-valor y este tiene que ser < al nivel de significancia, el cual equivale a 0.05. Siendo así, se interpretaría que se rechaza a Ho.

cortest(new_data)
## Tests of correlation matrices 
## Call:cortest(R1 = new_data)
##  Chi Square value 367.05  with df =  21   with probability < 5.9e-65

Se tiene: 5.9e-65 < 0.05. Entonces, se cumple, por lo tanto se rechazo Ho. Es decir, que existe correlaciones significativas entre las variables estudiadas

2da Prueba

bartlett.test(new_data)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  new_data
## Bartlett's K-squared = 679.19, df = 6, p-value < 2.2e-16

Se tiene: 2.2e-16 < 0.05. Entonces, se cumple, por lo tanto se rechaza Ho Esto quiere decir que la matriz de correlaciones es distinta a la de la matriz de identidad (Se prueba este supuesto)

3ra Prueba

Ahora realizamos la prueba de KMO - Kaiser Meyer Olkin, el cual nos permite evaluar si se justifica el uso de PCA.

Se tiene la siguiente regla, si ell valor del KMO es mayor o igual que 0.5. Entonces, se cumple la justificación del uso de PCA

KMO(new_data)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = new_data)
## Overall MSA =  0.67
## MSA for each item = 
##   X1   X2   X3   X4   X8  X18  X20 
## 0.78 0.40 0.92 0.66 0.62 0.62 0.49

Overall MSA = 0.67 >= 0.5, se cumple. Por lo tanto de justifica el PCA.

Se cumplen las pruebas preliminares, entonces procedemos a la realización de PCA.

Realización de PCA

pca <- prcomp(new_data)
pca 
## Standard deviations (1, .., p=7):
## [1] 65058.871656 13293.483310  4740.326541  1825.114572  1530.372750
## [6]   790.130150     3.881705
## 
## Rotation (n x k) = (7 x 7):
##              PC1           PC2           PC3           PC4          PC5
## X1  4.409677e-02 -0.2477014495  0.2599848785  0.5510399297  0.746236890
## X2  5.270690e-06 -0.0002415337  0.0001001481 -0.0006605317  0.001085605
## X3  3.545698e-02 -0.3190920372  0.1899392024  0.6363274943 -0.661121042
## X4  2.582382e-02 -0.4147088554  0.0698576975 -0.0497550246 -0.014310118
## X8  3.080092e-02 -0.7921050583  0.0241070535 -0.4666576918  0.022898073
## X18 3.655590e-02 -0.1824479806 -0.9437581012  0.2636637336  0.071859463
## X20 9.969184e-01  0.0642112258  0.0137967692 -0.0409676878 -0.012466325
##              PC6           PC7
## X1   0.092692700  9.449254e-04
## X2   0.004452111 -9.999892e-01
## X3   0.137303592 -4.304644e-04
## X4  -0.905413715 -3.906417e-03
## X8   0.390820762  2.266999e-03
## X18 -0.003830554 -1.634586e-04
## X20  0.002535605  1.594291e-05
scree(new_data)

De acuerdo al gráfico, interpretamos que con solo usar 2 variables podremos obtener un nuevo conjunto de dartos, con variables reducidas

Confirmación de la cantidad de variables a usar

sum(pca$sdev)
## [1] 87242.18
prop.table(pca$sdev)*100
## [1] 74.572725195 15.237449598  5.433525966  2.092009345  1.754166091
## [6]  0.905674461  0.004449344
data_new <- cbind(new_data[,1:2],data[1])

Formato de la data final, con las variables resumidas

write.csv(data_new, file = "dataFinal.csv")
getwd()
## [1] "D:/VII CICLO/MINERIA DE DATOS/E3"

Visualización de datos

Se visualiza el conjunto de datos, con las variables resumidas: https://raw.githubusercontent.com/cnahuina/data-mineria/master/data-pca-caso1.csv