1. Carga de data
Usar: https://en.wikipedia.org/wiki/Democracy_Index
library(htmltab)
# coleccion
links=list(web="https://en.wikipedia.org/wiki/Democracy_Index",
xpath ='//*[@id="mw-content-text"]/div/table[2]/tbody')
demo<- htmltab(doc = links$web, which =links$xpath)
2. Limpieza de datos
2.1. Inspeccion:
str(demo)
names(demo)
2.2. Pre procesamiento:
# aqui dividimos al nombre actual en el primer espacio, y nos quedamos con el elemento a la izquierda:
library(stringr)
names(demo)=str_split(names(demo)," ",simplify = T)[,1]
names(demo)=str_replace_all(names(demo), "[^[:ascii:]]", "")
demo[,]=lapply(demo[,], str_replace_all,"[^[:ascii:]]","")
demo$Rank=NULL
library(readr)
demo[,c(2:7)]=lapply(demo[,c(2:7)],parse_number)
Configurar Categorias
# ver tabla
table(demo$Regimetype)
# nombres RE ordenados
ordenOK=c("Authoritarian","Hybrid regime", "Flawed democracy","Full democracy")
demo$Regimetype=factor(demo$Regimetype, levels=ordenOK,ordered = TRUE)
demo$Continent=as.factor(demo$Continent)
# **Que tienes hasta ahora?**:
str(demo)
1. ¿Cual es el valor representativo de Tipo de Regimen?
library(DescTools)
Median(demo$Regimetype)
2. ¿Podemos afirmar que 3 cuartas partes de los paises del mundo que tenemos en nuestra tabla no superan el tipo hibrido de democracia?
# tabla de frecuencias avanzada
library(questionr)
library(magrittr)
OrdDf=freq(demo$Regimetype,total = F,exclude = c(NA),cum = T) %>% data.frame()
OrdDf=data.frame(row.names(OrdDf),OrdDf,row.names = NULL)
names(OrdDf)=c("Categoria","Conteo", "Porcentaje", "Porcentaje Acumulado")
# viendo a NomDf
OrdDf
3.1. ¿Cual es el valor representativo de Continente?
Mode(demo$Continent)
3.2. ¿Es el valor representativo de continente muy prominente? (quizas otros continentes no envian informacion?)
tablaContinente=prop.table(table(demo$Continent))
Herfindahl(tablaContinente)
4. ¿La variable continente se distribuye asimetricamente?
5. ¿La variable regimetype se distribuye asimetricamente?
library(ggplot2)
# en base solo se pone: en data como se llama la tabla de frecuencias
# y en aes la variable 'x' para los nombres y la 'y' para los conteos.
base = ggplot(data=OrdDf,aes(x=Categoria , y=Conteo))
# luego a la base se le pide añadir la 'geometria' deseada:
bar1 = base + geom_bar(stat='identity')
# aqui resultado:
bar1 + scale_x_discrete(limits =OrdDf$Categoria)
library(ggplot2)
basep=ggplot(data=demo, aes(y=as.numeric(Regimetype))) # ojo
basep + geom_boxplot() + coord_flip()
6. ¿El valor representativo de indice de democracia es robusto?
summary(demo$Score)
basen=ggplot(data=demo,aes(x=Score))
basen + geom_histogram(bins=10)
Skew(demo$Score,conf.level = 0.05)
7. ¿Puedes concluir que hay mucha desigualdad en este indice?
Gini(demo$Score)
8. ¿Se puede afirmar que el 80% de los paises del mundo suman a lo mas el 67.5% del score de democracia?
#Gráfico de Lorentz
library(ggplot2)
library(gglorenz)
ggplot(demo,aes(x=Score))+ gglorenz::stat_lorenz(color='purple') +
geom_abline(linetype = "dashed") + coord_fixed() +
labs(x = "% Paises ordenados por Indice de Democracia",
y = "% Acumulado de Puntuación de ID",
title = "Relación pais/Indice de democracia",
caption = "Fuente: The Economist") +
scale_y_continuous(breaks=seq(0,1,0.15)) +
scale_x_continuous(breaks=seq(0,1,0.2))
9.1. ¿Hay atipicos en el score de democracia?
# cuartilES
q3=quantile(demo$Score,0.75)
q1=quantile(demo$Score,0.25)
# calculando umbrales
umbralAlto= q3+1.5*IQR(demo$Score)
umbralBajo= q1-1.5*IQR(demo$Score)
9.2. ¿Ausencia de atipicos grandes?
demo[demo$Score>=umbralAlto,]
9.3. ¿Ausencia de atipicos pequeños?
demo[demo$Score<=umbralBajo,]