En esta sesión reforzaremos todo lo relacionado con el análisis descriptivo univariado de datos en R, junto con algunos ejercicios gráficos e introducción al lenguaje del paquete ggplot2, una librería muy usada para visualización de datos en este programa. ¡Empezamos!
En las sesiones prácticas hemos visto que hay este tipo de variables:
| Tipo | Descripción |
|---|---|
| Variables nominales | Género (Hombre=1, Mujer=2). Religión (Católico=1, Evangélico=2, Otro=3). Región (Lima=1, Arequipa=2, La Libertad =3). Partido delpresidente (Perú Libre=1, APP=2, PPC=3 |
| Variables ordinales | Educación (Analf=0, Prim=1, Sec=2, Tec=3, Univ=4, Post=5). Importancia de religión en su vida (Nada importante=1, Poco importante=2, Algo importante=3, Muy importante=4). Nivel de satisfacción con la democracia (Muy instafisfecho=1, Insatisfecho=2, Satisfecho=3, Muy satisfecho=4). |
| Variables continuas | Estatura, peso, ingreso mensual,extensión, PBI per cápita, % de participación electoral. |
| Variables discretas | Número de hijos, edad, número de revocatorias, número de postas médicas, población. |
En R, las variables nominales se denominan factores, las variables ordinales como factores ordenados y las variables continuas y discretas como num. En algunos casos, se puede encontrar lectura de variables como int (interger), que también son variables numéricas.
De forma similar, tenemos algunas medidas de tendencia central, de dispersión y de distribución de datos según el tipo de variable que nos encontramos analizando:
En línea con ello, también tenemos algunos gráficos según el tipo de variable de interés:
Hay una infinidad de gráficos a los que se puede recurrir dependiendo del interés de la investigadora o el investigador. Aquí hay algunos ejemplos útiles: https://www.data-to-viz.com/
¿Por qué es importante la visualización de datos? Graficar data ayuda a contar historias y, sobre todo, dar un sentido a los cientos, miles, o incluso millones, de filas de datos que con las que podríamos eventualmente trabajar, facilitando la comprensión de la información.
En tanto la finalidad de la visualización de datos es ayudar a una mejor comprensión de la información, hay que tener cuidado con algunos gráficos como, por ejemplo, el gráfico de sectores o pie chart. A pesar de que la variable que estamos analizando permita utilizar este gráfico, hay buenas razones para no usarlo, y por qué es muchas veces mejor un gráfico de barras: https://www.data-to-viz.com/caveat/pie.html
Paquetes que utilizaremos
install.packages(“DescTools”) para pedir los estadísticos de tendencia central
install.packages(“moments”) para asimetría y curtosis
Abrimos las librerías
library(DescTools)
library(moments)
library(taylor)
library(ggplot2)
Vamos a empezar con los análisis. Carguemos la data state_democracy_final.xlsx, del proyecto Fragile State Index. Esta base de datos se compone de doce indicadores de riesgo, que permiten medir la condición de diferentes Estados en un momento determinado del tiempo. Esto es de suma importancia, ya que de su fortaleza depende en gran medida el efectivo desarrollo de políticas públicas orientadas a la ciudadanía.
Más sobre la base y los indicadores por acá: https://fragilestatesindex.org/indicators/
library(rio) #Convocamos el paquete
data=import("state_democracy_final.xlsx")
class(data) #identificando el tipo de objeto
## [1] "data.frame"
str(data)
## 'data.frame': 164 obs. of 18 variables:
## $ Country : chr "AFGHANISTAN" "ALBANIA" "ALGERIA" "ANGOLA" ...
## $ Year : num 2021 2021 2021 2021 2021 ...
## $ Rank : chr "9th" "119th" "74th" "34th" ...
## $ Total : num 102.1 59 73.6 89 50.1 ...
## $ C1: Security Apparatus : num 10 4.8 6 7.2 4.9 5.7 2.7 1.6 6.4 5.9 ...
## $ C2: Factionalized Elites : num 8.6 6.2 7.5 7.2 2.8 7 1.7 3.2 7.9 7.6 ...
## $ C3: Group Grievance : num 7.2 4.1 7.2 8.1 3.8 5.3 3.1 3.9 6.1 9.6 ...
## $ E1: Economy : num 9.2 6.4 6.8 8.4 7.1 6.6 1.6 1.8 4.7 4.1 ...
## $ E2: Economic Inequality : num 8.1 2.9 5.6 8.9 4.9 3.6 1.8 2.3 5.1 5.3 ...
## $ E3: Human Flight and Brain Drain: num 7 8.3 5.5 6 3 6.8 0.5 1.6 4.3 3 ...
## $ P1: State Legitimacy : num 8.7 5.5 7.8 8.2 4 6.9 0.5 0.6 9.1 8 ...
## $ P2: Public Services : num 9.8 4.4 5.6 9.3 4.8 3.9 2.8 2.3 5.5 3.5 ...
## $ P3: Human Rights : num 7.4 3.6 6.3 6.2 3.3 6 1.7 0.5 7.7 8.6 ...
## $ S1: Demographic Pressures : num 9 4.1 4.8 9 5.3 4.4 2.9 3.4 4.2 4.1 ...
## $ S2: Refugees and IDPs : num 8.8 2.6 6.8 5.9 1.9 6.6 2 4.4 6.9 1.7 ...
## $ X1: External Intervention : num 8.3 6.1 3.7 4.6 4.3 7 0.5 0.5 7.2 5.3 ...
## $ Democracy_Score : num 2.85 6.08 3.77 3.66 6.95 5.35 8.96 8.16 2.68 2.49 ...
## $ Type : chr "Authoritarian regime" "Flawed democracy" "Authoritarian regime" "Authoritarian regime" ...
nrow(data) #numero de filas
## [1] 164
ncol(data) #numero de columnas
## [1] 18
dim(data) #dimensión de mi data(un resumen de la # de filas y columnas)
## [1] 164 18
#tamaño de data
names(data) #nombres de variables
## [1] "Country" "Year"
## [3] "Rank" "Total"
## [5] "C1: Security Apparatus" "C2: Factionalized Elites"
## [7] "C3: Group Grievance" "E1: Economy"
## [9] "E2: Economic Inequality" "E3: Human Flight and Brain Drain"
## [11] "P1: State Legitimacy" "P2: Public Services"
## [13] "P3: Human Rights" "S1: Demographic Pressures"
## [15] "S2: Refugees and IDPs" "X1: External Intervention"
## [17] "Democracy_Score" "Type"
colnames(data) #alternativa de nombre de variables
## [1] "Country" "Year"
## [3] "Rank" "Total"
## [5] "C1: Security Apparatus" "C2: Factionalized Elites"
## [7] "C3: Group Grievance" "E1: Economy"
## [9] "E2: Economic Inequality" "E3: Human Flight and Brain Drain"
## [11] "P1: State Legitimacy" "P2: Public Services"
## [13] "P3: Human Rights" "S1: Demographic Pressures"
## [15] "S2: Refugees and IDPs" "X1: External Intervention"
## [17] "Democracy_Score" "Type"
head(data) #6 primeros casos de mi data
## Country Year Rank Total C1: Security Apparatus C2: Factionalized Elites
## 1 AFGHANISTAN 2021 9th 102.1 10.0 8.6
## 2 ALBANIA 2021 119th 59.0 4.8 6.2
## 3 ALGERIA 2021 74th 73.6 6.0 7.5
## 4 ANGOLA 2021 34th 89.0 7.2 7.2
## 5 ARGENTINA 2021 137th 50.1 4.9 2.8
## 6 ARMENIA 2021 91st 69.8 5.7 7.0
## C3: Group Grievance E1: Economy E2: Economic Inequality
## 1 7.2 9.2 8.1
## 2 4.1 6.4 2.9
## 3 7.2 6.8 5.6
## 4 8.1 8.4 8.9
## 5 3.8 7.1 4.9
## 6 5.3 6.6 3.6
## E3: Human Flight and Brain Drain P1: State Legitimacy P2: Public Services
## 1 7.0 8.7 9.8
## 2 8.3 5.5 4.4
## 3 5.5 7.8 5.6
## 4 6.0 8.2 9.3
## 5 3.0 4.0 4.8
## 6 6.8 6.9 3.9
## P3: Human Rights S1: Demographic Pressures S2: Refugees and IDPs
## 1 7.4 9.0 8.8
## 2 3.6 4.1 2.6
## 3 6.3 4.8 6.8
## 4 6.2 9.0 5.9
## 5 3.3 5.3 1.9
## 6 6.0 4.4 6.6
## X1: External Intervention Democracy_Score Type
## 1 8.3 2.85 Authoritarian regime
## 2 6.1 6.08 Flawed democracy
## 3 3.7 3.77 Authoritarian regime
## 4 4.6 3.66 Authoritarian regime
## 5 4.3 6.95 Flawed democracy
## 6 7.0 5.35 Hybrid regime
tail(data) #6 últimos casos de mi data
## Country Year Rank Total C1: Security Apparatus C2: Factionalized Elites
## 159 UZBEKISTAN 2021 80th 72.0 6.2 8.8
## 160 VENEZUELA 2021 25th 92.6 7.3 9.3
## 161 VIETNAM 2021 114th 63.3 3.9 6.9
## 162 YEMEN 2021 1st 111.7 9.4 10.0
## 163 ZAMBIA 2021 42nd 84.9 4.5 5.9
## 164 ZIMBABWE 2021 10th 99.1 8.6 10.0
## C3: Group Grievance E1: Economy E2: Economic Inequality
## 159 6.0 5.4 5.7
## 160 7.0 9.8 6.7
## 161 5.2 3.9 3.8
## 162 9.4 9.8 7.7
## 163 5.3 8.8 9.3
## 164 6.1 9.4 7.7
## E3: Human Flight and Brain Drain P1: State Legitimacy P2: Public Services
## 159 5.2 9.3 4.6
## 160 6.5 9.5 8.9
## 161 5.3 8.4 4.3
## 162 6.7 9.9 9.8
## 163 6.9 7.5 8.0
## 164 7.1 8.8 9.0
## P3: Human Rights S1: Demographic Pressures S2: Refugees and IDPs
## 159 7.6 4.8 4.4
## 160 9.1 6.5 6.3
## 161 7.8 5.0 4.5
## 162 9.7 9.8 9.8
## 163 7.0 9.4 5.5
## 164 8.0 9.3 8.2
## X1: External Intervention Democracy_Score Type
## 159 4.0 2.12 Authoritarian regime
## 160 5.7 2.76 Authoritarian regime
## 161 4.3 2.94 Authoritarian regime
## 162 9.7 1.95 Authoritarian regime
## 163 6.8 4.86 Hybrid regime
## 164 6.9 3.16 Authoritarian regime
attributes(data) #atributos de mi data
## $class
## [1] "data.frame"
##
## $row.names
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
## [19] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
## [37] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
## [55] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
## [73] 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
## [91] 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
## [109] 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
## [127] 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
## [145] 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
## [163] 163 164
##
## $names
## [1] "Country" "Year"
## [3] "Rank" "Total"
## [5] "C1: Security Apparatus" "C2: Factionalized Elites"
## [7] "C3: Group Grievance" "E1: Economy"
## [9] "E2: Economic Inequality" "E3: Human Flight and Brain Drain"
## [11] "P1: State Legitimacy" "P2: Public Services"
## [13] "P3: Human Rights" "S1: Demographic Pressures"
## [15] "S2: Refugees and IDPs" "X1: External Intervention"
## [17] "Democracy_Score" "Type"
A esta base de datos, sin embargo, se le ha incluido el índice de democracia, un indicador que da cuenta de las características del régimen político de cada país. Exploremos esta variable:
#Esto debemos modificarlo:
class(data$Type) #ver tipo de variable
## [1] "character"
table(data$Type) #frecuencias
##
## Authoritarian regime Flawed democracy Full democracy
## 57 52 22
## Hybrid regime
## 33
¿Cómo está medida la variable? Tal vez eso no es lo más recomendable para el análisis. Demósle el formato debido:
data$Type = factor(data$Type)
str(data$Type) #tipo de variable
## Factor w/ 4 levels "Authoritarian regime",..: 1 2 1 1 2 4 3 3 1 1 ...
table(data$Type)
##
## Authoritarian regime Flawed democracy Full democracy
## 57 52 22
## Hybrid regime
## 33
Exploremos la moda:
library(DescTools) #estadisticos de tendencia central
Mode(data$Type) #este comando nos permitirá calcular la moda
## [1] Authoritarian regime
## attr(,"freq")
## [1] 57
## 4 Levels: Authoritarian regime Flawed democracy ... Hybrid regime
Apliquemos la función table para extraer las frecuencias de cada categoría, así como las frecuencias relativas porcentuales (prop.table):
table(data$Type) #hacemos una tabla de frecuencia
##
## Authoritarian regime Flawed democracy Full democracy
## 57 52 22
## Hybrid regime
## 33
prop.table(table(data$Type))*100
##
## Authoritarian regime Flawed democracy Full democracy
## 34.75610 31.70732 13.41463
## Hybrid regime
## 20.12195
Hora de graficar! Empecemos con un pie chart:
#peso y altura del gráfico (height y width)
grafico1 <- table(data$Type) #creamos un objeto que contenga la tabla de frecuencias dela variable
grafico1
##
## Authoritarian regime Flawed democracy Full democracy
## 57 52 22
## Hybrid regime
## 33
pie(grafico1, main = "Índice de democracia", radius = 1, cex = 1) #podemos achicar la el radio y las categorías con los comandos "radius" y "cex" (tamaño de las etiquetas). Prueben!
Pero recuerden, es mejor no usar pie charts. Vayamos por nuestra segunda (y mejor) opción: un gráfico de barras (barplot).
#peso y altura del gráfico (height y width)
#Utilizamos el mismo objeto creado:
barplot(grafico1, col = "pink",
main = "Índice de democracia",
xlab = "Tipos de regímenes políticos",
ylab = "Frecuencias",
cex.axis = 1,
cex.lab = 1,
las = 1)
Ya sabemos cómo obtener algunos gráficos con el lenguaje base de R. Sin embargo, la comunidad ha creado muchos paquetes o librerías para visualizar datos de una forma más didactica y atractiva. Un ejemplo de ello es ggplot2, una librería muy utilizada para visualizar datos. ggplot2 tiene un lenguaje propio, y los códigos pueden resultar algo largos, pero es muy intuitivo y permite manipular mucho los resultados.
Más información sobre el lenguaje de ggplot2: https://www.rstudio.com/wp-content/uploads/2015/04/ggplot2-spanish.pdf
Llamemos la a librería y veamos qué opciones tiene para analizar nuestra variable:
#Volvamos nuestro objeto un dataframe:
grafico1 = as.data.frame(grafico1) #convertir a data frame
grafico1
## Var1 Freq
## 1 Authoritarian regime 57
## 2 Flawed democracy 52
## 3 Full democracy 22
## 4 Hybrid regime 33
#Para cambiar los nombres de las columnas (variables): es un código frecuente c() para dar mayor orden a una base de datos
colnames(grafico1) = c("Reg","Freq")
grafico1
## Reg Freq
## 1 Authoritarian regime 57
## 2 Flawed democracy 52
## 3 Full democracy 22
## 4 Hybrid regime 33
library(ggplot2) #llamamos a ggplot2 - Recuerda instalar ggplot2
ggplot(grafico1, aes(x="Tipo de regímenes políticos", y=Freq, fill=Reg)) + #Seleccionamos las variables
geom_bar(stat="identity", width=2) + #Agregando capas, stat identity: Si desea que las alturas de las barras representen valores en los datos, use stat = "identity" y asigne una variable a la estética y. Width: ancho de sector
coord_polar("y", start=0) #Coordenadas cartesianas: sirve para ubicar el pie chart en un plano cartesiano dependiendo del número de respuestas de cada opción y lo hace proporcionalmente
#Para eliminar elementos innecesarios del gráfico:
ggplot(grafico1, aes(x="Tipo de regímenes políticos", y=Freq, fill=Reg)) +
ggtitle("Índice de democracia") + #Agregamos el título
geom_bar(stat="identity", width=1, color="skyblue") + #Agregando capas, stat identity: Si desea que las alturas de las barras representen valores en los datos desde objeto data frame (freq), use stat = "identity" y asigne una variable a la estética y. Width: ancho de sector
coord_polar("y", start=0) + #Coordenadas cartesianas: sirve para ubicar el pie chart en un plano cartesiano dependiendo del número de respuestas de cada opción y lo hace proporcionalmente
theme_void() #Con esto quitamos los elementos no requeridos (coord_polar)
#Podemos escoger los colores que consideramos:
pc=ggplot(grafico1, aes(x="", y=Freq, fill=Reg)) +
ggtitle("Índice de democracia") + #Agregamos el título
geom_bar(stat="identity", width=1, color="white") + #Agregando capas, stat identity: Si desea que las alturas de las barras representen valores en los datos desde objeto data frame (freq), use stat = "identity" y asigne una variable a la estética y. Width: ancho de sector
coord_polar("y", start=0) + #Coordenadas cartesianas: sirve para ubicar el pie chart en un plano cartesiano dependiendo del número de respuestas de cada opción y lo hace proporcionalmente. Srive para pie chart
theme_void() #Con esto quitamos los elementos no requeridos
pc
pc + scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9", "#00FF7F", "#008B8B","#D8BFD8")) #Pintamos y seleccionamos los colores manualmente.
#Escogiendo una paleta en específico: aquí ya no escogemos los colores
pc + scale_fill_brewer(palette="Dark2")
La ventaja de que R sea un software libre es que permite a la comunidad hacer cosas muy interesantes e innovadoras, hasta una paleta con colores de los albums de Taylor Swift para pintar nuestros gráficos!
Instalamos esto en R y llamamos a la librería “taylor”
remotes::install_packages(“wjakethompson/taylor”)
Más información sobre esta librería por aquí: https://taylor.wjakethompson.com/index.html
library(taylor)
pc + scale_fill_taylor_d(album="Reputation (Taylor's Version)")
## Warning: Album 'Reputation (Taylor's Version)' does not exist. Defaulting to
## 'Lover'.
Pero, de nuevo, mejor no usar pie charts. Veamos cómo trabajar con esta librería para hacer un gráfico de barras:
ggplot(grafico1, aes(x=Reg, y=Freq)) +
geom_bar(stat = "identity") #Agregando capas, stat identity: Si desea que las alturas de las barras representen valores en los datos, use stat = "identity" y asigne una variable a la estética y
Demos formato a algunas cosas:
ggplot(grafico1, aes(x=reorder(Reg,Freq), y=Freq, fill=Reg)) + #Para ordenar el gráfico
geom_bar(stat = "identity") + #Agregando capas, stat identity: Si desea que las alturas de las barras representen valores en los datos (data frame), use stat = "identity" y asigne una variable a la estética y
coord_flip() #Para voltearlo
ggplot(grafico1, aes(x=reorder(Reg,Freq), y=Freq, fill=Reg)) + #Para ordenar el gráfico
geom_bar(stat = "identity") + #Agregando capas, stat identity: Si desea que las alturas de las barras representen valores en los datos, use stat = "identity" y asigne una variable a la estética y
coord_flip() + #Para voltear las barras
labs(title="Índice de democracia", y="Frecuencias", x="Categorías") #poner titulos
ggplot(grafico1, aes(x=reorder(Reg,Freq), y=Freq, fill=Reg)) + #Para ordenar el gráfico
geom_bar(stat = "identity") + #Agregando capas, stat identity: Si desea que las alturas de las barras representen valores en los datos, use stat = "identity" y asigne una variable a la estética y
coord_flip() + #Para voltear las barras
labs(title="Índice de democracia", y="Frecuencias", x="Categorías")+
theme(plot.title = element_text(hjust = .5)) + # Cambiar la Posición del título
theme(panel.background=element_rect(fill = "white", colour = "white")) #Fondo y contorno blanco
bp=ggplot(grafico1, aes(x=reorder(Reg,Freq), y=Freq, fill=Reg)) +
geom_bar(stat = "identity") + #Agregando capas, stat identity: Si desea que las alturas de las barras representen valores en los datos, use stat = "identity" y asigne una variable a la estética y
coord_flip() + #Para voltear las barras
labs(title="Índice de democracia", y="Frecuencias", x="Categorías")+ #titulos
theme(plot.title = element_text(hjust = 1)) + #Cambiar la Posición del título
theme(panel.background=element_rect(fill = "white", colour = "white")) + #Fondo y contorno blanco
geom_text(aes(label=Freq), vjust=2, color="red", size=4) #Frecuencias en las barras - etiquetas de datos
bp
bp + scale_fill_taylor_d(album="Lover") #Paleta de colores.
En conclusión, la democracia plena no es algo que abunde en el mundo. Esta variable es de naturaleza ordinal, pero los códigos y tipos de gráficos son los mismos para el caso de variables nominales.
Ahora, veamos algunas medidas de tendencia central, distribución y dispersión para el caso de variables numéricas. Trabajemos con la variable state legitimacy, indicador que evalúa la representatividad y apertura del gobierno, y la manera como interactúa con la ciudadanía. Se toman en cuenta los niveles de confianza en las instituciones, demostraciones de desobediencia civil e insurgencias armadas.
Más información del indicador por acá: https://fragilestatesindex.org/indicators/p1/
Primero cambiemos los nombres de las variables. R funciona mejor así
names(data) #Para ver los nombres
## [1] "Country" "Year"
## [3] "Rank" "Total"
## [5] "C1: Security Apparatus" "C2: Factionalized Elites"
## [7] "C3: Group Grievance" "E1: Economy"
## [9] "E2: Economic Inequality" "E3: Human Flight and Brain Drain"
## [11] "P1: State Legitimacy" "P2: Public Services"
## [13] "P3: Human Rights" "S1: Demographic Pressures"
## [15] "S2: Refugees and IDPs" "X1: External Intervention"
## [17] "Democracy_Score" "Type"
colnames(data) = c("Country","Year","Rank","Score_Frag_States","Security","Elites","G_Grivance","Economy","Inequality","B_Drain","State_Legit","P_Services","Hum_Rights","Demo_Press","Refugees","Interven","Democracy_Score","Type") ##Para cambiar los nombres de las columnas (variables): es un código frecuente c() para dar mayor orden a una base de datos
class(data$State_Legit) #Esta bien medida!, saber clase de objeto (num)
## [1] "numeric"
Exploremos la variable. Veamos medidas de tendencia central y de dispersión. Ojo con cómo está medido: 10 es un Estado que posee un alto grado de ilegitimidad (o presión). 0 un Estado con poca presión o alta legitimidad desde la ciudadanía.
summary(data$State_Legit) #Ojo con los casos perdidos:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.500 3.675 6.400 5.805 8.200 10.000
sd(data$State_Legit) #Desviacion estandar
## [1] 2.851246
var(data$State_Legit) #veamos la varianza
## [1] 8.129602
rango=max(data$State_Legit)-min(data$State_Legit)
rango
## [1] 9.5
Ahora veamos medidas de asimetría:
library(moments) #libreria para asimetria y curtosis
skewness(data$State_Legit) #Asimetría - Distribución asimétrica: la media queda desplazada hacia la cola más larga, implica un sesgo en la distribución, der e izq. El sesgo a la izquierda de valores bajos.
## [1] -0.5063559
kurtosis(data$State_Legit) #Curtosis - medida de apuntamiento - Mide la cantidad de datos que se agrupa en torno a la moda de la variable
## [1] 2.118271
¿Cómo interpretamos estos resultados?
Veamos qué nos dicen los gráficos. Empecemos con un boxplot. ¿Encontraremos diferentes según las características del régimen político? ¿Qué conclusiones podríamos sacar de estos gráficos?
boxplot(data$State_Legit) #gráfico para variable numérica
boxplot(data$State_Legit~data$Type) #legitimidad de Estado y tipo de régimen
#Interpretación: Hay diferencia significativa si comparamos la legimitdad de estado por tipo de régimen (full democracy y regimen hibrido)
Veamos qué cosas trae ggplot2:
# x= tipo de regimen, y= legitimidad de Estado
ggplot(data, aes(x=Type, y=State_Legit)) +
geom_boxplot() + coord_flip() #Volteamos el gráfico
ggplot(data, aes(x=Type, y=State_Legit, color =Type)) + #Damos color
geom_boxplot() + coord_flip() #Volteamos el gráfico
ggplot(data, aes(x=Type, y=State_Legit, color =Type)) +
geom_boxplot() + coord_flip() + #Volteamos el gráfico
theme(legend.position = "top") #leyenda a nivel superior
#Interpretación: Hay diferencia significativa si comparamos la legimitdad de estado por tipo de régimen (full democracy y regimen hibrido)
ggplot(data, aes(x=Type, y=State_Legit, color =Type)) +
geom_boxplot() + coord_flip() #Volteamos el gráfico
ggplot(data, aes(x=Type, y=State_Legit, color =Type)) +
geom_boxplot() + coord_flip() + #Volteamos el gráfico
theme(legend.position = "top", axis.text.y = element_blank(),
panel.background=element_rect(fill = "white", colour = "white")) + #Quitamos categorías para solo visualizar colores
geom_jitter(shape=16, position=position_jitter(0.2)) + #Agregamos los casos como puntos (Dispersión de datos)
labs(title = "Legitimidad estatal según el tipo de régimen político", x="", y="Index")
Finalmente, también podemos sacar un histograma para visualizar estos datos. ¿Tiene sentido según los coeficientes de asimetría y curtosis? Si
hist(data$State_Legit)
#Interpretación: mayor frecuencia de países con legitimidad de estado
Utilicemos ggplot2 para agregar más detalles al gráfico como en los casos previos:
ggplot(data, aes(x=State_Legit)) +
geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
ggplot(data, aes(x=State_Legit)) +
geom_histogram() +
labs(title="Legitimidad estatal", y="Conteo", x="Score")+
theme(plot.title = element_text(hjust = 0.5)) + #posición del titulo
theme(panel.background=element_rect(fill = "white", colour = "white")) +
geom_vline(aes(xintercept=mean(State_Legit, na.rm = T)), # marcar el intercepto de la media (promedio), median=mediana
color="blue", linetype="dashed", size=1)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
ggplot(data, aes(x=State_Legit, color = Type)) +
geom_histogram(fill="white",alpha=0.5, position="identity") +
labs(title="Legitimidad estatal", y="Conteo", x="Indice")+
theme(plot.title = element_text(hjust = 0.5)) + #posición del titulo
theme(panel.background=element_rect(fill = "white", colour = "white"))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Ejercicios
¿Cómo exportamos la base de datos que hemos trabajado?
En muchos casos nos va ser útil exportar a CSV,lo podemos hacer con la función export del paquete rio:
export(data, "midata.csv")
También podemos exportar en formato R:
save(data,file="midata.Rda")
¿Cómo presentamos el trabajo realizado en este archivo Rmd?
Vamos a trabajar en archivos R markdown (Rmd), pero para presentarlos de una manera amigable, podemos exportarlos en formato PDF o Html, usando Knit
Para Html, seleccionamos en el menú Knit > Knit to html
Para pdf, seleccionamos Knit > Knit to PDF, pero antes de exportar en pdf deberá instalar lo siguiente desde su consola:
install.packages(‘tinytex’)
tinytex::install_tinytex()