R Markdown

  1. Para la data de mortalidad (nc.sids)infantil del ejemplo 1, describir los datos y variables. Describir el estudio y generar conclusiones a partir de la estadística descriptiva.

Inicialmente la base de datos nc.sids hace referencia a los datos de muestra sobre el síndrome de muerte súbita del lactante (SMSL) para 100 condados de Carolina del Norte, en dos períodos de tiempo (1974-78 y 1979-84), incluyen recuentos de números de nacidos vivos y números de muertes súbitas infantiles.

Especificamente, la base de datos contiene 15 variables, que ayudan a describir la siguiente información:

- SP_ID: Identificación de polígonos espaciales

- CNTY_ID: identificación del condado

- Este: distancias al este, sede del condado, millas, proyección local

- Norte: coordenadas norte, sede del condado, millas, proyección local

- L_id: Cressie y Read (1985) Índice L

- M_id: Cressie y Read (1985) Índice M

- nombres: nombres de condados

- ÁREA: Áreas de polígonos del condado en unidades de grados

- PERÍMETRO: Perímetros de los polígonos del condado en unidades de grados

- CNTY_: Identificación interna del condado

- NOMBRE: Nombres de condados

- FIPS: Identificación del condado

- FIPSNO: Identificación del condado

- CRESS_ID: Identificación de los documentos de Cressie

- BIR74: nacimientos, 1974-78

- SID74: Muertes por SID, 1974-78

- NWBIR74: nacimientos de personas no blancas, 1974-78

- BIR79: nacimientos, 1979-84

- SID79: Muertes por SID, 1979-84

- NWBIR79: nacimientos de personas no blancas, 1979-84

La estructura de esta base de datos podemos apreciarlos a continuación

Base datos

library(sp)
library(sf)
library(spData)
library(spdep)
library(gstat)
library(ggplot2)
library(raster)
library(spData)

data("nc.sids")
head(nc.sids)
str(nc.sids)
'data.frame':   100 obs. of  15 variables:
 $ CNTY.ID: num  1825 1827 1828 1831 1832 ...
 $ BIR74  : num  1091 487 3188 508 1421 ...
 $ SID74  : num  1 0 5 1 9 7 0 0 4 1 ...
 $ NWBIR74: num  10 10 208 123 1066 ...
 $ BIR79  : num  1364 542 3616 830 1606 ...
 $ SID79  : num  0 3 6 2 3 5 2 2 2 5 ...
 $ NWBIR79: num  19 12 260 145 1197 ...
 $ east   : num  164 183 204 461 385 411 453 421 344 233 ...
 $ north  : num  176 182 174 182 176 176 173 177 177 175 ...
 $ x      : num  -81.7 -50.1 -16.1 406 281.1 ...
 $ y      : num  4052 4060 4044 4035 4030 ...
 $ lon    : num  -81.5 -81.1 -80.8 -76 -77.4 ...
 $ lat    : num  36.4 36.5 36.4 36.5 36.4 ...
 $ L.id   : num  1 1 1 1 1 1 1 1 1 1 ...
 $ M.id   : num  2 2 2 4 4 4 4 4 3 2 ...
dim(nc.sids)
[1] 100  15

Visualización y enfoque

Ahora bien, dado que el enfoque es el número de muertes súbitas a continuación se presenta la distribución espacial de estas en los condados de Carolina del Norte del total de registros durante los dos periodos de observación (1974-78 y 1979-84).

library(ggplot2)
library(sf)
library(spData)
library(dplyr)
library(conflicted)

setwd("C:/Users/brial/OneDrive/Documentos/Yefri/Semestre VIII/Estadistica_Espacial/Archivos_R")
data("nc.sids")

#Shapefile de North Carolina
caroShape <- st_read("North_Carolina_State_and_County_Boundary_Polygons/North_Carolina_State_and_County_Boundary_Polygons.shp",
                     quiet = TRUE)

conflict_prefer("select", "dplyr")
county <- row.names(nc.sids)
data <- nc.sids %>%
  mutate(county = county) %>% 
  right_join(caroShape, by = c('county' = 'County')) %>%
  select(CNTY.ID, BIR74, SID74, NWBIR74, BIR79, SID79, NWBIR79, OBJECTID,
         county, geometry) %>%
  st_as_sf()

pos_simbolos <- st_centroid(data, of_largest_polygon = TRUE)

ggplot(data = data) + geom_sf(fill="royalblue",col="black",linetype="solid") +
  geom_sf(data = pos_simbolos, aes(size = SID74+SID79), color = 'red') + 
  labs(title = 'Distribución espacial de las muertes subitas en Carolina de Norte 1974-82',
       size = 'Muertes súbitas', x = 'Longitud', y = 'Latitud') + 
  theme(plot.title = element_text(hjust = 0.5, face = 'bold'), legend.position = 'bottom', 
        legend.direction = 'horizontal', panel.background=element_rect(fill = "white"),
        panel.grid.major=element_line(color="white"),
        panel.grid.minor=element_line(color="white"))

Por el grafico se puede visualizar que si bien las muertes súbitas que superan la cantidad de 75 son pocas, el rango entre [25-75) esta fuertemente presente en la estructura del mapa, lo que podria ser un factor alarmante.

Estadísticas descriptivas

Para desarrollo de las estadisticas descriptivas podemos utilizar el comando summary(), el cual nos proporciona estadisticas de tendencia central y los respectivos cuartiles del conjunto de datos.

summary(nc.sids[,2:7])
     BIR74           SID74          NWBIR74           BIR79      
 Min.   :  248   Min.   : 0.00   Min.   :   1.0   Min.   :  319  
 1st Qu.: 1077   1st Qu.: 2.00   1st Qu.: 190.0   1st Qu.: 1336  
 Median : 2180   Median : 4.00   Median : 697.5   Median : 2636  
 Mean   : 3300   Mean   : 6.67   Mean   :1051.0   Mean   : 4224  
 3rd Qu.: 3936   3rd Qu.: 8.25   3rd Qu.:1168.5   3rd Qu.: 4889  
 Max.   :21588   Max.   :44.00   Max.   :8027.0   Max.   :30757  
     SID79          NWBIR79       
 Min.   : 0.00   Min.   :    3.0  
 1st Qu.: 2.00   1st Qu.:  250.5  
 Median : 5.00   Median :  874.5  
 Mean   : 8.36   Mean   : 1352.8  
 3rd Qu.:10.25   3rd Qu.: 1406.8  
 Max.   :57.00   Max.   :11631.0  

Nótese que la estadistica descriptiva solo se realiza en las variables cuya representación es relevante en la escencia de la base de datos que es el sindrome de muerte subita de lactantes en estos condados de Carolina del Norte.

Ahora bien, para complementar podemos generar una visualización del comportamiento del conjunto de datos:

par(mfrow = c(1, 3))
boxplot(nc.sids[,c(2,5)],col = "white", 
        border = 4)
boxplot(nc.sids[,c(4,7)],col = "white", 
        border = 4)
boxplot(nc.sids[,c(3,6)],col = "white", 
        border = 4)

par(mfrow = c(1, 1))

Ahora bien, una vez visualizado, podemos observar lo siguiente:

En ambos periodos observados para cada de las tres variables medidas se muestran una distribución de con una mediana bastante similar.Además, hay varios outliers en cada una de las variables en los periodos observados, indicando condados con un números significativamente mayor que la mayoría.En cuanto a la dispersión se aprecia un ligero aumento en el número de de las variables medidas para el periodo 1979-84 comparado con las medidas durante el periodo 1974-78.

La anterior dispersión la podemos apreciar a continuación:

par(mfrow = c(2, 2))
barplot(diag(cov(nc.sids[,c(2,5,4,7)])),,main = "Varianza de nacimientos",
     xlab = "Variables", ylab = "Varianza", 
     col = "royalblue"
     )
barplot(diag(cov(nc.sids[,c(3,6)])),,main = "Varianza de nacimientos",
     xlab = "Variables", ylab = "Varianza", 
     col = "royalblue"
     )
barplot(colMeans(nc.sids[,c(2,5,4,7)]),main = "Medias de nacimientos",
     xlab = "Variables", ylab = "Medias", 
     col = "royalblue"
     )
barplot(colMeans(nc.sids[,c(3,6)]),main = "Medias de muertes",
     xlab = "Variables", ylab = "Medias", 
     col = "royalblue"
     )

par(mfrow = c(1, 1))

Al igual que en el caso anterior, acá se puede apreciar que las medias el segundo periodo de estudio son mayores al compararlo con el primero; sin embargo, este comportamiento puede estar influenciado por la varianza, pues para el segundo periodo la varianza tambien es mayor, algo esperado por como se visualizaban los outliers en la grafica anterior.

Hacer gráficos de la data para identificar patrones y tendencias. Mirar relaciones.

Previo a esto, podemos observar el comportamiento de las correlaciones entre las variables de interes, especialmente la manera en la que se correlacionan las muertes súbitas con las otras.

correlation <- cor(nc.sids[,2:7])
correlation
            BIR74     SID74   NWBIR74     BIR79     SID79   NWBIR79
BIR74   1.0000000 0.8572055 0.9025430 0.9969988 0.9135672 0.9238901
SID74   0.8572055 1.0000000 0.8977063 0.8439364 0.8330762 0.9000538
NWBIR74 0.9025430 0.8977063 1.0000000 0.8956682 0.8465393 0.9934904
BIR79   0.9969988 0.8439364 0.8956682 1.0000000 0.8952923 0.9215580
SID79   0.9135672 0.8330762 0.8465393 0.8952923 1.0000000 0.8586045
NWBIR79 0.9238901 0.9000538 0.9934904 0.9215580 0.8586045 1.0000000

Se puede apreciar la manera en la que las variables se encuentran fuertemente correlacionadas de manera positiva entre sí, algo esperado debido a la naturaleza de estas, esta correlación puede indicar una posibilidad de establecer un modelo que permita predecir el comportamiento de las muertes súbitas respecto a los nacimientos precentes en estos condados.

Por otro lado, si deseamos ver el comportamiento de dicha relación podemos apreciarlo acontinuación:

plot( nc.sids[,2:7])

Observando esto, se puede concluir que pese a que la correlación es alta entre variables, el comportamiento de la misma no termina de ser presisa en la mayoria de los casos, un ejemplo de esto es los nacimientos en el periodo 1974-78 y las muertes súbitas en el periodo 1974-78, donde su relación es positiva indicando que en la medida en la que aúmente una lo hará la otra, sin embargo no termina siendo clara la manera en que crecera este comportamiento. Esto posiblemente se debe al mismo caso de los outliers; sin embargo, se debe considerar estos mismos como parte de la naturaleza de las variables. Por otro lado, se presentan algunos casos como los nacimientos durante el periodo 1974-78 y 1979-84, donde se aprecia el comportamiento lineal de este, esto podria mostrar un fenomeno con un comportamiento invariante a lo largo del tiempo.

Generar mapa con los colores, etiquetas, leyendas, etc…

A continuaciación, podremos apreciar algunos mapas interactivos:

library(sf)
library(sp)
library(tmap)
library(gstat)
library(spdep)

tmap_mode("view")
tm_shape(data) +
  tm_dots(col = "SID74", style = "quantile", palette = "viridis", size = 0.08, title = "Muerte súbita") +
  tm_basemap("OpenStreetMap") + 
  tm_layout(title = "Muerte súbita por condados en el periodo 1974-78")
library(sf)
library(sp)
library(tmap)
library(gstat)
library(spdep)

tmap_mode("view")
tm_shape(data) +
  tm_dots(col = "SID79", style = "quantile", palette = "viridis", size = 0.08, title = "Muerte súbita") +
  tm_basemap("OpenStreetMap") + 
  tm_layout(title = "Muerte súbita por condados en el periodo 1979-84")

Finalmente, se puede apreciar que al comparar ambos periodos de tiempo, parece ser que la frecuencia en que ocurren las muertes súbitas para el segundo periodo en el intervalo con mayor rango disminuye levemente pese a que tiene valores mayores, esto se puede relacionar un poco con el comportamiento observado en las graficas de dispesión, donde no termina de ser clara la tendencia lineal de las muertes súbitas entre los dos periodos de tiempo.

Replicas para la data world

La base de datos de spData::world contiene información sobre el PBI per cápita que relaciona el valor total de todos los bienes y servicios finales generados durante un año por la economía de una nación o estado y el número de sus habitantes en ese año, para lo cual se incluye la población total de cada país y su esperanza de vida. Ahora bien, para efectos del desarrollo de este estudio nos enfocaremos solamente en la población y el PBI per cápita. Esta base de datos será presentada a continuación:

data("world", package = "spData")
head(world)
dim(world)
[1] 177  11

Visualización y enfoque

library(ggplot2)
library(sf)
library(spData)
library(dplyr)
library(conflicted)

data("world", package = "spData")

pos_simbolos <- st_centroid(world, of_largest_polygon = TRUE)
conflict_prefer("filter", "dplyr")
library(ggrepel)
ggplot(data = world) + geom_sf(aes(fill=pop),color="black",linetype="solid") +
  geom_sf(data = pos_simbolos, aes(size = gdpPercap), color = 'blue') +
  geom_text_repel(data=world %>% 
                   filter(gdpPercap>50000),aes(label = name_long, geometry = geom),
                  stat = "sf_coordinates", size = 3, color="darkred")  +
  labs(title = 'Distribución espacial de la cantidad poblacional y su Per capita por paises',
       size = 'Per cápita', x = 'Longitud', y = 'Latitud') + 
  theme(plot.title = element_text(hjust = 0.001, face = 'bold'), 
        legend.direction = 'vertical', panel.background=element_rect(fill = "white",),legend.position = 'right',
        panel.grid.major=element_line(color="white"),
        panel.grid.minor=element_line(color="white"))

#geom_text_repel(data=world %>% 
                   #filter(gdpPercap>50000),aes(label = name, geometry = geometry),
                  #stat = "sf_coordinates", size = 3) 

Se puede apreciar en el mapa que aquellos paises que poseen mayor cantidad poblacional no poseen un per cápita tan grande en comparación de algunos paises que si bien tienen una gran población no estan entre las top 3, poseen un mejor per capita indicando que su calidad de vida puede ser mejor.

Estadísticas descriptivas

Al igual, que en el caso anterior usaremos summary(), el cual nos proporciona estadisticas de tendencia central y los respectivos cuartiles del conjunto de datos.

summary(world[,c(8,10)])
      pop              gdpPercap                   geom    
 Min.   :5.630e+04   Min.   :   597.1   MULTIPOLYGON :177  
 1st Qu.:3.755e+06   1st Qu.:  3752.4   epsg:4326    :  0  
 Median :1.040e+07   Median : 10734.1   +proj=long...:  0  
 Mean   :4.282e+07   Mean   : 17106.0                      
 3rd Qu.:3.075e+07   3rd Qu.: 24232.7                      
 Max.   :1.364e+09   Max.   :120860.1                      
 NA's   :10          NA's   :17                            

De esta manera, podemos apreciar los graficos que permitan visualizar estas estadísticas generadas:

par(mfrow = c(1, 2))
boxplot(world$pop,col = "white", 
        border = 4,xlab="Población")
boxplot(world$gdpPercap,col = "white", 
        border = 4, xlab="Per cápita")

par(mfrow = c(1, 1))

Se puede apreciar que la población presenta gran cantidad de outliers, este comportamiento es un poco similar al comportamiento de la base datos anterior, por lo que se podría analizar la distribución espacial de los datos por medio de alguna distribución de probabilidad que permita modelar estas mismas caracteristicas.

Ahora bien, este comportamiento, se puede observar en los siguientes diagramas, ya que permite detallar en que lugares es que esta influenciando la anterior observación.

par(mfrow = c(1, 2))
boxplot(pop~continent, data = world,col = "white", 
        border = 4,ylab = NULL, xlab = NULL, cex.axis = 0.8, 
        las = 2, main = 'Población')
boxplot(gdpPercap~continent, data = world,col = "white", 
        border = 4,ylab=NULL, xlab = NULL, cex.axis = 0.8, 
        las = 2, main = 'Per Cápita')

par(mfrow = c(1, 1))

Es de observar que en referencia a la población el continente Asiatico es el que presenta un outlier que se diferencia significativamente al resto, lo que idica que el comportamiento anterior se debe justamente a una influencia de parte de este y el continente de america del norte.

Por otro lado, si observamos el Per cápita, notamos que no muchos outliers, y los que estan presentes son aquellos ubicados en Europa y Asia. Esto se aprecia en la figura anterior donde la distribución respecto a los cuartiles era más visible.

Tendencias y relaciones

Ahora bien, podemos mirar la correlación entre estas dos variables para apreciar la relación entre ellas, para efectos de desarrollo y optimización, omitiremos aquellas observaciones que no tienen ningún registro en sus campos:

new_world<-na.omit(world)
correlation <- cor(new_world$pop,new_world$gdpPercap)
correlation
[1] -0.04680832

Cabe resaltar que la correlación entre las dos variables de observación es baja, lo que indica que hay una relación debil entre ellas, ademas de que es negativa, por lo que de haber una relación, esta seria inversamente proporcional entre las variables. Esto lo podemos visualizar en el siguiente grafico de dispersión:

plot(new_world$pop,new_world$gdpPercap, xlab = 'Población', ylab = 'Per cápita')

Notese que de pasarse una linea que ayude a predecir el per cápita, esta seria paralela al eje y, no mostraria una tendencia clara, pues fue algo que se apreció en la anterior observación.

Generación de mapa interactivo de la población y per cápita de cada país.

A continuaciación, podremos apreciar algunos mapas interactivos:

library(sf)
library(sp)
library(tmap)
library(gstat)
library(spdep)

tmap_mode("view")
tm_shape(world) +
  tm_dots(col = "pop", style = "quantile", palette = "viridis", size = 0.08, title = "Población") +
  tm_basemap("OpenStreetMap") + 
  tm_layout(title = "Muerte súbita por condados en el periodo 1974-78")
tmap_mode("view")
tm_shape(world) +
  tm_dots(col = "gdpPercap", style = "quantile", palette = "viridis", size = 0.08, title = "Per cápita") +
  tm_basemap("OpenStreetMap") + 
  tm_layout(title = "Muerte súbita por condados en el periodo 1974-78")

Estos mapas permiten visualizar de una mejor manera la aglomeración visual observada en la primer mapa generado con esta base de datos, si realia un acercamiento se permitirá observar mejor cuales son los paises que presentan mayor población y mayor indice de per cápita.

Por todo lo observado, finalmente podemos decir que la relación entre el indice y la cantidad poblacional por país no termina siendo clara, por lo que no se podria explicar una variable respecto a la otra.