X1 % de Negocios victimizados durante el año por - robo o hurto - positiva
X2 % de Negocios victimizados durante el año - extorsión o secuestro - positiva
X3 % de Negocios que consideran que el crimen fue mayor en el año actual comparado con el año anterior - positiva
X4 % de Negocios que consideran que el crimen local es mayor que en los municipios vecinos - negativa
X5 Erogaciones municipales per cápita en seguridad pública (US$) - positva
X6 Costo del crimen a negocios por cada US$1,000 de ventas durante el año previo - negativa
X7 % de Negocios que califican a la municipalidad como buena en prevención y control del delito - positiva
X8 % de Negocios que consideran que la calidad del alumbrado público es adecuada para la seguridad de los negocios en el municipio - positiva
Se cargan los datos
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
##
## Adjuntando el paquete: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
library(knitr)
load("C:/Users/SANCHEZ/Desktop/GABRIEL2021/Universidad/Ciclo VI/Metodos para el analisis economico/data_parcial_2_A_rev.RData")
datos_A <- datos_parcial_2
datos_A %>% head()%>%
kable(caption ="Data frame:" ,align = "c",digits = 6) %>%
kable_material(html_font = "sans-serif")| ID | Municipio | X1 | X2 | X3 | X4 | X5 | X6 | X7 | X8 |
|---|---|---|---|---|---|---|---|---|---|
| 1 | ATIQUIZAYA | 9 | 2 | 20.00000 | 20.00000 | 0.00000 | 0.000000 | 2 | 56.4000 |
| 2 | EL CARMEN | 10 | 6 | 62.50000 | 50.00000 | 37.50000 | 3.947368 | 11 | 147.3750 |
| 3 | ALEGRIA | 10 | 20 | 50.00000 | 50.00000 | 50.00000 | 2.564103 | 16 | 135.0000 |
| 4 | SAN JULIAN | 8 | 3 | 42.85714 | 42.85714 | 14.28571 | 1.351351 | 35 | 121.1429 |
| 5 | TEJUTLA | 7 | 7 | 75.00000 | 75.00000 | 75.00000 | 9.090909 | 8 | 202.5000 |
| 6 | PASAQUINA | 6 | 13 | 30.00000 | 30.00000 | 30.00000 | 8.108108 | 25 | 81.0000 |
Se convierte en matriz
matriz_A<-datos_A[,c(-1,-2)]
matriz_A %>% head()%>%
kable(caption ="Matriz de información:" ,align = "c",digits = 6) %>%
kable_material(html_font = "sans-serif")| X1 | X2 | X3 | X4 | X5 | X6 | X7 | X8 |
|---|---|---|---|---|---|---|---|
| 9 | 2 | 20.00000 | 20.00000 | 0.00000 | 0.000000 | 2 | 56.4000 |
| 10 | 6 | 62.50000 | 50.00000 | 37.50000 | 3.947368 | 11 | 147.3750 |
| 10 | 20 | 50.00000 | 50.00000 | 50.00000 | 2.564103 | 16 | 135.0000 |
| 8 | 3 | 42.85714 | 42.85714 | 14.28571 | 1.351351 | 35 | 121.1429 |
| 7 | 7 | 75.00000 | 75.00000 | 75.00000 | 9.090909 | 8 | 202.5000 |
| 6 | 13 | 30.00000 | 30.00000 | 30.00000 | 8.108108 | 25 | 81.0000 |
A través del análisis de componentes principales, identifique para un modelo de 3 factores:
Los ponderadores normalizados para cada factor
library(dplyr)
norm_directa<-function(x){(x-min(x))/(max(x)-min(x))}
norm_inversa<-function(x){(max(x)-x)/(max(x)-min(x))}
#Seleccionando las variables con correlación positiva
matriz_A %>%
select(X1,X2,X3,X5,X6,X8) %>%
apply(MARGIN = 2,FUN = norm_directa) %>% as.data.frame()->variables_corr_positiva
#Seleccionando las variables con correlación negativa
matriz_A %>%
select(X4,X7) %>%
apply(MARGIN = 2,FUN = norm_inversa) %>% as.data.frame()->variables_corr_negativa
#Juntando y reordenando las variables
variables_corr_positiva %>%
bind_cols(variables_corr_negativa) %>%
select(X1,X2,X3,X4,X5,X6,X7,X8)->datnorm_A
datnorm_A %>% head()%>%
kable(caption = "Datos normalizados:" ,align = "c",digits = 6) %>%
kable_material(html_font = "sans-serif")| X1 | X2 | X3 | X4 | X5 | X6 | X7 | X8 |
|---|---|---|---|---|---|---|---|
| 0.193548 | 0.000000 | 0.040000 | 0.800000 | 0.000000 | 0.000000 | 1.000000 | 0.158227 |
| 0.225806 | 0.017167 | 0.550000 | 0.500000 | 0.428571 | 0.215587 | 0.901099 | 0.516749 |
| 0.225806 | 0.077253 | 0.400000 | 0.500000 | 0.571429 | 0.140039 | 0.846154 | 0.467980 |
| 0.161290 | 0.004292 | 0.314286 | 0.571429 | 0.163265 | 0.073805 | 0.637363 | 0.413371 |
| 0.129032 | 0.021459 | 0.700000 | 0.250000 | 0.857143 | 0.496503 | 0.934066 | 0.733990 |
| 0.096774 | 0.047210 | 0.160000 | 0.700000 | 0.342857 | 0.442827 | 0.747253 | 0.255172 |
## corrplot 0.95 loaded
library(psych)
# Se calcula la matriz de correlacion
matriz_correlacion<-cor(datnorm_A)
num_fact<-3
modelo_fact<-principal(r = matriz_correlacion,
nfactors = num_fact,
covar = FALSE,
rotate = "varimax")
modelo_fact## Principal Components Analysis
## Call: principal(r = matriz_correlacion, nfactors = num_fact, rotate = "varimax",
## covar = FALSE)
## Standardized loadings (pattern matrix) based upon correlation matrix
## RC1 RC2 RC3 h2 u2 com
## X1 -0.16 0.80 -0.03 0.67 0.3316 1.1
## X2 0.08 0.84 -0.03 0.71 0.2879 1.0
## X3 0.93 -0.09 0.28 0.95 0.0493 1.2
## X4 -0.95 0.05 -0.26 0.98 0.0208 1.2
## X5 0.43 -0.06 0.80 0.83 0.1742 1.5
## X6 0.25 -0.03 0.91 0.89 0.1142 1.2
## X7 0.07 -0.83 0.04 0.69 0.3107 1.0
## X8 0.96 -0.06 0.27 0.99 0.0087 1.2
##
## RC1 RC2 RC3
## SS loadings 2.97 2.05 1.68
## Proportion Var 0.37 0.26 0.21
## Cumulative Var 0.37 0.63 0.84
## Proportion Explained 0.44 0.31 0.25
## Cumulative Proportion 0.44 0.75 1.00
##
## Mean item complexity = 1.2
## Test of the hypothesis that 3 components are sufficient.
##
## The root mean square of the residuals (RMSR) is 0.06
##
## Fit based upon off diagonal values = 0.98
Las variables incluidas en cada factor.
## Cargando paquete requerido: ggplot2
##
## Adjuntando el paquete: 'ggplot2'
## The following objects are masked from 'package:psych':
##
## %+%, alpha
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
PC1<-princomp(x = datnorm_A,cor = TRUE,fix_sign = FALSE)
variables_pca1<-get_pca_var(PC1)
corrmodel1<-variables_pca1$coord
rot1<-varimax(corrmodel1[,1:num_fact])
corr_model_rot1<-rot1$loadings
corrplot(corr_model_rot1[,1:num_fact],is.corr = FALSE,method = "square",addCoef.col="black",number.cex = 0.75)library(kableExtra)
cargas<-rot1$loadings[1:8,1:num_fact]
ponderadores<-prop.table(apply(cargas^2,MARGIN = 2,sum))
t(ponderadores) %>% kable(caption="Ponderadores de los Factores Extraídos",
align = "c",
digits = 2) %>%
kable_material(html_font = "sans-serif") %>%
kable_styling(bootstrap_options = c("striped", "hover"))| Dim.1 | Dim.2 | Dim.3 |
|---|---|---|
| 0.44 | 0.31 | 0.25 |
Se le asigna al primer factor el 44% al segundo un peso del 31% y finalmente al tercer factor un peso de 25%
contribuciones<-apply(cargas^2,MARGIN = 2,prop.table)
contribuciones %>% kable(caption="Contribución de las variables en los Factores",
align = "c",
digits = 2) %>%
kable_material(html_font = "sans-serif") %>%
kable_styling(bootstrap_options = c("striped", "hover"))| Dim.1 | Dim.2 | Dim.3 | |
|---|---|---|---|
| X1 | 0.01 | 0.31 | 0.00 |
| X2 | 0.00 | 0.34 | 0.00 |
| X3 | 0.29 | 0.00 | 0.05 |
| X4 | 0.31 | 0.00 | 0.04 |
| X5 | 0.06 | 0.00 | 0.38 |
| X6 | 0.02 | 0.00 | 0.49 |
| X7 | 0.00 | 0.33 | 0.00 |
| X8 | 0.31 | 0.00 | 0.04 |
Para el factor 1, utilice el método CRITIC para obtener los ponderadores normalizados para cada variable.
ponderadores_critic <- function(matriz_datos) {
# Desviaciones de las variables
sigma <- apply(X = matriz_datos, MARGIN = 2, sd)
# Correlaciones entre las variables
rho <- cor(matriz_datos)
# Suma de las correlaciones excedentes
cj <- apply(X = 1 - rho, MARGIN = 2, sum)
# Cálculos de ponderadores
pesos_brutos <- sigma * cj
pesos_normalizados <- prop.table(pesos_brutos)
# Salida de resultados
resultados <- list(pesos_brutos = pesos_brutos,
pesos_normalizados = pesos_normalizados)
return(resultados) }#Para el ponderador 1
data_pon1<-as.matrix(matriz_A[, c("X3", "X4", "X8")])
pesos_CRITIC<-ponderadores_critic(matriz_datos = data_pon1) %>% print()## $pesos_brutos
## X3 X4 X8
## 2.098290 1.316004 2.389264
##
## $pesos_normalizados
## X3 X4 X8
## 0.3615524 0.2267580 0.4116896
Para el factor 2, utilice el método de Entropía para obtener los ponderadores normalizados para cada variable.
### Método de Entropía
ponderadores_entropia <- function(matriz_datos, constante = 0){
aij <- apply(X = matriz_datos + constante, MARGIN = 2, prop.table)
log_aij <- apply(X = aij, MARGIN = 2, log10)
aij_log_aij <- aij * log_aij
sum_aij_log_aij <- apply(X = aij_log_aij, MARGIN = 2, sum)
n <- nrow(matriz_datos)
K <- 1 / log10(n)
E <- (-K * sum_aij_log_aij)
pesos_brutos <- 1 - E
pesos_normalizados <- prop.table(pesos_brutos)
resultados <- list(pesos_brutos = pesos_brutos,
pesos_normalizados = pesos_normalizados)
return(resultados)
}data_pon2<-as.matrix(matriz_A[, c("X1", "X2", "X7")])
pesos_entropia<-ponderadores_entropia(matriz_datos = data_pon2) %>% print()## $pesos_brutos
## X1 X2 X7
## 0.01907864 0.24847378 0.13138306
##
## $pesos_normalizados
## X1 X2 X7
## 0.04782388 0.62284201 0.32933411
Para el factor 3, utilice el método de Ranking para obtener los ponderadores normalizados para cada variable (utilice la numeración de las variables para establecer la jerarquía).
Se pretende construir un indicador multivariado sintético sobre el Desarrollo en las Economías. Los indicadores a considerar son*: El índice de alfabetización (alfabet)[+]
El incremento de la población (inc_pob)[+]
La esperanza de vida femenina (espvidaf)[+]
La mortalidad infantil (mortinf)[-]
El número promedio de hijos por mujer (fertilid)[+]
La tasa de natalidad (tasa_nat)[+]
El logaritmo del PIB (log_pib)[+]
La población urbana (urbana)[+]
La tasa de mortalidad (tasa_mor)[-]
Se cargan los datos
Usando Análisis Factorial determine cuántos factores deberían retenerse.
¿Qué variables quedan representadas en cada factor?
Determine qué pesos deben asignarse a cada factor y a las variables dentro de cada uno de ellos.
Una empresa se encuentra calculando un Indicador del desempeño de sus líneas de producción, para ello no dispone de información previa, pero hay una importante consultora que posee expertos en el sector donde se ubica la empresa en cuestión. La consultora, ha han determinado 4 variables que definen adecuadamente el desempeño de las líneas de producción:
X1: Mantenimiento de la línea de producción
X2: Tamaño de planta
X3: Logística (entradas y salidas de insumos y producción)
X4: Capacidad de innovación.
Calcule los pesos normalizados, de las variables, usando los métodos de ranking directo, por suma, por reciproco y por ranking exponencial (use p=4)
Usando la técnica de comparación por pares, calcule los pesos normalizados para las variables:
Asumiendo que la opinión de los 3 expertos es igualmente válida.
Si el experto 1 se pondera con 0.25, el experto 2 con 0.35 y el experto 3 con 0.4