Europa - Asia Central - América Latina y el Caribe

Column

Migración neta en los países

Column

Número de países respecto a sus tipos de régimenes

Ranking de países con estabilidad política y ausencia de violencia

Column

Ranking de países con estabilidad política y ausencia de violencia

1. Variable central

Column

Histograma de la cantidad de migrantes o desplazados

Column {data-width=500}

Tabla de frecuencias

    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
-6673580   -37036    -9564  -317458     -875   942445 
   vars  n      mean      sd  median   trimmed      mad      min    max   range
X1    1 20 -317458.3 1513819 -9563.5 -23940.38 20940.98 -6673580 942445 7616025
    skew kurtosis       se
X1 -3.67    12.57 338500.3
      25%       50%       75% 
-37035.75  -9563.50   -875.00 

Gráfico de densidad

Boxplot

2. Correlación (VARIABLE DEPENDIENTE vs VARIABLES INDEPENDIENTES)

Column {data-width=750}

Porcentaje de Desarrollo Humano percibido por las personas migrantes en sus paises

Porcentaje de Índice de Gini

Nivel de democracia

DESPLAZADOS POR CONFLICTOS

RENTA NACIONAL

esperanza de vida al nacer

Column {data-width=250}

IDH


    Spearman's rank correlation rho

data:  data$MIGRACIONNETA and data$IDH
S = 33275, p-value = 2.765e-08
alternative hypothesis: true rho is not equal to 0
sample estimates:
      rho 
0.5792206 

ÍNDICE DE GINI


    Spearman's rank correlation rho

data:  data$MIGRACIONNETA and data$INDICE_GINI
S = 78264, p-value = 0.0002287
alternative hypothesis: true rho is not equal to 0
sample estimates:
       rho 
-0.4297358 

NIVEL DE DEMOCRACIA


    Spearman's rank correlation rho

data:  data$MIGRACIONNETA and data$INDICE_DEMOCRACIA
S = 29936, p-value = 9.24e-05
alternative hypothesis: true rho is not equal to 0
sample estimates:
      rho 
0.4531294 

DESPLAZADOS POR CONFLICTOS


    Spearman's rank correlation rho

data:  data$MIGRACIONNETA and data$TotalDESPLAZADOS_CA
S = 2125.2, p-value = 0.005364
alternative hypothesis: true rho is not equal to 0
sample estimates:
       rho 
-0.5978922 

RENTA NACIONAL


    Spearman's rank correlation rho

data:  data$MIGRACIONNETA and data$Renta_nacional_brutapercapita_dolares
S = 34526, p-value = 7.868e-08
alternative hypothesis: true rho is not equal to 0
sample estimates:
      rho 
0.5633995 

ESPERANZA DE VIDA AL NACER


    Spearman's rank correlation rho

data:  data$MIGRACIONNETA and data$Esperanza_de_vida_al_nacer_años
S = 44271, p-value = 5.517e-05
alternative hypothesis: true rho is not equal to 0
sample estimates:
      rho 
0.4401669 

3. Regresiones

Column {data-width=500}

Regresión Gaussiana -> Hipotesis 1: A nivel continental, la migración neta de las personas está afectada por el respeto a sus derechos civiles.

Resumen de Regresion Lineal
 OLS Migrantes (I)
(Intercept) -837136.792
(1110601.362)
derechos_civiles 91307.826
(185453.169)
Num.Obs. 20
R2 0.013
R2 Adj. -0.042
AIC 630.7
BIC 633.7
Log.Lik. -312.335
F 0.242
RMSE 1465652.59
+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001

Analizando regresión gaussiana -> Hipotesis 2: A nivel continental, la migración neta de personas está afectada por el respeto a sus derechos civiles, el desarrollo humano en sus paises, el índice de gini, la estimación de la gobernanza en sus paises de origen, su indice de democracia y la renta nacional anual en dólares.

Regresiones Lineales
 OLS migrantes (I)  OLS migrantes (II)
(Intercept) -837136.792 -3118436.868
(1110601.362) (4602119.430)
derechos_civiles 91307.826 390198.595
(185453.169) (297334.387)
IDH 5905233.889
(6234714.101)
INDICE_GINI 60086.985+
(28370.607)
Estimate 1907498.588**
(554115.140)
INDICE_DEMOCRACIA -999791.386*
(381596.180)
Renta_nacional_brutapercapita_dolares 1.800
(42.955)
Num.Obs. 20 20
R2 0.013 0.704
R2 Adj. -0.042 0.567
AIC 630.7 616.6
BIC 633.7 624.6
Log.Lik. -312.335 -300.297
F 0.242 5.152
RMSE 1465652.59 802826.10
+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001

Analizando regresión gaussiana

Analizando la variable dependiente

Tests de normalidad

# A tibble: 1 × 3
  `testshapiro$p.value` `testKS$p.value` `testKS$statistic`
                  <dbl>            <dbl>              <dbl>
1          0.0000000130         1.52e-11                0.8

Column {data-width=500}

Regresión Poisson -> Hipoótesis: la cantidad de personas desplazadas está afectada por el desarrollo humano, el indice de Gini y la migración neta de personas

Regresiones Poisson Anidadas
 POISSON desplazados (I)
(Intercept) -1.548***
(0.006)
IDH 8.390***
(0.006)
INDICE_GINI 0.182***
(0.000)
MIGRACIONNETA 0.000***
(0.000)
Num.Obs. 20
AIC 5672103.9
BIC 5672107.9
Log.Lik. -2836047.947
RMSE 537098.22
+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001
                                  2.5 %       97.5 %
(Intercept)      0.2126921    0.2102149    0.2151975
IDH           4400.9436485 4350.4390572 4452.0471654
INDICE_GINI      1.1991192    1.1989870    1.1992514
MIGRACIONNETA    0.9999990    0.9999990    0.9999991

Equidispersión?

Test de Equidispersión
Es probable?
overdispersion TRUE
underdispersion FALSE

Comparando modelos 1

EXP() de la Regresiones Poisson y Binomial Negativa
 Poisson asegurados (II)  Binomial Negativa asegurados (II)
(Intercept) 0.213*** 5.805
[0.210, 0.215] [0.028, 1436.997]
IDH 4400.944*** 564.764*
[4350.439, 4452.047] [2.501, 71680.336]
INDICE_GINI 1.199*** 1.154***
[1.199, 1.199] [1.090, 1.235]
MIGRACIONNETA 1.000*** 1.000***
[1.000, 1.000] [1.000, 1.000]
Num.Obs. 20 20
AIC 5672103.9 540.8
BIC 5672107.9 545.8
Log.Lik. -2836047.947 -265.417
F 11.327
RMSE 537098.22 717634.75
+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001

Comparando modelos 2

Tabla ANOVA para comparar modelos
Resid. Df Resid. Dev Df Deviance Pr(>Chi)
16 5.671827e+06 NA NA NA
16 2.344124e+01 0 5671803 NA

Comparando modelos 3

Gráfico


Call:
glm.nb(formula = h1off, data = poisson_data, init.theta = 0.882596893, 
    link = log)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.7826  -1.1779  -0.1742   0.5767   1.0165  

Coefficients:
                Estimate Std. Error z value Pr(>|z|)    
(Intercept)    1.759e+00  2.955e+00   0.595   0.5517    
IDH            6.336e+00  2.935e+00   2.159   0.0309 *  
INDICE_GINI    1.431e-01  3.123e-02   4.583 4.58e-06 ***
MIGRACIONNETA -8.544e-07  1.723e-07  -4.960 7.05e-07 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for Negative Binomial(0.8826) family taken to be 1)

    Null deviance: 65.270  on 19  degrees of freedom
Residual deviance: 23.441  on 16  degrees of freedom
AIC: 540.83

Number of Fisher Scoring iterations: 1

              Theta:  0.883 
          Std. Err.:  0.243 

 2 x log-likelihood:  -530.835 

4. Análisis de conglomerados

Column {data-width=500}

BOXPLOT 1

BOXPLOT 2

BOXPLOT 3

CORRELACION

Column {data-width=500}

PAM

PAM - agrupamiento y clasificación de las observaciones en 4 grupos basados en la matriz de distancia

COUNTRY_NAME INDICE_GINI MIGRACIONNETA IDH Renta_nacional_brutapercapita_dolares INDICE_DEMOCRACIA pam
1 27.9 -5000 0.786 15388.300 5.63 1
2 32.7 -500 0.779 16571.413 5.00 1
3 52.0 6425 0.760 14615.892 6.78 2
4 54.8 -167924 0.758 15013.927 6.72 2
5 29.4 5000 0.907 40136.895 7.38 3
6 38.8 -23249 0.674 8886.174 5.06 4
7 29.8 66601 0.910 47378.743 8.07 3
8 33.5 -9999 0.814 15952.025 5.20 1
9 48.3 -9128 0.629 8996.416 4.68 4
10 41.1 -32248 0.552 2801.713 2.81 4
11 48.2 -5374 0.624 5271.605 5.15 4
12 26.4 -9999 0.701 4781.692 3.62 1
13 43.5 -51399 0.781 19138.007 5.25 1
14 47.7 -8000 0.669 5426.506 2.50 4
15 31.4 -1000 0.765 16395.752 6.10 1

Países con baja cohesión de cluster?

NULL

Gráfica

AGNES

AGNES - agrupamiento y clasificación de las observaciones en 4 grupos basados en la matriz de distancia - métodos de clustering jerárquico aglomerativo

COUNTRY_NAME INDICE_GINI MIGRACIONNETA IDH Renta_nacional_brutapercapita_dolares INDICE_DEMOCRACIA pam agnes
1 27.9 -5000 0.786 15388.300 5.63 1 1
2 32.7 -500 0.779 16571.413 5.00 1 1
3 52.0 6425 0.760 14615.892 6.78 2 1
4 54.8 -167924 0.758 15013.927 6.72 2 1
5 29.4 5000 0.907 40136.895 7.38 3 2
6 38.8 -23249 0.674 8886.174 5.06 4 3
7 29.8 66601 0.910 47378.743 8.07 3 2
8 33.5 -9999 0.814 15952.025 5.20 1 1
9 48.3 -9128 0.629 8996.416 4.68 4 3
10 41.1 -32248 0.552 2801.713 2.81 4 3
11 48.2 -5374 0.624 5271.605 5.15 4 3
12 26.4 -9999 0.701 4781.692 3.62 1 3
13 43.5 -51399 0.781 19138.007 5.25 1 1
14 47.7 -8000 0.669 5426.506 2.50 4 3
15 31.4 -1000 0.765 16395.752 6.10 1 1

Países con baja cohesión de cluster?

NULL

Gráfico

DIANA

DIANA - agrupamiento y clasificación de las observaciones en 4 grupos basados en la matriz de distancia - métodos de clustering jerárquico aglomerativo

COUNTRY_NAME INDICE_GINI MIGRACIONNETA IDH Renta_nacional_brutapercapita_dolares INDICE_DEMOCRACIA pam agnes diana
1 27.9 -5000 0.786 15388.300 5.63 1 1 1
2 32.7 -500 0.779 16571.413 5.00 1 1 1
3 52.0 6425 0.760 14615.892 6.78 2 1 2
4 54.8 -167924 0.758 15013.927 6.72 2 1 2
5 29.4 5000 0.907 40136.895 7.38 3 2 3
6 38.8 -23249 0.674 8886.174 5.06 4 3 2
7 29.8 66601 0.910 47378.743 8.07 3 2 3
8 33.5 -9999 0.814 15952.025 5.20 1 1 1
9 48.3 -9128 0.629 8996.416 4.68 4 3 2
10 41.1 -32248 0.552 2801.713 2.81 4 3 2
11 48.2 -5374 0.624 5271.605 5.15 4 3 2
12 26.4 -9999 0.701 4781.692 3.62 1 3 1
13 43.5 -51399 0.781 19138.007 5.25 1 1 1
14 47.7 -8000 0.669 5426.506 2.50 4 3 2
15 31.4 -1000 0.765 16395.752 6.10 1 1 1
16 40.3 -60652 0.762 11916.360 5.92 1 1 1
17 35.1 942445 0.821 26991.850 2.28 1 1 1
18 32.0 -9999 0.805 19494.009 6.33 1 1 1
19 45.3 -301586 0.855 32833.535 4.35 1 1 1
20 25.6 -6673580 0.734 11416.217 5.42 1 4 4

Países con baja cohesión de cluster?

NULL

Gráfico

---
title: "Factores que influyeron en la migración de personas en países de Europa, Asia central y América Latina y el Caribe"
author: Arianaa Baldeon
output: 
  flexdashboard::flex_dashboard:
    theme: journal
    social: menu
    source_code: embed
---

```{r setup, include = FALSE}
library(flexdashboard)
library(shiny)
library(jsonlite)
#library(maptools)
library(ggplot2)
library(tidyr)
library(dplyr)
library(purrr)
library(leaflet)
library(plotly)
library(rio)
library(readxl)

setwd("C:/Users/arian/OneDrive/Documentos/TRABAJO ESTADISTICA FINAL DASHNOARD")
library(rio)
library(readr)
library(readxl)
data = read_excel("DATA2024MIGRACION.Xlsx")

str(data)
data$year= as.numeric(data$year)
data$INDICE_DEMOCRACIA= as.numeric(data$INDICE_DEMOCRACIA)
data$Procesoelectoral_y_pluralismo= as.numeric(data$Procesoelectoral_y_pluralismo)
data$Funcionamiento_del_gobierno= as.numeric(data$Funcionamiento_del_gobierno)
data$participacion_politica= as.numeric(data$participacion_politica)
data$cultura_politica= as.numeric(data$cultura_politica)
data$derechos_civiles= as.numeric(data$derechos_civiles)
```

Europa - Asia Central - América Latina y el Caribe{data-icon="fa-signal"}
===================================== 
Column {data-width=650}
-----------------------------------------------------------------------

### Migración neta en los países 

```{r}
library(plotly)
library(dplyr)

# Crear un mapa con años interactivos
fig <- plot_ly(data = data, 
               type = "choropleth",
               locations = ~COUNTRY_CODE,
               #frame = ~year,  # Agregar el año como una dimensión interactiva
               z = ~MIGRACIONNETA,
               text = ~paste("País:", COUNTRY_NAME, "<br>Año:", year,"<br>Renta nacional per capita en dólares:", Renta_nacional_brutapercapita_dolares,
                             "<br>Migración Neta:", MIGRACIONNETA),
               colorscale = "Viridis",
               colorbar = list(title = "Migración Neta")) %>%
  layout(title = "Mapa Mundial de Migración Neta por País en el 2022",
         geo = list(projection = list(type = 'natural earth'),
                    showframe = FALSE))

fig
```

Column {data-width=350}
-----------------------------------------------------------------------

### Número de países respecto a sus tipos de régimenes 

```{r}
library(ggplot2)
library(plotly)

data_TR <- data %>%
  filter(!is.na(Tipo_regimen)) 

# Reemplaza 'tipo_regimen' con el nombre real de tu variable en los datos

data_TR$Tipo_regimen <- factor(data_TR$Tipo_regimen, 
                                    levels = c(1, 2, 3, 4),
                                    labels = c("Democracia Plena", 
                                               "Democracia Deficiente", 
                                               "Regímenes Híbridos", 
                                               "Regímenes Autoritarios"))

# Creamos un histograma con ggplot2
ggplot(data_TR, aes(x = Tipo_regimen, fill = Tipo_regimen)) +
  geom_bar() +  # Usa geom_bar() para contar observaciones por categoría
  scale_fill_manual(values = c("Democracia Plena" = "#28b463",       # Azul
                               "Democracia Deficiente" = "#e67e22",  # Naranja
                               "Regímenes Híbridos" = "#F08080",     # Verde
                               "Regímenes Autoritarios" = "#CD5C5C") # Rojo
  ) +
  labs(title = "Distribución de Países por Tipo de Régimen",
       x = "Tipo de Régimen",
       y = "frecuencia",
       fill = "Tipo de Régimen") +  # Leyenda
  theme_minimal(base_size = 14) +
  theme(legend.position = "right", 
        plot.title = element_text(face = "bold", size = 18),
        axis.title = element_text(size = 14))

```

### Ranking de países con estabilidad política y ausencia de violencia
```{r}
library(corrplot)
library(performance)
library(dplyr)

# Matriz de correlación

corr_matrix=cor(data %>%select(IDH, INDICE_GINI, INDICE_DEMOCRACIA,Renta_nacional_brutapercapita_dolares), use = "complete.obs")

# Gráfico de correlación
corrplot(corr_matrix, method = "circle", type = "upper", tl.cex = 0.8,
         title = "Matriz de Correlación")

```

Column {data-width=350}
-----------------------------------------------------------------------
### Ranking de países con estabilidad política y ausencia de violencia
```{r}
# Instalar y cargar las librerías necesarias
if (!require("wordcloud2")) install.packages("wordcloud2")
#if (!require("dplyr")) install.packages("dplyr")
library(wordcloud2)
library(dplyr)

# Filtrar y preparar los datos: países y rank
wordcloud_data <- data %>%
  select(COUNTRY_NAME, Rank) %>%          # Seleccionar columnas relevantes
  filter(!is.na(Rank))            # Eliminar valores faltantes

# Normalizar los valores de rank para ser usados como frecuencias
wordcloud_data <- wordcloud_data %>%
  mutate(rank_scaled = scales::rescale(Rank, to = c(10, 100)))  # Escalar rank para mejor visualización

# Crear el Word Cloud
wordcloud2(
  data = wordcloud_data %>% select(COUNTRY_NAME, rank_scaled),  # Seleccionar columnas relevantes para el Word Cloud
  size = 1,              # Tamaño global del Word Cloud
  color = "random-light", # Colores aleatorios claros
  backgroundColor = "#96305a" # Fondo negro para contraste
)

```

1. Variable central {data-icon="fa-signal"}
===================================== 

Column {data-width=500}
-----------------------------------------------------------------------

### Histograma de la cantidad de migrantes o desplazados
```{r}
dataprimerapart= data[complete.cases(data),]

# Crear un histograma
hist(dataprimerapart$MIGRACIONNETA, main = "histograma de migración", col = "lightblue", border = "black", xlab = "Desplazamiento")

# Añadir líneas para mostrar la media 
abline(v = mean(dataprimerapart$MIGRACIONNETA), col = "red", lty = 2, lwd = 2)  # Línea para la media


# Añadir texto para mostrar la media 
text(mean(dataprimerapart$MIGRACIONNETA), 10, "Media", col = "red", pos = 4)

```

Column {data-width=500} {.tabset}
-----------------------------------------------------------------------

### Tabla de frecuencias

```{r}

# Tabla de frecuencias

library(psych)
summary(dataprimerapart$MIGRACIONNETA)

# Resumen gráfico
describe(dataprimerapart$MIGRACIONNETA)

quantile(dataprimerapart$MIGRACIONNETA, c(0.25, 0.5, 0.75))

```


### Gráfico de densidad 
```{r}
# Gráfico de densidad
plot(density(dataprimerapart$MIGRACIONNETA), main = "Gráfico de Densidad de población migrante en Europa y Asia", ylab = "Densidad", col = "orange", lwd = 2)
```

### Boxplot
```{r}
# Diagrama de caja
boxplot(dataprimerapart$MIGRACIONNETA, main = "Diagrama de Caja de cantidad de migrantes en Europa,América Latina y Asia Central",ylim = c(-6673580, 942445), ylab = "Migración neta", col = "lightgreen")
```

2. Correlación (VARIABLE DEPENDIENTE vs VARIABLES INDEPENDIENTES) {data-icon="fa-signal"}
===================================== 

Column {data-width=750} {.tabset}
-----------------------------------------------------------------------

### Porcentaje de Desarrollo Humano percibido por las personas migrantes en sus paises 

```{r}
library(ggplot2)

base=ggplot(data = data, aes(x=IDH, y=MIGRACIONNETA))
scatter = base + geom_point()
library(ggrepel)
scatterText = scatter + geom_text_repel(aes(label=COUNTRY_NAME),size=2)
scatterText

```

### Porcentaje de Índice de Gini

```{r}
library(ggplot2)

base=ggplot(data=data, aes(x=INDICE_GINI, y=MIGRACIONNETA))
scatter = base + geom_point()
library(ggrepel)
scatterText = scatter + geom_text_repel(aes(label=COUNTRY_NAME),size=2)
scatterText


```

### Nivel de democracia

```{r}
library(ggplot2)

base=ggplot(data=data, aes(x=INDICE_DEMOCRACIA, y=MIGRACIONNETA))
scatter3 = base + geom_point()
library(ggrepel)
scatterText3 = scatter3 + geom_text_repel(aes(label=COUNTRY_NAME),size=2)
scatterText3
```


### DESPLAZADOS POR CONFLICTOS 

```{r}
library(ggplot2)

base=ggplot(data=data, aes(x=TotalDESPLAZADOS_CA, y=MIGRACIONNETA))
scatter4 = base + geom_point()
library(ggrepel)
scatterText4 = scatter4 + geom_text_repel(aes(label=COUNTRY_NAME),size=2)
scatterText4
```

### RENTA NACIONAL 

```{r}
library(ggplot2)

base=ggplot(data=data, aes(x=Renta_nacional_brutapercapita_dolares, y=MIGRACIONNETA))
scatter5 = base + geom_point()
library(ggrepel)
scatterText5 = scatter5 + geom_text_repel(aes(label=COUNTRY_NAME),size=2)
scatterText5
```

### esperanza de vida al nacer 

```{r}
library(ggplot2)

base=ggplot(data=data, aes(x=Esperanza_de_vida_al_nacer_años, y=MIGRACIONNETA))
scatter6 = base + geom_point()
library(ggrepel)
scatterText6 = scatter6 + geom_text_repel(aes(label=COUNTRY_NAME),size=2)
scatterText6
```


Column {data-width=250} {.tabset}
-----------------------------------------------------------------------
### IDH

```{r}
library(corrplot)
cor.test(data$MIGRACIONNETA, data$IDH, method = c("spearman"))
```


### ÍNDICE DE GINI

```{r}
cor.test(data$MIGRACIONNETA, data$INDICE_GINI, method = c("spearman"))
```


### NIVEL DE DEMOCRACIA

```{r}
cor.test(data$MIGRACIONNETA, data$INDICE_DEMOCRACIA, method = c("spearman"))
```


### DESPLAZADOS POR CONFLICTOS

```{r}
cor.test(data$MIGRACIONNETA, data$TotalDESPLAZADOS_CA, method = c("spearman"))
```


### RENTA NACIONAL

```{r}
cor.test(data$MIGRACIONNETA, data$Renta_nacional_brutapercapita_dolares, method = c("spearman"))
```


### ESPERANZA DE VIDA AL NACER

```{r}

cor.test(data$MIGRACIONNETA, data$Esperanza_de_vida_al_nacer_años, method = c("spearman"))
```
3. Regresiones {data-icon="fa-signal"}
===================================== 

Column {data-width=500} {.tabset}
-----------------------------------------------------------------------

### Regresión Gaussiana -> Hipotesis 1: A nivel continental, la migración neta de las personas está afectada por el respeto a sus derechos civiles.
```{r}
library(knitr)
library(modelsummary)

h1GAUSS=formula(MIGRACIONNETA~derechos_civiles)

rl1=lm(h1GAUSS, data = dataprimerapart)

model1=list('OLS Migrantes (I)'=rl1)
modelsummary(model1, title = "Resumen de Regresion Lineal",
             stars = TRUE,
             output = "kableExtra")
```


### Analizando regresión gaussiana -> Hipotesis 2: A nivel continental, la migración neta de personas está afectada por el respeto a sus derechos civiles, el desarrollo humano en sus paises, el índice de gini, la estimación de la gobernanza en sus paises de origen, su indice de democracia y la renta nacional anual en dólares. 
```{r}
library(knitr)
library(modelsummary)

h2GAUSS=formula(MIGRACIONNETA ~ derechos_civiles + IDH + INDICE_GINI + Estimate + INDICE_DEMOCRACIA+Renta_nacional_brutapercapita_dolares)

rl2=lm(h2GAUSS, data = dataprimerapart)

modelslm=list('OLS migrantes (I)'=rl1,'OLS migrantes (II)'=rl2)
modelsummary(modelslm, title = "Regresiones Lineales",
             stars = TRUE,
             output = "kableExtra")
```

### Analizando regresión gaussiana

```{r}
par(mfrow = c(2, 2))  
plot(rl2, 1,caption = '');title(main="Linealidad")
plot(rl2, 2, caption = '');title(main="Normalidad")
plot(rl2, 3, caption = '');title(main="Homocedasticidad")
plot(rl2, 5, caption = '');title(main="Influyentes")
```

### Analizando la variable dependiente

```{r}
library(ggplot2)
VarDep=dataprimerapart$MIGRACIONNETA
descris=list(min=min(VarDep),
             max=max(VarDep),
             media=round(mean(VarDep),2),
             var=round(var(VarDep),2),
             asim=round(e1071::skewness(VarDep),2),
             kurt=round(e1071::kurtosis(VarDep),2))

base=ggplot(data=data, aes(x=MIGRACIONNETA)) + theme_classic()
hist=base + geom_histogram(bins=10)
histInfo=hist + annotate("text", x = 6000000, y = 1000,
                         color='grey50',
                       label = paste0("Minimo: ",descris$min))
histInfo = histInfo + annotate("text", x = 6000000, y = 900,
                       color='grey50',
                       label = paste0("Máximo: ",descris$max))

histInfo = histInfo + annotate("text", x = 6000000, y = 650,
                       color='grey50',
                       label = paste0("Media: ",descris$media))

histInfo = histInfo + annotate("text", x = 6000000, y = 500,
                       color='grey50',
                       label = paste0("Varianza: ",descris$var))

histInfo = histInfo + annotate("text", x = 6000000, y = 350,
                       color='grey50',
                       label = paste0("Asimetría: ",descris$asim))

histInfo = histInfo + annotate("text", x = 6000000, y = 200,
                       color='grey50',
                       label = paste0("Curtosis: ",descris$kurt))

histInfo
```

### Tests de normalidad

```{r}
library(dplyr)
library(tidyr)

testshapiro <- shapiro.test(dataprimerapart$MIGRACIONNETA)

testKS <- ks.test(dataprimerapart$MIGRACIONNETA,'pnorm')

resultados <- dataprimerapart %>%
  summarise(testshapiro$p.value,
            testKS$p.value,
            testKS$statistic)
resultados
```



Column {data-width=500} {.tabset}
-----------------------------------------------------------------------
### Regresión Poisson -> Hipoótesis: la cantidad de personas desplazadas está afectada por el desarrollo humano, el indice de Gini y la migración neta de personas 

```{r}
# Asegúrate de que los datos necesarios estén disponibles
# Creamos la fórmula para el segundo modelo
poisson_data <- data %>%
  filter(!is.na(TotalDESPLAZADOS_CA) & 
         !is.na(IDH) & 
         !is.na(INDICE_GINI) & 
         !is.na(MIGRACIONNETA))


h1poisson <- formula(TotalDESPLAZADOS_CA ~ IDH + INDICE_GINI + MIGRACIONNETA)

# Ajustamos la regresión de Poisson con offset
rp1 <- glm(h1poisson, data = poisson_data, 
           #offset = log(poblacion_Total), # Cambia "poblacion_Total" por la columna correspondiente
           family = poisson(link = "log"))

# Lista de modelos para comparar (incluye un modelo rp1 si lo tienes ajustado previamente)
modelsPois <- list('POISSON desplazados (I)' = rp1)          # Modelo rp1

# Usar la librería modelsummary para comparar modelos
#if (!require("modelsummary")) install.packages("modelsummary")
library(modelsummary)

modelsummary(modelsPois, 
             title = "Regresiones Poisson Anidadas",
             stars = TRUE,
             output = "kableExtra")

```

```{r}
# mas simple:
cbind(exp(coef(rp1)),exp(confint(rp1)))
```

### Equidispersión?

```{r}
library(magrittr)
library(knitr)
overdispersion=AER::dispersiontest(rp1,alternative='greater')$ p.value<0.05
underdispersion=AER::dispersiontest(rp1,alternative='less')$ p.value<0.05
# tabla
testResult=as.data.frame(rbind(overdispersion,underdispersion))
names(testResult)='Es probable?'
testResult%>%kable(caption = "Test de Equidispersión")%>%kableExtra::kable_styling()
```
### Comparando modelos 1
```{r}
library(MASS)
h1off=formula(TotalDESPLAZADOS_CA ~ IDH + INDICE_GINI + MIGRACIONNETA)

rbn=glm.nb(h1off,data=poisson_data)

modelsQP_BN=list('Poisson asegurados (II)'=rp1,
                 'Binomial Negativa asegurados (II)'=rbn)

library(modelsummary)
library(kableExtra)
modelsummary(modelsQP_BN,
             #fmt = formatoNum,
             exponentiate = T, 
             statistic = 'conf.int',
             title = "EXP() de la Regresiones Poisson y Binomial Negativa",
             stars = TRUE,
             output = "kableExtra")
```

### Comparando modelos 2

```{r}
anova(rp1,rbn, test = "Chisq") %>%
kable(caption = "Tabla ANOVA para comparar modelos")%>%kableExtra::kable_styling(full_width = FALSE)
```


### Comparando modelos 3

```{r}
library(ggplot2)
dotwhisker::dwplot(list(Poisson=rp1,BinomialNegativa=rbn),exp=T) + scale_y_discrete(labels=c("MIGRACION NETA","INDICE DE GINI", "IDH")) + scale_color_discrete(name="Modelos para:\nCantidad de desplazados") + geom_vline(
           xintercept = 1,
           colour = "grey60",
           linetype = 2
       )
```


### Gráfico

```{r}
library(plotly)
# Resumen del modelo
summary(rbn)

# Realizar predicciones
poisson_data <- poisson_data %>%
  mutate(predicted = predict(rbn, type = "response"))

# Visualizar predicciones vs valores observados
GRAFICOPOISSON = ggplot(poisson_data, aes(x = TotalDESPLAZADOS_CA, y = predicted)) +
  geom_point() +  # Puntos de dispersión
  geom_smooth(method = "lm", se = FALSE, color = "orange") +  # Línea de regresión
  geom_text(aes(label = COUNTRY_NAME), vjust = -0.5, hjust = 1.5, size = 3) +  # Agregar etiquetas de los países
  labs(title = "Regresión de Poisson: Valores Observados vs Predichos",
       x = "Valores Observados",
       y = "Valores Predichos") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))  # Rotar etiquetas del eje X si es necesario
# Convertir el gráfico de ggplot a interactivo con plotly
GP_interactivo <- ggplotly(GRAFICOPOISSON)

# Mostrar el gráfico interactivo
GP_interactivo
```

4. Análisis de conglomerados {data-icon="fa-signal"}
===================================== 

Column {data-width=500} {.tabset}
-----------------------------------------------------------------------
### BOXPLOT 1
```{r}
boxplot(dataprimerapart[,c(4:5, 9, 13:14)], method='standardize',horizontal = F,las=2,cex.axis = 0.5)
```

### BOXPLOT 2
```{r}
library(BBmisc)
library(ggplot2)
boxplot(normalize(dataprimerapart[,c(4:5, 9, 13:14)],method='range',range=c(0,10)))
```

### BOXPLOT 3
```{r}
library(BBmisc)
library(ggplot2)
boxplot(normalize(dataprimerapart[,c(4:5, 9, 13:14)],method='standardize'))
```

### CORRELACION
```{r}
library(ggplot2)
library(GGally)
library(ggcorrplot)
CORCLAUS = cor(dataprimerapart[,c(4:5, 9, 13:14)])

# Usando ggcorrplot para una visualización atractiva
ggcorrplot(CORCLAUS, 
           method = "circle",    # Usa círculos para las correlaciones
           type = "full",       # Muestra solo la mitad inferior
           lab = TRUE,           # Agrega los valores de correlación a los círculos
           colors = c("blue", "white", "red"),  # Colores para las correlaciones negativas, cero y positivas
           title = "Matriz de Correlación",    # Título
           ggtheme = theme_minimal())          # Estilo minimalista


```

Column {data-width=500} {.tabset}
-----------------------------------------------------------------------
```{r}
#library(dplyr)
#dataClus=dataprimerapart[,c(4:5, 9, 13:14)]
#row.names(dataClus)=dataprimerapart$COUNTRY_NAME

library(tibble)
dataClus <- dataprimerapart[, c(4:5, 9, 13:14)]
dataClus <- rownames_to_column(as.data.frame(dataClus), var = "COUNTRY_NAME")
```
```{r}

dataClus$COUNTRY_NAME=as.numeric(dataClus$COUNTRY_NAME)
#str(dataClus)
```
```{r}
library(cluster)
g.dist = daisy(dataClus, metric="gower")
```

### PAM
```{r}
library(factoextra)
library(ggplot2)
fviz_nbclust(dataClus, pam,diss=g.dist,method = "gap_stat",k.max = 10,verbose = F)
```

### PAM - agrupamiento y clasificación de las observaciones en 4 grupos basados en la matriz de distancia
```{r}
library(kableExtra)
set.seed(123)
res.pam=pam(g.dist,4,cluster.only = F)

#nueva columna
dataClus$pam=res.pam$cluster

# ver

head(dataClus,15)%>%kbl()%>%kable_styling()
```

### Países con baja cohesión de cluster?
```{r}
silPAM=data.frame(res.pam$silinfo$widths)
silPAM$country_name=row.names(silPAM)
poorPAM=silPAM[silPAM$sil_width<0,'país']%>%sort()
poorPAM
```
### Gráfica
```{r}
fviz_silhouette(res.pam,print.summary = F)
```

### AGNES
```{r}
fviz_nbclust(dataClus, hcut,diss=g.dist,method = "gap_stat",k.max = 10,verbose = F,hc_func = "agnes")
```

### AGNES - agrupamiento y clasificación de las observaciones en 4 grupos basados en la matriz de distancia - métodos de clustering jerárquico aglomerativo
```{r}
set.seed(123)
library(factoextra)

res.agnes<- hcut(g.dist, k = 4,hc_func='agnes',hc_method = "ward.D")

dataClus$agnes=res.agnes$cluster

# ver

head(dataClus,15)%>%kbl()%>%kable_styling()
```

### Países con baja cohesión de cluster?
```{r}
silAGNES=data.frame(res.agnes$silinfo$widths)
silAGNES$country=row.names(silAGNES)
poorAGNES=silAGNES[silAGNES$sil_width<0,'país']%>%sort()
poorAGNES
```
### Gráfico
```{r}
fviz_silhouette(res.agnes,print.summary = F)
```

### DIANA
```{r}
fviz_nbclust(dataClus, hcut,diss=g.dist,method = "gap_stat",k.max = 10,verbose = F,hc_func = "diana")
```

### DIANA - agrupamiento y clasificación de las observaciones en 4 grupos basados en la matriz de distancia - métodos de clustering jerárquico aglomerativo
```{r}
set.seed(123)
res.diana <- hcut(g.dist, k = 4,hc_func='diana')
dataClus$diana=res.diana$cluster
# veamos
head(dataClus,150)%>%kbl%>%kable_styling()
```

### Países con baja cohesión de cluster?
```{r}
silDIANA=data.frame(res.diana$silinfo$widths)
silDIANA$country=row.names(silDIANA)
poorDIANA=silDIANA[silDIANA$sil_width<0,'país']%>%sort()
poorDIANA
```

### Gráfico
```{r}
fviz_silhouette(res.diana,print.summary = F)
```