CÓDIGO R
Procedimiento de Imputación múltiple basado en Random Forest
Estadística y Empresa 2017-2021
Beatriz Román Carrascosa
-
Carga de datos y selección de variables
library(haven)
library(labelled)
library(kableExtra)
cis <- as.data.frame(read_sav("3303.sav"))
cis <- remove_labels(cis)
cis <- remove_attributes(cis, "display_width")
library(dplyr)
cis <- cis %>%
select(SEXO,EDAD,CCAA,P0,P13,P18,P19,P20,INTENCIONG,INTENCIONGALTER,SIMPATIA,E
SCIDEOL,ESCIDEOLPOLI_1,ESCIDEOLPOLI_2,ESCIDEOLPOLI_3,ESCIDEOLPOLI_4,ESCIDEO
LPOLI_5,P25_1,P25_2,P25_3,P25_4,P25_5,PARTICIPACIONG,RECUVOTOG,CERCANIA,NIVELE
STENTREV,RELIGION,ECIVIL,SITLAB,CLASESOCIAL, PESO)
dim(cis)
-
Número de NAs y gráfico de barras de los NAs
NAs <- colSums(is.na(cis))
NAs
library(ggplot2)
library(ggthemes)
library(data.table)
library(DataExplorer)
plot_missing_2 <-
function (data, group = list(Muy_bajo = 0.05, Bajo = 0.2, Elevado = 0.8,
Muy_elevado = 1), geom_label_args = list(), title = NULL, ggtheme = theme_gray(),
theme_config = list(legend.position = c("bottom"), text=element_text(family="Times", size=20),
plot.title = element_text(face = "bold.italic", hjust = -0.4, color = "darkgray" )))
{
pct_missing <- Escala <- NULL
missing_value <- data.table(profile_missing(data))
group <- group[sort.list(unlist(group))]
invisible(lapply(seq_along(group), function(i) {
if (i == 1) {
missing_value[pct_missing <= group[[i]], `:=`(Escala,
names(group)[i])]
} else {
missing_value[pct_missing > group[[i - 1]] & pct_missing <=
group[[i]], `:=`(Escala, names(group)[i])]
}
}))
output <- ggplot(missing_value, aes_string(x = "feature",
y = "num_missing", fill = "Escala")) + geom_bar(stat = "identity") +
scale_fill_manual("Escala", values =
c("Muy_bajo"="#E5F5F9","Bajo"="#99D8C9","Elevado"="#2CA25F","Muy_elevado"="firebrick2")) +
coord_flip() + xlab("Atributos") +
ylab("Número de NAs")
geom_label_args_list <- list(mapping = aes(label = paste0(round(100 *
pct_missing, 2), "%")))
output <- output + do.call("geom_label", c(geom_label_args_list,
geom_label_args))
class(output) <- c("single", class(output))
plotDataExplorer(plot_obj = output, title = title, ggtheme = ggtheme,
theme_config = theme_config)
}
cis_<-cis
colnames(cis_) <- c("Sexo", "Edad", "Comunidad Autónoma", "Nacionalidad", "Valoración Situación
económica", "Confianza en el presidente", "Confianza en la oposición", "Preferencia de presidente",
"Intención de voto", "Intención de voto alternativo", "Simpatía partidista", "Ideología", "Ideología PS",
"Ideología PC", "Ideología PI", "Ideología SA", "Ideología IA", "Valoración PS", "Valoración PC",
"Valoración PI", "Valoración SA", "Valoración IA", "Participación electoral 2019", "Recuerdo de voto
2019", "Cercanía partidista", "Nivel de estudios", "Religión", "Estado civil", "Situación laboral", "Clase
social", "Pesos")
plot_missing_2(cis_, ggtheme = theme_classic(), title = "Valores nulos (NA) por atributo")
-
Imputación de las variables filtro con NAs complementarios
#Las variables que tienen NAs son:
# - P21a. INTENCIONGALTER -> Voto_alternativo_cod (1470)
# - P22. SIMPATIA -> Simpatia_cod (2347)
# - P28a. NIVELESENTREV -> Estudios_cod (53)
# - P26a. RECUVOTOG -> Recuerdo_voto_cod (521)
#Filtros de pregunta Intención de voto alternativo:
# Si P21 -> INTENCIONG NO ES:
# - 77
# - 96
# - 97
# - 98
# - 99
II <- is.na(cis$INTENCIONGALTER)
table(II)
table(cis$INTENCIONG[II])
# ¿A qué valores corresponden esos NA en INTENCIONG?
table(cis$INTENCIONG[II])
# Imputación con valores de INTENCIONG
for(i in 1:nrow(cis))
{
if(is.na(cis[i,"INTENCIONGALTER"])==TRUE)
{
cis[i,"INTENCIONGALTER"]=cis[i,"INTENCIONG"]
}
}
II <- is.na(cis$INTENCIONGALTER)
table(II)
#Filtros pregunta Simpatía:
# Si P21 -> INTENCIONG NO ES:
#- 77
#- 96
#- 97
#- 98
#- 99
#Errata en el cuestionario. Las personas que responden a SIMPATÍA son las que no responden a
INTENCIONGALTER, es decir, las que responden a INTENCIONG.
II <- is.na(cis$SIMPATIA)
table(II)
table(cis$INTENCIONG[II])
table(cis$INTENCIONG[II=="FALSE"])
#Imputaremos los valores de INTENCIONG en Simpatía
for(i in 1:nrow(cis))
{
if(is.na(cis[i,"SIMPATIA"])==TRUE)
{
cis[i,"SIMPATIA"]=cis[i,"INTENCIONG"]
}
}
II <- is.na(cis$SIMPATIA)
table(II)
#Filtros nivel de estudios entrevistado:
# Si P28 -> ¿Ha ido ud. a la escuela o cursado algún tipo de estudios? = 3 Sí ha ido.
#Nueva categoría/Sin estudios.
II <- is.na(cis$NIVELESTENTREV)
table(II)
#Los imputaremos con valor 100 y posteriormente crearemos la categoría Sin estudios.
for(i in 1:nrow(cis))
{
if(is.na(cis[i,"NIVELESTENTREV"])==TRUE)
{
cis[i,"NIVELESTENTREV"]=100
}
}
#Filtros recuerdo de voto:
# Si P26 (PARTICIPACIONG) -> ¿Me podría decir si votó en las elecciones generales del pasado 2019?
= 1 o 7, Es decir que votó.
# Nueva categoría -> No votó en las pasadas elecciones (2 al 9)
II <- is.na(cis$RECUVOTOG)
table(II)
table(cis$PARTICIPACIONG[II])
#Los vamos a imputar con valor = 100 y luego lo cambiaremos en la codificació a la categoría No votó
for(i in 1:nrow(cis))
{
if(is.na(cis[i,"RECUVOTOG"])==TRUE)
{
cis[i,"RECUVOTOG"]=100
}
}
-
Convertir a factor las variables
for(i in 1:(ncol(cis)))
{
if(class(cis[,i])=="numeric")
{
if(colnames(cis)[i]!="EDAD")
{
cis[,i]<- as.factor(cis[,i])
}
}
}
-
Tabla de la Comunidad Autónoma
table(cis$CCAA)
cis$CCAA <- as.factor(cis$CCAA)
tabla_CCAA_cod <- rownames(table(cis$CCAA))
tabla_CCAA_cod <- cbind(tabla_CCAA_cod, c("Andalucía", "Aragón", "Asturias (Principado de)",
"Baleares (Illes)", "Canarias", "Cantabria", "Castilla-La Mancha", "Castilla y León", "Cataluña",
"Comunitat Valenciana", "Extremadura", "Galicia", "Madrid (Comunidad de)", "Murcia (Región de)",
"Navarra (Comunidad Floral de)", "País Vasco", "Rioja (La)", "Ceuta (Ciudad Autónoma de)", "Melilla
(Ciudad Autónoma de)"))
colnames(tabla_CCAA_cod) <- NULL
options(knitr.kable.NA = '')
kable(tabla_CCAA_cod, position = "center", booktabs = TRUE, align = "cl", caption = "<leftr><em> P-:
Comunidad autónoma del entrevistado </em></leftr>", escape = FALSE, font_size = 15) %>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above (c("Valores iniciales" = 2))%>%
column_spec(2, width = "6cm")%>%
column_spec(1, width = "1cm")
-
Tabla del sexo del encuestado
cis$SEXO <- as.factor(cis$SEXO)
tabla_sexo_cod <- rownames(table(cis$SEXO))
tabla_sexo_cod <- cbind(tabla_sexo_cod, c("Hombre", "Mujer"))
colnames(tabla_sexo_cod) <- NULL
options(knitr.kable.NA = '')
kable(tabla_sexo_cod, position = "center", booktabs = TRUE, align = "cl", caption = "<leftr><em> P0a:
Sexo </em></leftr>", escape = FALSE, font_size = 15) %>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above (c("Valores iniciales" = 2))%>%
column_spec(1, width = "1cm")%>%
column_spec(2, width = "2cm")
-
Recodificación y tabla de la edad del encuestado
table(cis$EDAD)
cis <- cis %>%
mutate(Edad_grupos = case_when(EDAD >= 18 & EDAD <= 24 ~ 1,
EDAD >= 25 & EDAD <= 34 ~ 2,
EDAD >= 35 & EDAD <= 44 ~ 3,
EDAD >= 45 & EDAD <= 54 ~ 4,
EDAD >= 55 & EDAD <= 64 ~ 5,
EDAD >= 65 ~ 6))
cis$Edad_grupos <- as.factor(cis$Edad_grupos)
tabla_edad_cod <- rownames(table(cis$Edad_grupos))
tabla_edad_cod <- cbind(tabla_edad_cod, c("De 18 a 24 años", "De 25 a 34 años", "De 35 a 44 años",
"De 45 a 54 años", "De 55 a 64 años","Más de 65 años"))
colnames(tabla_edad_cod) <- NULL
options(knitr.kable.NA = '')
kable(tabla_edad_cod, position = "center", booktabs = TRUE, align = "cl", caption = "<leftr><em> P0b:
Edad </em></leftr>", escape = FALSE, font_size = 15) %>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above (c("Recodificación" = 2))%>%
column_spec(2, width = "3cm")%>%
column_spec(1, width = "1cm")
-
Tabla de la nacionalidad del encuestado
cis$P0 <- as.factor(cis$P0)
tabla_P0_cod <- rownames(table(cis$P0))
tabla_P0_cod <- cbind(tabla_P0_cod, c("Nacionalidad española", "Nacionalidad española y otra"))
colnames(tabla_P0_cod) <- NULL
options(knitr.kable.NA = '')
kbl(tabla_P0_cod, position = "center",align = "cl", caption = "<leftr><em> P0c: Nacionalidad del
entrevistado </em></leftr>", font_size = 15) %>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above (c("Valores iniciales" = 2))%>%
column_spec(1, width = "1cm")%>%
column_spec(2, width = "5cm")
-
Recodificación y tabla del nivel de estudios del encuestado
tabla_estudios<- rownames(table(cis$NIVELESTENTREV))[1:18]
tabla_estudios <- cbind(tabla_estudios, c("Menos de 5 años de escolarización","Primaria (enseñanza
primaria o 5º curso de EGB)","Formación Profesional inicial","Secundaria (ESO completa, EGB
completa, Bachillerato Elemental) ", "Formación Profesional de Grado Medio (FP I)",
"Bachillerato/COU/PREU (Bachillerato superior, BUP)", "Formación Profesional de grado superior (FP
II)", "Arquitectura / Ingeniería Técnica (aparejador/a; peritos/as)", "Diplomatura oficial", "Estudios de
Grado", "Licenciatura", "Arquitectura/Ingeniería", "Máster oficial universitario", "Doctorado", "Títulos
propios de posgrado (máster no oficial, etc.)", "Otros estudios", "N.S/No recuerda", "N.C"))
colnames(tabla_estudios) <- NULL
cis$Estudios <- NULL
cis <- cis %>%
mutate(Estudios = case_when(NIVELESTENTREV == 0 | NIVELESTENTREV == 1 |
NIVELESTENTREV == 2 | NIVELESTENTREV == 100 ~ 1,
NIVELESTENTREV == 3 | NIVELESTENTREV == 4 | NIVELESTENTREV == 5 |
NIVELESTENTREV == 6 | NIVELESTENTREV == 7 ~ 2,
NIVELESTENTREV == 8 | NIVELESTENTREV == 9 | NIVELESTENTREV == 10 |
NIVELESTENTREV == 11 | NIVELESTENTREV == 12 |
NIVELESTENTREV == 13 | NIVELESTENTREV == 14 | NIVELESTENTREV ==
15 ~ 3,
NIVELESTENTREV == 16 ~ 4,
NIVELESTENTREV == 98 | NIVELESTENTREV == 99 ~ 99))
cis$Estudios <- as.factor(cis$Estudios)
tabla_estudios_cod <- rownames(table(cis$Estudios))
tabla_estudios_cod <- cbind(tabla_estudios_cod, c("Sin estudios / Estudios Primarios", "Estudios
Secundarios / Formación Profesional", "Estudios Superiores", "Otros estudios", "NS/NC"))
colnames(tabla_estudios_cod) <- NULL
library(zoo)
tabla_estudios <- as.data.frame(tabla_estudios)
tabla_estudios_cod <- as.data.frame(tabla_estudios_cod)
tabla_total_estudios <- data.frame(tabla_estudios, cbind(zoo(, 1:nrow(tabla_estudios)),
as.zoo(tabla_estudios_cod)))
colnames(tabla_total_estudios) <- NULL
tabla_total_estudios[,4]<-as.character(tabla_total_estudios[,4])
tabla_total_estudios[1,4]<-paste("Sin estudios / Estudios Primarios", footnote_marker_number(1,
"html"))
tabla_total_estudios[2,4]<-paste("Estudios Secundarios / Formación Profesional",
footnote_marker_number(2, "html"))
tabla_total_estudios[3,4]<-paste("Estudios Superiores", footnote_marker_number(3, "html"))
options(knitr.kable.NA = '')
kable(tabla_total_estudios, position = "center", booktabs = TRUE, align = "clcl", caption =
"<left><em>P28a: Nivel de estudios alcanzado por la persona entrevistada </em></left>", escape =
FALSE) %>%
kableExtra::footnote(number = c("NA, Menos de 5 años de escolarización y Primaria (enseñanza
primaria o hasta 5o de EGB)", "Formación Profesional inicial, Secundaria (Bachillerato Elemental, EGB
completa, ESO completa),
Formación Profesional de grado medio (FP I), Bachillerato/ COU/ PREU (Bachillerato
superior, BUP, bachillerato)
y Formación Profesional de grado superior (FP II)", "Universitarios medios (diplomatura,
arquitectura o ingeniería técnica) y Universitarios superiores
(licenciatura, grado, máster oficial, doctorado, títulos propios de postgrado no oficiales)"),
threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%
column_spec(c(2), width = "4cm")%>%
column_spec(c(4), width = "4cm")%>%
column_spec(c(1,3), width = "2cm")
-
Recodificación y tabla de la situación laboral
tabla_situ<- rownames(table(cis$SITLAB))
tabla_situ <- cbind(tabla_situ, c("Trabaja", "Jubilado/a o pensionista (trabajó con anterioridad)",
"Pensionista (no trabajó con anterioridad)", "En paro y ha trabajado con anterioridad", "En paro y en
busca de su primer empleo", "Estudiante", "Trabajo doméstico no remunerado", "Otra situación", "NC"))
colnames(tabla_situ) <- NULL
cis$Situ <- NULL
cis <- cis %>%
mutate(Situ = case_when(SITLAB == 1 ~ 1,
SITLAB == 2 | SITLAB == 3 ~ 2,
SITLAB == 4 | SITLAB == 5 ~ 3,
SITLAB == 6 ~ 4,
SITLAB == 6 ~ 4,
SITLAB == 7 ~ 5,
SITLAB == 8 ~ 6,
SITLAB == 9 ~ 99))
cis$Situ <- as.factor(cis$Situ)
tabla_situ_cod <- rownames(table(cis$Situ))
tabla_situ_cod <- cbind(tabla_situ_cod, c("Trabajadores", "Jubilados o pensionistas", "Parados",
"Estudiantes", "Trabajo doméstico no remunerado", "Otra situación", "NC"))
colnames(tabla_situ_cod) <- NULL
tabla_situ <- as.data.frame(tabla_situ)
tabla_situ_cod <- as.data.frame(tabla_situ_cod)
tabla_total_situ <- data.frame(tabla_situ, cbind(zoo(, 1:nrow(tabla_situ)), as.zoo(tabla_situ_cod)))
colnames(tabla_total_situ) <- NULL
tabla_total_situ[,4]<-as.character(tabla_total_situ[,4])
tabla_total_situ[2,4]<-paste("Jubilados o pensionistas", footnote_marker_number(1, "html"))
tabla_total_situ[3,4]<-paste("Parados", footnote_marker_number(2, "html"))
options(knitr.kable.NA = '')
kable(tabla_total_situ, position = "center", booktabs = TRUE, align = "clcl", caption = "<lef><em>P31:
Situación laboral de la persona entrevistada </em></left>", escape = FALSE) %>%
kableExtra::footnote(number = c("Jubilado/a o pensionista (trabajó con anterioridad), Pensionista (no
trabajó con anterioridad)", "En paro y ha trabajado con anterioridad, En paro y en busca de su primer
empleo"))%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))
-
Recodificación y tabla de la religión del encuestado
tabla_religion<- rownames(table(cis$RELIGION))
tabla_religion <- cbind(tabla_religion, c("Católico/a practicante", "Católico/a no practicante", "Creyente
de otra religión", "Agnóstico/a", "Indiferente, no creyente", "Ateo/a", "NC"))
colnames(tabla_religion) <- NULL
cis$Religion_cod <- NULL
cis <- cis %>%
mutate(Religion_cod = case_when(RELIGION == 1 | RELIGION == 2 ~ 1,
RELIGION == 3 ~ 2,
RELIGION == 4 | RELIGION == 5 ~ 3,
RELIGION == 6 ~ 4,
RELIGION == 9 ~ 99))
cis$Religion_cod <- as.factor(cis$Religion_cod)
tabla_religion_cod <- rownames(table(cis$Religion_cod))
tabla_religion_cod <- cbind(tabla_religion_cod, c("Católico", "Creyente de otra religión", "No creyente",
"Ateo/a", "NC"))
colnames(tabla_religion_cod) <- NULL
tabla_religion <- as.data.frame(tabla_religion)
tabla_religion_cod <- as.data.frame(tabla_religion_cod)
tabla_total_religion <- data.frame(tabla_religion, cbind(zoo(, 1:nrow(tabla_religion)),
as.zoo(tabla_religion_cod)))
colnames(tabla_total_religion) <- NULL
tabla_total_religion[,4]<-as.character(tabla_total_religion[,4])
tabla_total_religion[1,4]<-paste("Católico", footnote_marker_number(1, "html"))
tabla_total_religion[3,4]<-paste("No creyente", footnote_marker_number(2, "html"))
options(knitr.kable.NA = '')
kable(tabla_total_religion, position = "center", booktabs = TRUE, align = "clcl", caption =
"<left><em>P29: Religiosidad de la persona entrevistada </em></left>", escape = FALSE) %>%
kableExtra::footnote(number = c("Católico/a practicante, Católico/a no practicante", "Agnóstico/a,
Indiferente, no creyente"))%>%
kable_classic(full_width = F, html_font = "Times New Roman") %>%
add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%
column_spec(c(1,3), width = "1cm")
-
Recodificación y tabla del estado civil del encuestado
tabla_civil<- rownames(table(cis$ECIVIL))
tabla_civil <- cbind(tabla_civil, c("Casado/a", "Soltero/a", "Viudo/a", "Separado/a", "Divorciado/a",
"NC"))
colnames(tabla_civil) <- NULL
cis$civil_cod <- NULL
cis <- cis %>%
mutate(civil_cod = case_when(ECIVIL == 1 ~ 1,
ECIVIL == 2 | ECIVIL == 4 | ECIVIL == 5 ~ 2,
ECIVIL == 3 ~ 3,
ECIVIL == 9 ~ 99))
cis$civil_cod <- as.factor(cis$civil_cod)
tabla_civil_cod <- rownames(table(cis$civil_cod))
tabla_civil_cod <- cbind(tabla_civil_cod, c("Casado/a", "Soltero/a", "Viudo/a", "NC"))
colnames(tabla_civil_cod) <- NULL
tabla_civil <- as.data.frame(tabla_civil)
tabla_civil_cod <- as.data.frame(tabla_civil_cod)
tabla_total_civil <- data.frame(tabla_civil, cbind(zoo(, 1:nrow(tabla_civil)), as.zoo(tabla_civil_cod)))
colnames(tabla_total_civil) <- NULL
tabla_total_civil[,4]<-as.character(tabla_total_civil[,4])
tabla_total_civil[2,4]<-paste("Soltero/a", footnote_marker_number(1, "html"))
options(knitr.kable.NA = '')
kable(tabla_total_civil, position = "center", booktabs = TRUE, align = "clcl", caption =
"<leftr><em>P30: Estado civil de la persona entrevistada </em></left>", escape = FALSE) %>%
kableExtra::footnote(number = c("Soltero/a, Divorciado/a, Separado/a"))%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%
column_spec(c(2,4), width = "3cm")%>%
column_spec(c(1,3), width = "1cm")
-
Recodificación y tabla de la clase social del encuestado
tabla_clase<- rownames(table(cis$CLASESOCIAL))
tabla_clase <- cbind(tabla_clase, c("Clase alta", "Clase media-alta", "Clase media-media", "Clase media-
baja", "Calse trabajadora/obrera", "Clase pobre", "Proletariado", "A los/as de abajo", "Excluidos/as","A
la gente común", "Clase baja", "Otras", "No cree en las clases", "No sabe, duda", "NC"))
colnames(tabla_clase) <- NULL
cis$clase_cod <- NULL
cis <- cis %>%
mutate(clase_cod = case_when(CLASESOCIAL == 1 ~ 1,
CLASESOCIAL == 2 | CLASESOCIAL == 3 | CLASESOCIAL == 4 ~ 2,
CLASESOCIAL == 5 | CLASESOCIAL == 6 | CLASESOCIAL == 8 |
CLASESOCIAL == 9 | CLASESOCIAL == 10 | CLASESOCIAL == 11 | CLASESOCIAL == 12 ~ 3,
CLASESOCIAL == 96 ~ 4,
CLASESOCIAL == 97 ~ 5,
CLASESOCIAL == 98 | CLASESOCIAL == 99 ~ 99))
cis$clase_cod <- as.factor(cis$clase_cod)
tabla_clase_cod <- rownames(table(cis$clase_cod))
tabla_clase_cod <- cbind(tabla_clase_cod, c("Clase alta", "Clase media", "Clase baja", "Otra clase", "No
cree en las clases", "NS/NC"))
colnames(tabla_clase_cod) <- NULL
tabla_clase <- as.data.frame(tabla_clase)
tabla_clase_cod <- as.data.frame(tabla_clase_cod)
tabla_total_clase <- data.frame(tabla_clase, cbind(zoo(, 1:nrow(tabla_clase)), as.zoo(tabla_clase_cod)))
colnames(tabla_total_clase) <- NULL
tabla_total_clase[,4]<-as.character(tabla_total_clase[,4])
tabla_total_clase[2,4]<-paste("Clase media", footnote_marker_number(1, "html"))
tabla_total_clase[3,4]<-paste("Clase baja", footnote_marker_number(2, "html"))
options(knitr.kable.NA = '')
kable(tabla_total_clase, position = "center", booktabs = TRUE, align = "clcl", caption = "<left><em>P32:
Clase social subjetiva de la persona entrevistada </left></em>", escape = FALSE) %>%
kableExtra::footnote(number = c("Clase media-alta, Clase media-media, Clase media-baja", "Clase
trabajadora/obrera, Clase pobre, Proletariado, A los/as de abajo,
Excluidos/as, A la gente común, Clase baja "))%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%
column_spec(c(2,4), width = "5cm")%>%
column_spec(c(1,3), width = "1cm")
-
Recodificación y tabla de la intención de voto
tabla_voto<- rownames(table(cis$INTENCIONG))
tabla_voto <- cbind(tabla_voto, c("PP", "PSOE", "Podemos", "Ciudadanos", "IU", "En Comú Podem",
"Compromís", "ERC", "JxCat", "EAJ-PNV", "EH Bildu", "CC-PNC", "Nueva Canarias", "PACMA",
"VOX", "CUP", "Los Verdes", "Unidas Podemos", "PAR", "BNG","Partido Libertario", "CHA", "Geroa
Bai", "PCPE", "PRC", "UPL", "Más País", "En Común-Unidas Podemos", "Teruel Existe", "PDeCAT",
"Voto nulo", "Otro partido", "En blanco", "No votaría", "No sabe todavía", "N.C"))
colnames(tabla_voto) <- NULL
cis$Voto_cod <- NULL
cis <- cis %>%
mutate(Voto_cod = case_when(INTENCIONG == 1 ~ 1,
INTENCIONG == 2 ~ 2,
INTENCIONG == 3 | INTENCIONG == 5 | INTENCIONG == 6 |
INTENCIONG == 22 | INTENCIONG == 21 | INTENCIONG == 67 ~ 3,
INTENCIONG == 4 ~ 4,
INTENCIONG == 18 ~ 5,
INTENCIONG == 8 ~ 6,
INTENCIONG == 9 ~ 7,
INTENCIONG == 11 ~ 8,
INTENCIONG == 7 | INTENCIONG == 12 | INTENCIONG == 13 | INTENCIONG
==
14 | INTENCIONG == 16 | INTENCIONG == 17 | INTENCIONG == 18 | INTENCIONG == 19
|INTENCIONG == 20 | INTENCIONG == 23 | INTENCIONG == 24 | INTENCIONG == 29 |
INTENCIONG == 30 | INTENCIONG == 34 | INTENCIONG == 39 | INTENCIONG == 43 |
INTENCIONG == 44 | INTENCIONG == 50 | INTENCIONG == 68 | INTENCIONG == 71 |
INTENCIONG == 95 | INTENCIONG == 96 ~ 9,
INTENCIONG == 77 | INTENCIONG == 97 ~ 10,
INTENCIONG == 98 | INTENCIONG == 99 ~ 99))
cis$Voto_cod <- as.factor(cis$Voto_cod)
tabla_Voto_cod <- rownames(table(cis$Voto_cod))
tabla_Voto_cod <- cbind(tabla_Voto_cod, c("PP", "PSOE", "Podemos", "Ciudadanos", "VOX", "ERC",
"JxCat", "EAJ-PNV", "Otros", "Abstención", "NS/NC"))
colnames(tabla_Voto_cod) <- NULL
tabla_voto <- as.data.frame(tabla_voto)
tabla_Voto_cod <- as.data.frame(tabla_Voto_cod)
tabla_total_Voto <- data.frame(tabla_voto, cbind(zoo(, 1:nrow(tabla_voto)), as.zoo(tabla_Voto_cod)))
colnames(tabla_total_Voto) <- NULL
tabla_total_Voto[,4]<-as.character(tabla_total_Voto[,4])
tabla_total_Voto[3,4]<-paste("Podemos", footnote_marker_number(1, "html"))
options(knitr.kable.NA = '')
kable(tabla_total_Voto, position = "center", booktabs = TRUE, align = "clcl", caption = "
<left><br><em> P21: Intención de voto en nuevas elecciones generales </em></center>", escape =
FALSE, )%>%
kableExtra::footnote(number = c("Formado por la coalición de En Comú Podem, IU, EQUO, Unidas
Podemos,
En Común - Unidas Podemos"))%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%
column_spec(c(2), width = "5cm")%>%
column_spec(c(1,3), width = "1cm")
-
Recodificación y tabla de la intención de voto alternativo
#Misma codificación que Intención de voto, pero con una nueva categoría: No cambiaría su voto
cis$Voto_alternativo_cod <- NULL
cis <- cis %>%
mutate(Voto_alternativo_cod = case_when(INTENCIONGALTER == 1 ~ 1,
INTENCIONGALTER == 2 ~ 2,
INTENCIONGALTER == 3 | INTENCIONGALTER == 5 |
INTENCIONGALTER == 6 |
INTENCIONGALTER == 22 | INTENCIONGALTER == 21 |
INTENCIONGALTER == 67 ~ 3,
INTENCIONGALTER == 4 ~ 4,
INTENCIONGALTER == 18 ~ 5,
INTENCIONGALTER == 8 ~ 6,
INTENCIONGALTER == 9 ~ 7,
INTENCIONGALTER == 11 ~ 8,
INTENCIONGALTER == 7 | INTENCIONGALTER == 12 |
INTENCIONGALTER == 13 | INTENCIONGALTER == 14 | INTENCIONGALTER == 16 |
INTENCIONGALTER == 17 | INTENCIONGALTER == 18 | INTENCIONGALTER == 19
|INTENCIONGALTER == 20 | INTENCIONGALTER == 24 |INTENCIONGALTER == 25
|INTENCIONGALTER == 27 | INTENCIONGALTER == 29 | INTENCIONGALTER == 30 |
INTENCIONGALTER == 38 |INTENCIONGALTER == 39 | INTENCIONGALTER == 43 |
INTENCIONGALTER == 44 | INTENCIONGALTER == 50 | INTENCIONGALTER == 61 |
INTENCIONGALTER == 68 | INTENCIONGALTER == 71 |INTENCIONGALTER == 72 |
INTENCIONGALTER == 95 | INTENCIONGALTER == 96 ~ 9,
INTENCIONGALTER == 93 ~ 10,
INTENCIONGALTER == 77 | INTENCIONGALTER == 97 ~ 11,
INTENCIONGALTER == 98 | INTENCIONGALTER == 99 ~ 99))
tabla_voto_alternativo <- rownames(table(cis$INTENCIONGALTER))
tabla_voto_alternativo <- cbind(tabla_voto_alternativo, c("PP", "PSOE", "Podemos", "Ciudadanos",
"IU", "En Comú Podem", "Compromís", "ERC", "JxCat", "EAJ-PNV", "EH Bildu", "CC-PNC", "Nueva
Canarias", "PACMA", "VOX", "CUP", "Los Verdes", "Unidas Podemos", "EQUO", "BNG","MÉS",
"Escaños en Blanco", "Partido Libertario", "CHA", "UPyD", "PCPE", "PRC", "UPL", "Más País",
"Democaracia Nacional", "En Común-Unidas Podemos", "Teruel Existe", "PDeCAT", "PNC (Partido
Nacionalista Catalán)", "Voto nulo", "No votaría a ningún otro partido", "Otro partido", "En blanco",
"No votaría", "N.S", "N.C"))
colnames(tabla_voto_alternativo) <- NULL
cis$Voto_alternativo_cod <- as.factor(cis$Voto_alternativo_cod)
tabla_Voto_alternativo_cod <- rownames(table(cis$Voto_alternativo_cod))
tabla_Voto_alternativo_cod <- cbind(tabla_Voto_alternativo_cod, c("PP", "PSOE", "Podemos",
"Ciudadanos", "VOX", "ERC", "JxCat", "EAJ-PNV", "Otros", "No votaría a ningún otro partido",
"Abstención", "NS/NC"))
colnames(tabla_Voto_cod) <- NULL
tabla_total_Voto_alternativo <- data.frame(tabla_voto_alternativo, cbind(zoo(,
1:nrow(tabla_voto_alternativo)), as.zoo(tabla_Voto_alternativo_cod)))
colnames(tabla_total_Voto_alternativo) <- NULL
tabla_total_Voto_alternativo[,4]<-as.character(tabla_total_Voto_alternativo[,4])
tabla_total_Voto_alternativo[3,4]<-paste("Podemos", footnote_marker_number(1, "html"))
options(knitr.kable.NA = '')
kable(tabla_total_Voto_alternativo, position = "center", booktabs = TRUE, align = "clcl", caption =
"<leftr><em>P21a: Voto alternativo en futuras elecciones generales </em></left>", escape = FALSE, )
%>%
kableExtra::footnote(number = c("Formado por la coalición de En Comú Podem, IU, EQUO, Unidas
Podemos,
En Común - Unidas Podemos"))%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%
column_spec(c(1,3), width = "1cm")
-
Recodificación y tabla de la simpatía partidista
cis$Simpatia_cod <- NULL
cis <- cis %>%
mutate(Simpatia_cod = case_when(SIMPATIA == 1 ~ 1,
SIMPATIA == 2 ~ 2,
SIMPATIA == 3 | SIMPATIA == 5 | SIMPATIA == 6 |
SIMPATIA == 22 | SIMPATIA == 21 | SIMPATIA == 67 ~ 3,
SIMPATIA == 4 ~ 4,
SIMPATIA == 18 ~ 5,
SIMPATIA == 8 ~ 6,
SIMPATIA == 9 ~ 7,
SIMPATIA == 11 ~ 8,
SIMPATIA == 7 | SIMPATIA == 12 | SIMPATIA == 13 | SIMPATIA == 14 |
SIMPATIA == 16 | SIMPATIA == 17 | SIMPATIA == 18 | SIMPATIA == 19 |SIMPATIA == 20 |
SIMPATIA == 24 |SIMPATIA == 25 |SIMPATIA == 27 | SIMPATIA == 29 | SIMPATIA == 30 |
SIMPATIA == 34 |SIMPATIA == 38 |SIMPATIA == 39 | SIMPATIA == 40 | SIMPATIA == 43 |
SIMPATIA == 44 | SIMPATIA == 50 | SIMPATIA == 61 | SIMPATIA == 68 | SIMPATIA == 71
|SIMPATIA == 72 | SIMPATIA == 95 ~ 9,
SIMPATIA == 97 ~ 10,
SIMPATIA == 98 | SIMPATIA == 99 ~ 99))
-
Recodificación y tabla del recuerdo de voto en las anteriores elecciones
cis$Recuerdo_cod <- NULL
cis <- cis %>%
mutate(Recuerdo_cod = case_when(RECUVOTOG == 1 ~ 1,
RECUVOTOG == 2 ~ 2,
RECUVOTOG == 3 | RECUVOTOG == 5 | RECUVOTOG == 6 |
RECUVOTOG == 22 | RECUVOTOG == 21 | RECUVOTOG == 67 ~ 3,
RECUVOTOG == 4 ~ 4,
RECUVOTOG == 18 ~ 5,
RECUVOTOG == 8 ~ 6,
RECUVOTOG == 9 ~ 7,
RECUVOTOG == 11 ~ 8,
RECUVOTOG == 7 | RECUVOTOG == 12 | RECUVOTOG == 13 |
RECUVOTOG == 14 | RECUVOTOG == 16 | RECUVOTOG == 17 | RECUVOTOG == 18 |
RECUVOTOG == 19 |RECUVOTOG == 20 | RECUVOTOG == 22 | RECUVOTOG == 24
|RECUVOTOG == 25 |RECUVOTOG == 27 | RECUVOTOG == 29 | RECUVOTOG == 30 |
RECUVOTOG == 38 |RECUVOTOG == 39 | RECUVOTOG == 40 | RECUVOTOG == 43 |
RECUVOTOG == 44 | RECUVOTOG == 50 | RECUVOTOG == 61 | RECUVOTOG == 68 |
RECUVOTOG == 71 |RECUVOTOG == 72 | RECUVOTOG == 95 | RECUVOTOG == 96 ~ 9,
RECUVOTOG == 77 ~ 10,
RECUVOTOG == 100 ~ 11,
RECUVOTOG == 99 | RECUVOTOG == 98 ~ 99))
cis$Recuerdo_cod <- as.factor(cis$Recuerdo_cod)
tabla_Recuerdo_cod <- rownames(table(cis$Recuerdo_cod))
tabla_Recuerdo_cod <- cbind(tabla_Recuerdo_cod, c("PP", "PSOE", "Podemos", "Ciudadanos", "VOX",
"ERC", "JxCat", "EAJ-PNV", "Otros", "Abstención", "No fué a votar", "NS/NC"))
colnames(tabla_Recuerdo_cod) <- NULL
tabla_total_Recuerdo <- data.frame(tabla_voto, cbind(zoo(, 1:nrow(tabla_voto)),
as.zoo(tabla_Recuerdo_cod)))
colnames(tabla_total_Recuerdo) <- NULL
tabla_total_Recuerdo[,4]<-as.character(tabla_total_Recuerdo[,4])
tabla_total_Recuerdo[3,4]<-paste("Podemos", footnote_marker_number(1, "html"))
tabla_total_Recuerdo[11,4]<-paste("No fué a votar", footnote_marker_number(2, "html"))
options(knitr.kable.NA = '')
kable(tabla_total_Recuerdo, position = "center", booktabs = TRUE, align = "clcl", caption = "
<left><em>P26a: Recuerdo de voto en las elecciones generales (nov. 2019) </em></left>", escape =
FALSE, ) %>%
kableExtra::footnote(number = c("Formado por la coalición de En Comú Podem, IU, EQUO, Unidas
Podemos,
En Común - Unidas Podemos", "Formado por NAs de la variable inicial"))%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%
column_spec(2, width = "6cm")%>%
column_spec(c(1,3), width = "1cm")
-
Recodificación y tabla de la cercanía partidista
cis$Cercania_cod <- NULL
cis <- cis %>%
mutate(Cercania_cod = case_when(CERCANIA == 1 ~ 1,
CERCANIA == 2 ~ 2,
CERCANIA == 3 | CERCANIA == 5 | CERCANIA == 6 |
CERCANIA == 22 | CERCANIA == 21 | CERCANIA == 67 ~ 3,
CERCANIA == 4 ~ 4,
CERCANIA == 18 ~ 5,
CERCANIA == 8 ~ 6,
CERCANIA == 9 ~ 7,
CERCANIA == 11 ~ 8,
CERCANIA == 7 | CERCANIA == 12 | CERCANIA == 13 | CERCANIA == 14 |
CERCANIA == 16 | CERCANIA == 17 | CERCANIA == 18 | CERCANIA == 19 |CERCANIA == 20 |
CERCANIA == 24 |CERCANIA == 25 | CERCANIA == 26 | CERCANIA == 29 | CERCANIA == 30 |
CERCANIA == 34 |CERCANIA == 38 | CERCANIA == 40 | CERCANIA == 42 |CERCANIA == 43 |
CERCANIA == 44 | CERCANIA == 50 | CERCANIA == 67 | CERCANIA == 68 | CERCANIA == 71
|CERCANIA == 72 | CERCANIA == 95 ~ 9,
CERCANIA == 97 ~ 10,
CERCANIA == 99 | CERCANIA == 98 ~ 99))
tabla_cercania <- rownames(table(cis$CERCANIA))
tabla_cercania <- cbind(tabla_cercania, c("PP", "PSOE", "Podemos", "Ciudadanos", "IU", "En Comú
Podem", "Compromís", "ERC", "JxCat", "EAJ-PNV", "EH Bildu", "CC-PNC", "UPN", "Nueva
Canarias", "PACMA", "VOX", "CUP", "Los Verdes", "Unidas Podemos", "EQUO", "BNG","Falange
Española de las JONS", "Partido Libertario", "CHA", "Geroa Bai", "UPyD", "PI", "IGRE", "PRC",
"UPL", "Más País", "En Común-Unidas Podemos", "Teruel Existe", "PDeCAT", "PNC (Partido
Nacionalista Catalán)", "Otro partido", "Ninguno", "N.S", "N.C"))
colnames(tabla_cercania) <- NULL
cis$Cercania_cod <- as.factor(cis$Cercania_cod)
tabla_Cercania_cod <- rownames(table(cis$Cercania_cod))
tabla_Cercania_cod <- cbind(tabla_Cercania_cod, c("PP", "PSOE", "Podemos", "Ciudadanos", "VOX",
"ERC", "JxCat", "EAJ-PNV", "Otros", "Ninguno", "NS/NC"))
colnames(tabla_Cercania_cod) <- NULL
tabla_total_Cercania <- data.frame(tabla_cercania, cbind(zoo(, 1:nrow(tabla_cercania)),
as.zoo(tabla_Cercania_cod)))
colnames(tabla_total_Cercania) <- NULL
tabla_total_Cercania[,4]<-as.character(tabla_total_Cercania[,4])
tabla_total_Cercania[3,4]<-paste("Podemos", footnote_marker_number(1, "html"))
options(knitr.kable.NA = '')
kable(tabla_total_Cercania, position = "center", booktabs = TRUE, align = "clcl", caption =
"<left><br><em>P22: Partido político por el que siente más simpatía </em></center>
<left><br><em>P27: Partido que considera más cercano a sus ideas </em></center>", escape = FALSE,
) %>%
kableExtra::footnote(number = c("Formado por la coalición de En Comú Podem, IU, EQUO, Unidas
Podemos,
En Común - Unidas Podemos"))%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%
column_spec(c(1,3), width = "1cm")
-
Recodificación y tabla de la valoración de la situación económica de España
tabla_situ_eco<- rownames(table(cis$P13))
tabla_situ_eco <- cbind(tabla_situ_eco, c("Muy buena", "Buena", "Regular", "Mala", "Muy mala", "NS",
"NC"))
colnames(tabla_situ_eco) <- NULL
cis$Situ_eco_cod <- NULL
cis <- cis %>%
mutate(Situ_eco_cod= case_when(P13 == 1 ~ 1,
P13 == 2 ~ 2,
P13 == 3 ~ 3,
P13 == 4 ~ 4,
P13 == 5 ~ 5,
P13 == 8 | P13 == 9 ~ 99))
cis$Situ_eco_cod <- as.factor(cis$Situ_eco_cod)
cis$Situ_eco_cod <- as.factor(cis$Situ_eco_cod)
tabla_Situ_eco_cod <- rownames(table(cis$Situ_eco_cod))
tabla_Situ_eco_cod <- cbind(tabla_Situ_eco_cod, c("Muy buena", "Buena", "Regular", "Mala", "Muy
mala", "NS/NC"))
colnames(tabla_Situ_eco_cod) <- NULL
tabla_Situ_eco_cod <- as.data.frame(tabla_Situ_eco_cod)
tabla_total_Situ_eco <- data.frame(tabla_situ_eco, cbind(zoo(, 1:nrow(tabla_situ_eco)),
as.zoo(tabla_Situ_eco_cod)))
colnames(tabla_total_Situ_eco) <- NULL
options(knitr.kable.NA = '')
kable(tabla_total_Situ_eco, position = "center", booktabs = TRUE, align = "clcl", caption =
"<left><br><em> P13: Valoración de la situación económica general de España </em></center>",
escape = FALSE) %>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%
column_spec(c(1,3), width = "1cm")%>%
column_spec(c(2,4), width = "3cm")
-
Recodificación y tabla de la confianza en el actual presidente del gobierno
tabla_conf_presi<- rownames(table(cis$P18))
tabla_conf_presi <- cbind(tabla_conf_presi, c("Mucha confianza", "Bastante confianza", "Poca
confianza", "Ninguna confianza", "NS", "NC"))
colnames(tabla_conf_presi) <- NULL
cis$Conf_presi_cod <- NULL
cis <- cis %>%
mutate(Conf_presi_cod= case_when(P18 == 1 ~ 1,
P18 == 2 ~ 2,
P18 == 3 ~ 3,
P18 == 4 ~ 4,
P18 == 8 | P18 == 9 ~ 99))
cis$Conf_presi_cod <- as.factor(cis$Conf_presi_cod)
cis$Conf_presi_cod <- as.factor(cis$Conf_presi_cod)
tabla_Conf_presi_cod <- rownames(table(cis$Conf_presi_cod))
tabla_Conf_presi_cod <- cbind(tabla_Conf_presi_cod, c("Mucha confianza", "Bastante confianza", "Poca
confianza", "Ninguna confianza", "NS/NC"))
colnames(tabla_Conf_presi_cod) <- NULL
tabla_Conf_presi_cod <- as.data.frame(tabla_Conf_presi_cod)
tabla_total_Conf_presi <- data.frame(tabla_conf_presi, cbind(zoo(, 1:nrow(tabla_conf_presi)),
as.zoo(tabla_Conf_presi_cod)))
colnames(tabla_total_Conf_presi) <- NULL
options(knitr.kable.NA = '')
kable(tabla_total_Conf_presi, position = "center", booktabs = TRUE, align = "clcl", caption =
"<left><br><em> P18: Grado de confianza en el actual presidente: Pedro Sánchez </em></center>
<left><br><em> P19: Grado de confianza en el principal líder de la oposición: Pablo Casado (PP)
</em></center> ", escape = FALSE) %>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%
column_spec(c(1,3), width = "1cm")%>%
column_spec(c(2,4), width = "4cm")
-
Recodificación de la confianza en el líder de la oposición
tabla_conf_opo<- rownames(table(cis$P19))
tabla_conf_opo <- cbind(tabla_conf_opo, c("Mucha confianza", "Bastante confianza", "Poca confianza",
"Ninguna confianza", "NS", "NC"))
colnames(tabla_conf_opo) <- NULL
cis$Conf_opo_cod <- NULL
cis <- cis %>%
mutate(Conf_opo_cod= case_when(P19 == 1 ~ 1,
P19 == 2 ~ 2,
P19 == 3 ~ 3,
P19 == 4 ~ 4,
P19 == 8 | P19 == 9 ~ 99))
cis$Conf_opo_cod <- as.factor(cis$Conf_opo_cod)
-
Recodificación y tabla de la preferencia como presidente del gobierno
tabla_pref_presi<- rownames(table(cis$P20))
tabla_pref_presi <- cbind(tabla_pref_presi, c("Pedro Sánchez", "Pablo Casado","Santiago Abascal",
"Pablo Iglesias", "Alberto Garzón", "Inés Arrimadas", "Iñigo Errejón", "Otro/a", "Ninguno/a", "NS",
"NC"))
colnames(tabla_pref_presi) <- NULL
cis$Pref_presi_cod <- NULL
cis <- cis %>%
mutate(Pref_presi_cod= case_when(P20 == 1 ~ 1,
P20 == 2 ~ 2,
P20 == 3 ~ 3,
P20 == 4 ~ 4,
P20 == 5 ~ 5,
P20 == 6 ~ 6,
P20 == 7 ~ 7,
P20 == 96 ~ 8,
P20 == 97 ~ 9,
P20 == 98 | P20 == 99 ~ 99))
cis$Pref_presi_cod <- as.factor(cis$Pref_presi_cod)
cis$Pref_presi_cod <- as.factor(cis$Pref_presi_cod)
tabla_Pref_presi_cod <- rownames(table(cis$Pref_presi_cod))
tabla_Pref_presi_cod <- cbind(tabla_Pref_presi_cod, c("Pedro Sánchez", "Pablo Casado","Santiago
Abascal", "Pablo Iglesias", "Alberto Garzón", "Inés Arrimadas", "Iñigo Errejón", "Otro/a", "Ninguno/a",
"NS/NC"))
colnames(tabla_Pref_presi_cod) <- NULL
tabla_Pref_presi_cod <- as.data.frame(tabla_Pref_presi_cod)
tabla_total_Pref_presi <- data.frame(tabla_pref_presi, cbind(zoo(, 1:nrow(tabla_pref_presi)),
as.zoo(tabla_Pref_presi_cod)))
colnames(tabla_total_Pref_presi) <- NULL
options(knitr.kable.NA = '')
kable(tabla_total_Pref_presi, position = "center", booktabs = TRUE, align = "clcl", caption =
"<leftr><br><em> P20: Preferencia como presidente del gobierno central </em></center> ", escape =
FALSE) %>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%
column_spec(c(1,3), width = "1cm")%>%
column_spec(c(2,4), width = "4cm")
-
Recodificación y tabla de la autoubicación ideológica
tabla_ideologia<- rownames(table(cis$ESCIDEOL))
tabla_ideologia <- cbind(tabla_ideologia, c("1 - Izquierda", "2", "3", "4", "5", "6", "7", "8", "9","10 -
Derecha", "NS", "NC"))
colnames(tabla_ideologia) <- NULL
cis$Ideologia_cod <- NULL
cis <- cis %>%
mutate(Ideologia_cod= case_when(ESCIDEOL == 1 ~ 1,
ESCIDEOL == 2 ~ 2,
ESCIDEOL == 3 ~ 3,
ESCIDEOL == 4 ~ 4,
ESCIDEOL == 5 ~ 5,
ESCIDEOL == 6 ~ 6,
ESCIDEOL == 7 ~ 7,
ESCIDEOL == 8 ~ 8,
ESCIDEOL == 9 ~ 9,
ESCIDEOL == 10 ~ 10,
ESCIDEOL == 98 | ESCIDEOL == 99 ~ 99))
cis$Ideologia_cod <- as.factor(cis$Ideologia_cod)
cis$Ideologia_cod <- as.factor(cis$Ideologia_cod)
tabla_Ideologia_cod <- rownames(table(cis$Ideologia_cod))
tabla_Ideologia_cod <- cbind(tabla_Ideologia_cod, c("1 - Izquierda", "2", "3", "4", "5", "6", "7", "8",
"9","10 - Derecha", "NS/NC"))
colnames(tabla_Ideologia_cod) <- NULL
tabla_Ideologia_cod <- as.data.frame(tabla_Ideologia_cod)
tabla_total_ideologia <- data.frame(tabla_ideologia, cbind(zoo(, 1:nrow(tabla_ideologia)),
as.zoo(tabla_Ideologia_cod)))
colnames(tabla_total_ideologia) <- NULL
options(knitr.kable.NA = '')
kable(tabla_total_ideologia, position = "center", booktabs = TRUE, align = "clcl", caption =
"<left><em>P23: Escala de autoubicación ideológica (1-10) </em></center>", escape = FALSE) %>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%
column_spec(c(1,3), width = "1cm")%>%
column_spec(c(2,4), width = "5cm")
-
Recodificación y tabla de la clasificación ideológica de los líderes políticos
#Misma codificación que ideología, nueva categoría -> No conoce
#Pedro Sánchez
cis$Ideologia_ps_cod <- NULL
cis <- cis %>%
mutate(Ideologia_ps_cod= case_when(ESCIDEOLPOLI_1 == 1 ~ 1,
ESCIDEOLPOLI_1 == 2 ~ 2,
ESCIDEOLPOLI_1 == 3 ~ 3,
ESCIDEOLPOLI_1 == 4 ~ 4,
ESCIDEOLPOLI_1 == 5 ~ 5,
ESCIDEOLPOLI_1 == 6 ~ 6,
ESCIDEOLPOLI_1 == 7 ~ 7,
ESCIDEOLPOLI_1 == 8 ~ 8,
ESCIDEOLPOLI_1 == 9 ~ 9,
ESCIDEOLPOLI_1 == 10 ~ 10,
ESCIDEOLPOLI_1 == 97 ~ 11,
ESCIDEOLPOLI_1 == 98 | ESCIDEOLPOLI_1 == 99 ~ 99))
cis$Ideologia_ps_cod <- as.factor(cis$Ideologia_ps_cod)
cis$Ideologia_pc_cod <- NULL
cis <- cis %>%
mutate(Ideologia_pc_cod= case_when(ESCIDEOLPOLI_2 == 1 ~ 1,
ESCIDEOLPOLI_2 == 2 ~ 2,
ESCIDEOLPOLI_2 == 3 ~ 3,
ESCIDEOLPOLI_2 == 4 ~ 4,
ESCIDEOLPOLI_2 == 5 ~ 5,
ESCIDEOLPOLI_2 == 6 ~ 6,
ESCIDEOLPOLI_2 == 7 ~ 7,
ESCIDEOLPOLI_2 == 8 ~ 8,
ESCIDEOLPOLI_2 == 9 ~ 9,
ESCIDEOLPOLI_2 == 10 ~ 10,
ESCIDEOLPOLI_2 == 97 ~ 11,
ESCIDEOLPOLI_2 == 98 | ESCIDEOLPOLI_2 == 99 ~ 99))
cis$Ideologia_pc_cod <- as.factor(cis$Ideologia_pc_cod)
#Pablo Casado
cis$Ideologia_pi_cod <- NULL
cis <- cis %>%
mutate(Ideologia_pi_cod= case_when(ESCIDEOLPOLI_3 == 1 ~ 1,
ESCIDEOLPOLI_3 == 2 ~ 2,
ESCIDEOLPOLI_3 == 3 ~ 3,
ESCIDEOLPOLI_3 == 4 ~ 4,
ESCIDEOLPOLI_3 == 5 ~ 5,
ESCIDEOLPOLI_3 == 6 ~ 6,
ESCIDEOLPOLI_3 == 7 ~ 7,
ESCIDEOLPOLI_3 == 8 ~ 8,
ESCIDEOLPOLI_3 == 9 ~ 9,
ESCIDEOLPOLI_3 == 10 ~ 10,
ESCIDEOLPOLI_3 == 97 ~ 11,
ESCIDEOLPOLI_3 == 98 | ESCIDEOLPOLI_3 == 99 ~ 99))
cis$Ideologia_pi_cod <- as.factor(cis$Ideologia_pi_cod)
#Santiago Abascal
cis$Ideologia_sa_cod <- NULL
cis <- cis %>%
mutate(Ideologia_sa_cod= case_when(ESCIDEOLPOLI_4 == 1 ~ 1,
ESCIDEOLPOLI_4 == 2 ~ 2,
ESCIDEOLPOLI_4 == 3 ~ 3,
ESCIDEOLPOLI_4 == 4 ~ 4,
ESCIDEOLPOLI_4 == 5 ~ 5,
ESCIDEOLPOLI_4 == 6 ~ 6,
ESCIDEOLPOLI_4 == 7 ~ 7,
ESCIDEOLPOLI_4 == 8 ~ 8,
ESCIDEOLPOLI_4 == 9 ~ 9,
ESCIDEOLPOLI_4 == 10 ~ 10,
ESCIDEOLPOLI_4 == 97 ~ 11,
ESCIDEOLPOLI_4 == 98 | ESCIDEOLPOLI_4 == 99 ~ 99))
cis$Ideologia_sa_cod <- as.factor(cis$Ideologia_sa_cod)
#Inés Arrimadas
tabla_ideologia_ia<- rownames(table(cis$ESCIDEOLPOLI_5))
tabla_ideologia_ia <- cbind(tabla_ideologia_ia, c("1 - Izquierda", "2", "3", "4", "5", "6", "7", "8", "9","10
- Derecha", "No conoce", "NS", "NC"))
colnames(tabla_ideologia_ia) <- NULL
cis$Ideologia_ia_cod <- NULL
cis <- cis %>%
mutate(Ideologia_ia_cod= case_when(ESCIDEOLPOLI_5 == 1 ~ 1,
ESCIDEOLPOLI_5 == 2 ~ 2,
ESCIDEOLPOLI_5 == 3 ~ 3,
ESCIDEOLPOLI_5 == 4 ~ 4,
ESCIDEOLPOLI_5 == 5 ~ 5,
ESCIDEOLPOLI_5 == 6 ~ 6,
ESCIDEOLPOLI_5 == 7 ~ 7,
ESCIDEOLPOLI_5 == 8 ~ 8,
ESCIDEOLPOLI_5 == 9 ~ 9,
ESCIDEOLPOLI_5 == 10 ~ 10,
ESCIDEOLPOLI_5 == 97 ~ 11,
ESCIDEOLPOLI_5 == 98 | ESCIDEOLPOLI_5 == 99 ~ 99))
cis$Ideologia_ia_cod <- as.factor(cis$Ideologia_ia_cod)
cis$Ideologia_ia_cod <- as.factor(cis$Ideologia_ia_cod)
tabla_Ideologia_ia_cod <- rownames(table(cis$Ideologia_ia_cod))
tabla_Ideologia_ia_cod <- cbind(tabla_Ideologia_ia_cod, c("1 - Izquierda", "2", "3", "4", "5", "6", "7",
"8", "9","10 - Derecha", "No conoce", "NS/NC"))
colnames(tabla_Ideologia_ia_cod) <- NULL
tabla_Ideologia_ia_cod <- as.data.frame(tabla_Ideologia_ia_cod)
tabla_total_ideologia_ia <- data.frame(tabla_ideologia_ia, cbind(zoo(, 1:nrow(tabla_ideologia_ia)),
as.zoo(tabla_Ideologia_ia_cod)))
colnames(tabla_total_ideologia_ia) <- NULL
options(knitr.kable.NA = '')
kable(tabla_total_ideologia_ia, position = "center", booktabs = TRUE, align = "clcl", caption =
"<left><br><em>P24: Escala de ubicación ideológica (1-10) de líderes políticos nacionales: *Pedro
Sánchez * Pablo Casado * Pablo Iglesias * Santiago Abascal * Inés Arrimadas </em></center>", escape
= FALSE) %>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%
column_spec(c(1,3), width = "1cm")%>%
column_spec(c(2,4), width = "3cm")
-
Recodificación y tabla de la valoración de los líderes políticos
#Pedro Sánchez
tabla_valoracion_ps<- rownames(table(cis$P25_1))
tabla_valoracion_ps <- cbind(tabla_valoracion_ps, c("1 - Muy mal", "2", "3", "4", "5", "6", "7", "8", "9",
"10 - Muy bien ", "No conoce", "NS", "NC"))
colnames(tabla_valoracion_ps) <- NULL
cis$Valoracion_ps_cod <- NULL
cis <- cis %>%
mutate(Valoracion_ps_cod= case_when(P25_1 == 1 | P25_1 == 2 ~ 1,
P25_1 == 3 | P25_1 == 4 ~ 2,
P25_1 == 5 | P25_1 == 6 ~ 3,
P25_1 == 7 | P25_1 == 8 ~ 4,
P25_1 == 9 | P25_1 == 10 ~ 5,
P25_1 == 97 ~ 6,
P25_1 == 98 | P25_1 == 99 ~ 99))
cis$Valoracion_ps_cod <- as.factor(cis$Valoracion_ps_cod)
tabla_Valoracion_ps_cod <- rownames(table(cis$Valoracion_ps_cod))
tabla_Valoracion_ps_cod <- cbind(tabla_Valoracion_ps_cod, c("Muy mal", "Mal", "Regular", "Bien",
"Muy bien", "No conoce", "NS/NC"))
colnames(tabla_Valoracion_ps_cod) <- NULL
tabla_Valoracion_ps_cod <- as.data.frame(tabla_Valoracion_ps_cod)
tabla_total_valoracion <- data.frame(tabla_valoracion_ps, cbind(zoo(, 1:nrow(tabla_valoracion_ps)),
as.zoo(tabla_Valoracion_ps_cod)))
colnames(tabla_total_valoracion) <- NULL
tabla_total_valoracion[,4]<-as.character(tabla_total_valoracion[,4])
tabla_total_valoracion[1,4]<-paste("Muy mal", footnote_marker_number(1, "html"))
tabla_total_valoracion[2,4]<-paste("Mal", footnote_marker_number(2, "html"))
tabla_total_valoracion[3,4]<-paste("Regular", footnote_marker_number(3, "html"))
tabla_total_valoracion[4,4]<-paste("Bien", footnote_marker_number(2, "html"))
tabla_total_valoracion[5,4]<-paste("Muy bien", footnote_marker_number(3, "html"))
options(knitr.kable.NA = '')
kable(tabla_total_valoracion, position = "center", booktabs = TRUE, align = "clcl", caption =
"<left><em>P25: Escala de valoración (1-10) de líderes políticos nacionales: *Pedro Sánchez * Pablo
Casado * Pablo Iglesias * Santiago Abascal * Inés Arrimadas </em></center>", escape = FALSE) %>%
kableExtra::footnote(number = c("Valoración entre 1 y 2", "Valoración entre 3 y 4", "Valoración entre 5
y 6", "Valoración entre 7 y 8", "Valoración entre 9 y 10"))%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%
column_spec(c(1,3), width = "1cm")%>%
column_spec(c(2,4), width = "4cm")
#Pablo Casado
cis$Valoracion_pc_cod <- NULL
cis <- cis %>%
mutate(Valoracion_pc_cod= case_when(P25_2 == 1 | P25_2 == 2 ~ 1,
P25_2 == 3 | P25_2 == 4 ~ 2,
P25_2 == 5 | P25_2 == 6 ~ 3,
P25_2 == 7 | P25_2 == 8 ~ 4,
P25_2 == 9 | P25_2 == 10 ~ 5,
P25_2 == 97 ~ 6,
P25_2 == 98 | P25_2 == 99 ~ 99))
cis$Valoracion_pc_cod <- as.factor(cis$Valoracion_pc_cod)
#Pablo Iglesias
cis$Valoracion_pi_cod <- NULL
cis <- cis %>%
mutate(Valoracion_pi_cod= case_when(P25_3 == 1 | P25_3 == 2 ~ 1,
P25_3 == 3 | P25_3 == 4 ~ 2,
P25_3 == 5 | P25_3 == 6 ~ 3,
P25_3 == 7 | P25_3 == 8 ~ 4,
P25_3 == 9 | P25_3 == 10 ~ 5,
P25_3 == 97 ~ 6,
P25_3 == 98 | P25_3 == 99 ~ 99))
cis$Valoracion_pi_cod <- as.factor(cis$Valoracion_pi_cod)
#Santiago Abascal
cis$Valoracion_sa_cod <- NULL
cis <- cis %>%
mutate(Valoracion_sa_cod= case_when(P25_4 == 1 | P25_4 == 2 ~ 1,
P25_4 == 3 | P25_4 == 4 ~ 2,
P25_4 == 5 | P25_4 == 6 ~ 3,
P25_4 == 7 | P25_4 == 8 ~ 4,
P25_4 == 9 | P25_4 == 10 ~ 5,
P25_4 == 97 ~ 6,
P25_4 == 98 | P25_4 == 99 ~ 99))
cis$Valoracion_sa_cod <- as.factor(cis$Valoracion_sa_cod)
#Inés Arrimadas
cis$Valoracion_ia_cod <- NULL
cis <- cis %>%
mutate(Valoracion_ia_cod= case_when(P25_5 == 1 | P25_5 == 2 ~ 1,
P25_5 == 3 | P25_5 == 4 ~ 2,
P25_5 == 5 | P25_5 == 6 ~ 3,
P25_5 == 7 | P25_5 == 8 ~ 4,
P25_5 == 9 | P25_5 == 10 ~ 5,
P25_5 == 97 ~ 6,
P25_5 == 98 | P25_5 == 99 ~ 99))
cis$Valoracion_ia_cod <- as.factor(cis$Valoracion_ia_cod)
-
Recodificación y tabla de la participación en las elecciones generales de 2019
tabla_participacion<- rownames(table(cis$PARTICIPACIONG))
tabla_participacion <- cbind(tabla_participacion, c("Fue a votar y votó", "No tenía edad para votar", "Fue
a votar pero no pudo hacerlo", "No fue a votar porque no pudo", "Prefirió no votar", "No tenía derecho a
voto", "Votó por correo", "No recuerda/NS", "NC"))
colnames(tabla_participacion) <- NULL
cis$Participacion_cod <- NULL
cis <- cis %>%
mutate(Participacion_cod= case_when(PARTICIPACIONG == 1 | PARTICIPACIONG == 7 ~ 1,
PARTICIPACIONG == 3 | PARTICIPACIONG == 4 | PARTICIPACIONG == 5
~ 2,
PARTICIPACIONG == 2 | PARTICIPACIONG == 6 ~ 3,
PARTICIPACIONG == 9 | PARTICIPACIONG == 8 ~ 99))
cis$Participacion_cod <- as.factor(cis$Participacion_cod)
cis$Participacion_cod <- as.factor(cis$Participacion_cod)
tabla_Participacion_cod <- rownames(table(cis$Participacion_cod))
tabla_Participacion_cod <- cbind(tabla_Participacion_cod, c("Votó", "No votó", "No tenía derecho a
voto", "NS/NC"))
colnames(tabla_Participacion_cod) <- NULL
tabla_Participacion_cod <- as.data.frame(tabla_Participacion_cod)
tabla_total_participacion <- data.frame(tabla_participacion, cbind(zoo(, 1:nrow(tabla_participacion)),
as.zoo(tabla_Participacion_cod)))
colnames(tabla_total_participacion) <- NULL
tabla_total_participacion[,4]<-as.character(tabla_total_participacion[,4])
tabla_total_participacion[1,4]<-paste("Votó", footnote_marker_number(1, "html"))
tabla_total_participacion[2,4]<-paste("No votó", footnote_marker_number(2, "html"))
tabla_total_participacion[3,4]<-paste("No tenía derecho a voto", footnote_marker_number(3, "html"))
options(knitr.kable.NA = '')
kable(tabla_total_participacion, position = "center", booktabs = TRUE, align = "clcl", caption =
"<leftr><em>P26: Participación electoral en las anteriores elecciones generales (nov. 2019)
</em></center>", escape = FALSE) %>%
kableExtra::footnote(number = c("Fue a votar y votó; Votó por correo", "Fue a votar pero no pudo
hacerlo; No fue a votar porque no pudo", "No tenía edad para votar; No tenía derecho a voto"))%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above (c("Valores iniciales" = 2, "Recodificación" = 2))%>%
column_spec(c(1,3), width = "1cm")%>%
column_spec(c(4), width = "6cm")
colSums(is.na(cis))
cis2 <- cis %>% select(SEXO, CCAA, Edad_grupos,P0,Situ_eco_cod, Estudios, Religion_cod,
civil_cod,Situ, clase_cod, Conf_presi_cod, Conf_opo_cod, Pref_presi_cod, Voto_cod,
Voto_alternativo_cod, Simpatia_cod, Ideologia_cod, Ideologia_ps_cod, Ideologia_pc_cod,
Ideologia_pi_cod, Ideologia_sa_cod, Ideologia_ia_cod, Valoracion_ps_cod, Valoracion_pc_cod,
Valoracion_pi_cod, Valoracion_sa_cod, Valoracion_ia_cod, Participacion_cod, Recuerdo_cod,
Cercania_cod)
-
Resumen de variables
cis_nombre <- cis2
cis_nombre$SEXO <- factor(cis_nombre$SEXO, labels = c("Hombre", "Mujer"))
cis_nombre$CCAA <- factor(cis_nombre$CCAA, labels = c("Andalucía", "Aragón", "Asturias
(Principado de)", "Baleares (Illes)", "Canarias", "Cantabria", "Castilla-La Mancha", "Castilla y León",
"Cataluña", "Comunitat Valenciana", "Extremadura", "Galicia", "Madrid (Comunidad de)", "Murcia
(Región de)", "Navarra (Comunidad Floral de)", "País Vasco", "Rioja (La)", "Ceuta (Ciudad Autónoma
de)", "Melilla (Ciudad Autónoma de)"))
cis_nombre$Edad_grupos <- factor(cis_nombre$Edad_grupos, labels = c("De 18 a 24 años", "De 25 a 34
años", "De 35 a 44 años", "De 45 a 54 años", "De 55 a 64 años","Más de 65 años"))
cis_nombre$P0 <- factor(cis_nombre$P0, labels = c("Nacionalidad española", "Nacionalidad española y
otra"))
cis_nombre$Situ <- factor(cis_nombre$Situ, labels = c("Trabajadores", "Jubilados o pensionistas",
"Parados", "Estudiantes", "Trabajo doméstico no remunerado", "Otra situación", "NC"))
cis_nombre$Estudios <- factor(cis_nombre$Estudios, labels = c("Sin estudios / Estudios Primarios",
"Estudios Secundarios / Formación Profesional", "Estudios Superiores", "Otros estudios", "NS/NC"))
cis_nombre$Religion_cod <- factor(cis_nombre$Religion_cod, labels = c("Católico", "Creyente de otra
religión", "No creyente", "Ateo/a", "NC"))
cis_nombre$civil_cod <- factor(cis_nombre$civil_cod, labels = c("Casado/a", "Soltero/a", "Viudo/a",
"NC"))
cis_nombre$Situ_eco_cod <- factor(cis_nombre$Situ_eco_cod, labels = c("Muy buena", "Buena",
"Regular", "Mala", "Muy mala", "NS/NC"))
cis_nombre$clase_cod <- factor(cis_nombre$clase_cod, labels = c("Clase alta", "Clase media", "Clase
baja", "Otra clase", "No cree en las clases", "NS/NC"))
cis_nombre$Conf_presi_cod <- factor(cis_nombre$Conf_presi_cod, labels = c("Mucha confianza",
"Bastante confianza", "Poca confianza", "Ninguna confianza", "NS/NC"))
cis_nombre$Conf_opo_cod <- factor(cis_nombre$Conf_opo_cod, labels = c("Mucha confianza",
"Bastante confianza", "Poca confianza", "Ninguna confianza", "NS/NC"))
cis_nombre$Pref_presi_cod <- factor(cis_nombre$Pref_presi_cod, labels = c("Pedro Sánchez", "Pablo
Casado","Santiago Abascal", "Pablo Iglesias", "Alberto Garzón", "Inés Arrimadas", "Iñigo Errejón",
"Otro/a", "Ninguno/a", "NS/NC"))
cis_nombre$Voto_cod <- factor(cis_nombre$Voto_cod, labels = c("PP", "PSOE", "Podemos",
"Ciudadanos", "VOX", "ERC", "JxCat", "EAJ-PNV", "Otros", "Abstención", "NS/NC"))
cis_nombre$Voto_alternativo_cod <- factor(cis_nombre$Voto_alternativo_cod, labels = c("PP", "PSOE",
"Podemos", "Ciudadanos", "VOX", "ERC", "JxCat", "EAJ-PNV", "Otros", "No votaría a ningún otro
partido", "Abstención", "NS/NC"))
cis_nombre$Simpatia_cod <- factor(cis_nombre$Simpatia_cod, labels = c("PP", "PSOE", "Podemos",
"Ciudadanos", "VOX", "ERC", "JxCat", "EAJ-PNV", "Otros", "Ninguno", "NS/NC"))
cis_nombre$Ideologia_cod <- factor(cis_nombre$Ideologia_cod, labels = c("1 - Izquierda", "2", "3", "4",
"5", "6", "7", "8", "9","10 - Derecha", "NS/NC"))
cis_nombre$Ideologia_ps_cod <- factor(cis_nombre$Ideologia_ps_cod, labels = c("1 - Izquierda", "2",
"3", "4", "5", "6", "7", "8", "9","10 - Derecha", "No conoce", "NS/NC"))
cis_nombre$Ideologia_pc_cod <- factor(cis_nombre$Ideologia_pc_cod, labels = c("1 - Izquierda", "2",
"3", "4", "5", "6", "7", "8", "9","10 - Derecha", "No conoce", "NS/NC"))
cis_nombre$Ideologia_pi_cod <- factor(cis_nombre$Ideologia_pi_cod, labels = c("1 - Izquierda", "2",
"3", "4", "5", "6", "7", "8", "9","10 - Derecha", "No conoce", "NS/NC"))
cis_nombre$Ideologia_sa_cod <- factor(cis_nombre$Ideologia_sa_cod, labels = c("1 - Izquierda", "2",
"3", "4", "5", "6", "7", "8", "9","10 - Derecha", "No conoce", "NS/NC"))
cis_nombre$Ideologia_ia_cod <- factor(cis_nombre$Ideologia_ia_cod, labels = c("1 - Izquierda", "2",
"3", "4", "5", "6", "7", "8", "9","10 - Derecha", "No conoce", "NS/NC"))
cis_nombre$Valoracion_ps_cod <- factor(cis_nombre$Valoracion_ps_cod, labels = c("Muy mal", "Mal",
"Regular", "Bien", "Muy bien", "No conoce", "NS/NC"))
cis_nombre$Valoracion_pc_cod <- factor(cis_nombre$Valoracion_pc_cod, labels = c("Muy mal", "Mal",
"Regular", "Bien", "Muy bien", "No conoce", "NS/NC"))
cis_nombre$Valoracion_pi_cod <- factor(cis_nombre$Valoracion_pi_cod, labels = c("Muy mal", "Mal",
"Regular", "Bien", "Muy bien", "No conoce", "NS/NC"))
cis_nombre$Valoracion_sa_cod <- factor(cis_nombre$Valoracion_sa_cod, labels = c("Muy mal", "Mal",
"Regular", "Bien", "Muy bien", "No conoce", "NS/NC"))
cis_nombre$Valoracion_ia_cod <- factor(cis_nombre$Valoracion_ia_cod, labels = c("Muy mal", "Mal",
"Regular", "Bien", "Muy bien", "No conoce", "NS/NC"))
cis_nombre$Participacion_cod <- factor(cis_nombre$Participacion_cod, labels = c("Votó", "No votó",
"No tenía derecho a voto", "NS/NC"))
cis_nombre$Recuerdo_cod <- factor(cis_nombre$Recuerdo_cod, labels = c("PP", "PSOE", "Podemos",
"Ciudadanos", "VOX", "ERC", "JxCat", "EAJ-PNV", "Otros", "Abstención", "No fué a votar",
"NS/NC"))
cis_nombre$Cercania_cod <- factor(cis_nombre$Cercania_cod, labels = c("PP", "PSOE", "Podemos",
"Ciudadanos", "VOX", "ERC", "JxCat", "EAJ-PNV", "Otros", "Ninguno", "NS/NC"))
kable(summary(cis_nombre, maxsum = 7)[,1:6], position = "center", booktabs = TRUE, align =
rep("c",10), caption = "<leftr><em> Resumen variables (1-6) </em></center>", escape = FALSE,
col.names = c("Sexo", "Comunidad Autónoma", "Edad", "Nacionalidad", "Valoración Situación
económica", "Nivel de estudios"), font_size = 20) %>%
kable_classic(full_width = T, html_font = "Times New Roman")%>%
column_spec(c(2:7), width = "2cm")%>%
column_spec(c(1), width = "0.5cm")
kable(summary(cis_nombre, maxsum = 12)[,7:12], position = "center", booktabs = TRUE, align =
rep("c",10), caption = "<leftr><em> Resumen variables (7-12) </em></center>", escape = FALSE,
col.names = c("Religión", "Estado civil", "Situación laboral", "Clase social", "Confianza en el
presidente", "Confianza en la oposición"), font_size = 20) %>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
column_spec(2:7, width = "4cm")%>%
column_spec(c(1), width = "0.5cm")
kable(summary(cis_nombre, maxsum = 12)[,13:18], position = "center", booktabs = TRUE, align =
rep("c",10), caption = "<leftr><em> Resumen variables (13-18) </em></center>", escape = FALSE,
col.names = c("Preferencia de presidente", "Intención de voto", "Intención de voto alternativo",
"Simpatía partidista", "Ideología", "Clasificación ideológica PS"), font_size = 20) %>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
column_spec(1:7, width = "6cm")%>%
column_spec(c(1), width = "0.5cm")
kable(summary(cis_nombre, maxsum = 12)[,19:24], position = "center", booktabs = TRUE, align =
rep("c",10), caption = "<leftr><em> Resumen variables (19-24) </em></center>", escape = FALSE,
col.names = c("Clasificación ideológica PC", "Clasificación ideológica PI", "Clasificación ideológica
SA", "Clasificación ideológica IA", "Valoración PS", "Valoración PC"), font_size = 20) %>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
column_spec(1:7, width = "6cm")%>%
column_spec(c(1), width = "0.5cm")
kable(summary(cis_nombre, maxsum = 12)[,25:30], position = "center", booktabs = TRUE, align =
rep("c",10), caption = "<leftr><em> Resumen variables (25-30) </em></center>", escape = FALSE,
col.names = c("Valoración PI", "Valoración SA", "Valoración IA", "Participación electoral 2019",
"Recuerdo de voto 2019", "Cercanía partidista")) %>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
column_spec(1:7, width = "6cm")%>%
column_spec(c(1), width = "0.5cm")
-
Gráfico de respuestas NS/NC
cis_resumen <- cis2
cis_resumen[cis_resumen == "99"] <- NA
sort(colSums(is.na(cis_resumen)))
colnames(cis_resumen) <- c("Sexo", "Comunidad Autónoma", "Edad", "Nacionalidad", "Valoración
Situación económica", "Nivel de estudios", "Religión", "Estado civil", "Situación laboral", "Clase
social", "Confianza en el presidente", "Confianza en la oposición", "Preferencia de presidente",
"Intención de voto", "Intención de voto alternativo", "Simpatía partidista", "Ideología", "Ideología PS",
"Ideología PC", "Ideología PI", "Ideología SA", "Ideología IA", "Valoración PS", "Valoración PC",
"Valoración PI", "Valoración SA", "Valoración IA", "Participación electoral 2019", "Recuerdo de voto
2019", "Cercanía partidista")
plot_missing_2 <-
function (data, group = list(Muy_bajo = 0.05, Bajo = 0.2, Elevado = 0.8,
Muy_elevado = 1), geom_label_args = list(), title = NULL, ggtheme = theme_gray(),
theme_config = list(legend.position = c("bottom"), text=element_text(family="Times", size=20),
plot.title = element_text(face = "bold.italic", hjust = -0.4, color = "darkgray" )))
{
pct_missing <- Escala <- NULL
missing_value <- data.table(profile_missing(data))
group <- group[sort.list(unlist(group))]
invisible(lapply(seq_along(group), function(i) {
if (i == 1) {
missing_value[pct_missing <= group[[i]], `:=`(Escala,
names(group)[i])]
} else {
missing_value[pct_missing > group[[i - 1]] & pct_missing <=
group[[i]], `:=`(Escala, names(group)[i])]
}
}))
output <- ggplot(missing_value, aes_string(x = "feature",
y = "num_missing", fill = "Escala")) + geom_bar(stat = "identity") +
scale_fill_manual("Escala", values = c("Muy_elevado"="firebrick2", "Bajo"="#9ECAE1",
"Elevado"="#3182BD", "Muy_bajo"="#DEEBF7")) + coord_flip() + xlab("Atributos") +
ylab("Número de respuestas NS/NC")
geom_label_args_list <- list(mapping = aes(label = paste0(round(100 *
pct_missing, 2), "%")))
output <- output + do.call("geom_label", c(geom_label_args_list,
geom_label_args))
class(output) <- c("single", class(output))
plotDataExplorer(plot_obj = output, title = title, ggtheme = ggtheme,
theme_config = theme_config)
}
plot_missing_2(cis_resumen, ggtheme = theme_classic(), title = "Respuestas NS/NC por atributo")
sort(colSums(cis2 == "99"))
-
Diagrama de barras de la intención de voto
library(cowplot)
library(RColorBrewer)
my.palette <- brewer.pal(n = 7, name = "PuBu")
cis$Voto_cod2 <- factor(cis$Voto_cod, labels = c("PP", "PSOE", "Podemos", "Ciudadanos", "VOX",
"ERC", "JxCat", "EAJ-PNV", "Otros", "Abstención", "NS/NC"))
ggplot(cis)+ geom_bar(aes(x=Voto_cod2, y=..count../length(cis$Voto_cod)
,fill = ..count..), col = "white") + labs(x=" ", y= "Recuento") + ggtitle("Intención de
voto") + scale_fill_gradientn(colours = my.palette, name = "Recuento") + theme(plot.title =
element_text(hjust = 0.5))+ theme(panel.border = element_blank(),
panel.background = element_blank(), text=element_text(family="Times", size = 15)) + theme(plot.title
= element_text(face = "italic", hjust = 0))
-
Diagrama de barras de la valoración de los líderes políticos en función de la intención de voto
# Pedro Sánchez
library(ggplot2)
library(RColorBrewer)
my.palette_sa <- brewer.pal("BuGn", n = 7)
cis$Valoracion_ps_cod2 <- factor(cis$Valoracion_ps_cod, labels = c("Muy mal", "Mal", "Regular",
"Bien", "Muy bien", "No conoce", "NS/NC"))
cis$Voto_cod2 <- factor(cis$Voto_cod, labels = c("PP", "PSOE", "Podemos", "Ciudadanos", "VOX",
"ERC", "JxCat", "EAJ-PNV", "Otros", "Abstención", "NS/NC"))
plot_val_1 <- ggplot(cis, aes(x = Voto_cod2, fill = Valoracion_ps_cod2)) + labs(x=" ", y= "Recuento",
fill = "Valoración PS") + ggtitle("Valoración Pedro Sánchez - Intención de Voto")+
geom_bar()+scale_fill_manual(values=my.palette_sa)+ theme(plot.title = element_text(face = "italic",
hjust = 0))+ theme(panel.border = element_blank(),
panel.background =
element_blank(), text=element_text(family="Times", size = 10))
plot_val_1
# Pablo Casado
cis$Valoracion_pc_cod2 <- factor(cis$Valoracion_pc_cod, labels = c("Muy mal", "Mal", "Regular",
"Bien", "Muy bien", "No conoce", "NS/NC"))
plot_val_2 <- ggplot(cis, aes(x = Voto_cod2, fill = Valoracion_pc_cod2)) + labs(x=" ", y= "Recuento",
fill = "Valoración PC") + ggtitle("Valoración Pablo Casado - Intención de Voto")+
geom_bar()+scale_fill_manual(values=my.palette_sa)+ theme(plot.title = element_text(face = "italic",
hjust = 0))+ theme(panel.border = element_blank(),
panel.background =
element_blank(), text=element_text(family="Times", size = 10))
# Pablo Iglesias
cis$Valoracion_pi_cod2 <- factor(cis$Valoracion_pi_cod, labels = c("Muy mal", "Mal", "Regular",
"Bien", "Muy bien", "No conoce", "NS/NC"))
plot_val_3 <- ggplot(cis, aes(x = Voto_cod2, fill = Valoracion_pi_cod2)) + labs(x=" ", y= "Recuento",
fill = "Valoración PI") + ggtitle("Valoración Pablo Iglesias - Intención de Voto")+
geom_bar()+scale_fill_manual(values=my.palette_sa)+ theme(plot.title = element_text(face = "italic",
hjust = 0))+ theme(panel.border = element_blank(),
panel.background =
element_blank(), text=element_text(family="Times", size = 10))
#Santiago Abascal
cis$Valoracion_sa_cod2 <- factor(cis$Valoracion_sa_cod, labels = c("Muy mal", "Mal", "Regular",
"Bien", "Muy bien", "No conoce", "NS/NC"))
plot_val_4 <- ggplot(cis, aes(x = Voto_cod2, fill = Valoracion_sa_cod2)) + labs(x=" ", y= "Recuento",
fill = "Valoración SA") + ggtitle("Valoración Santiago Abascal - Intención de Voto")+
geom_bar()+scale_fill_manual(values=my.palette_sa)+ theme(plot.title = element_text(face = "italic",
hjust = 0))+ theme(panel.border = element_blank(),
panel.background =
element_blank(), text=element_text(family="Times", size = 10))
#Inés Arrimadas
cis$Valoracion_ia_cod2 <- factor(cis$Valoracion_ia_cod, labels = c("Muy mal", "Mal", "Regular",
"Bien", "Muy bien", "No conoce", "NS/NC"))
ggplot(cis, aes(x = Voto_cod2, fill = Valoracion_ia_cod2)) + labs(x=" ", y= "Recuento", fill =
"Valoración IA") + ggtitle("Valoración Inés Arrimadas - Intención de Voto")+
geom_bar()+scale_fill_manual(values=my.palette_sa)+ theme(plot.title = element_text(face = "italic",
hjust = 0))+ theme(panel.border = element_blank(),
panel.background =
element_blank(), text=element_text(family="Times", size = 11))
library(gridExtra)
library(grid)
grid.arrange(plot_val_1, plot_val_2, plot_val_3, plot_val_4, ncol = 2)
-
Diagrama de barras de la clasificación ideológica de los líderes políticos en función de la
intención de voto
par(family = 'serif')
cis$Ideologia_ia_cod2 <- factor(cis$Ideologia_ia_cod, labels = c("1- I", "2", "3", "4", "5", "6", "7", "8",
"9", "10-D", "No concoce", "NS/NC"))
cis$Ideologia_ps_cod2 <- factor(cis$Ideologia_ps_cod, labels = c("1- I", "2", "3", "4", "5", "6", "7", "8",
"9", "10-D", "No concoce", "NS/NC"))
cis$Ideologia_pc_cod2 <- factor(cis$Ideologia_pc_cod, labels = c("1- I", "2", "3", "4", "5", "6", "7", "8",
"9", "10-D", "No concoce", "NS/NC"))
cis$Ideologia_pi_cod2 <- factor(cis$Ideologia_pi_cod, labels = c("1- I", "2", "3", "4", "5", "6", "7", "8",
"9", "10-D", "No concoce", "NS/NC"))
cis$Ideologia_sa_cod2 <- factor(cis$Ideologia_sa_cod, labels = c("1- I", "2", "3", "4", "5", "6", "7", "8",
"9", "10-D", "No concoce", "NS/NC"))
library(grid)
library(gridExtra)
library(ggplot2)
library(RColorBrewer)
# Pedro Sánchez
my.palette <- brewer.pal("Greens", n = 7)
plot_ide_1 <- ggplot(cis)+ geom_bar(aes(x=Ideologia_ps_cod2,
y=..count../length(cis$Ideologia_ps_cod),fill = ..count..), col = "white") + labs(x=" ", y= "Frecuencia") +
ggtitle("Clasificación ideológica de Pedro Sánchez") + scale_fill_gradientn(colours = my.palette, name
= "Recuento") + theme(plot.title = element_text(face = "italic", hjust = 0))+ theme(panel.border =
element_blank(), panel.background = element_blank(), text=element_text(family="Times", size = 11))
# Pablo Casado
plot_ide_2 <- ggplot(cis)+ geom_bar(aes(x=Ideologia_pc_cod2,
y=..count../length(cis$Ideologia_pc_cod),fill = ..count..), col = "white") + labs(x=" ", y= "Frecuencia") +
ggtitle("Clasificación ideológica de Pablo Casado") + scale_fill_gradientn(colours = my.palette, name =
"Recuento") + theme(plot.title = element_text(face = "italic", hjust = 0))+ theme(panel.border =
element_blank(), panel.background = element_blank(), text=element_text(family="Times", size = 11))
# Pablo Iglesias
plot_ide_3 <- ggplot(cis)+ geom_bar(aes(x=Ideologia_pi_cod2,
y=..count../length(cis$Ideologia_pi_cod),fill = ..count..), col = "white") + labs(x=" ", y= "Frecuencia") +
ggtitle("Clasificación ideológica de Pablo Iglesias") + scale_fill_gradientn(colours = my.palette, name =
"Recuento") + theme(plot.title = element_text(face = "italic", hjust = 0))+ theme(panel.border =
element_blank(), panel.background = element_blank(), text=element_text(family="Times", size = 11))
# Santiago Abascal
plot_ide_4 <- ggplot(cis)+ geom_bar(aes(x=Ideologia_sa_cod2,
y=..count../length(cis$Ideologia_sa_cod),fill = ..count..), col = "white") + labs(x=" ", y= "Frecuencia") +
ggtitle("Clasificación ideológica de Santiago Abascal") + scale_fill_gradientn(colours = my.palette,
name = "Recuento") + theme(plot.title = element_text(face = "italic", hjust = 0))+ theme(panel.border =
element_blank(), panel.background = element_blank(), text=element_text(family="Times", size = 11))
grid.arrange(plot_ide_1, plot_ide_2, plot_ide_3, plot_ide_4, ncol = 2)
# Inés Arrimadas
ggplot(cis)+ geom_bar(aes(x=Ideologia_ia_cod2, y=..count../length(cis$Ideologia_ia_cod),fill =
..count..), col = "white") + labs(x=" ", y= "Frecuencia") + ggtitle("Clasificación ideológica de Inés
Arrimadas") + scale_fill_gradientn(colours = my.palette, name = "Recuento") + theme(plot.title =
element_text(face = "italic", hjust = 0))+ theme(panel.border = element_blank(), panel.background =
element_blank(), text=element_text(family="Times", size = 11))
-
Tau de Goodman and Kruskal
library(GoodmanKruskal)
GKcis <- GKtauDataframe(cis2)
GKcis2 <- matrix(0, nrow = nrow(GKcis), ncol = ncol(GKcis))
for(i in 1: nrow(GKcis))
{
GKcis2[i,]=GKcis[i,]
}
colnames(GKcis2) = colnames(GKcis)
rownames(GKcis2) = rownames(GKcis)
GKcis2 <- as.data.frame(GKcis2)
colores <- function(x){
cell_spec(x, background = ifelse(x>=0.1 & x<0.2, "tomato", ifelse(x>=0.2 & x <0.5, "#f4d35e", ifelse(x
>= 0.5 & x<1, "lightgreen","white"))))
}
GKcis3 <- as.data.frame(GKcis2)
GKcis3 <- mutate_all(GKcis2,funs(colores(.)))
rownames(GKcis3) <- c("Sexo", "Comunidad Autónoma", "Edad", "Nacionalidad", "Valoración
Situación económica", "Nivel de estudios", "Religión", "Estado civil", "Situación laboral", "Clase
social", "Confianza en el presidente", "Confianza en la oposición", "Preferencia de presidente",
"Intención de voto", "Intención de voto alternativo", "Simpatía partidista", "Ideología", "Clasificación
ideológica PS", "Clasificación ideológica PC", "Clasificación ideológica PI", "Clasificación ideológica
SA", "Clasificación ideológica IA", "Valoración PS", "Valoración PC", "Valoración PI", "Valoración
SA", "Valoración IA", "Participación electoral 2019", "Recuerdo de voto 2019", "Cercanía partidista")
colnames(GKcis3) <- c("Sexo", "Comunidad Autónoma", "Edad", "Nacionalidad", "Valoración Situación
económica", "Nivel de estudios", "Religión", "Estado civil", "Situación laboral", "Clase social",
"Confianza en el presidente", "Confianza en la oposición", "Preferencia de presidente", "Intención de
voto", "Intención de voto alternativo", "Simpatía partidista", "Ideología", "Clasificación ideológica PS",
"Clasificación ideológica PC", "Clasificación ideológica PI", "Clasificación ideológica SA",
"Clasificación ideológica IA", "Valoración PS", "Valoración PC", "Valoración PI", "Valoración SA",
"Valoración IA", "Participación electoral 2019", "Recuerdo de voto 2019", "Cercanía partidista")
kable(GKcis3[,1:6], row.names = T,escape = FALSE, align=rep('c', 29), position = "center", font_size =
30, caption = "<leftr><em> Goodman and Kruskal Tau") %>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
column_spec(1, bold = T)
kable(GKcis3[,7:12], row.names = T,escape = FALSE, align=rep('c', 29), position = "center", font_size =
30) %>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
column_spec(1, bold = T)
kable(GKcis3[13:18], escape = FALSE, align=rep('c', 29), position = "center") %>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
column_spec(1, bold = T)
kable(GKcis3[19:24], escape = FALSE, align=rep('c', 29), position = "center") %>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
column_spec(1, bold = T)
kable(GKcis3[24:30], escape = FALSE, align=rep('c', 29), position = "center") %>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
column_spec(1, bold = T)
-
Intervalos de Bootstrap
# Tau entre 0.1 y 0.2
VI1 = which(GKcis2 >= 0.1 & GKcis2 < 0.2, arr.ind=TRUE)
dim(VI1)
library(bootstrap)
IC_VI1 <- c()
for(i in 1:nrow(VI1))
{
var1 = VI1[i,1]
var2 = VI1[i,2]
xdata <- as.matrix(cis2[,c(var1,var2)])
theta <- function(x, xdata){GKtau(xdata[x,1],xdata[x,2], includeNA = "ifany")$tauxy}
n <- 3817
results <- boott(1:n,theta, xdata)
IC_VI1 <- c(IC_VI1,round(results$confpoints[c(3,9)], 3))
}
IC_VI1_2 <- matrix(IC_VI1, ncol = 2, nrow = dim(VI1)[1], byrow = T)
Int_VI1_2 <- c()
for(i in 1:nrow(IC_VI1_2))
{
Int_VI1_2[i] <- paste0("( ", IC_VI1_2[i,1], " ; ", IC_VI1_2[i,2], " )")
}
fila <- c()
col <- c()
valor <- c()
for(i in 1:nrow(VI1))
{
fila[i] <- c(rownames(GKcis2)[VI1[i,"row"]])
col[i] <- c(rownames(GKcis2)[VI1[i,"col"]])
valor <- c(valor, GKcis2[fila[i],col[i]])
}
M_INT1 <- matrix(c(fila,col,valor), nrow = dim(VI1)[1], ncol = 3)
M_INT1 <- cbind(M_INT1, Int_VI1_2)
M_INT1 <- as.data.frame(M_INT1)
kable(M_INT1, escape = FALSE, align="llcc", col.names = c("Variable 1", "Variable 2", "K-tau",
"Intervalo Bootstap"), position = "center") %>%
kable_classic(full_width = F, html_font = "Times New Roman")
# Tau entre 0.2 y 0.5
VI2 = which(GKcis2 >= 0.2 & GKcis2 < 0.5, arr.ind=TRUE)
dim(VI2)
IC_VI2 <- c()
for(i in 1:nrow(VI2))
{
var1 = VI2[i,1]
var2 = VI2[i,2]
xdata <- as.matrix(cis2[,c(var1,var2)])
theta <- function(x, xdata){GKtau(xdata[x,1],xdata[x,2], includeNA = "ifany")$tauxy}
n <- 3817
results <- boott(1:n,theta, xdata)
IC_VI2 <- c(IC_VI2,round(results$confpoints[c(3,9)],3))
}
IC_VI2_2 <- matrix(IC_VI2, ncol = 2, nrow = dim(VI2)[1], byrow = T)
Int_VI2_2 <- c()
for(i in 1:nrow(IC_VI2_2))
{
Int_VI2_2[i] <- paste0("( ", IC_VI2_2[i,1], " ; ", IC_VI2_2[i,2], " )")
}
fila <- c()
col <- c()
valor <- c()
for(i in 1:nrow(VI2))
{
fila[i] <- c(rownames(GKcis2)[VI2[i,"row"]])
col[i] <- c(rownames(GKcis2)[VI2[i,"col"]])
valor <- c(valor, GKcis2[fila[i],col[i]])
}
M_INT2 <- matrix(c(fila,col, valor), nrow = dim(VI2)[1] , ncol = 3)
M_INT2 <- cbind(M_INT2, Int_VI2_2)
M_INT2 <- as.data.frame(M_INT2)
kable(M_INT2, escape = FALSE, align="llcc", col.names = c("Variable 1", "Variable 2", "K-tau",
"Intervalo Bootstap")) %>%
kable_classic(full_width = F, html_font = "Times New Roman")
# Tau mayor de 0.5
VI3 = which(GKcis2 >= 0.5 & GKcis2 < 1, arr.ind=TRUE)
dim(VI3)
IC_VI3 <- c()
set.seed(1, sample.kind = "Rounding")
for(i in 1:nrow(VI3))
{
var1 = VI3[i,1]
var2 = VI3[i,2]
xdata <- as.matrix(cis2[,c(var1,var2)])
theta <- function(x, xdata){GKtau(xdata[x,1],xdata[x,2], includeNA = "ifany")$tauxy}
n <- 3817
results <- boott(1:n,theta, xdata)
IC_VI3 <- c(IC_VI3,round(results$confpoints[c(3,9)],3))
}
IC_VI3_2 <- matrix(IC_VI3, ncol = 2, nrow = dim(VI3)[1], byrow = T)
Int_VI3_2 <- c()
for(i in 1:nrow(IC_VI3_2))
{
Int_VI3_2[i] <- paste0("( ", IC_VI3_2[i,1], " ; ", IC_VI3_2[i,2], " )")
}
fila <- c()
col <- c()
valor <- c()
for(i in 1:nrow(VI3))
{
fila[i] <- c(rownames(GKcis2)[VI3[i,"row"]])
col[i] <- c(rownames(GKcis2)[VI3[i,"col"]])
valor <- c(valor, GKcis2[fila[i],col[i]])
}
M_INT3 <- matrix(c(fila,col, valor), nrow = dim(VI3)[1], ncol = 3)
M_INT3 <- cbind(M_INT3, Int_VI3_2)
M_INT3 <- as.data.frame(M_INT3)
colnames(M_INT3) <- NULL
kable(M_INT3, escape = FALSE, align="llcc", col.names = c("Variable 1", "Variable 2", "K-tau",
"Intervalo Bootstap")) %>%
kable_classic(full_width = F, html_font = "Times New Roman")
-
Partición de la muestra
# Ordenación de variables según "NS/NC"
sort(colSums(cis2 == "99"))
library(caret)
#Personas han respondido a Intención de Voto (IV):
IV <- cis2[cis2[,"Voto_cod"]!="99",]
dim(IV)[1]
#Personas que no han respondido a Intención de Voto (IV):
N_IV <- cis2[cis2[,"Voto_cod"]=="99",]
dim(N_IV)[1]
#Muestras de entrenamiento y test de las personas que han respondido IV:
set.seed(0, sample.kind = "Rounding")
train_IV = sample(1:dim(IV)[1], dim(IV)[1]*(2/3))
test_IV = -train_IV
train = IV[train_IV,]
test = IV[test_IV,]
dim(train)[1]
dim(test)[1]
dim(IV)[1]
dim(train)[1]+dim(test)[1]
#Datos de partida (nuevo conjunto de datos) -> Personas que no han respondido IV y train IV
conjunto = rbind(train, N_IV)
dim(conjunto)[1]
library(dropR)
library(tidyverse)
-
Imputación de la situación laboral
# M = 1
train2 <- conjunto[conjunto[,"Situ"]!="99",]
impu <- conjunto[conjunto[,"Situ"]=="99",]
dim(train2)[1]
dim(impu)[1]
M1 = cis2
table(train2$Situ)
train2[,"Situ"] <- droplevels(train2[,"Situ"])
table(train2$Situ)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit <- train(Situ ~ .,
method = "rf",
data = train2,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
library(flextable)
rfFit
varImp(rfFit)
par(family = "serif")
plot(varImp(rfFit), top = 10, col = "#74A9CF", main = expression(italic("Importancia de variables
Situación laboral")), family = "serif")
rfFit$finalModel
pred <- predict(rfFit, test)
impu_Situ <- predict(rfFit, impu)
table(pred)
test_Situ <- test$Situ[test$Situ!=99]
test_Situ <- droplevels(test_Situ)
confusionMatrix(pred[test$Situ!=99],test_Situ)
(CM1_Situ <- confusionMatrix(pred[test$Situ!=99],test_Situ)$table)
AC1_Situ <- as.vector(confusionMatrix(pred[test$Situ!=99],test_Situ)$overall[1])
NA_Situ <- as.numeric(rownames(test[test[,"Situ"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Situ"]=="99")
{
pos=c(pos,i)
}
}
NA_Situ_impu <- as.numeric(rownames(impu))
M1[NA_Situ,"Situ"] <- pred[pos]
M1[NA_Situ_impu,"Situ"] <- impu_Situ
M = 2
M2 = cis2
set.seed(1, sample.kind = "Rounding")
rfFit2 <- train(Situ ~ .,
method = "rf",
data = train2,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2
varImp(rfFit2)
plot(varImp(rfFit2), top = 10, col = "#0570B0", main = "M2")
rfFit2$finalModel
pred2 <- predict(rfFit2, test)
impu_Situ2 <- predict(rfFit2, impu)
table(pred2)
confusionMatrix(pred2[test$Situ!=99],test_Situ)
CM2_Situ <- confusionMatrix(pred2[test$Situ!=99],test_Situ)$table
AC2_Situ <- as.vector(confusionMatrix(pred2[test$Situ!=99],test_Situ)$overall[1])
M2[NA_Situ,"Situ"] <- pred2[pos]
M2[NA_Situ_impu,"Situ"] <- impu_Situ2
M = 3
M3 = cis2
set.seed(2, sample.kind = "Rounding")
rfFit3 <- train(Situ ~ .,
method = "rf",
data = train2,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3
varImp(rfFit3)
plot(varImp(rfFit3), top = 10, col = "#41AE76", main = "M3")
rfFit3$finalModel
pred3 <- predict(rfFit3, test)
impu_Situ3 <- predict(rfFit3, impu)
table(pred3)
confusionMatrix(pred3[test$Situ!=99],test_Situ)
CM3_Situ <- confusionMatrix(pred3[test$Situ!=99],test_Situ)$table
AC3_Situ <- as.vector(confusionMatrix(pred3[test$Situ!=99],test_Situ)$overall[1])
M3[NA_Situ,"Situ"] <- pred3[pos]
M3[NA_Situ_impu,"Situ"] <- impu_Situ3
CMT_Situ <- (CM1_Situ)
for(i in 1:nrow(CMT_Situ))
{
for(j in 1:ncol(CMT_Situ))
{
if((CM1_Situ[i,j]+CM2_Situ[i,j]+CM3_Situ[i,j])%%3 != 0)
{
CMT_Situ[i,j] = as.character(round((CM1_Situ[i,j]+CM2_Situ[i,j]+CM3_Situ[i,j])/3,2))
}else{
CMT_Situ[i,j] = as.character(as.integer((CM1_Situ[i,j]+CM2_Situ[i,j]+CM3_Situ[i,j])/3))
}
}
}
CMT_Situ = cbind(c(1:6), CMT_Situ)
CM1_Situ = cbind(c(1:6), CM1_Situ)
CM2_Situ = cbind(c(1:6), CM2_Situ)
CM3_Situ = cbind(c(1:6), CM3_Situ)
kable(CMT_Situ, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz
de confusión Situación laboral </em></center>", escape = FALSE, col.names = c("Predicción",
"1","2","3","4","5","6"), position = "center")%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
column_spec(1:7, width = "1.2cm")%>%
add_header_above(c(" " = 1, "Referencia" = 1, " " = 3, " " = 2))
kable(CM1_Situ, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz
de confusión Situación laboral 1ª imputación </em></center>", escape = FALSE, col.names =
c("Predicción", "1","2","3","4","5","6"), position = "center")%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
column_spec(1:7, width = "1.2cm")%>%
add_header_above(c(" " = 1, "Referencia" = 1, " " = 3, " " = 2))
kable(CM2_Situ, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz
de confusión Situación laboral 2ª imputación </em></center>", escape = FALSE, col.names =
c("Predicción", "1","2","3","4","5","6"), position = "center")%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
column_spec(1:7, width = "1.2cm")%>%
add_header_above(c(" " = 1, "Referencia" = 1, " " = 3, " " = 2))
kable(CM3_Situ, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em> Matriz
de confusión Situación laboral 3ª imputación </em></center>", escape = FALSE, col.names =
c("Predicción", "1","2","3","4","5","6"), position = "center")%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
column_spec(1:7, width = "1.2cm")%>%
add_header_above(c(" " = 1, "Referencia" = 1, " " = 3, " " = 2))
ACT_Situ <- c(AC1_Situ,AC2_Situ,AC3_Situ)
ACM_Situ <- mean(c(ACT_Situ))
ACSD_Situ <- sqrt(var(ACT_Situ)/3)
-
Imputación del Nivel de Estudios
# M = 1
train2_Estudios <- conjunto[conjunto[,"Estudios"]!="99",]
impu_Estudios <- conjunto[conjunto[,"Estudios"]=="99",]
dim(train2_Estudios)[1]
dim(impu_Estudios)[1]
table(train2_Estudios$Estudios)
train2_Estudios[,"Estudios"] <- droplevels(train2_Estudios[,"Estudios"])
table(train2_Estudios$Estudios)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_Estudios <- train(Estudios ~ .,
method = "rf",
data = train2_Estudios,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_Estudios
varImp(rfFit_Estudios)
plot(varImp(rfFit_Estudios), top = 10, col = "#74A9CF", main = expression(italic("Importancia de
variables Situación laboral")), adj = 0)
rfFit_Estudios$finalModel
pred_Estudios <- predict(rfFit_Estudios, test)
impu_Estudios1 <- predict(rfFit_Estudios, impu_Estudios)
table(pred_Estudios)
test_Estudios <- test$Estudios[test$Estudios!=99]
test_Estudios <- droplevels(test_Estudios)
confusionMatrix(pred_Estudios[test$Estudios!=99],test_Estudios)
CM1_Estudios <- confusionMatrix(pred_Estudios[test$Estudios!=99],test_Estudios)$table
AC1_Estudios <- as.vector(confusionMatrix(pred_Estudios[test$Estudios!=99],test_Estudios)$overall[1])
NA_Estudios <- as.numeric(rownames(test[test[,"Estudios"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Estudios"]=="99")
{
pos=c(pos,i)
}
}
NA_Estudios_impu <- as.numeric(rownames(impu_Estudios))
M1[NA_Estudios,"Estudios"] <- pred_Estudios[pos]
M1[NA_Estudios_impu,"Estudios"] <- impu_Estudios1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_Estudios <- train(Estudios ~ .,
method = "rf",
data = train2_Estudios,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_Estudios
varImp(rfFit2_Estudios)
plot(varImp(rfFit2_Estudios), top = 10, col = "#0570B0", main = "M2")
rfFit2_Estudios$finalModel
pred2_Estudios <- predict(rfFit2_Estudios, test)
impu_Estudios2 <- predict(rfFit2_Estudios, impu_Estudios)
table(pred2_Estudios)
confusionMatrix(pred2_Estudios[test$Estudios!=99],test_Estudios)
CM2_Estudios <- confusionMatrix(pred2_Estudios[test$Estudios!=99],test_Estudios)$table
AC2_Estudios <-
as.vector(confusionMatrix(pred2_Estudios[test$Estudios!=99],test_Estudios)$overall[1])
M2[NA_Estudios,"Estudios"] <- pred2_Estudios[pos]
M2[NA_Estudios_impu,"Estudios"] <- impu_Estudios2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_Estudios <- train(Estudios ~ .,
method = "rf",
data = train2_Estudios,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_Estudios
varImp(rfFit3_Estudios)
plot(varImp(rfFit3_Estudios), top = 10, col = "#41AE76", main = "M3")
pred3_Estudios <- predict(rfFit3_Estudios, test)
impu_Estudios3 <- predict(rfFit3_Estudios, impu_Estudios)
table(pred3_Estudios)
confusionMatrix(pred3_Estudios[test$Estudios!=99],test_Estudios)
CM3_Estudios <- confusionMatrix(pred3_Estudios[test$Estudios!=99],test_Estudios)$table
AC3_Estudios <-
as.vector(confusionMatrix(pred3_Estudios[test$Estudios!=99],test_Estudios)$overall[1])
M3[NA_Estudios,"Estudios"] <- pred3_Estudios[pos]
M3[NA_Estudios_impu,"Estudios"] <- impu_Estudios3
CMT_Estudios <- (CM1_Estudios)
for(i in 1:nrow(CMT_Estudios))
{
for(j in 1:ncol(CMT_Estudios))
{
if((CM1_Estudios[i,j]+CM2_Estudios[i,j]+CM3_Estudios[i,j])%%3 != 0)
{
CMT_Estudios[i,j] =
as.character(round((CM1_Estudios[i,j]+CM2_Estudios[i,j]+CM3_Estudios[i,j])/3,2))
}else{
CMT_Estudios[i,j] =
as.character(as.integer((CM1_Estudios[i,j]+CM2_Estudios[i,j]+CM3_Estudios[i,j])/3))
}
}
}
CMT_Estudios = cbind(c(1:4), CMT_Estudios)
kable(CMT_Estudios, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em>
Matriz de confusión Nivel de Estudios </em></center>", escape = FALSE, col.names = c("Prediction",
"1","2","3","4"), position = "center", row_label_position = "c", font_size = 15)%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 3))%>%
column_spec(1:5, width = "1.2cm")
ACT_Estudios <- c(AC1_Estudios,AC2_Estudios,AC3_Estudios)
ACM_Estudios <- mean(c(ACT_Estudios))
ACSD_Estudios <- sqrt(var(ACT_Estudios)/3)
-
Imputación del Estado Civil
# M = 1
train2_civil_cod <- conjunto[conjunto[,"civil_cod"]!="99",]
impu_civil_cod <- conjunto[conjunto[,"civil_cod"]=="99",]
dim(train2_civil_cod)[1]
dim(impu_civil_cod)[1]
table(train2_civil_cod$civil_cod)
train2_civil_cod[,"civil_cod"] <- droplevels(train2_civil_cod[,"civil_cod"])
table(train2_civil_cod$civil_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_civil_cod <- train(civil_cod ~ .,
method = "rf",
data = train2_civil_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_civil_cod
varImp(rfFit_civil_cod)
plot(varImp(rfFit_civil_cod), top = 10, col = "#74A9CF", main = "M1")
rfFit_civil_cod$finalModel
pred_civil_cod <- predict(rfFit_civil_cod, test)
impu_civil_cod1 <- predict(rfFit_civil_cod, impu_civil_cod)
table(pred_civil_cod)
test_civil_cod <- test$civil_cod[test$civil_cod!=99]
test_civil_cod <- droplevels(test_civil_cod)
confusionMatrix(pred_civil_cod[test$civil_cod!=99],test_civil_cod)
CM1_civil_cod <- confusionMatrix(pred_civil_cod[test$civil_cod!=99],test_civil_cod)$table
AC1_civil_cod <-
as.vector(confusionMatrix(pred_civil_cod[test$civil_cod!=99],test_civil_cod)$overall[1])
NA_civil_cod <- as.numeric(rownames(test[test[,"civil_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"civil_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_civil_cod_impu <- as.numeric(rownames(impu_civil_cod))
M1[NA_civil_cod,"civil_cod"] <- pred_civil_cod[pos]
M1[NA_civil_cod_impu,"civil_cod"] <- impu_civil_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_civil_cod <- train(civil_cod ~ .,
method = "rf",
data = train2_civil_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_civil_cod
varImp(rfFit2_civil_cod)
plot(varImp(rfFit2_civil_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_civil_cod$finalModel
pred2_civil_cod <- predict(rfFit2_civil_cod, test)
impu_civil_cod2 <- predict(rfFit2_civil_cod, impu_civil_cod)
table(pred2_civil_cod)
confusionMatrix(pred2_civil_cod[test$civil_cod!=99],test_civil_cod)
CM2_civil_cod <- confusionMatrix(pred2_civil_cod[test$civil_cod!=99],test_civil_cod)$table
AC2_civil_cod <-
as.vector(confusionMatrix(pred2_civil_cod[test$civil_cod!=99],test_civil_cod)$overall[1])
M2[NA_civil_cod,"civil_cod"] <- pred2_civil_cod[pos]
M2[NA_civil_cod_impu,"civil_cod"] <- impu_civil_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_civil_cod <- train(civil_cod ~ .,
method = "rf",
data = train2_civil_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_civil_cod
varImp(rfFit3_civil_cod)
plot(varImp(rfFit3_civil_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_civil_cod$finalModel
pred3_civil_cod <- predict(rfFit3_civil_cod, test)
impu_civil_cod3 <- predict(rfFit3_civil_cod, impu_civil_cod)
table(pred3_civil_cod)
confusionMatrix(pred3_civil_cod[test$civil_cod!=99],test_civil_cod)
CM3_civil_cod <- confusionMatrix(pred3_civil_cod[test$civil_cod!=99],test_civil_cod)
$table
AC3_civil_cod <-
as.vector(confusionMatrix(pred3_civil_cod[test$civil_cod!=99],test_civil_cod)$overall[1])
M3[NA_civil_cod,"civil_cod"] <- pred3_civil_cod[pos]
M3[NA_civil_cod_impu,"civil_cod"] <- impu_civil_cod3
CMT_civil_cod <- (CM1_civil_cod)
for(i in 1:nrow(CMT_civil_cod))
{
for(j in 1:ncol(CMT_civil_cod))
{
if((CM1_civil_cod[i,j]+CM2_civil_cod[i,j]+CM3_civil_cod[i,j])%%3 != 0)
{
CMT_civil_cod[i,j] =
as.character(round((CM1_civil_cod[i,j]+CM2_civil_cod[i,j]+CM3_civil_cod[i,j])/3,2))
}else{
CMT_civil_cod[i,j] =
as.character(as.integer((CM1_civil_cod[i,j]+CM2_civil_cod[i,j]+CM3_civil_cod[i,j])/3))
}
}
}
CMT_civil_cod = cbind(c(1:3), CMT_civil_cod)
kable(CMT_civil_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em>
Matriz de confusión Estado Civil </em></center>", escape = FALSE, col.names = c("Prediction",
"1","2","3"), position = "center", row_label_position = "c", font_size = 15)%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 2))%>%
column_spec(1:4, width = "1.2cm")
ACT_civil_cod <- c(AC1_civil_cod,AC2_civil_cod,AC3_civil_cod)
ACM_civil_cod <- mean(c(ACT_civil_cod))
ACSD_civil_cod <- sqrt(var(ACT_civil_cod)/3)
-
Imputación variable participación electoral
# M = 1
train2_Participacion_cod <- conjunto[conjunto[,"Participacion_cod"]!="99",]
impu_Participacion_cod <- conjunto[conjunto[,"Participacion_cod"]=="99",]
dim(train2_Participacion_cod)[1]
dim(impu_Participacion_cod)[1]
table(train2_Participacion_cod$Participacion_cod)
train2_Participacion_cod[,"Participacion_cod"] <-
droplevels(train2_Participacion_cod[,"Participacion_cod"])
table(train2_Participacion_cod$Participacion_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_Participacion_cod <- train(Participacion_cod ~ .,
method = "rf",
data = train2_Participacion_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_Participacion_cod
varImp(rfFit_Participacion_cod)
plot(varImp(rfFit_Participacion_cod), top = 10, col = "#74A9CF", main = "M1")
rfFit_Participacion_cod$finalModel
pred_Participacion_cod <- predict(rfFit_Participacion_cod, test)
impu_Participacion_cod1 <- predict(rfFit_Participacion_cod, impu_Participacion_cod)
table(pred_Participacion_cod)
test_Participacion_cod <- test$Participacion_cod[test$Participacion_cod!=99]
test_Participacion_cod <- droplevels(test_Participacion_cod)
confusionMatrix(pred_Participacion_cod[test$Participacion_cod!=99],test_Participacion_cod)
CM1_Participacion_cod <-
confusionMatrix(pred_Participacion_cod[test$Participacion_cod!=99],test_Participacion_cod)$table
AC1_Participacion_cod <-
as.vector(confusionMatrix(pred_Participacion_cod[test$Participacion_cod!=99],test_Participacion_cod)
$overall[1])
NA_Participacion_cod <- as.numeric(rownames(test[test[,"Participacion_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Participacion_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_Participacion_cod_impu <- as.numeric(rownames(impu_Participacion_cod))
M1[NA_Participacion_cod,"Participacion_cod"] <- pred_Participacion_cod[pos]
M1[NA_Participacion_cod_impu,"Participacion_cod"] <- impu_Participacion_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_Participacion_cod <- train(Participacion_cod ~ .,
method = "rf",
data = train2_Participacion_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_Participacion_cod
varImp(rfFit2_Participacion_cod)
plot(varImp(rfFit2_Participacion_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_Participacion_cod$finalModel
pred2_Participacion_cod <- predict(rfFit2_Participacion_cod, test)
impu_Participacion_cod2 <- predict(rfFit2_Participacion_cod, impu_Participacion_cod)
table(pred2_Participacion_cod)
confusionMatrix(pred2_Participacion_cod[test$Participacion_cod!=99],test_Participacion_cod)
CM2_Participacion_cod <-
confusionMatrix(pred2_Participacion_cod[test$Participacion_cod!=99],test_Participacion_cod)$table
AC2_Participacion_cod <-
as.vector(confusionMatrix(pred2_Participacion_cod[test$Participacion_cod!=99],test_Participacion_cod
)$overall[1])
M2[NA_Participacion_cod,"Participacion_cod"] <- pred2_Participacion_cod[pos]
M2[NA_Participacion_cod_impu,"Participacion_cod"] <- impu_Participacion_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_Participacion_cod <- train(Participacion_cod ~ .,
method = "rf",
data = train2_Participacion_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_Participacion_cod
varImp(rfFit3_Participacion_cod)
plot(varImp(rfFit3_Participacion_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_Participacion_cod$finalModel
pred3_Participacion_cod <- predict(rfFit3_Participacion_cod, test)
impu_Participacion_cod3 <- predict(rfFit3_Participacion_cod, impu_Participacion_cod)
table(pred3_Participacion_cod)
confusionMatrix(pred3_Participacion_cod[test$Participacion_cod!=99],test_Participacion_cod)
CM3_Participacion_cod <-
confusionMatrix(pred3_Participacion_cod[test$Participacion_cod!=99],test_Participacion_cod)$table
AC3_Participacion_cod <-
as.vector(confusionMatrix(pred3_Participacion_cod[test$Participacion_cod!=99],test_Participacion_cod
)$overall[1])
M3[NA_Participacion_cod,"Participacion_cod"] <- pred3_Participacion_cod[pos]
M3[NA_Participacion_cod_impu,"Participacion_cod"] <- impu_Participacion_cod3
# Matriz Confusión
CMT_Participacion_cod <- (CM1_Participacion_cod)
for(i in 1:nrow(CMT_Participacion_cod))
{
for(j in 1:ncol(CMT_Participacion_cod))
{
if((CM1_Participacion_cod[i,j]+CM2_Participacion_cod[i,j]+CM3_Participacion_cod[i,j])%%3 != 0)
{
CMT_Participacion_cod[i,j] =
as.character(round((CM1_Participacion_cod[i,j]+CM2_Participacion_cod[i,j]+CM3_Participacion_cod[i
,j])/3,2))
}else{
CMT_Participacion_cod[i,j] =
as.character(as.integer((CM1_Participacion_cod[i,j]+CM2_Participacion_cod[i,j]+CM3_Participacion_c
od[i,j])/3))
}
}
}
CMT_Participacion_cod = cbind(c(1:3), CMT_Participacion_cod)
kable(CMT_Participacion_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Participación electoral </em></center>", escape = FALSE, col.names
= c("Prediction", "1","2","3"), position = "center", row_label_position = "c", font_size = 15,
latex_options="scale_down")%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 2))%>%
column_spec(1:4, width = "1.2cm")
ACT_Participacion_cod <- c(AC1_Participacion_cod,AC2_Participacion_cod,AC3_Participacion_cod)
ACM_Participacion_cod <- mean(c(ACT_Participacion_cod))
ACSD_Participacion_cod <- sqrt(var(ACT_Participacion_cod)/3)
-
Imputación de la Religión
# M = 1
train2_Religion_cod <- conjunto[conjunto[,"Religion_cod"]!="99",]
impu_Religion_cod <- conjunto[conjunto[,"Religion_cod"]=="99",]
dim(train2_Religion_cod)[1]
dim(impu_Religion_cod)[1]
table(train2_Religion_cod$Religion_cod)
train2_Religion_cod[,"Religion_cod"] <- droplevels(train2_Religion_cod[,"Religion_cod"])
table(train2_Religion_cod$Religion_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_Religion_cod <- train(Religion_cod ~ .,
method = "rf",
data = train2_Religion_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_Religion_cod
varImp(rfFit_Religion_cod)
plot(varImp(rfFit_Religion_cod), top = 10, col = "#74A9CF", main = "M1")
rfFit_Religion_cod$finalModel
pred_Religion_cod <- predict(rfFit_Religion_cod, test)
impu_Religion_cod1 <- predict(rfFit_Religion_cod, impu_Religion_cod)
table(pred_Religion_cod)
test_Religion_cod <- test$Religion_cod[test$Religion_cod!=99]
test_Religion_cod <- droplevels(test_Religion_cod)
confusionMatrix(pred_Religion_cod[test$Religion_cod!=99],test_Religion_cod)
CM1_Religion_cod <-
confusionMatrix(pred_Religion_cod[test$Religion_cod!=99],test_Religion_cod)$table
AC1_Religion_cod <-
as.vector(confusionMatrix(pred_Religion_cod[test$Religion_cod!=99],test_Religion_cod)$overall[1])
NA_Religion_cod <- as.numeric(rownames(test[test[,"Religion_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Religion_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_Religion_cod_impu <- as.numeric(rownames(impu_Religion_cod))
M1[NA_Religion_cod,"Religion_cod"] <- pred_Religion_cod[pos]
M1[NA_Religion_cod_impu,"Religion_cod"] <- impu_Religion_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_Religion_cod <- train(Religion_cod ~ .,
method = "rf",
data = train2_Religion_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_Religion_cod
varImp(rfFit2_Religion_cod)
plot(varImp(rfFit2_Religion_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_Religion_cod$finalModel
pred2_Religion_cod <- predict(rfFit2_Religion_cod, test)
impu_Religion_cod2 <- predict(rfFit2_Religion_cod, impu_Religion_cod)
table(pred2_Religion_cod)
confusionMatrix(pred2_Religion_cod[test$Religion_cod!=99],test_Religion_cod)
CM2_Religion_cod <-
confusionMatrix(pred2_Religion_cod[test$Religion_cod!=99],test_Religion_cod)$table
AC2_Religion_cod <-
as.vector(confusionMatrix(pred2_Religion_cod[test$Religion_cod!=99],test_Religion_cod)$overall[1])
M2[NA_Religion_cod,"Religion_cod"] <- pred2_Religion_cod[pos]
M2[NA_Religion_cod_impu,"Religion_cod"] <- impu_Religion_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_Religion_cod <- train(Religion_cod ~ .,
method = "rf",
data = train2_Religion_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_Religion_cod
varImp(rfFit3_Religion_cod)
plot(varImp(rfFit3_Religion_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_Religion_cod$finalModel
pred3_Religion_cod <- predict(rfFit3_Religion_cod, test)
impu_Religion_cod3 <- predict(rfFit3_Religion_cod, impu_Religion_cod)
table(pred3_Religion_cod)
confusionMatrix(pred3_Religion_cod[test$Religion_cod!=99],test_Religion_cod)
CM3_Religion_cod <-
confusionMatrix(pred3_Religion_cod[test$Religion_cod!=99],test_Religion_cod)$table
AC3_Religion_cod <-
as.vector(confusionMatrix(pred3_Religion_cod[test$Religion_cod!=99],test_Religion_cod)$overall[1])
M3[NA_Religion_cod,"Religion_cod"] <- pred3_Religion_cod[pos]
M3[NA_Religion_cod_impu,"Religion_cod"] <- impu_Religion_cod3
Matriz confusión
CMT_Religion_cod <- (CM1_Religion_cod)
for(i in 1:nrow(CMT_Religion_cod))
{
for(j in 1:ncol(CMT_Religion_cod))
{
if((CM1_Religion_cod[i,j]+CM2_Religion_cod[i,j]+CM3_Religion_cod[i,j])%%3 != 0)
{
CMT_Religion_cod[i,j] =
as.character(round((CM1_Religion_cod[i,j]+CM2_Religion_cod[i,j]+CM3_Religion_cod[i,j])/3,2))
}else{
CMT_Religion_cod[i,j] =
as.character(as.integer((CM1_Religion_cod[i,j]+CM2_Religion_cod[i,j]+CM3_Religion_cod[i,j])/3))
}
}
}
CMT_Religion_cod = cbind(c(1:4), CMT_Religion_cod)
kable(CMT_Religion_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Religión </em></center>", escape = FALSE, col.names =
c("Prediction", "1","2","3", "4"), position = "center", row_label_position = "c", font_size = 15)%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 3))%>%
column_spec(1:5, width = "1.2cm")
ACT_Religion_cod <- c(AC1_Religion_cod,AC2_Religion_cod,AC3_Religion_cod)
ACM_Religion_cod <- mean(c(ACT_Religion_cod))
ACSD_Religion_cod <- sqrt(var(ACT_Religion_cod)/3)
-
Imputación de la valoración de la Situación Económica
# M = 1
train2_Situ_eco_cod <- conjunto[conjunto[,"Situ_eco_cod"]!="99",]
impu_Situ_eco_cod <- conjunto[conjunto[,"Situ_eco_cod"]=="99",]
dim(train2_Situ_eco_cod)[1]
dim(impu_Situ_eco_cod)[1]
table(train2_Situ_eco_cod$Situ_eco_cod)
train2_Situ_eco_cod[,"Situ_eco_cod"] <- droplevels(train2_Situ_eco_cod[,"Situ_eco_cod"])
table(train2_Situ_eco_cod$Situ_eco_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_Situ_eco_cod <- train(Situ_eco_cod ~ .,
method = "rf",
data = train2_Situ_eco_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_Situ_eco_cod
varImp(rfFit_Situ_eco_cod)
plot(varImp(rfFit_Situ_eco_cod), top = 10, col = "#74A9CF", main = "M1")
rfFit_Situ_eco_cod$finalModel
pred_Situ_eco_cod <- predict(rfFit_Situ_eco_cod, test)
impu_Situ_eco_cod1 <- predict(rfFit_Situ_eco_cod, impu_Situ_eco_cod)
table(pred_Situ_eco_cod)
test_Situ_eco_cod <- test$Situ_eco_cod[test$Situ_eco_cod!=99]
test_Situ_eco_cod <- droplevels(test_Situ_eco_cod)
confusionMatrix(pred_Situ_eco_cod[test$Situ_eco_cod!=99],test_Situ_eco_cod)
CM1_Situ_eco_cod <-
confusionMatrix(pred_Situ_eco_cod[test$Situ_eco_cod!=99],test_Situ_eco_cod)$table
AC1_Situ_eco_cod <-
as.vector(confusionMatrix(pred_Situ_eco_cod[test$Situ_eco_cod!=99],test_Situ_eco_cod)$overall[1])
NA_Situ_eco_cod <- as.numeric(rownames(test[test[,"Situ_eco_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Situ_eco_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_Situ_eco_cod_impu <- as.numeric(rownames(impu_Situ_eco_cod))
M1[NA_Situ_eco_cod,"Situ_eco_cod"] <- pred_Situ_eco_cod[pos]
M1[NA_Situ_eco_cod_impu,"Situ_eco_cod"] <- impu_Situ_eco_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_Situ_eco_cod <- train(Situ_eco_cod ~ .,
method = "rf",
data = train2_Situ_eco_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_Situ_eco_cod
varImp(rfFit2_Situ_eco_cod)
plot(varImp(rfFit2_Situ_eco_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_Situ_eco_cod$finalModel
pred2_Situ_eco_cod <- predict(rfFit2_Situ_eco_cod, test)
impu_Situ_eco_cod2 <- predict(rfFit2_Situ_eco_cod, impu_Situ_eco_cod)
table(pred2_Situ_eco_cod)
confusionMatrix(pred2_Situ_eco_cod[test$Situ_eco_cod!=99],test_Situ_eco_cod)
CM2_Situ_eco_cod <-
confusionMatrix(pred2_Situ_eco_cod[test$Situ_eco_cod!=99],test_Situ_eco_cod)$table
AC2_Situ_eco_cod <-
as.vector(confusionMatrix(pred2_Situ_eco_cod[test$Situ_eco_cod!=99],test_Situ_eco_cod)$overall[1])
M2[NA_Situ_eco_cod,"Situ_eco_cod"] <- pred2_Situ_eco_cod[pos]
M2[NA_Situ_eco_cod_impu,"Situ_eco_cod"] <- impu_Situ_eco_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_Situ_eco_cod <- train(Situ_eco_cod ~ .,
method = "rf",
data = train2_Situ_eco_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_Situ_eco_cod
varImp(rfFit3_Situ_eco_cod)
plot(varImp(rfFit3_Situ_eco_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_Situ_eco_cod$finalModel
pred3_Situ_eco_cod <- predict(rfFit3_Situ_eco_cod, test)
impu_Situ_eco_cod3 <- predict(rfFit3_Situ_eco_cod, impu_Situ_eco_cod)
table(pred3_Situ_eco_cod)
confusionMatrix(pred3_Situ_eco_cod[test$Situ_eco_cod!=99],test_Situ_eco_cod)
CM3_Situ_eco_cod <-
confusionMatrix(pred3_Situ_eco_cod[test$Situ_eco_cod!=99],test_Situ_eco_cod)$table
AC3_Situ_eco_cod <-
as.vector(confusionMatrix(pred3_Situ_eco_cod[test$Situ_eco_cod!=99],test_Situ_eco_cod)$overall[1])
M3[NA_Situ_eco_cod,"Situ_eco_cod"] <- pred3_Situ_eco_cod[pos]
M3[NA_Situ_eco_cod_impu,"Situ_eco_cod"] <- impu_Situ_eco_cod3
Matriz Confusión
CMT_Situ_eco_cod <- (CM1_Situ_eco_cod)
for(i in 1:nrow(CMT_Situ_eco_cod))
{
for(j in 1:ncol(CMT_Situ_eco_cod))
{
if((CM1_Situ_eco_cod[i,j]+CM2_Situ_eco_cod[i,j]+CM3_Situ_eco_cod[i,j])%%3 != 0)
{
CMT_Situ_eco_cod[i,j] =
as.character(round((CM1_Situ_eco_cod[i,j]+CM2_Situ_eco_cod[i,j]+CM3_Situ_eco_cod[i,j])/3,2))
}else{
CMT_Situ_eco_cod[i,j] =
as.character(as.integer((CM1_Situ_eco_cod[i,j]+CM2_Situ_eco_cod[i,j]+CM3_Situ_eco_cod[i,j])/3))
}
}
}
CMT_Situ_eco_cod = cbind(c(1:5), CMT_Situ_eco_cod)
kable(CMT_Situ_eco_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Situación económica </em></center>", escape = FALSE, col.names =
c("Prediction", "1","2","3", "4", "5"), position = "center", row_label_position = "c", font_size = 15)%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 4))%>%
column_spec(1:6, width = "1.2cm")
ACT_Situ_eco_cod <- c(AC1_Situ_eco_cod,AC2_Situ_eco_cod,AC3_Situ_eco_cod)
ACM_Situ_eco_cod <- mean(c(ACT_Situ_eco_cod))
ACSD_Situ_eco_cod <- sqrt(var(ACT_Situ_eco_cod)/3)
-
Imputación de la Confianza en el presidente actual
# M = 1
train2_Conf_presi_cod <- conjunto[conjunto[,"Conf_presi_cod"]!="99",]
impu_Conf_presi_cod <- conjunto[conjunto[,"Conf_presi_cod"]=="99",]
dim(train2_Conf_presi_cod)[1]
dim(impu_Conf_presi_cod)[1]
table(train2_Conf_presi_cod$Conf_presi_cod)
train2_Conf_presi_cod[,"Conf_presi_cod"] <- droplevels(train2_Conf_presi_cod[,"Conf_presi_cod"])
table(train2_Conf_presi_cod$Conf_presi_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_Conf_presi_cod <- train(Conf_presi_cod ~ .,
method = "rf",
data = train2_Conf_presi_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_Conf_presi_cod
varImp(rfFit_Conf_presi_cod)
plot(varImp(rfFit_Conf_presi_cod), top = 10, col = "#74A9CF", main = "M1")
rfFit_Conf_presi_cod$finalModel
pred_Conf_presi_cod <- predict(rfFit_Conf_presi_cod, test)
impu_Conf_presi_cod1 <- predict(rfFit_Conf_presi_cod, impu_Conf_presi_cod)
table(pred_Conf_presi_cod)
test_Conf_presi_cod <- test$Conf_presi_cod[test$Conf_presi_cod!=99]
test_Conf_presi_cod <- droplevels(test_Conf_presi_cod)
confusionMatrix(pred_Conf_presi_cod[test$Conf_presi_cod!=99],test_Conf_presi_cod)
CM1_Conf_presi_cod <-
confusionMatrix(pred_Conf_presi_cod[test$Conf_presi_cod!=99],test_Conf_presi_cod)$table
AC1_Conf_presi_cod <-
as.vector(confusionMatrix(pred_Conf_presi_cod[test$Conf_presi_cod!=99],test_Conf_presi_cod)$overa
ll[1])
NA_Conf_presi_cod <- as.numeric(rownames(test[test[,"Conf_presi_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Conf_presi_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_Conf_presi_cod_impu <- as.numeric(rownames(impu_Conf_presi_cod))
M1[NA_Conf_presi_cod,"Conf_presi_cod"] <- pred_Conf_presi_cod[pos]
M1[NA_Conf_presi_cod_impu,"Conf_presi_cod"] <- impu_Conf_presi_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_Conf_presi_cod <- train(Conf_presi_cod ~ .,
method = "rf",
data = train2_Conf_presi_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_Conf_presi_cod
varImp(rfFit2_Conf_presi_cod)
plot(varImp(rfFit2_Conf_presi_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_Conf_presi_cod$finalModel
pred2_Conf_presi_cod <- predict(rfFit2_Conf_presi_cod, test)
impu_Conf_presi_cod2 <- predict(rfFit2_Conf_presi_cod, impu_Conf_presi_cod)
table(pred2_Conf_presi_cod)
confusionMatrix(pred2_Conf_presi_cod[test$Conf_presi_cod!=99],test_Conf_presi_cod)
CM2_Conf_presi_cod <-
confusionMatrix(pred2_Conf_presi_cod[test$Conf_presi_cod!=99],test_Conf_presi_cod)$table
AC2_Conf_presi_cod <-
as.vector(confusionMatrix(pred2_Conf_presi_cod[test$Conf_presi_cod!=99],test_Conf_presi_cod)$over
all[1])
M2[NA_Conf_presi_cod,"Conf_presi_cod"] <- pred2_Conf_presi_cod[pos]
M2[NA_Conf_presi_cod_impu,"Conf_presi_cod"] <- impu_Conf_presi_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_Conf_presi_cod <- train(Conf_presi_cod ~ .,
method = "rf",
data = train2_Conf_presi_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_Conf_presi_cod
varImp(rfFit3_Conf_presi_cod)
plot(varImp(rfFit3_Conf_presi_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_Conf_presi_cod$finalModel
pred3_Conf_presi_cod <- predict(rfFit3_Conf_presi_cod, test)
impu_Conf_presi_cod3 <- predict(rfFit3_Conf_presi_cod, impu_Conf_presi_cod)
table(pred3_Conf_presi_cod)
confusionMatrix(pred3_Conf_presi_cod[test$Conf_presi_cod!=99],test_Conf_presi_cod)
CM3_Conf_presi_cod <-
confusionMatrix(pred3_Conf_presi_cod[test$Conf_presi_cod!=99],test_Conf_presi_cod)$table
AC3_Conf_presi_cod <-
as.vector(confusionMatrix(pred3_Conf_presi_cod[test$Conf_presi_cod!=99],test_Conf_presi_cod)$over
all[1])
M3[NA_Conf_presi_cod,"Conf_presi_cod"] <- pred3_Conf_presi_cod[pos]
M3[NA_Conf_presi_cod_impu,"Conf_presi_cod"] <- impu_Conf_presi_cod3
Conf Presi
CMT_Conf_presi_cod <- (CM1_Conf_presi_cod)
for(i in 1:nrow(CMT_Conf_presi_cod))
{
for(j in 1:ncol(CMT_Conf_presi_cod))
{
if((CM1_Conf_presi_cod[i,j]+CM2_Conf_presi_cod[i,j]+CM3_Conf_presi_cod[i,j])%%3 != 0)
{
CMT_Conf_presi_cod[i,j] =
as.character(round((CM1_Conf_presi_cod[i,j]+CM2_Conf_presi_cod[i,j]+CM3_Conf_presi_cod[i,j])/3,
2))
}else{
CMT_Conf_presi_cod[i,j] =
as.character(as.integer((CM1_Conf_presi_cod[i,j]+CM2_Conf_presi_cod[i,j]+CM3_Conf_presi_cod[i,j]
)/3))
}
}
}
CMT_Conf_presi_cod = cbind(c(1:4), CMT_Conf_presi_cod)
kable(CMT_Conf_presi_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Confianza en el Presidente del gobierno </em></center>", escape =
FALSE, col.names = c("Prediction", "1","2","3", "4"), position = "center", row_label_position = "c",
font_size = 15)%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 3))%>%
column_spec(1:5, width = "1.2cm")
ACT_Conf_presi_cod <- c(AC1_Conf_presi_cod,AC2_Conf_presi_cod,AC3_Conf_presi_cod)
ACM_Conf_presi_cod <- mean(c(ACT_Conf_presi_cod))
ACSD_Conf_presi_cod <- sqrt(var(ACT_Conf_presi_cod)/3)
-
Imputación de la clase social
# M = 1
train2_clase_cod <- conjunto[conjunto[,"clase_cod"]!="99",]
impu_clase_cod <- conjunto[conjunto[,"clase_cod"]=="99",]
dim(train2_clase_cod)[1]
dim(impu_clase_cod)[1]
table(train2_clase_cod$clase_cod)
train2_clase_cod[,"clase_cod"] <- droplevels(train2_clase_cod[,"clase_cod"])
table(train2_clase_cod$clase_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_clase_cod <- train(clase_cod ~ .,
method = "rf",
data = train2_clase_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_clase_cod
varImp(rfFit_clase_cod)
plot(varImp(rfFit_clase_cod), top = 10, col = "#74A9CF", main = "M1")
rfFit_clase_cod$finalModel
pred_clase_cod <- predict(rfFit_clase_cod, test)
impu_clase_cod1 <- predict(rfFit_clase_cod, impu_clase_cod)
table(pred_clase_cod)
test_clase_cod <- test$clase_cod[test$clase_cod!=99]
test_clase_cod <- droplevels(test_clase_cod)
confusionMatrix(pred_clase_cod[test$clase_cod!=99],test_clase_cod)
CM1_clase_cod <- confusionMatrix(pred_clase_cod[test$clase_cod!=99],test_clase_cod)$table
AC1_clase_cod <-
as.vector(confusionMatrix(pred_clase_cod[test$clase_cod!=99],test_clase_cod)$overall[1])
NA_clase_cod <- as.numeric(rownames(test[test[,"clase_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"clase_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_clase_cod_impu <- as.numeric(rownames(impu_clase_cod))
M1[NA_clase_cod,"clase_cod"] <- pred_clase_cod[pos]
M1[NA_clase_cod_impu,"clase_cod"] <- impu_clase_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_clase_cod <- train(clase_cod ~ .,
method = "rf",
data = train2_clase_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_clase_cod
varImp(rfFit2_clase_cod)
plot(varImp(rfFit2_clase_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_clase_cod$finalModel
pred2_clase_cod <- predict(rfFit2_clase_cod, test)
impu_clase_cod2 <- predict(rfFit2_clase_cod, impu_clase_cod)
table(pred2_clase_cod)
confusionMatrix(pred2_clase_cod[test$clase_cod!=99],test_clase_cod)
CM2_clase_cod <- confusionMatrix(pred2_clase_cod[test$clase_cod!=99],test_clase_cod)$table
AC2_clase_cod <-
as.vector(confusionMatrix(pred2_clase_cod[test$clase_cod!=99],test_clase_cod)$overall[1])
M2[NA_clase_cod,"clase_cod"] <- pred2_clase_cod[pos]
M2[NA_clase_cod_impu,"clase_cod"] <- impu_clase_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_clase_cod <- train(clase_cod ~ .,
method = "rf",
data = train2_clase_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_clase_cod
varImp(rfFit3_clase_cod)
plot(varImp(rfFit3_clase_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_clase_cod$finalModel
pred3_clase_cod <- predict(rfFit3_clase_cod, test)
impu_clase_cod3 <- predict(rfFit3_clase_cod, impu_clase_cod)
table(pred3_clase_cod)
confusionMatrix(pred3_clase_cod[test$clase_cod!=99],test_clase_cod)
CM3_clase_cod <- confusionMatrix(pred3_clase_cod[test$clase_cod!=99],test_clase_cod)$table
AC3_clase_cod <-
as.vector(confusionMatrix(pred3_clase_cod[test$clase_cod!=99],test_clase_cod)$overall[1])
M3[NA_clase_cod,"clase_cod"] <- pred3_clase_cod[pos]
M3[NA_clase_cod_impu,"clase_cod"] <- impu_clase_cod3
CMT_clase_cod <- (CM1_clase_cod)
for(i in 1:nrow(CMT_clase_cod))
{
for(j in 1:ncol(CMT_clase_cod))
{
if((CM1_clase_cod[i,j]+CM2_clase_cod[i,j]+CM3_clase_cod[i,j])%%3 != 0)
{
CMT_clase_cod[i,j] =
as.character(round((CM1_clase_cod[i,j]+CM2_clase_cod[i,j]+CM3_clase_cod[i,j])/3,2))
}else{
CMT_clase_cod[i,j] =
as.character(as.integer((CM1_clase_cod[i,j]+CM2_clase_cod[i,j]+CM3_clase_cod[i,j])/3))
}
}
}
CMT_clase_cod = cbind(c(1:5), CMT_clase_cod)
kable(CMT_clase_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em>
Matriz de confusión Clase social </em></center>", escape = FALSE, col.names = c("Prediction",
"1","2","3", "4", "5"), position = "center", row_label_position = "c", font_size = 15)%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 4))%>%
column_spec(1:6, width = "1.2cm")
ACT_clase_cod <- c(AC1_clase_cod,AC2_clase_cod,AC3_clase_cod)
ACM_clase_cod <- mean(c(ACT_clase_cod))
ACSD_clase_cod <- sqrt(var(ACT_clase_cod)/3)
-
Imputación de la confianza en la oposición
# M = 1
train2_Conf_opo_cod <- conjunto[conjunto[,"Conf_opo_cod"]!="99",]
impu_Conf_opo_cod <- conjunto[conjunto[,"Conf_opo_cod"]=="99",]
dim(train2_Conf_opo_cod)[1]
dim(impu_Conf_opo_cod)[1]
table(train2_Conf_opo_cod$Conf_opo_cod)
train2_Conf_opo_cod[,"Conf_opo_cod"] <- droplevels(train2_Conf_opo_cod[,"Conf_opo_cod"])
table(train2_Conf_opo_cod$Conf_opo_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_Conf_opo_cod <- train(Conf_opo_cod ~ .,
method = "rf",
data = train2_Conf_opo_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_Conf_opo_cod
varImp(rfFit_Conf_opo_cod)
plot(varImp(rfFit_Conf_opo_cod), top = 10, col = "#74A9CF", main = "M1")
rfFit_Conf_opo_cod$finalModel
pred_Conf_opo_cod <- predict(rfFit_Conf_opo_cod, test)
impu_Conf_opo_cod1 <- predict(rfFit_Conf_opo_cod, impu_Conf_opo_cod)
table(pred_Conf_opo_cod)
test_Conf_opo_cod <- test$Conf_opo_cod[test$Conf_opo_cod!=99]
test_Conf_opo_cod <- droplevels(test_Conf_opo_cod)
confusionMatrix(pred_Conf_opo_cod[test$Conf_opo_cod!=99],test_Conf_opo_cod)
CM1_Conf_opo_cod <-
confusionMatrix(pred_Conf_opo_cod[test$Conf_opo_cod!=99],test_Conf_opo_cod)$table
AC1_Conf_opo_cod <-
as.vector(confusionMatrix(pred_Conf_opo_cod[test$Conf_opo_cod!=99],test_Conf_opo_cod)$overall[1
])
NA_Conf_opo_cod <- as.numeric(rownames(test[test[,"Conf_opo_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Conf_opo_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_Conf_opo_cod_impu <- as.numeric(rownames(impu_Conf_opo_cod))
M1[NA_Conf_opo_cod,"Conf_opo_cod"] <- pred_Conf_opo_cod[pos]
M1[NA_Conf_opo_cod_impu,"Conf_opo_cod"] <- impu_Conf_opo_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_Conf_opo_cod <- train(Conf_opo_cod ~ .,
method = "rf",
data = train2_Conf_opo_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_Conf_opo_cod
varImp(rfFit2_Conf_opo_cod)
plot(varImp(rfFit2_Conf_opo_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_Conf_opo_cod$finalModel
pred2_Conf_opo_cod <- predict(rfFit2_Conf_opo_cod, test)
impu_Conf_opo_cod2 <- predict(rfFit2_Conf_opo_cod, impu_Conf_opo_cod)
table(pred2_Conf_opo_cod)
confusionMatrix(pred2_Conf_opo_cod[test$Conf_opo_cod!=99],test_Conf_opo_cod)
CM2_Conf_opo_cod <-
confusionMatrix(pred2_Conf_opo_cod[test$Conf_opo_cod!=99],test_Conf_opo_cod)$table
AC2_Conf_opo_cod <-
as.vector(confusionMatrix(pred2_Conf_opo_cod[test$Conf_opo_cod!=99],test_Conf_opo_cod)$overall[
1])
M2[NA_Conf_opo_cod,"Conf_opo_cod"] <- pred2_Conf_opo_cod[pos]
M2[NA_Conf_opo_cod_impu,"Conf_opo_cod"] <- impu_Conf_opo_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_Conf_opo_cod <- train(Conf_opo_cod ~ .,
method = "rf",
data = train2_Conf_opo_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_Conf_opo_cod
varImp(rfFit3_Conf_opo_cod)
plot(varImp(rfFit3_Conf_opo_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_Conf_opo_cod$finalModel
pred3_Conf_opo_cod <- predict(rfFit3_Conf_opo_cod, test)
impu_Conf_opo_cod3 <- predict(rfFit3_Conf_opo_cod, impu_Conf_opo_cod)
table(pred3_Conf_opo_cod)
confusionMatrix(pred3_Conf_opo_cod[test$Conf_opo_cod!=99],test_Conf_opo_cod)
CM3_Conf_opo_cod <-
confusionMatrix(pred3_Conf_opo_cod[test$Conf_opo_cod!=99],test_Conf_opo_cod)$table
AC3_Conf_opo_cod <-
as.vector(confusionMatrix(pred3_Conf_opo_cod[test$Conf_opo_cod!=99],test_Conf_opo_cod)$overall[
1])
M3[NA_Conf_opo_cod,"Conf_opo_cod"] <- pred3_Conf_opo_cod[pos]
M3[NA_Conf_opo_cod_impu,"Conf_opo_cod"] <- impu_Conf_opo_cod3
Matriz de confusión
CMT_Conf_opo_cod <- (CM1_Conf_opo_cod)
for(i in 1:nrow(CMT_Conf_opo_cod))
{
for(j in 1:ncol(CMT_Conf_opo_cod))
{
if((CM1_Conf_opo_cod[i,j]+CM2_Conf_opo_cod[i,j]+CM3_Conf_opo_cod[i,j])%%3 != 0)
{
CMT_Conf_opo_cod[i,j] =
as.character(round((CM1_Conf_opo_cod[i,j]+CM2_Conf_opo_cod[i,j]+CM3_Conf_opo_cod[i,j])/3,2))
}else{
CMT_Conf_opo_cod[i,j] =
as.character(as.integer((CM1_Conf_opo_cod[i,j]+CM2_Conf_opo_cod[i,j]+CM3_Conf_opo_cod[i,j])/3
))
}
}
}
CMT_Conf_opo_cod = cbind(c(1:4), CMT_Conf_opo_cod)
kable(CMT_Conf_opo_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Confianza en el presidente de la oposición (Pablo Casado)
</em></center>", escape = FALSE, col.names = c("Prediction", "1","2","3", "4"), position = "center",
row_label_position = "c", font_size = 15)%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 3))%>%
column_spec(1:5, width = "1.2cm")
ACT_Conf_opo_cod <- c(AC1_Conf_opo_cod,AC2_Conf_opo_cod,AC3_Conf_opo_cod)
ACM_Conf_opo_cod <- mean(c(ACT_Conf_opo_cod))
ACSD_Conf_opo_cod <- sqrt(var(ACT_Conf_opo_cod)/3)
-Imputación de la Valoración de Pedro Sánchez
# M = 1
train2_Valoracion_ps_cod <- conjunto[conjunto[,"Valoracion_ps_cod"]!="99",]
impu_Valoracion_ps_cod <- conjunto[conjunto[,"Valoracion_ps_cod"]=="99",]
dim(train2_Valoracion_ps_cod)[1]
dim(impu_Valoracion_ps_cod)[1]
table(train2_Valoracion_ps_cod$Valoracion_ps_cod)
train2_Valoracion_ps_cod[,"Valoracion_ps_cod"] <-
droplevels(train2_Valoracion_ps_cod[,"Valoracion_ps_cod"])
table(train2_Valoracion_ps_cod$Valoracion_ps_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_Valoracion_ps_cod <- train(Valoracion_ps_cod ~ .,
method = "rf",
data = train2_Valoracion_ps_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_Valoracion_ps_cod
varImp(rfFit_Valoracion_ps_cod)
plot(varImp(rfFit_Valoracion_ps_cod), top = 10, col = "#74A9CF", main = "M1")
rfFit_Valoracion_ps_cod$finalModel
pred_Valoracion_ps_cod <- predict(rfFit_Valoracion_ps_cod, test)
impu_Valoracion_ps_cod1 <- predict(rfFit_Valoracion_ps_cod, impu_Valoracion_ps_cod)
table(pred_Valoracion_ps_cod)
test_Valoracion_ps_cod <- test$Valoracion_ps_cod[test$Valoracion_ps_cod!=99]
test_Valoracion_ps_cod <- droplevels(test_Valoracion_ps_cod)
confusionMatrix(pred_Valoracion_ps_cod[test$Valoracion_ps_cod!=99],test_Valoracion_ps_cod)
CM1_Valoracion_ps_cod <-
confusionMatrix(pred_Valoracion_ps_cod[test$Valoracion_ps_cod!=99],test_Valoracion_ps_cod)$table
AC1_Valoracion_ps_cod <-
as.vector(confusionMatrix(pred_Valoracion_ps_cod[test$Valoracion_ps_cod!=99],test_Valoracion_ps_
cod)$overall[1])
NA_Valoracion_ps_cod <- as.numeric(rownames(test[test[,"Valoracion_ps_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Valoracion_ps_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_Valoracion_ps_cod_impu <- as.numeric(rownames(impu_Valoracion_ps_cod))
M1[NA_Valoracion_ps_cod,"Valoracion_ps_cod"] <- pred_Valoracion_ps_cod[pos]
M1[NA_Valoracion_ps_cod_impu,"Valoracion_ps_cod"] <- impu_Valoracion_ps_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_Valoracion_ps_cod <- train(Valoracion_ps_cod ~ .,
method = "rf",
data = train2_Valoracion_ps_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_Valoracion_ps_cod
varImp(rfFit2_Valoracion_ps_cod)
plot(varImp(rfFit2_Valoracion_ps_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_Valoracion_ps_cod$finalModel
pred2_Valoracion_ps_cod <- predict(rfFit2_Valoracion_ps_cod, test)
impu_Valoracion_ps_cod2 <- predict(rfFit2_Valoracion_ps_cod, impu_Valoracion_ps_cod)
table(pred2_Valoracion_ps_cod)
confusionMatrix(pred2_Valoracion_ps_cod[test$Valoracion_ps_cod!=99],test_Valoracion_ps_cod)
CM2_Valoracion_ps_cod <-
confusionMatrix(pred2_Valoracion_ps_cod[test$Valoracion_ps_cod!=99],test_Valoracion_ps_cod)$tabl
e
AC2_Valoracion_ps_cod <-
as.vector(confusionMatrix(pred2_Valoracion_ps_cod[test$Valoracion_ps_cod!=99],test_Valoracion_ps
_cod)$overall[1])
M2[NA_Valoracion_ps_cod,"Valoracion_ps_cod"] <- pred2_Valoracion_ps_cod[pos]
M2[NA_Valoracion_ps_cod_impu,"Valoracion_ps_cod"] <- impu_Valoracion_ps_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_Valoracion_ps_cod <- train(Valoracion_ps_cod ~ .,
method = "rf",
data = train2_Valoracion_ps_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_Valoracion_ps_cod
varImp(rfFit3_Valoracion_ps_cod)
plot(varImp(rfFit3_Valoracion_ps_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_Valoracion_ps_cod$finalModel
pred3_Valoracion_ps_cod <- predict(rfFit3_Valoracion_ps_cod, test)
impu_Valoracion_ps_cod3 <- predict(rfFit3_Valoracion_ps_cod, impu_Valoracion_ps_cod)
table(pred3_Valoracion_ps_cod)
confusionMatrix(pred3_Valoracion_ps_cod[test$Valoracion_ps_cod!=99],test_Valoracion_ps_cod)
CM3_Valoracion_ps_cod <-
confusionMatrix(pred3_Valoracion_ps_cod[test$Valoracion_ps_cod!=99],test_Valoracion_ps_cod)$tabl
e
AC3_Valoracion_ps_cod <-
as.vector(confusionMatrix(pred3_Valoracion_ps_cod[test$Valoracion_ps_cod!=99],test_Valoracion_ps
_cod)$overall[1])
M3[NA_Valoracion_ps_cod,"Valoracion_ps_cod"] <- pred3_Valoracion_ps_cod[pos]
M3[NA_Valoracion_ps_cod_impu,"Valoracion_ps_cod"] <- impu_Valoracion_ps_cod3
Matriz confusión
CMT_Valoracion_ps_cod <- (CM1_Valoracion_ps_cod)
for(i in 1:nrow(CMT_Valoracion_ps_cod))
{
for(j in 1:ncol(CMT_Valoracion_ps_cod))
{
if((CM1_Valoracion_ps_cod[i,j]+CM2_Valoracion_ps_cod[i,j]+CM3_Valoracion_ps_cod[i,j])%%3 !=
0)
{
CMT_Valoracion_ps_cod[i,j] =
as.character(round((CM1_Valoracion_ps_cod[i,j]+CM2_Valoracion_ps_cod[i,j]+CM3_Valoracion_ps_
cod[i,j])/3,2))
}else{
CMT_Valoracion_ps_cod[i,j] =
as.character(as.integer((CM1_Valoracion_ps_cod[i,j]+CM2_Valoracion_ps_cod[i,j]+CM3_Valoracion_
ps_cod[i,j])/3))
}
}
}
CMT_Valoracion_ps_cod = cbind(c(1:6), CMT_Valoracion_ps_cod)
kable(CMT_Valoracion_ps_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Valoración Pedro Sánchez </em></center>", escape = FALSE,
col.names = c("Prediction", "1","2","3", "4", "5", "6"), position = "center", row_label_position = "c",
font_size = 15)%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 5))%>%
column_spec(1:7, width = "1.2cm")
ACT_Valoracion_ps_cod <-
c(AC1_Valoracion_ps_cod,AC2_Valoracion_ps_cod,AC3_Valoracion_ps_cod)
ACM_Valoracion_ps_cod <- mean(c(ACT_Valoracion_ps_cod))
ACSD_Valoracion_ps_cod <- sqrt(var(ACT_Valoracion_ps_cod)/3)
-
Imputación de la valoración de Pablo Iglesias
# M = 1
train2_Valoracion_pi_cod <- conjunto[conjunto[,"Valoracion_pi_cod"]!="99",]
impu_Valoracion_pi_cod <- conjunto[conjunto[,"Valoracion_pi_cod"]=="99",]
dim(train2_Valoracion_pi_cod)[1]
dim(impu_Valoracion_pi_cod)[1]
table(train2_Valoracion_pi_cod$Valoracion_pi_cod)
train2_Valoracion_pi_cod[,"Valoracion_pi_cod"] <-
droplevels(train2_Valoracion_pi_cod[,"Valoracion_pi_cod"])
table(train2_Valoracion_pi_cod$Valoracion_pi_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_Valoracion_pi_cod <- train(Valoracion_pi_cod ~ .,
method = "rf",
data = train2_Valoracion_pi_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_Valoracion_pi_cod
varImp(rfFit_Valoracion_pi_cod)
plot(varImp(rfFit_Valoracion_pi_cod), top = 10, col = "#74A9CF", main = "M1")
rfFit_Valoracion_pi_cod$finalModel
pred_Valoracion_pi_cod <- predict(rfFit_Valoracion_pi_cod, test)
impu_Valoracion_pi_cod1 <- predict(rfFit_Valoracion_pi_cod, impu_Valoracion_pi_cod)
table(pred_Valoracion_pi_cod)
test_Valoracion_pi_cod <- test$Valoracion_pi_cod[test$Valoracion_pi_cod!=99]
test_Valoracion_pi_cod <- droplevels(test_Valoracion_pi_cod)
confusionMatrix(pred_Valoracion_pi_cod[test$Valoracion_pi_cod!=99],test_Valoracion_pi_cod)
CM1_Valoracion_pi_cod <-
confusionMatrix(pred_Valoracion_pi_cod[test$Valoracion_pi_cod!=99],test_Valoracion_pi_cod)$table
AC1_Valoracion_pi_cod <-
as.vector(confusionMatrix(pred_Valoracion_pi_cod[test$Valoracion_pi_cod!=99],test_Valoracion_pi_c
od)$overall[1])
NA_Valoracion_pi_cod <- as.numeric(rownames(test[test[,"Valoracion_pi_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Valoracion_pi_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_Valoracion_pi_cod_impu <- as.numeric(rownames(impu_Valoracion_pi_cod))
M1[NA_Valoracion_pi_cod,"Valoracion_pi_cod"] <- pred_Valoracion_pi_cod[pos]
M1[NA_Valoracion_pi_cod_impu,"Valoracion_pi_cod"] <- impu_Valoracion_pi_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_Valoracion_pi_cod <- train(Valoracion_pi_cod ~ .,
method = "rf",
data = train2_Valoracion_pi_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_Valoracion_pi_cod
varImp(rfFit2_Valoracion_pi_cod)
plot(varImp(rfFit2_Valoracion_pi_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_Valoracion_pi_cod$finalModel
pred2_Valoracion_pi_cod <- predict(rfFit2_Valoracion_pi_cod, test)
impu_Valoracion_pi_cod2 <- predict(rfFit2_Valoracion_pi_cod, impu_Valoracion_pi_cod)
table(pred2_Valoracion_pi_cod)
confusionMatrix(pred2_Valoracion_pi_cod[test$Valoracion_pi_cod!=99],test_Valoracion_pi_cod)
CM2_Valoracion_pi_cod <-
confusionMatrix(pred2_Valoracion_pi_cod[test$Valoracion_pi_cod!=99],test_Valoracion_pi_cod)$tabl
e
AC2_Valoracion_pi_cod <-
as.vector(confusionMatrix(pred2_Valoracion_pi_cod[test$Valoracion_pi_cod!=99],test_Valoracion_pi_
cod)$overall[1])
M2[NA_Valoracion_pi_cod,"Valoracion_pi_cod"] <- pred2_Valoracion_pi_cod[pos]
M2[NA_Valoracion_pi_cod_impu,"Valoracion_pi_cod"] <- impu_Valoracion_pi_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_Valoracion_pi_cod <- train(Valoracion_pi_cod ~ .,
method = "rf",
data = train2_Valoracion_pi_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_Valoracion_pi_cod
varImp(rfFit3_Valoracion_pi_cod)
plot(varImp(rfFit3_Valoracion_pi_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_Valoracion_pi_cod$finalModel
pred3_Valoracion_pi_cod <- predict(rfFit3_Valoracion_pi_cod, test)
impu_Valoracion_pi_cod3 <- predict(rfFit3_Valoracion_pi_cod, impu_Valoracion_pi_cod)
table(pred3_Valoracion_pi_cod)
confusionMatrix(pred3_Valoracion_pi_cod[test$Valoracion_pi_cod!=99],test_Valoracion_pi_cod)
CM3_Valoracion_pi_cod <-
confusionMatrix(pred3_Valoracion_pi_cod[test$Valoracion_pi_cod!=99],test_Valoracion_pi_cod)$tabl
e
AC3_Valoracion_pi_cod <-
as.vector(confusionMatrix(pred3_Valoracion_pi_cod[test$Valoracion_pi_cod!=99],test_Valoracion_pi_
cod)$overall[1])
M3[NA_Valoracion_pi_cod,"Valoracion_pi_cod"] <- pred3_Valoracion_pi_cod[pos]
M3[NA_Valoracion_pi_cod_impu,"Valoracion_pi_cod"] <- impu_Valoracion_pi_cod3
CMT_Valoracion_pi_cod <- (CM1_Valoracion_pi_cod)
for(i in 1:nrow(CMT_Valoracion_pi_cod))
{
for(j in 1:ncol(CMT_Valoracion_pi_cod))
{
if((CM1_Valoracion_pi_cod[i,j]+CM2_Valoracion_pi_cod[i,j]+CM3_Valoracion_pi_cod[i,j])%%3 !=
0)
{
CMT_Valoracion_pi_cod[i,j] =
as.character(round((CM1_Valoracion_pi_cod[i,j]+CM2_Valoracion_pi_cod[i,j]+CM3_Valoracion_pi_c
od[i,j])/3,2))
}else{
CMT_Valoracion_pi_cod[i,j] =
as.character(as.integer((CM1_Valoracion_pi_cod[i,j]+CM2_Valoracion_pi_cod[i,j]+CM3_Valoracion_
pi_cod[i,j])/3))
}
}
}
CMT_Valoracion_pi_cod = cbind(c(1:6), CMT_Valoracion_pi_cod)
kable(CMT_Valoracion_pi_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Valoración Pablo Iglesias </em></center>", escape = FALSE,
col.names = c("Prediction", "1","2","3", "4", "5", "6"), position = "center", row_label_position = "c",
font_size = 15)%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 5))%>%
column_spec(1:7, width = "1.2cm")
ACT_Valoracion_pi_cod <-
c(AC1_Valoracion_pi_cod,AC2_Valoracion_pi_cod,AC3_Valoracion_pi_cod)
ACM_Valoracion_pi_cod <- mean(c(ACT_Valoracion_pi_cod))
ACSD_Valoracion_pi_cod <- sqrt(var(ACT_Valoracion_pi_cod)/3)
-
Imputación de la Simpatía partidista
# M = 1
train2_Simpatia_cod <- conjunto[conjunto[,"Simpatia_cod"]!="99",]
impu_Simpatia_cod <- conjunto[conjunto[,"Simpatia_cod"]=="99",]
dim(train2_Simpatia_cod)[1]
dim(impu_Simpatia_cod)[1]
table(train2_Simpatia_cod$Simpatia_cod)
train2_Simpatia_cod[,"Simpatia_cod"] <- droplevels(train2_Simpatia_cod[,"Simpatia_cod"])
table(train2_Simpatia_cod$Simpatia_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_Simpatia_cod <- train(Simpatia_cod ~ .,
method = "rf",
data = train2_Simpatia_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_Simpatia_cod
varImp(rfFit_Simpatia_cod)
plot(varImp(rfFit_Simpatia_cod), top = 10, col = "#74A9CF", main = "M1")
rfFit_Simpatia_cod$finalModel
pred_Simpatia_cod <- predict(rfFit_Simpatia_cod, test)
impu_Simpatia_cod1 <- predict(rfFit_Simpatia_cod, impu_Simpatia_cod)
table(pred_Simpatia_cod)
test_Simpatia_cod <- test$Simpatia_cod[test$Simpatia_cod!=99]
test_Simpatia_cod <- droplevels(test_Simpatia_cod)
confusionMatrix(pred_Simpatia_cod[test$Simpatia_cod!=99],test_Simpatia_cod)
CM1_Simpatia_cod <-
confusionMatrix(pred_Simpatia_cod[test$Simpatia_cod!=99],test_Simpatia_cod)$table
AC1_Simpatia_cod <-
as.vector(confusionMatrix(pred_Simpatia_cod[test$Simpatia_cod!=99],test_Simpatia_cod)$overall[1])
NA_Simpatia_cod <- as.numeric(rownames(test[test[,"Simpatia_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Simpatia_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_Simpatia_cod_impu <- as.numeric(rownames(impu_Simpatia_cod))
M1[NA_Simpatia_cod,"Simpatia_cod"] <- pred_Simpatia_cod[pos]
M1[NA_Simpatia_cod_impu,"Simpatia_cod"] <- impu_Simpatia_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_Simpatia_cod <- train(Simpatia_cod ~ .,
method = "rf",
data = train2_Simpatia_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_Simpatia_cod
varImp(rfFit2_Simpatia_cod)
plot(varImp(rfFit2_Simpatia_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_Simpatia_cod$finalModel
pred2_Simpatia_cod <- predict(rfFit2_Simpatia_cod, test)
impu_Simpatia_cod2 <- predict(rfFit2_Simpatia_cod, impu_Simpatia_cod)
table(pred2_Simpatia_cod)
confusionMatrix(pred2_Simpatia_cod[test$Simpatia_cod!=99],test_Simpatia_cod)
CM2_Simpatia_cod <-
confusionMatrix(pred2_Simpatia_cod[test$Simpatia_cod!=99],test_Simpatia_cod)$table
AC2_Simpatia_cod <-
as.vector(confusionMatrix(pred2_Simpatia_cod[test$Simpatia_cod!=99],test_Simpatia_cod)$overall[1])
M2[NA_Simpatia_cod,"Simpatia_cod"] <- pred2_Simpatia_cod[pos]
M2[NA_Simpatia_cod_impu,"Simpatia_cod"] <- impu_Simpatia_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_Simpatia_cod <- train(Simpatia_cod ~ .,
method = "rf",
data = train2_Simpatia_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_Simpatia_cod
varImp(rfFit3_Simpatia_cod)
plot(varImp(rfFit3_Simpatia_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_Simpatia_cod$finalModel
pred3_Simpatia_cod <- predict(rfFit3_Simpatia_cod, test)
impu_Simpatia_cod3 <- predict(rfFit3_Simpatia_cod, impu_Simpatia_cod)
table(pred3_Simpatia_cod)
confusionMatrix(pred3_Simpatia_cod[test$Simpatia_cod!=99],test_Simpatia_cod)
CM3_Simpatia_cod <-
confusionMatrix(pred3_Simpatia_cod[test$Simpatia_cod!=99],test_Simpatia_cod)$table
AC3_Simpatia_cod <-
as.vector(confusionMatrix(pred3_Simpatia_cod[test$Simpatia_cod!=99],test_Simpatia_cod)$overall[1])
M3[NA_Simpatia_cod,"Simpatia_cod"] <- pred3_Simpatia_cod[pos]
M3[NA_Simpatia_cod_impu,"Simpatia_cod"] <- impu_Simpatia_cod3
Matriz confusión
CMT_Simpatia_cod <- (CM1_Simpatia_cod)
for(i in 1:nrow(CMT_Simpatia_cod))
{
for(j in 1:ncol(CMT_Simpatia_cod))
{
if((CM1_Simpatia_cod[i,j]+CM2_Simpatia_cod[i,j]+CM3_Simpatia_cod[i,j])%%3 != 0)
{
CMT_Simpatia_cod[i,j] =
as.character(round((CM1_Simpatia_cod[i,j]+CM2_Simpatia_cod[i,j]+CM3_Simpatia_cod[i,j])/3,2))
}else{
CMT_Simpatia_cod[i,j] =
as.character(as.integer((CM1_Simpatia_cod[i,j]+CM2_Simpatia_cod[i,j]+CM3_Simpatia_cod[i,j])/3))
}
}
}
CMT_Simpatia_cod = cbind(c(1:10), CMT_Simpatia_cod)
CM1_Simpatia_cod = cbind(c(1:10), CM1_Simpatia_cod)
CM2_Simpatia_cod = cbind(c(1:10), CM2_Simpatia_cod)
CM3_Simpatia_cod = cbind(c(1:10), CM3_Simpatia_cod)
kable(CMT_Simpatia_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Simpatía partidista </em></center>", escape = FALSE, col.names =
c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"), table.attr = "style='width:30%;'")%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión, es
posible que no se obtenga un número entero"), threeparttable=T)%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%
column_spec(1:11, width = "1.2cm")
kable(CM1_Simpatia_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Simpatía partidista 1ª imputación</em></center>", escape = FALSE,
col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"), position = "center")%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%
column_spec(1:11, width = "1.2cm")
kable(CM2_Simpatia_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Simpatía partidista 2ª imputación </em></center>", escape = FALSE,
col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"), position = "center")%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%
column_spec(1:11, width = "1.2cm")
kable(CM3_Simpatia_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<leftr><em> Matriz de confusión Simpatía partidista 3ª imputación </em></center>", escape = FALSE,
col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"), position = "center")%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%
column_spec(1:11, width = "1.2cm")
ACT_Simpatia_cod <- c(AC1_Simpatia_cod,AC2_Simpatia_cod,AC3_Simpatia_cod)
ACM_Simpatia_cod <- mean(c(ACT_Simpatia_cod))
ACSD_Simpatia_cod <- sqrt(var(ACT_Simpatia_cod)/3)
-
Imputación de la valoración de Pablo Casado
# M = 1
train2_Valoracion_pc_cod <- conjunto[conjunto[,"Valoracion_pc_cod"]!="99",]
impu_Valoracion_pc_cod <- conjunto[conjunto[,"Valoracion_pc_cod"]=="99",]
dim(train2_Valoracion_pc_cod)[1]
dim(impu_Valoracion_pc_cod)[1]
table(train2_Valoracion_pc_cod$Valoracion_pc_cod)
train2_Valoracion_pc_cod[,"Valoracion_pc_cod"] <-
droplevels(train2_Valoracion_pc_cod[,"Valoracion_pc_cod"])
table(train2_Valoracion_pc_cod$Valoracion_pc_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_Valoracion_pc_cod <- train(Valoracion_pc_cod ~ .,
method = "rf",
data = train2_Valoracion_pc_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_Valoracion_pc_cod
varImp(rfFit_Valoracion_pc_cod)
plot(varImp(rfFit_Valoracion_pc_cod), top = 10, col = "#74A9CF", main = "M1")
rfFit_Valoracion_pc_cod$finalModel
pred_Valoracion_pc_cod <- predict(rfFit_Valoracion_pc_cod, test)
impu_Valoracion_pc_cod1 <- predict(rfFit_Valoracion_pc_cod, impu_Valoracion_pc_cod)
table(pred_Valoracion_pc_cod)
test_Valoracion_pc_cod <- test$Valoracion_pc_cod[test$Valoracion_pc_cod!=99]
test_Valoracion_pc_cod <- droplevels(test_Valoracion_pc_cod)
confusionMatrix(pred_Valoracion_pc_cod[test$Valoracion_pc_cod!=99],test_Valoracion_pc_cod)
CM1_Valoracion_pc_cod <-
confusionMatrix(pred_Valoracion_pc_cod[test$Valoracion_pc_cod!=99],test_Valoracion_pc_cod)$tabl
e
AC1_Valoracion_pc_cod<-
as.vector(confusionMatrix(pred_Valoracion_pc_cod[test$Valoracion_pc_cod!=99],test_Valoracion_pc_
cod)$overall[1])
NA_Valoracion_pc_cod <- as.numeric(rownames(test[test[,"Valoracion_pc_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Valoracion_pc_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_Valoracion_pc_cod_impu <- as.numeric(rownames(impu_Valoracion_pc_cod))
M1[NA_Valoracion_pc_cod,"Valoracion_pc_cod"] <- pred_Valoracion_pc_cod[pos]
M1[NA_Valoracion_pc_cod_impu,"Valoracion_pc_cod"] <- impu_Valoracion_pc_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_Valoracion_pc_cod <- train(Valoracion_pc_cod ~ .,
method = "rf",
data = train2_Valoracion_pc_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_Valoracion_pc_cod
varImp(rfFit2_Valoracion_pc_cod)
plot(varImp(rfFit2_Valoracion_pc_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_Valoracion_pc_cod$finalModel
pred2_Valoracion_pc_cod <- predict(rfFit2_Valoracion_pc_cod, test)
impu_Valoracion_pc_cod2 <- predict(rfFit2_Valoracion_pc_cod, impu_Valoracion_pc_cod)
table(pred2_Valoracion_pc_cod)
confusionMatrix(pred2_Valoracion_pc_cod[test$Valoracion_pc_cod!=99],test_Valoracion_pc_cod)
CM2_Valoracion_pc_cod <-
confusionMatrix(pred2_Valoracion_pc_cod[test$Valoracion_pc_cod!=99],test_Valoracion_pc_cod)$tab
le
AC2_Valoracion_pc_cod<-
as.vector(confusionMatrix(pred2_Valoracion_pc_cod[test$Valoracion_pc_cod!=99],test_Valoracion_pc
_cod)$overall[1])
M2[NA_Valoracion_pc_cod,"Valoracion_pc_cod"] <- pred2_Valoracion_pc_cod[pos]
M2[NA_Valoracion_pc_cod_impu,"Valoracion_pc_cod"] <- impu_Valoracion_pc_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_Valoracion_pc_cod <- train(Valoracion_pc_cod ~ .,
method = "rf",
data = train2_Valoracion_pc_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_Valoracion_pc_cod
varImp(rfFit3_Valoracion_pc_cod)
plot(varImp(rfFit3_Valoracion_pc_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_Valoracion_pc_cod$finalModel
pred3_Valoracion_pc_cod <- predict(rfFit3_Valoracion_pc_cod, test)
impu_Valoracion_pc_cod3 <- predict(rfFit3_Valoracion_pc_cod, impu_Valoracion_pc_cod)
table(pred3_Valoracion_pc_cod)
confusionMatrix(pred3_Valoracion_pc_cod[test$Valoracion_pc_cod!=99],test_Valoracion_pc_cod)
CM3_Valoracion_pc_cod <-
confusionMatrix(pred3_Valoracion_pc_cod[test$Valoracion_pc_cod!=99],test_Valoracion_pc_cod)$tab
le
AC3_Valoracion_pc_cod<-
as.vector(confusionMatrix(pred3_Valoracion_pc_cod[test$Valoracion_pc_cod!=99],test_Valoracion_pc
_cod)$overall[1])
M3[NA_Valoracion_pc_cod,"Valoracion_pc_cod"] <- pred3_Valoracion_pc_cod[pos]
M3[NA_Valoracion_pc_cod_impu,"Valoracion_pc_cod"] <- impu_Valoracion_pc_cod3
Matriz Confusión
CMT_Valoracion_pc_cod <- (CM1_Valoracion_pc_cod)
for(i in 1:nrow(CMT_Valoracion_pc_cod))
{
for(j in 1:ncol(CMT_Valoracion_pc_cod))
{
if((CM1_Valoracion_pc_cod[i,j]+CM2_Valoracion_pc_cod[i,j]+CM3_Valoracion_pc_cod[i,j])%%3
!= 0)
{
CMT_Valoracion_pc_cod[i,j] =
as.character(round((CM1_Valoracion_pc_cod[i,j]+CM2_Valoracion_pc_cod[i,j]+CM3_Valoracion_pc_
cod[i,j])/3,2))
}else{
CMT_Valoracion_pc_cod[i,j] =
as.character(as.integer((CM1_Valoracion_pc_cod[i,j]+CM2_Valoracion_pc_cod[i,j]+CM3_Valoracion_
pc_cod[i,j])/3))
}
}
}
CMT_Valoracion_pc_cod = cbind(c(1:6), CMT_Valoracion_pc_cod)
kable(CMT_Valoracion_pc_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Valoración Pablo Casado </em></center>", escape = FALSE,
col.names = c("Prediction", "1","2","3", "4", "5", "6"))%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 5))%>%
column_spec(1:7, width = "1.2cm")
ACT_Valoracion_pc_cod <-
c(AC1_Valoracion_pc_cod,AC2_Valoracion_pc_cod,AC3_Valoracion_pc_cod)
ACM_Valoracion_pc_cod <- mean(c(ACT_Valoracion_pc_cod))
ACSD_Valoracion_pc_cod <- sqrt(var(ACT_Valoracion_pc_cod)/3)
-
Imputación de la valoración de Santiago Abascal
# M = 1
train2_Valoracion_sa_cod <- conjunto[conjunto[,"Valoracion_sa_cod"]!="99",]
impu_Valoracion_sa_cod <- conjunto[conjunto[,"Valoracion_sa_cod"]=="99",]
dim(train2_Valoracion_sa_cod)[1]
dim(impu_Valoracion_sa_cod)[1]
table(train2_Valoracion_sa_cod$Valoracion_sa_cod)
train2_Valoracion_sa_cod[,"Valoracion_sa_cod"] <-
droplevels(train2_Valoracion_sa_cod[,"Valoracion_sa_cod"])
table(train2_Valoracion_sa_cod$Valoracion_sa_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_Valoracion_sa_cod <- train(Valoracion_sa_cod ~ .,
method = "rf",
data = train2_Valoracion_sa_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_Valoracion_sa_cod
varImp(rfFit_Valoracion_sa_cod)
plot(varImp(rfFit_Valoracion_sa_cod), top = 10, col = "#74A9CF", main = "M1")
rfFit_Valoracion_sa_cod$finalModel
pred_Valoracion_sa_cod <- predict(rfFit_Valoracion_sa_cod, test)
impu_Valoracion_sa_cod1 <- predict(rfFit_Valoracion_sa_cod, impu_Valoracion_sa_cod)
table(pred_Valoracion_sa_cod)
test_Valoracion_sa_cod <- test$Valoracion_sa_cod[test$Valoracion_sa_cod!=99]
test_Valoracion_sa_cod <- droplevels(test_Valoracion_sa_cod)
confusionMatrix(pred_Valoracion_sa_cod[test$Valoracion_sa_cod!=99],test_Valoracion_sa_cod)
CM1_Valoracion_sa_cod <-
confusionMatrix(pred_Valoracion_sa_cod[test$Valoracion_sa_cod!=99],test_Valoracion_sa_cod)$table
AC1_Valoracion_sa_cod<-
as.vector(confusionMatrix(pred_Valoracion_sa_cod[test$Valoracion_sa_cod!=99],test_Valoracion_sa_c
od)$overall[1])
NA_Valoracion_sa_cod <- as.numeric(rownames(test[test[,"Valoracion_sa_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Valoracion_sa_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_Valoracion_sa_cod_impu <- as.numeric(rownames(impu_Valoracion_sa_cod))
M1[NA_Valoracion_sa_cod,"Valoracion_sa_cod"] <- pred_Valoracion_sa_cod[pos]
M1[NA_Valoracion_sa_cod_impu,"Valoracion_sa_cod"] <- impu_Valoracion_sa_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_Valoracion_sa_cod <- train(Valoracion_sa_cod ~ .,
method = "rf",
data = train2_Valoracion_sa_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_Valoracion_sa_cod
varImp(rfFit2_Valoracion_sa_cod)
plot(varImp(rfFit2_Valoracion_sa_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_Valoracion_sa_cod$finalModel
pred2_Valoracion_sa_cod <- predict(rfFit2_Valoracion_sa_cod, test)
impu_Valoracion_sa_cod2 <- predict(rfFit2_Valoracion_sa_cod, impu_Valoracion_sa_cod)
table(pred2_Valoracion_sa_cod)
confusionMatrix(pred2_Valoracion_sa_cod[test$Valoracion_sa_cod!=99],test_Valoracion_sa_cod)
CM2_Valoracion_sa_cod <-
confusionMatrix(pred2_Valoracion_sa_cod[test$Valoracion_sa_cod!=99],test_Valoracion_sa_cod)$tabl
e
AC2_Valoracion_sa_cod<-
as.vector(confusionMatrix(pred2_Valoracion_sa_cod[test$Valoracion_sa_cod!=99],test_Valoracion_sa_
cod)$overall[1])
M2[NA_Valoracion_sa_cod,"Valoracion_sa_cod"] <- pred2_Valoracion_sa_cod[pos]
M2[NA_Valoracion_sa_cod_impu,"Valoracion_sa_cod"] <- impu_Valoracion_sa_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_Valoracion_sa_cod <- train(Valoracion_sa_cod ~ .,
method = "rf",
data = train2_Valoracion_sa_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_Valoracion_sa_cod
varImp(rfFit3_Valoracion_sa_cod)
plot(varImp(rfFit3_Valoracion_sa_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_Valoracion_sa_cod$finalModel
pred3_Valoracion_sa_cod <- predict(rfFit3_Valoracion_sa_cod, test)
impu_Valoracion_sa_cod3 <- predict(rfFit3_Valoracion_sa_cod, impu_Valoracion_sa_cod)
table(pred3_Valoracion_sa_cod)
confusionMatrix(pred3_Valoracion_sa_cod[test$Valoracion_sa_cod!=99],test_Valoracion_sa_cod)
CM3_Valoracion_sa_cod <-
confusionMatrix(pred3_Valoracion_sa_cod[test$Valoracion_sa_cod!=99],test_Valoracion_sa_cod)$tabl
e
AC3_Valoracion_sa_cod<-
as.vector(confusionMatrix(pred3_Valoracion_sa_cod[test$Valoracion_sa_cod!=99],test_Valoracion_sa_
cod)$overall[1])
M3[NA_Valoracion_sa_cod,"Valoracion_sa_cod"] <- pred3_Valoracion_sa_cod[pos]
M3[NA_Valoracion_sa_cod_impu,"Valoracion_sa_cod"] <- impu_Valoracion_sa_cod3
CMT_Valoracion_sa_cod <- (CM1_Valoracion_sa_cod)
for(i in 1:nrow(CMT_Valoracion_sa_cod))
{
for(j in 1:ncol(CMT_Valoracion_sa_cod))
{
if((CM1_Valoracion_sa_cod[i,j]+CM2_Valoracion_sa_cod[i,j]+CM3_Valoracion_sa_cod[i,j])%%3 !=
0)
{
CMT_Valoracion_sa_cod[i,j] =
as.character(round((CM1_Valoracion_sa_cod[i,j]+CM2_Valoracion_sa_cod[i,j]+CM3_Valoracion_sa_c
od[i,j])/3,2))
}else{
CMT_Valoracion_sa_cod[i,j] =
as.character(as.integer((CM1_Valoracion_sa_cod[i,j]+CM2_Valoracion_sa_cod[i,j]+CM3_Valoracion_
sa_cod[i,j])/3))
}
}
}
CMT_Valoracion_sa_cod = cbind(c(1:6), CMT_Valoracion_sa_cod)
kable(CMT_Valoracion_sa_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Valoración Santiago Abascal </em></center>", escape = FALSE,
col.names = c("Prediction", "1","2","3", "4", "5", "6"))%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 5))%>%
column_spec(1:7, width = "1.2cm")
ACT_Valoracion_sa_cod <-
c(AC1_Valoracion_sa_cod,AC2_Valoracion_sa_cod,AC3_Valoracion_sa_cod)
ACM_Valoracion_sa_cod <- mean(c(ACT_Valoracion_sa_cod))
ACSD_Valoracion_sa_cod <- sqrt(var(ACT_Valoracion_sa_cod)/3)
-
Imputación de la valoración de Inés Arrimadas
# M = 1
train2_Valoracion_ia_cod <- conjunto[conjunto[,"Valoracion_ia_cod"]!="99",]
impu_Valoracion_ia_cod <- conjunto[conjunto[,"Valoracion_ia_cod"]=="99",]
dim(train2_Valoracion_ia_cod)[1]
dim(impu_Valoracion_ia_cod)[1]
table(train2_Valoracion_ia_cod$Valoracion_ia_cod)
train2_Valoracion_ia_cod[,"Valoracion_ia_cod"] <-
droplevels(train2_Valoracion_ia_cod[,"Valoracion_ia_cod"])
table(train2_Valoracion_ia_cod$Valoracion_ia_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_Valoracion_ia_cod <- train(Valoracion_ia_cod ~ .,
method = "rf",
data = train2_Valoracion_ia_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_Valoracion_ia_cod
varImp(rfFit_Valoracion_ia_cod)
plot(varImp(rfFit_Valoracion_ia_cod), top = 10, col = "#74A9CF", main = "M1")
rfFit_Valoracion_ia_cod$finalModel
pred_Valoracion_ia_cod <- predict(rfFit_Valoracion_ia_cod, test)
impu_Valoracion_ia_cod1 <- predict(rfFit_Valoracion_ia_cod, impu_Valoracion_ia_cod)
table(pred_Valoracion_ia_cod)
test_Valoracion_ia_cod <- test$Valoracion_ia_cod[test$Valoracion_ia_cod!=99]
test_Valoracion_ia_cod <- droplevels(test_Valoracion_ia_cod)
confusionMatrix(pred_Valoracion_ia_cod[test$Valoracion_ia_cod!=99],test_Valoracion_ia_cod)
CM1_Valoracion_ia_cod <-
confusionMatrix(pred_Valoracion_ia_cod[test$Valoracion_ia_cod!=99],test_Valoracion_ia_cod)$table
AC1_Valoracion_ia_cod<-
as.vector(confusionMatrix(pred_Valoracion_ia_cod[test$Valoracion_ia_cod!=99],test_Valoracion_ia_c
od)$overall[1])
NA_Valoracion_ia_cod <- as.numeric(rownames(test[test[,"Valoracion_ia_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Valoracion_ia_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_Valoracion_ia_cod_impu <- as.numeric(rownames(impu_Valoracion_ia_cod))
M1[NA_Valoracion_ia_cod,"Valoracion_ia_cod"] <- pred_Valoracion_ia_cod[pos]
M1[NA_Valoracion_ia_cod_impu,"Valoracion_ia_cod"] <- impu_Valoracion_ia_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_Valoracion_ia_cod <- train(Valoracion_ia_cod ~ .,
method = "rf",
data = train2_Valoracion_ia_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_Valoracion_ia_cod
varImp(rfFit2_Valoracion_ia_cod)
plot(varImp(rfFit2_Valoracion_ia_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_Valoracion_ia_cod$finalModel
pred2_Valoracion_ia_cod <- predict(rfFit2_Valoracion_ia_cod, test)
impu_Valoracion_ia_cod2 <- predict(rfFit2_Valoracion_ia_cod, impu_Valoracion_ia_cod)
table(pred2_Valoracion_ia_cod)
confusionMatrix(pred2_Valoracion_ia_cod[test$Valoracion_ia_cod!=99],test_Valoracion_ia_cod)
CM2_Valoracion_ia_cod <-
confusionMatrix(pred2_Valoracion_ia_cod[test$Valoracion_ia_cod!=99],test_Valoracion_ia_cod)$table
AC2_Valoracion_ia_cod<-
as.vector(confusionMatrix(pred2_Valoracion_ia_cod[test$Valoracion_ia_cod!=99],test_Valoracion_ia_
cod)$overall[1])
M2[NA_Valoracion_ia_cod,"Valoracion_ia_cod"] <- pred2_Valoracion_ia_cod[pos]
M2[NA_Valoracion_ia_cod_impu,"Valoracion_ia_cod"] <- impu_Valoracion_ia_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_Valoracion_ia_cod <- train(Valoracion_ia_cod ~ .,
method = "rf",
data = train2_Valoracion_ia_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_Valoracion_ia_cod
varImp(rfFit3_Valoracion_ia_cod)
plot(varImp(rfFit3_Valoracion_ia_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_Valoracion_ia_cod$finalModel
pred3_Valoracion_ia_cod <- predict(rfFit3_Valoracion_ia_cod, test)
impu_Valoracion_ia_cod3 <- predict(rfFit3_Valoracion_ia_cod, impu_Valoracion_ia_cod)
table(pred3_Valoracion_ia_cod)
confusionMatrix(pred3_Valoracion_ia_cod[test$Valoracion_ia_cod!=99],test_Valoracion_ia_cod)
CM3_Valoracion_ia_cod <-
confusionMatrix(pred3_Valoracion_ia_cod[test$Valoracion_ia_cod!=99],test_Valoracion_ia_cod)$table
AC3_Valoracion_ia_cod<-
as.vector(confusionMatrix(pred3_Valoracion_ia_cod[test$Valoracion_ia_cod!=99],test_Valoracion_ia_
cod)$overall[1])
M3[NA_Valoracion_ia_cod,"Valoracion_ia_cod"] <- pred3_Valoracion_ia_cod[pos]
M3[NA_Valoracion_ia_cod_impu,"Valoracion_ia_cod"] <- impu_Valoracion_ia_cod3
CMT_Valoracion_ia_cod <- (CM1_Valoracion_ia_cod)
for(i in 1:nrow(CMT_Valoracion_ia_cod))
{
for(j in 1:ncol(CMT_Valoracion_ia_cod))
{
if((CM1_Valoracion_ia_cod[i,j]+CM2_Valoracion_ia_cod[i,j]+CM3_Valoracion_ia_cod[i,j])%%3 !=
0)
{
CMT_Valoracion_ia_cod[i,j] =
as.character(round((CM1_Valoracion_ia_cod[i,j]+CM2_Valoracion_ia_cod[i,j]+CM3_Valoracion_ia_c
od[i,j])/3,2))
}else{
CMT_Valoracion_ia_cod[i,j] =
as.character(as.integer((CM1_Valoracion_ia_cod[i,j]+CM2_Valoracion_ia_cod[i,j]+CM3_Valoracion_i
a_cod[i,j])/3))
}
}
}
CMT_Valoracion_ia_cod = cbind(c(1:6), CMT_Valoracion_ia_cod)
kable(CMT_Valoracion_ia_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Valoración Inés Arrimadas </em></center>", escape = FALSE,
col.names = c("Prediction", "1","2","3", "4", "5", "6"),position = "center", row_label_position = "c",
font_size = 15)%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 5))%>%
column_spec(1:7, width = "1.2cm")
ACT_Valoracion_ia_cod <-
c(AC1_Valoracion_ia_cod,AC2_Valoracion_ia_cod,AC3_Valoracion_ia_cod)
ACM_Valoracion_ia_cod <- mean(c(ACT_Valoracion_ia_cod))
ACSD_Valoracion_ia_cod <- sqrt(var(ACT_Valoracion_ia_cod)/3)
-
Imputación de la cercanía partidista
# M = 1
train2_Cercania_cod <- conjunto[conjunto[,"Cercania_cod"]!="99",]
impu_Cercania_cod <- conjunto[conjunto[,"Cercania_cod"]=="99",]
dim(train2_Cercania_cod)[1]
dim(impu_Cercania_cod)[1]
table(train2_Cercania_cod$Cercania_cod)
train2_Cercania_cod[,"Cercania_cod"] <- droplevels(train2_Cercania_cod[,"Cercania_cod"])
table(train2_Cercania_cod$Cercania_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_Cercania_cod <- train(Cercania_cod ~ .,
method = "rf",
data = train2_Cercania_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_Cercania_cod
varImp(rfFit_Cercania_cod)
plot(varImp(rfFit_Cercania_cod), top = 10, col = "#74A9CF", main = "M1")
rfFit_Cercania_cod$finalModel
pred_Cercania_cod <- predict(rfFit_Cercania_cod, test)
impu_Cercania_cod1 <- predict(rfFit_Cercania_cod, impu_Cercania_cod)
table(pred_Cercania_cod)
test_Cercania_cod <- test$Cercania_cod[test$Cercania_cod!=99]
test_Cercania_cod <- droplevels(test_Cercania_cod)
confusionMatrix(pred_Cercania_cod[test$Cercania_cod!=99],test_Cercania_cod)
CM1_Cercania_cod <-
confusionMatrix(pred_Cercania_cod[test$Cercania_cod!=99],test_Cercania_cod)$table
AC1_Cercania_cod<-
as.vector(confusionMatrix(pred_Cercania_cod[test$Cercania_cod!=99],test_Cercania_cod)$overall[1])
NA_Cercania_cod <- as.numeric(rownames(test[test[,"Cercania_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Cercania_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_Cercania_cod_impu <- as.numeric(rownames(impu_Cercania_cod))
M1[NA_Cercania_cod,"Cercania_cod"] <- pred_Cercania_cod[pos]
M1[NA_Cercania_cod_impu,"Cercania_cod"] <- impu_Cercania_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_Cercania_cod <- train(Cercania_cod ~ .,
method = "rf",
data = train2_Cercania_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_Cercania_cod
varImp(rfFit2_Cercania_cod)
plot(varImp(rfFit2_Cercania_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_Cercania_cod$finalModel
pred2_Cercania_cod <- predict(rfFit2_Cercania_cod, test)
impu_Cercania_cod2 <- predict(rfFit2_Cercania_cod, impu_Cercania_cod)
table(pred2_Cercania_cod)
confusionMatrix(pred2_Cercania_cod[test$Cercania_cod!=99],test_Cercania_cod)
CM2_Cercania_cod <-
confusionMatrix(pred2_Cercania_cod[test$Cercania_cod!=99],test_Cercania_cod)$table
AC2_Cercania_cod<-
as.vector(confusionMatrix(pred2_Cercania_cod[test$Cercania_cod!=99],test_Cercania_cod)$overall[1])
M2[NA_Cercania_cod,"Cercania_cod"] <- pred2_Cercania_cod[pos]
M2[NA_Cercania_cod_impu,"Cercania_cod"] <- impu_Cercania_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_Cercania_cod <- train(Cercania_cod ~ .,
method = "rf",
data = train2_Cercania_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_Cercania_cod
varImp(rfFit3_Cercania_cod)
plot(varImp(rfFit3_Cercania_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_Cercania_cod$finalModel
pred3_Cercania_cod <- predict(rfFit3_Cercania_cod, test)
impu_Cercania_cod3 <- predict(rfFit3_Cercania_cod, impu_Cercania_cod)
table(pred3_Cercania_cod)
confusionMatrix(pred3_Cercania_cod[test$Cercania_cod!=99],test_Cercania_cod)
CM3_Cercania_cod <-
confusionMatrix(pred3_Cercania_cod[test$Cercania_cod!=99],test_Cercania_cod)$table
AC3_Cercania_cod<-
as.vector(confusionMatrix(pred3_Cercania_cod[test$Cercania_cod!=99],test_Cercania_cod)$overall[1])
M3[NA_Cercania_cod,"Cercania_cod"] <- pred3_Cercania_cod[pos]
M3[NA_Cercania_cod_impu,"Cercania_cod"] <- impu_Cercania_cod3
Matriz Confusión
CMT_Cercania_cod <- (CM1_Cercania_cod)
for(i in 1:nrow(CMT_Cercania_cod))
{
for(j in 1:ncol(CMT_Cercania_cod))
{
if((CM1_Cercania_cod[i,j]+CM2_Cercania_cod[i,j]+CM3_Cercania_cod[i,j])%%3 != 0)
{
CMT_Cercania_cod[i,j] =
as.character(round((CM1_Cercania_cod[i,j]+CM2_Cercania_cod[i,j]+CM3_Cercania_cod[i,j])/3,2))
}else{
CMT_Cercania_cod[i,j] =
as.character(as.integer((CM1_Cercania_cod[i,j]+CM2_Cercania_cod[i,j]+CM3_Cercania_cod[i,j])/3))
}
}
}
CMT_Cercania_cod = cbind(c(1:10), CMT_Cercania_cod)
kable(CMT_Cercania_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Cercanía partidista </em></center>", escape = FALSE, col.names =
c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"),position = "center", row_label_position =
"c", font_size = 15 )%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%
column_spec(1:11, width = "1.2cm")
ACT_Cercania_cod <- c(AC1_Cercania_cod,AC2_Cercania_cod,AC3_Cercania_cod)
ACM_Cercania_cod <- mean(c(ACT_Cercania_cod))
ACSD_Cercania_cod <- sqrt(var(ACT_Cercania_cod)/3)
-
Imputación de la preferencia de presidente
# M = 1
train2_Pref_presi_cod <- conjunto[conjunto[,"Pref_presi_cod"]!="99",]
impu_Pref_presi_cod <- conjunto[conjunto[,"Pref_presi_cod"]=="99",]
dim(train2_Pref_presi_cod)[1]
dim(impu_Pref_presi_cod)[1]
table(train2_Pref_presi_cod$Pref_presi_cod)
train2_Pref_presi_cod[,"Pref_presi_cod"] <- droplevels(train2_Pref_presi_cod[,"Pref_presi_cod"])
table(train2_Pref_presi_cod$Pref_presi_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_Pref_presi_cod <- train(Pref_presi_cod ~ .,
method = "rf",
data = train2_Pref_presi_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_Pref_presi_cod
varImp(rfFit_Pref_presi_cod)
plot(varImp(rfFit_Pref_presi_cod), top = 10, col = "#74A9CF", main = "M1")
rfFit_Pref_presi_cod$finalModel
pred_Pref_presi_cod <- predict(rfFit_Pref_presi_cod, test)
impu_Pref_presi_cod1 <- predict(rfFit_Pref_presi_cod, impu_Pref_presi_cod)
table(pred_Pref_presi_cod)
test_Pref_presi_cod <- test$Pref_presi_cod[test$Pref_presi_cod!=99]
test_Pref_presi_cod <- droplevels(test_Pref_presi_cod)
confusionMatrix(pred_Pref_presi_cod[test$Pref_presi_cod!=99],test_Pref_presi_cod)
CM1_Pref_presi_cod <-
confusionMatrix(pred_Pref_presi_cod[test$Pref_presi_cod!=99],test_Pref_presi_cod)$table
AC1_Pref_presi_cod<-
as.vector(confusionMatrix(pred_Pref_presi_cod[test$Pref_presi_cod!=99],test_Pref_presi_cod)$overall[
1])
NA_Pref_presi_cod <- as.numeric(rownames(test[test[,"Pref_presi_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Pref_presi_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_Pref_presi_cod_impu <- as.numeric(rownames(impu_Pref_presi_cod))
M1[NA_Pref_presi_cod,"Pref_presi_cod"] <- pred_Pref_presi_cod[pos]
M1[NA_Pref_presi_cod_impu,"Pref_presi_cod"] <- impu_Pref_presi_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_Pref_presi_cod <- train(Pref_presi_cod ~ .,
method = "rf",
data = train2_Pref_presi_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_Pref_presi_cod
varImp(rfFit2_Pref_presi_cod)
plot(varImp(rfFit2_Pref_presi_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_Pref_presi_cod$finalModel
pred2_Pref_presi_cod <- predict(rfFit2_Pref_presi_cod, test)
impu_Pref_presi_cod2 <- predict(rfFit2_Pref_presi_cod, impu_Pref_presi_cod)
table(pred2_Pref_presi_cod)
confusionMatrix(pred2_Pref_presi_cod[test$Pref_presi_cod!=99],test_Pref_presi_cod)
CM2_Pref_presi_cod <-
confusionMatrix(pred2_Pref_presi_cod[test$Pref_presi_cod!=99],test_Pref_presi_cod)$table
AC2_Pref_presi_cod<-
as.vector(confusionMatrix(pred2_Pref_presi_cod[test$Pref_presi_cod!=99],test_Pref_presi_cod)$overall
[1])
M2[NA_Pref_presi_cod,"Pref_presi_cod"] <- pred2_Pref_presi_cod[pos]
M2[NA_Pref_presi_cod_impu,"Pref_presi_cod"] <- impu_Pref_presi_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_Pref_presi_cod <- train(Pref_presi_cod ~ .,
method = "rf",
data = train2_Pref_presi_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_Pref_presi_cod
varImp(rfFit3_Pref_presi_cod)
plot(varImp(rfFit3_Pref_presi_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_Pref_presi_cod$finalModel
pred3_Pref_presi_cod <- predict(rfFit3_Pref_presi_cod, test)
impu_Pref_presi_cod3 <- predict(rfFit3_Pref_presi_cod, impu_Pref_presi_cod)
table(pred3_Pref_presi_cod)
confusionMatrix(pred3_Pref_presi_cod[test$Pref_presi_cod!=99],test_Pref_presi_cod)
CM3_Pref_presi_cod <-
confusionMatrix(pred3_Pref_presi_cod[test$Pref_presi_cod!=99],test_Pref_presi_cod)$table
AC3_Pref_presi_cod<-
as.vector(confusionMatrix(pred3_Pref_presi_cod[test$Pref_presi_cod!=99],test_Pref_presi_cod)$overall
[1])
M3[NA_Pref_presi_cod,"Pref_presi_cod"] <- pred3_Pref_presi_cod[pos]
M3[NA_Pref_presi_cod_impu,"Pref_presi_cod"] <- impu_Pref_presi_cod3
Matriz Confusión
CMT_Pref_presi_cod <- (CM1_Pref_presi_cod)
for(i in 1:nrow(CMT_Pref_presi_cod))
{
for(j in 1:ncol(CMT_Pref_presi_cod))
{
if((CM1_Pref_presi_cod[i,j]+CM2_Pref_presi_cod[i,j]+CM3_Pref_presi_cod[i,j])%%3 != 0)
{
CMT_Pref_presi_cod[i,j] =
as.character(round((CM1_Pref_presi_cod[i,j]+CM2_Pref_presi_cod[i,j]+CM3_Pref_presi_cod[i,j])/3,2))
}else{
CMT_Pref_presi_cod[i,j] =
as.character(as.integer((CM1_Pref_presi_cod[i,j]+CM2_Pref_presi_cod[i,j]+CM3_Pref_presi_cod[i,j])/3
))
}
}
}
CMT_Pref_presi_cod = cbind(c(1:9), CMT_Pref_presi_cod)
kable(CMT_Pref_presi_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Preferencia como presidente del gobierno </em></center>", escape =
FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9"),position = "center",
row_label_position = "c", font_size = 15) %>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 8))%>%
column_spec(1:10, width = "1.2cm")
ACT_Pref_presi_cod <- c(AC1_Pref_presi_cod,AC2_Pref_presi_cod,AC3_Pref_presi_cod)
ACM_Pref_presi_cod <- mean(c(ACT_Pref_presi_cod))
ACSD_Pref_presi_cod <- sqrt(var(ACT_Pref_presi_cod)/3)
-
Imputación de la auto-ubicación ideológica
# M = 1
train2_Ideologia_cod <- conjunto[conjunto[,"Ideologia_cod"]!="99",]
impu_Ideologia_cod <- conjunto[conjunto[,"Ideologia_cod"]=="99",]
dim(train2_Ideologia_cod)[1]
dim(impu_Ideologia_cod)[1]
table(train2_Ideologia_cod$Ideologia_cod)
train2_Ideologia_cod[,"Ideologia_cod"] <- droplevels(train2_Ideologia_cod[,"Ideologia_cod"])
table(train2_Ideologia_cod$Ideologia_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_Ideologia_cod <- train(Ideologia_cod ~ .,
method = "rf",
data = train2_Ideologia_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_Ideologia_cod
varImp(rfFit_Ideologia_cod)
plot(varImp(rfFit_Ideologia_cod), top = 10, col = "#74A9CF", main = "M1")
rfFit_Ideologia_cod$finalModel
pred_Ideologia_cod <- predict(rfFit_Ideologia_cod, test)
impu_Ideologia_cod1 <- predict(rfFit_Ideologia_cod, impu_Ideologia_cod)
table(pred_Ideologia_cod)
test_Ideologia_cod <- test$Ideologia_cod[test$Ideologia_cod!=99]
test_Ideologia_cod <- fct_drop(test_Ideologia_cod, only = "99")
confusionMatrix(pred_Ideologia_cod[test$Ideologia_cod!=99],test_Ideologia_cod)
CM1_Ideologia_cod <-
confusionMatrix(pred_Ideologia_cod[test$Ideologia_cod!=99],test_Ideologia_cod)$table
AC1_Ideologia_cod<-
as.vector(confusionMatrix(pred_Ideologia_cod[test$Ideologia_cod!=99],test_Ideologia_cod)$overall[1])
NA_Ideologia_cod <- as.numeric(rownames(test[test[,"Ideologia_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Ideologia_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_Ideologia_cod_impu <- as.numeric(rownames(impu_Ideologia_cod))
M1[NA_Ideologia_cod,"Ideologia_cod"] <- pred_Ideologia_cod[pos]
M1[NA_Ideologia_cod_impu,"Ideologia_cod"] <- impu_Ideologia_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_Ideologia_cod <- train(Ideologia_cod ~ .,
method = "rf",
data = train2_Ideologia_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_Ideologia_cod
varImp(rfFit2_Ideologia_cod)
plot(varImp(rfFit2_Ideologia_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_Ideologia_cod$finalModel
pred2_Ideologia_cod <- predict(rfFit2_Ideologia_cod, test)
impu_Ideologia_cod2 <- predict(rfFit2_Ideologia_cod, impu_Ideologia_cod)
table(pred2_Ideologia_cod)
confusionMatrix(pred2_Ideologia_cod[test$Ideologia_cod!=99],test_Ideologia_cod)
CM2_Ideologia_cod <-
confusionMatrix(pred2_Ideologia_cod[test$Ideologia_cod!=99],test_Ideologia_cod)$table
AC2_Ideologia_cod<-
as.vector(confusionMatrix(pred2_Ideologia_cod[test$Ideologia_cod!=99],test_Ideologia_cod)$overall[1
])
M2[NA_Ideologia_cod,"Ideologia_cod"] <- pred2_Ideologia_cod[pos]
M2[NA_Ideologia_cod_impu,"Ideologia_cod"] <- impu_Ideologia_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_Ideologia_cod <- train(Ideologia_cod ~ .,
method = "rf",
data = train2_Ideologia_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_Ideologia_cod
varImp(rfFit3_Ideologia_cod)
plot(varImp(rfFit3_Ideologia_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_Ideologia_cod$finalModel
pred3_Ideologia_cod <- predict(rfFit3_Ideologia_cod, test)
impu_Ideologia_cod3 <- predict(rfFit3_Ideologia_cod, impu_Ideologia_cod)
table(pred3_Ideologia_cod)
confusionMatrix(pred3_Ideologia_cod[test$Ideologia_cod!=99],test_Ideologia_cod)
CM3_Ideologia_cod <-
confusionMatrix(pred3_Ideologia_cod[test$Ideologia_cod!=99],test_Ideologia_cod)$table
AC3_Ideologia_cod<-
as.vector(confusionMatrix(pred3_Ideologia_cod[test$Ideologia_cod!=99],test_Ideologia_cod)$overall[1
])
M3[NA_Ideologia_cod,"Ideologia_cod"] <- pred3_Ideologia_cod[pos]
M3[NA_Ideologia_cod_impu,"Ideologia_cod"] <- impu_Ideologia_cod3
Matriz Confusión:
CMT_Ideologia_cod <- (CM1_Ideologia_cod)
for(i in 1:nrow(CMT_Ideologia_cod))
{
for(j in 1:ncol(CMT_Ideologia_cod))
{
if((CM1_Ideologia_cod[i,j]+CM2_Ideologia_cod[i,j]+CM3_Ideologia_cod[i,j])%%3 != 0)
{
CMT_Ideologia_cod[i,j] =
as.character(round((CM1_Ideologia_cod[i,j]+CM2_Ideologia_cod[i,j]+CM3_Ideologia_cod[i,j])/3,2))
}else{
CMT_Ideologia_cod[i,j] =
as.character(as.integer((CM1_Ideologia_cod[i,j]+CM2_Ideologia_cod[i,j]+CM3_Ideologia_cod[i,j])/3))
}
}
}
CMT_Ideologia_cod = cbind(c(1:10), CMT_Ideologia_cod)
CM1_Ideologia_cod = cbind(c(1:10), CM1_Ideologia_cod)
CM2_Ideologia_cod = cbind(c(1:10), CM2_Ideologia_cod)
CM3_Ideologia_cod = cbind(c(1:10), CM3_Ideologia_cod)
kable(CMT_Ideologia_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Ideología </em></center>", escape = FALSE, col.names =
c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"))%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%
column_spec(1:11, width = "1.2cm")
kable(CM1_Ideologia_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Ideología 1ª imputación </em></center>", escape = FALSE, col.names
= c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"))%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%
column_spec(1:11, width = "1.2cm")
kable(CM2_Ideologia_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Ideología 2ª imputación </em></center>", escape = FALSE,
col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"))%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%
column_spec(1:11, width = "1.2cm")
kable(CM3_Ideologia_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Ideología 3ª imputación </em></center>", escape = FALSE,
col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"))%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%
column_spec(1:11, width = "1.2cm")
ACT_Ideologia_cod <- c(AC1_Ideologia_cod,AC2_Ideologia_cod,AC3_Ideologia_cod)
ACM_Ideologia_cod <- mean(c(ACT_Ideologia_cod))
ACSD_Ideologia_cod <- sqrt(var(ACT_Ideologia_cod)/3)
-
Imputación de la clasificación ideológica de Pablo Casado
# M = 1
train2_Ideologia_pc_cod <- conjunto[conjunto[,"Ideologia_pc_cod"]!="99",]
impu_Ideologia_pc_cod <- conjunto[conjunto[,"Ideologia_pc_cod"]=="99",]
dim(train2_Ideologia_pc_cod)[1]
dim(impu_Ideologia_pc_cod)[1]
table(train2_Ideologia_pc_cod$Ideologia_pc_cod)
train2_Ideologia_pc_cod[,"Ideologia_pc_cod"] <-
droplevels(train2_Ideologia_pc_cod[,"Ideologia_pc_cod"])
table(train2_Ideologia_pc_cod$Ideologia_pc_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_Ideologia_pc_cod <- train(Ideologia_pc_cod ~ .,
method = "rf",
data = train2_Ideologia_pc_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_Ideologia_pc_cod
varImp(rfFit_Ideologia_pc_cod)
plot(varImp(rfFit_Ideologia_pc_cod), top = 10, col = "#74A9CF", main = "M1")
rfFit_Ideologia_pc_cod$finalModel
pred_Ideologia_pc_cod <- predict(rfFit_Ideologia_pc_cod, test)
impu_Ideologia_pc_cod1 <- predict(rfFit_Ideologia_pc_cod, impu_Ideologia_pc_cod)
table(pred_Ideologia_pc_cod)
test_Ideologia_pc_cod <- test$Ideologia_pc_cod[test$Ideologia_pc_cod!=99]
test_Ideologia_pc_cod <- fct_drop(test_Ideologia_pc_cod, only = "99")
confusionMatrix(pred_Ideologia_pc_cod[test$Ideologia_pc_cod!=99],test_Ideologia_pc_cod)
CM1_Ideologia_pc_cod <-
confusionMatrix(pred_Ideologia_pc_cod[test$Ideologia_pc_cod!=99],test_Ideologia_pc_cod)$table
AC1_Ideologia_pc_cod<-
as.vector(confusionMatrix(pred_Ideologia_pc_cod[test$Ideologia_pc_cod!=99],test_Ideologia_pc_cod)
$overall[1])
NA_Ideologia_pc_cod <- as.numeric(rownames(test[test[,"Ideologia_pc_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Ideologia_pc_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_Ideologia_pc_cod_impu <- as.numeric(rownames(impu_Ideologia_pc_cod))
M1[NA_Ideologia_pc_cod,"Ideologia_pc_cod"] <- pred_Ideologia_pc_cod[pos]
M1[NA_Ideologia_pc_cod_impu,"Ideologia_pc_cod"] <- impu_Ideologia_pc_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_Ideologia_pc_cod <- train(Ideologia_pc_cod ~ .,
method = "rf",
data = train2_Ideologia_pc_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_Ideologia_pc_cod
varImp(rfFit2_Ideologia_pc_cod)
plot(varImp(rfFit2_Ideologia_pc_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_Ideologia_pc_cod$finalModel
pred2_Ideologia_pc_cod <- predict(rfFit2_Ideologia_pc_cod, test)
impu_Ideologia_pc_cod2 <- predict(rfFit2_Ideologia_pc_cod, impu_Ideologia_pc_cod)
table(pred2_Ideologia_pc_cod)
confusionMatrix(pred2_Ideologia_pc_cod[test$Ideologia_pc_cod!=99],test_Ideologia_pc_cod)
CM2_Ideologia_pc_cod <-
confusionMatrix(pred2_Ideologia_pc_cod[test$Ideologia_pc_cod!=99],test_Ideologia_pc_cod)$table
AC2_Ideologia_pc_cod<-
as.vector(confusionMatrix(pred2_Ideologia_pc_cod[test$Ideologia_pc_cod!=99],test_Ideologia_pc_cod
)$overall[1])
M2[NA_Ideologia_pc_cod,"Ideologia_pc_cod"] <- pred2_Ideologia_pc_cod[pos]
M2[NA_Ideologia_pc_cod_impu,"Ideologia_pc_cod"] <- impu_Ideologia_pc_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_Ideologia_pc_cod <- train(Ideologia_pc_cod ~ .,
method = "rf",
data = train2_Ideologia_pc_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_Ideologia_pc_cod
varImp(rfFit3_Ideologia_pc_cod)
plot(varImp(rfFit3_Ideologia_pc_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_Ideologia_pc_cod$finalModel
pred3_Ideologia_pc_cod <- predict(rfFit3_Ideologia_pc_cod, test)
impu_Ideologia_pc_cod3 <- predict(rfFit3_Ideologia_pc_cod, impu_Ideologia_pc_cod)
table(pred3_Ideologia_pc_cod)
confusionMatrix(pred3_Ideologia_pc_cod[test$Ideologia_pc_cod!=99],test_Ideologia_pc_cod)
CM3_Ideologia_pc_cod <-
confusionMatrix(pred3_Ideologia_pc_cod[test$Ideologia_pc_cod!=99],test_Ideologia_pc_cod)$table
AC3_Ideologia_pc_cod<-
as.vector(confusionMatrix(pred3_Ideologia_pc_cod[test$Ideologia_pc_cod!=99],test_Ideologia_pc_cod
)$overall[1])
M3[NA_Ideologia_pc_cod,"Ideologia_pc_cod"] <- pred3_Ideologia_pc_cod[pos]
M3[NA_Ideologia_pc_cod_impu,"Ideologia_pc_cod"] <- impu_Ideologia_pc_cod3
Matriz Confusión:
CMT_Ideologia_pc_cod <- (CM1_Ideologia_pc_cod)
for(i in 1:nrow(CMT_Ideologia_pc_cod))
{
for(j in 1:ncol(CMT_Ideologia_pc_cod))
{
if((CM1_Ideologia_pc_cod[i,j]+CM2_Ideologia_pc_cod[i,j]+CM3_Ideologia_pc_cod[i,j])%%3 != 0)
{
CMT_Ideologia_pc_cod[i,j] =
as.character(round((CM1_Ideologia_pc_cod[i,j]+CM2_Ideologia_pc_cod[i,j]+CM3_Ideologia_pc_cod[i
,j])/3,2))
}else{
CMT_Ideologia_pc_cod[i,j] =
as.character(as.integer((CM1_Ideologia_pc_cod[i,j]+CM2_Ideologia_pc_cod[i,j]+CM3_Ideologia_pc_c
od[i,j])/3))
}
}
}
CMT_Ideologia_pc_cod = cbind(c(1:11), CMT_Ideologia_pc_cod)
kable(CMT_Ideologia_pc_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Clasificación ideológica Pablo Casado </em></center>", escape =
FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10", "11"), position =
"center", row_label_position = "c", font_size = 15)%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 10))%>%
column_spec(1:12, width = "1.2cm")
ACT_Ideologia_pc_cod <- c(AC1_Ideologia_pc_cod,AC2_Ideologia_pc_cod,AC3_Ideologia_pc_cod)
ACM_Ideologia_pc_cod <- mean(c(ACT_Ideologia_pc_cod))
ACSD_Ideologia_pc_cod <- sqrt(var(ACT_Ideologia_pc_cod)/3)
-
Imputación del recuerdo de voto en las anteriores elecciones
# M = 1
train2_Recuerdo_cod <- conjunto[conjunto[,"Recuerdo_cod"]!="99",]
impu_Recuerdo_cod <- conjunto[conjunto[,"Recuerdo_cod"]=="99",]
dim(train2_Recuerdo_cod)[1]
dim(impu_Recuerdo_cod)[1]
table(train2_Recuerdo_cod$Recuerdo_cod)
train2_Recuerdo_cod[,"Recuerdo_cod"] <- droplevels(train2_Recuerdo_cod[,"Recuerdo_cod"])
table(train2_Recuerdo_cod$Recuerdo_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_Recuerdo_cod <- train(Recuerdo_cod ~ .,
method = "rf",
data = train2_Recuerdo_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_Recuerdo_cod
varImp(rfFit_Recuerdo_cod)
plot(varImp(rfFit_Recuerdo_cod), top = 10, col = "#74A9CF", main = "M1")
rfFit_Recuerdo_cod$finalModel
pred_Recuerdo_cod <- predict(rfFit_Recuerdo_cod, test)
impu_Recuerdo_cod1 <- predict(rfFit_Recuerdo_cod, impu_Recuerdo_cod)
table(pred_Recuerdo_cod)
test_Recuerdo_cod <- test$Recuerdo_cod[test$Recuerdo_cod!=99]
test_Recuerdo_cod <- droplevels(test_Recuerdo_cod)
confusionMatrix(pred_Recuerdo_cod[test$Recuerdo_cod!=99],test_Recuerdo_cod)
CM1_Recuerdo_cod <-
confusionMatrix(pred_Recuerdo_cod[test$Recuerdo_cod!=99],test_Recuerdo_cod)$table
AC1_Recuerdo_cod <-
as.vector(confusionMatrix(pred_Recuerdo_cod[test$Recuerdo_cod!=99],test_Recuerdo_cod)$overall[1]
)
NA_Recuerdo_cod <- as.numeric(rownames(test[test[,"Recuerdo_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Recuerdo_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_Recuerdo_cod_impu <- as.numeric(rownames(impu_Recuerdo_cod))
M1[NA_Recuerdo_cod,"Recuerdo_cod"] <- pred_Recuerdo_cod[pos]
M1[NA_Recuerdo_cod_impu,"Recuerdo_cod"] <- impu_Recuerdo_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_Recuerdo_cod <- train(Recuerdo_cod ~ .,
method = "rf",
data = train2_Recuerdo_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_Recuerdo_cod
varImp(rfFit2_Recuerdo_cod)
plot(varImp(rfFit2_Recuerdo_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_Recuerdo_cod$finalModel
pred2_Recuerdo_cod <- predict(rfFit2_Recuerdo_cod, test)
impu_Recuerdo_cod2 <- predict(rfFit2_Recuerdo_cod, impu_Recuerdo_cod)
table(pred2_Recuerdo_cod)
confusionMatrix(pred2_Recuerdo_cod[test$Recuerdo_cod!=99],test_Recuerdo_cod)
CM2_Recuerdo_cod <-
confusionMatrix(pred2_Recuerdo_cod[test$Recuerdo_cod!=99],test_Recuerdo_cod)$table
AC2_Recuerdo_cod <-
as.vector(confusionMatrix(pred2_Recuerdo_cod[test$Recuerdo_cod!=99],test_Recuerdo_cod)$overall[1
])
M2[NA_Recuerdo_cod,"Recuerdo_cod"] <- pred2_Recuerdo_cod[pos]
M2[NA_Recuerdo_cod_impu,"Recuerdo_cod"] <- impu_Recuerdo_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_Recuerdo_cod <- train(Recuerdo_cod ~ .,
method = "rf",
data = train2_Recuerdo_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_Recuerdo_cod
varImp(rfFit3_Recuerdo_cod)
plot(varImp(rfFit3_Recuerdo_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_Recuerdo_cod$finalModel
pred3_Recuerdo_cod <- predict(rfFit3_Recuerdo_cod, test)
impu_Recuerdo_cod3 <- predict(rfFit3_Recuerdo_cod, impu_Recuerdo_cod)
table(pred3_Recuerdo_cod)
confusionMatrix(pred3_Recuerdo_cod[test$Recuerdo_cod!=99],test_Recuerdo_cod)
CM3_Recuerdo_cod <-
confusionMatrix(pred3_Recuerdo_cod[test$Recuerdo_cod!=99],test_Recuerdo_cod)$table
AC3_Recuerdo_cod <-
as.vector(confusionMatrix(pred3_Recuerdo_cod[test$Recuerdo_cod!=99],test_Recuerdo_cod)$overall[1
])
M3[NA_Recuerdo_cod,"Recuerdo_cod"] <- pred3_Recuerdo_cod[pos]
M3[NA_Recuerdo_cod_impu,"Recuerdo_cod"] <- impu_Recuerdo_cod3
CMT_Recuerdo_cod <- (CM1_Recuerdo_cod)
for(i in 1:nrow(CMT_Recuerdo_cod))
{
for(j in 1:ncol(CMT_Recuerdo_cod))
{
if((CM1_Recuerdo_cod[i,j]+CM2_Recuerdo_cod[i,j]+CM3_Recuerdo_cod[i,j])%%3 != 0)
{
CMT_Recuerdo_cod[i,j] =
as.character(round((CM1_Recuerdo_cod[i,j]+CM2_Recuerdo_cod[i,j]+CM3_Recuerdo_cod[i,j])/3,2))
}else{
CMT_Recuerdo_cod[i,j] =
as.character(as.integer((CM1_Recuerdo_cod[i,j]+CM2_Recuerdo_cod[i,j]+CM3_Recuerdo_cod[i,j])/3))
}
}
}
CMT_Recuerdo_cod = cbind(c(1:11), CMT_Recuerdo_cod)
kable(CMT_Recuerdo_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Recuerdo de Voto </em></center>", escape = FALSE, col.names =
c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10", "11"), position = "center",
row_label_position = "c", font_size = 15)%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 10))%>%
column_spec(1:12, width = "1.2cm")
ACT_Recuerdo_cod <- c(AC1_Recuerdo_cod,AC2_Recuerdo_cod,AC3_Recuerdo_cod)
ACM_Recuerdo_cod <- mean(c(ACT_Recuerdo_cod))
ACSD_Recuerdo_cod <- sqrt(var(ACT_Recuerdo_cod)/3)
-
Imputación de la clasificación ideológica de Pedro Sánchez
# M = 1
train2_Ideologia_ps_cod <- conjunto[conjunto[,"Ideologia_ps_cod"]!="99",]
impu_Ideologia_ps_cod <- conjunto[conjunto[,"Ideologia_ps_cod"]=="99",]
dim(train2_Ideologia_ps_cod)[1]
dim(impu_Ideologia_ps_cod)[1]
table(train2_Ideologia_ps_cod$Ideologia_ps_cod)
train2_Ideologia_ps_cod[,"Ideologia_ps_cod"] <-
droplevels(train2_Ideologia_ps_cod[,"Ideologia_ps_cod"])
table(train2_Ideologia_ps_cod$Ideologia_ps_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_Ideologia_ps_cod <- train(Ideologia_ps_cod ~ .,
method = "rf",
data = train2_Ideologia_ps_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_Ideologia_ps_cod
varImp(rfFit_Ideologia_ps_cod)
plot(varImp(rfFit_Ideologia_ps_cod), top = 10, col = "#74A9CF", main = "M1")
rfFit_Ideologia_ps_cod$finalModel
pred_Ideologia_ps_cod <- predict(rfFit_Ideologia_ps_cod, test)
impu_Ideologia_ps_cod1 <- predict(rfFit_Ideologia_ps_cod, impu_Ideologia_ps_cod)
table(pred_Ideologia_ps_cod)
test_Ideologia_ps_cod <- test$Ideologia_ps_cod[test$Ideologia_ps_cod!=99]
test_Ideologia_ps_cod <- fct_drop(test_Ideologia_ps_cod, only = "99")
confusionMatrix(pred_Ideologia_ps_cod[test$Ideologia_ps_cod!=99],test_Ideologia_ps_cod)
CM1_Ideologia_ps_cod <-
confusionMatrix(pred_Ideologia_ps_cod[test$Ideologia_ps_cod!=99],test_Ideologia_ps_cod)$table
AC1_Ideologia_ps_cod <-
as.vector(confusionMatrix(pred_Ideologia_ps_cod[test$Ideologia_ps_cod!=99],test_Ideologia_ps_cod)$
overall[1])
NA_Ideologia_ps_cod <- as.numeric(rownames(test[test[,"Ideologia_ps_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Ideologia_ps_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_Ideologia_ps_cod_impu <- as.numeric(rownames(impu_Ideologia_ps_cod))
M1[NA_Ideologia_ps_cod,"Ideologia_ps_cod"] <- pred_Ideologia_ps_cod[pos]
M1[NA_Ideologia_ps_cod_impu,"Ideologia_ps_cod"] <- impu_Ideologia_ps_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_Ideologia_ps_cod <- train(Ideologia_ps_cod ~ .,
method = "rf",
data = train2_Ideologia_ps_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_Ideologia_ps_cod
varImp(rfFit2_Ideologia_ps_cod)
plot(varImp(rfFit2_Ideologia_ps_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_Ideologia_ps_cod$finalModel
pred2_Ideologia_ps_cod <- predict(rfFit2_Ideologia_ps_cod, test)
impu_Ideologia_ps_cod2 <- predict(rfFit2_Ideologia_ps_cod, impu_Ideologia_ps_cod)
table(pred2_Ideologia_ps_cod)
confusionMatrix(pred2_Ideologia_ps_cod[test$Ideologia_ps_cod!=99],test_Ideologia_ps_cod)
CM2_Ideologia_ps_cod <-
confusionMatrix(pred2_Ideologia_ps_cod[test$Ideologia_ps_cod!=99],test_Ideologia_ps_cod)$table
AC2_Ideologia_ps_cod <-
as.vector(confusionMatrix(pred2_Ideologia_ps_cod[test$Ideologia_ps_cod!=99],test_Ideologia_ps_cod)
$overall[1])
M2[NA_Ideologia_ps_cod,"Ideologia_ps_cod"] <- pred2_Ideologia_ps_cod[pos]
M2[NA_Ideologia_ps_cod_impu,"Ideologia_ps_cod"] <- impu_Ideologia_ps_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_Ideologia_ps_cod <- train(Ideologia_ps_cod ~ .,
method = "rf",
data = train2_Ideologia_ps_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_Ideologia_ps_cod
varImp(rfFit3_Ideologia_ps_cod)
plot(varImp(rfFit3_Ideologia_ps_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_Ideologia_ps_cod$finalModel
pred3_Ideologia_ps_cod <- predict(rfFit3_Ideologia_ps_cod, test)
impu_Ideologia_ps_cod3 <- predict(rfFit3_Ideologia_ps_cod, impu_Ideologia_ps_cod)
table(pred3_Ideologia_ps_cod)
confusionMatrix(pred3_Ideologia_ps_cod[test$Ideologia_ps_cod!=99],test_Ideologia_ps_cod)
CM3_Ideologia_ps_cod <-
confusionMatrix(pred3_Ideologia_ps_cod[test$Ideologia_ps_cod!=99],test_Ideologia_ps_cod)$table
AC3_Ideologia_ps_cod <-
as.vector(confusionMatrix(pred3_Ideologia_ps_cod[test$Ideologia_ps_cod!=99],test_Ideologia_ps_cod)
$overall[1])
M3[NA_Ideologia_ps_cod,"Ideologia_ps_cod"] <- pred3_Ideologia_ps_cod[pos]
M3[NA_Ideologia_ps_cod_impu,"Ideologia_ps_cod"] <- impu_Ideologia_ps_cod3
Matriz confusión
CMT_Ideologia_ps_cod <- (CM1_Ideologia_ps_cod)
for(i in 1:nrow(CMT_Ideologia_ps_cod))
{
for(j in 1:ncol(CMT_Ideologia_ps_cod))
{
if((CM1_Ideologia_ps_cod[i,j]+CM2_Ideologia_ps_cod[i,j]+CM3_Ideologia_ps_cod[i,j])%%3 != 0)
{
CMT_Ideologia_ps_cod[i,j] =
as.character(round((CM1_Ideologia_ps_cod[i,j]+CM2_Ideologia_ps_cod[i,j]+CM3_Ideologia_ps_cod[i,
j])/3,2))
}else{
CMT_Ideologia_ps_cod[i,j] =
as.character(as.integer((CM1_Ideologia_ps_cod[i,j]+CM2_Ideologia_ps_cod[i,j]+CM3_Ideologia_ps_c
od[i,j])/3))
}
}
}
CMT_Ideologia_ps_cod = cbind(c(1:11), CMT_Ideologia_ps_cod)
kable(CMT_Ideologia_ps_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Clasificación ideológica Pedro Sánchez </em></center>", escape =
FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10", "11"), position =
"center", row_label_position = "c", font_size = 15)%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 10))%>%
column_spec(1:12, width = "1.2cm")
ACT_Ideologia_ps_cod <- c(AC1_Ideologia_ps_cod,AC2_Ideologia_ps_cod,AC3_Ideologia_ps_cod)
ACM_Ideologia_ps_cod <- mean(c(ACT_Ideologia_ps_cod))
ACSD_Ideologia_ps_cod <- sqrt(var(ACT_Ideologia_ps_cod)/3)
-
Imputación de la clasificación ideológica de Santiago Abascal
# M = 1
train2_Ideologia_sa_cod <- conjunto[conjunto[,"Ideologia_sa_cod"]!="99",]
impu_Ideologia_sa_cod <- conjunto[conjunto[,"Ideologia_sa_cod"]=="99",]
dim(train2_Ideologia_sa_cod)[1]
dim(impu_Ideologia_sa_cod)[1]
table(train2_Ideologia_sa_cod$Ideologia_sa_cod)
train2_Ideologia_sa_cod[,"Ideologia_sa_cod"] <-
droplevels(train2_Ideologia_sa_cod[,"Ideologia_sa_cod"])
table(train2_Ideologia_sa_cod$Ideologia_sa_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_Ideologia_sa_cod <- train(Ideologia_sa_cod ~ .,
method = "rf",
data = train2_Ideologia_sa_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_Ideologia_sa_cod
varImp(rfFit_Ideologia_sa_cod)
plot(varImp(rfFit_Ideologia_sa_cod), top = 10, col = "#74A9CF", main = "M1")
rfFit_Ideologia_sa_cod$finalModel
pred_Ideologia_sa_cod <- predict(rfFit_Ideologia_sa_cod, test)
impu_Ideologia_sa_cod1 <- predict(rfFit_Ideologia_sa_cod, impu_Ideologia_sa_cod)
table(pred_Ideologia_sa_cod)
test_Ideologia_sa_cod <- test$Ideologia_sa_cod[test$Ideologia_sa_cod!=99]
test_Ideologia_sa_cod <- fct_drop(test_Ideologia_sa_cod, only = "99")
confusionMatrix(pred_Ideologia_sa_cod[test$Ideologia_sa_cod!=99],test_Ideologia_sa_cod)
CM1_Ideologia_sa_cod <-
confusionMatrix(pred_Ideologia_sa_cod[test$Ideologia_sa_cod!=99],test_Ideologia_sa_cod)$table
AC1_Ideologia_sa_cod <-
as.vector(confusionMatrix(pred_Ideologia_sa_cod[test$Ideologia_sa_cod!=99],test_Ideologia_sa_cod)$
overall[1])
NA_Ideologia_sa_cod <- as.numeric(rownames(test[test[,"Ideologia_sa_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Ideologia_sa_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_Ideologia_sa_cod_impu <- as.numeric(rownames(impu_Ideologia_sa_cod))
M1[NA_Ideologia_sa_cod,"Ideologia_sa_cod"] <- pred_Ideologia_sa_cod[pos]
M1[NA_Ideologia_sa_cod_impu,"Ideologia_sa_cod"] <- impu_Ideologia_sa_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_Ideologia_sa_cod <- train(Ideologia_sa_cod ~ .,
method = "rf",
data = train2_Ideologia_sa_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_Ideologia_sa_cod
varImp(rfFit2_Ideologia_sa_cod)
plot(varImp(rfFit2_Ideologia_sa_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_Ideologia_sa_cod$finalModel
pred2_Ideologia_sa_cod <- predict(rfFit2_Ideologia_sa_cod, test)
impu_Ideologia_sa_cod2 <- predict(rfFit2_Ideologia_sa_cod, impu_Ideologia_sa_cod)
table(pred2_Ideologia_sa_cod)
confusionMatrix(pred2_Ideologia_sa_cod[test$Ideologia_sa_cod!=99],test_Ideologia_sa_cod)
CM2_Ideologia_sa_cod <-
confusionMatrix(pred2_Ideologia_sa_cod[test$Ideologia_sa_cod!=99],test_Ideologia_sa_cod)$table
AC2_Ideologia_sa_cod <-
as.vector(confusionMatrix(pred2_Ideologia_sa_cod[test$Ideologia_sa_cod!=99],test_Ideologia_sa_cod)
$overall[1])
M2[NA_Ideologia_sa_cod,"Ideologia_sa_cod"] <- pred2_Ideologia_sa_cod[pos]
M2[NA_Ideologia_sa_cod_impu,"Ideologia_sa_cod"] <- impu_Ideologia_sa_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_Ideologia_sa_cod <- train(Ideologia_sa_cod ~ .,
method = "rf",
data = train2_Ideologia_sa_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_Ideologia_sa_cod
varImp(rfFit3_Ideologia_sa_cod)
plot(varImp(rfFit3_Ideologia_sa_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_Ideologia_sa_cod$finalModel
pred3_Ideologia_sa_cod <- predict(rfFit3_Ideologia_sa_cod, test)
impu_Ideologia_sa_cod3 <- predict(rfFit3_Ideologia_sa_cod, impu_Ideologia_sa_cod)
table(pred3_Ideologia_sa_cod)
confusionMatrix(pred3_Ideologia_sa_cod[test$Ideologia_sa_cod!=99],test_Ideologia_sa_cod)
CM3_Ideologia_sa_cod <-
confusionMatrix(pred3_Ideologia_sa_cod[test$Ideologia_sa_cod!=99],test_Ideologia_sa_cod)$table
AC3_Ideologia_sa_cod <-
as.vector(confusionMatrix(pred3_Ideologia_sa_cod[test$Ideologia_sa_cod!=99],test_Ideologia_sa_cod)
$overall[1])
M3[NA_Ideologia_sa_cod,"Ideologia_sa_cod"] <- pred3_Ideologia_sa_cod[pos]
M3[NA_Ideologia_sa_cod_impu,"Ideologia_sa_cod"] <- impu_Ideologia_sa_cod3
Matriz confusión
CMT_Ideologia_sa_cod <- (CM1_Ideologia_sa_cod)
for(i in 1:nrow(CMT_Ideologia_sa_cod))
{
for(j in 1:ncol(CMT_Ideologia_sa_cod))
{
if((CM1_Ideologia_sa_cod[i,j]+CM2_Ideologia_sa_cod[i,j]+CM3_Ideologia_sa_cod[i,j])%%3 != 0)
{
CMT_Ideologia_sa_cod[i,j] =
as.character(round((CM1_Ideologia_sa_cod[i,j]+CM2_Ideologia_sa_cod[i,j]+CM3_Ideologia_sa_cod[i,
j])/3,2))
}else{
CMT_Ideologia_sa_cod[i,j] =
as.character(as.integer((CM1_Ideologia_sa_cod[i,j]+CM2_Ideologia_sa_cod[i,j]+CM3_Ideologia_sa_co
d[i,j])/3))
}
}
}
CMT_Ideologia_sa_cod = cbind(c(1:11), CMT_Ideologia_sa_cod)
kable(CMT_Ideologia_sa_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Clasificación ideológica Santaigo Abascal </em></center>", escape =
FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10", "11"), position =
"center", row_label_position = "c", font_size = 15)%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 10))%>%
column_spec(1:12, width = "1.2cm")
ACT_Ideologia_sa_cod <- c(AC1_Ideologia_sa_cod,AC2_Ideologia_sa_cod,AC3_Ideologia_sa_cod)
ACM_Ideologia_sa_cod <- mean(c(ACT_Ideologia_sa_cod))
ACSD_Ideologia_sa_cod <- sqrt(var(ACT_Ideologia_sa_cod)/3)
-
Imputación de la clasificación ideológica de Pablo Iglesias
# M = 1
train2_Ideologia_pi_cod <- conjunto[conjunto[,"Ideologia_pi_cod"]!="99",]
impu_Ideologia_pi_cod <- conjunto[conjunto[,"Ideologia_pi_cod"]=="99",]
dim(train2_Ideologia_pi_cod)[1]
dim(impu_Ideologia_pi_cod)[1]
table(train2_Ideologia_pi_cod$Ideologia_pi_cod)
train2_Ideologia_pi_cod[,"Ideologia_pi_cod"] <-
droplevels(train2_Ideologia_pi_cod[,"Ideologia_pi_cod"])
table(train2_Ideologia_pi_cod$Ideologia_pi_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_Ideologia_pi_cod <- train(Ideologia_pi_cod ~ .,
method = "rf",
data = train2_Ideologia_pi_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_Ideologia_pi_cod
varImp(rfFit_Ideologia_pi_cod)
plot(varImp(rfFit_Ideologia_pi_cod), top = 10, col = "#74A9CF", main = "M2")
rfFit_Ideologia_pi_cod$finalModel
pred_Ideologia_pi_cod <- predict(rfFit_Ideologia_pi_cod, test)
impu_Ideologia_pi_cod1 <- predict(rfFit_Ideologia_pi_cod, impu_Ideologia_pi_cod)
table(pred_Ideologia_pi_cod)
test_Ideologia_pi_cod <- test$Ideologia_pi_cod[test$Ideologia_pi_cod!=99]
test_Ideologia_pi_cod <- fct_drop(test_Ideologia_pi_cod, only = "99")
confusionMatrix(pred_Ideologia_pi_cod[test$Ideologia_pi_cod!=99],test_Ideologia_pi_cod)
CM1_Ideologia_pi_cod <-
confusionMatrix(pred_Ideologia_pi_cod[test$Ideologia_pi_cod!=99],test_Ideologia_pi_cod)$table
AC1_Ideologia_pi_cod <-
as.vector(confusionMatrix(pred_Ideologia_pi_cod[test$Ideologia_pi_cod!=99],test_Ideologia_pi_cod)$
overall[1])
NA_Ideologia_pi_cod <- as.numeric(rownames(test[test[,"Ideologia_pi_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Ideologia_pi_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_Ideologia_pi_cod_impu <- as.numeric(rownames(impu_Ideologia_pi_cod))
M1[NA_Ideologia_pi_cod,"Ideologia_pi_cod"] <- pred_Ideologia_pi_cod[pos]
M1[NA_Ideologia_pi_cod_impu,"Ideologia_pi_cod"] <- impu_Ideologia_pi_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_Ideologia_pi_cod <- train(Ideologia_pi_cod ~ .,
method = "rf",
data = train2_Ideologia_pi_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_Ideologia_pi_cod
varImp(rfFit2_Ideologia_pi_cod)
plot(varImp(rfFit2_Ideologia_pi_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_Ideologia_pi_cod$finalModel
pred2_Ideologia_pi_cod <- predict(rfFit2_Ideologia_pi_cod, test)
impu_Ideologia_pi_cod2 <- predict(rfFit2_Ideologia_pi_cod, impu_Ideologia_pi_cod)
table(pred2_Ideologia_pi_cod)
confusionMatrix(pred2_Ideologia_pi_cod[test$Ideologia_pi_cod!=99],test_Ideologia_pi_cod)
CM2_Ideologia_pi_cod <-
confusionMatrix(pred2_Ideologia_pi_cod[test$Ideologia_pi_cod!=99],test_Ideologia_pi_cod)$table
AC2_Ideologia_pi_cod <-
as.vector(confusionMatrix(pred2_Ideologia_pi_cod[test$Ideologia_pi_cod!=99],test_Ideologia_pi_cod)
$overall[1])
M2[NA_Ideologia_pi_cod,"Ideologia_pi_cod"] <- pred2_Ideologia_pi_cod[pos]
M2[NA_Ideologia_pi_cod_impu,"Ideologia_pi_cod"] <- impu_Ideologia_pi_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_Ideologia_pi_cod <- train(Ideologia_pi_cod ~ .,
method = "rf",
data = train2_Ideologia_pi_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_Ideologia_pi_cod
varImp(rfFit3_Ideologia_pi_cod)
plot(varImp(rfFit3_Ideologia_pi_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_Ideologia_pi_cod$finalModel
pred3_Ideologia_pi_cod <- predict(rfFit3_Ideologia_pi_cod, test)
impu_Ideologia_pi_cod3 <- predict(rfFit3_Ideologia_pi_cod, impu_Ideologia_pi_cod)
table(pred3_Ideologia_pi_cod)
confusionMatrix(pred3_Ideologia_pi_cod[test$Ideologia_pi_cod!=99],test_Ideologia_pi_cod)
CM3_Ideologia_pi_cod <-
confusionMatrix(pred3_Ideologia_pi_cod[test$Ideologia_pi_cod!=99],test_Ideologia_pi_cod)$table
AC3_Ideologia_pi_cod <-
as.vector(confusionMatrix(pred3_Ideologia_pi_cod[test$Ideologia_pi_cod!=99],test_Ideologia_pi_cod)
$overall[1])
M3[NA_Ideologia_pi_cod,"Ideologia_pi_cod"] <- pred3_Ideologia_pi_cod[pos]
M3[NA_Ideologia_pi_cod_impu,"Ideologia_pi_cod"] <- impu_Ideologia_pi_cod3
Matriz Confusión
CMT_Ideologia_pi_cod <- (CM1_Ideologia_pi_cod)
for(i in 1:nrow(CMT_Ideologia_pi_cod))
{
for(j in 1:ncol(CMT_Ideologia_pi_cod))
{
if((CM1_Ideologia_pi_cod[i,j]+CM2_Ideologia_pi_cod[i,j]+CM3_Ideologia_pi_cod[i,j])%%3 != 0)
{
CMT_Ideologia_pi_cod[i,j] =
as.character(round((CM1_Ideologia_pi_cod[i,j]+CM2_Ideologia_pi_cod[i,j]+CM3_Ideologia_pi_cod[i,j
])/3,2))
}else{
CMT_Ideologia_pi_cod[i,j] =
as.character(as.integer((CM1_Ideologia_pi_cod[i,j]+CM2_Ideologia_pi_cod[i,j]+CM3_Ideologia_pi_co
d[i,j])/3))
}
}
}
CMT_Ideologia_pi_cod = cbind(c(1:11), CMT_Ideologia_pi_cod)
kable(CMT_Ideologia_pi_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Clasificación ideológica Pablo Iglesias </em></center>", escape =
FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10", "11"), position =
"center", row_label_position = "c", font_size = 15)%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 10))%>%
column_spec(1:12, width = "1.2cm")
ACT_Ideologia_pi_cod <- c(AC1_Ideologia_pi_cod,AC2_Ideologia_pi_cod,AC3_Ideologia_pi_cod)
ACM_Ideologia_pi_cod <- mean(c(ACT_Ideologia_pi_cod))
ACSD_Ideologia_pi_cod <- sqrt(var(ACT_Ideologia_pi_cod)/3)
-
Imputación de la clasificación ideológica de Inés Arrimadas
# M = 1
train2_Ideologia_ia_cod <- conjunto[conjunto[,"Ideologia_ia_cod"]!="99",]
impu_Ideologia_ia_cod <- conjunto[conjunto[,"Ideologia_ia_cod"]=="99",]
dim(train2_Ideologia_ia_cod)[1]
dim(impu_Ideologia_ia_cod)[1]
table(train2_Ideologia_ia_cod$Ideologia_ia_cod)
train2_Ideologia_ia_cod[,"Ideologia_ia_cod"] <-
droplevels(train2_Ideologia_ia_cod[,"Ideologia_ia_cod"])
table(train2_Ideologia_ia_cod$Ideologia_ia_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_Ideologia_ia_cod <- train(Ideologia_ia_cod ~ .,
method = "rf",
data = train2_Ideologia_ia_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_Ideologia_ia_cod
varImp(rfFit_Ideologia_ia_cod)
plot(varImp(rfFit_Ideologia_ia_cod), top = 10, col = "#74A9CF", main = "M1")
rfFit_Ideologia_ia_cod$finalModel
pred_Ideologia_ia_cod <- predict(rfFit_Ideologia_ia_cod, test)
impu_Ideologia_ia_cod1 <- predict(rfFit_Ideologia_ia_cod, impu_Ideologia_ia_cod)
table(pred_Ideologia_ia_cod)
test_Ideologia_ia_cod <- test$Ideologia_ia_cod[test$Ideologia_ia_cod!=99]
test_Ideologia_ia_cod <- fct_drop(test_Ideologia_ia_cod, only = "99")
confusionMatrix(pred_Ideologia_ia_cod[test$Ideologia_ia_cod!=99],test_Ideologia_ia_cod)
CM1_Ideologia_ia_cod <-
confusionMatrix(pred_Ideologia_ia_cod[test$Ideologia_ia_cod!=99],test_Ideologia_ia_cod)$table
AC1_Ideologia_ia_cod <-
as.vector(confusionMatrix(pred_Ideologia_ia_cod[test$Ideologia_ia_cod!=99],test_Ideologia_ia_cod)$o
verall[1])
NA_Ideologia_ia_cod <- as.numeric(rownames(test[test[,"Ideologia_ia_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Ideologia_ia_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_Ideologia_ia_cod_impu <- as.numeric(rownames(impu_Ideologia_ia_cod))
M1[NA_Ideologia_ia_cod,"Ideologia_ia_cod"] <- pred_Ideologia_ia_cod[pos]
M1[NA_Ideologia_ia_cod_impu,"Ideologia_ia_cod"] <- impu_Ideologia_ia_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_Ideologia_ia_cod <- train(Ideologia_ia_cod ~ .,
method = "rf",
data = train2_Ideologia_ia_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_Ideologia_ia_cod
varImp(rfFit2_Ideologia_ia_cod)
plot(varImp(rfFit2_Ideologia_ia_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_Ideologia_ia_cod$finalModel
pred2_Ideologia_ia_cod <- predict(rfFit2_Ideologia_ia_cod, test)
impu_Ideologia_ia_cod2 <- predict(rfFit2_Ideologia_ia_cod, impu_Ideologia_ia_cod)
table(pred2_Ideologia_ia_cod)
confusionMatrix(pred2_Ideologia_ia_cod[test$Ideologia_ia_cod!=99],test_Ideologia_ia_cod)
CM2_Ideologia_ia_cod <-
confusionMatrix(pred2_Ideologia_ia_cod[test$Ideologia_ia_cod!=99],test_Ideologia_ia_cod)$table
AC2_Ideologia_ia_cod <-
as.vector(confusionMatrix(pred2_Ideologia_ia_cod[test$Ideologia_ia_cod!=99],test_Ideologia_ia_cod)$
overall[1])
M2[NA_Ideologia_ia_cod,"Ideologia_ia_cod"] <- pred2_Ideologia_ia_cod[pos]
M2[NA_Ideologia_ia_cod_impu,"Ideologia_ia_cod"] <- impu_Ideologia_ia_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_Ideologia_ia_cod <- train(Ideologia_ia_cod ~ .,
method = "rf",
data = train2_Ideologia_ia_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_Ideologia_ia_cod
varImp(rfFit3_Ideologia_ia_cod)
plot(varImp(rfFit3_Ideologia_ia_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_Ideologia_ia_cod$finalModel
pred3_Ideologia_ia_cod <- predict(rfFit3_Ideologia_ia_cod, test)
impu_Ideologia_ia_cod3 <- predict(rfFit3_Ideologia_ia_cod, impu_Ideologia_ia_cod)
table(pred3_Ideologia_ia_cod)
confusionMatrix(pred3_Ideologia_ia_cod[test$Ideologia_ia_cod!=99],test_Ideologia_ia_cod)
CM3_Ideologia_ia_cod <-
confusionMatrix(pred3_Ideologia_ia_cod[test$Ideologia_ia_cod!=99],test_Ideologia_ia_cod)$table
AC3_Ideologia_ia_cod <-
as.vector(confusionMatrix(pred3_Ideologia_ia_cod[test$Ideologia_ia_cod!=99],test_Ideologia_ia_cod)$
overall[1])
M3[NA_Ideologia_ia_cod,"Ideologia_ia_cod"] <- pred3_Ideologia_ia_cod[pos]
M3[NA_Ideologia_ia_cod_impu,"Ideologia_ia_cod"] <- impu_Ideologia_ia_cod3
Matriz Confusión
CMT_Ideologia_ia_cod <- (CM1_Ideologia_ia_cod)
for(i in 1:nrow(CMT_Ideologia_ia_cod))
{
for(j in 1:ncol(CMT_Ideologia_ia_cod))
{
if((CM1_Ideologia_ia_cod[i,j]+CM2_Ideologia_ia_cod[i,j]+CM3_Ideologia_ia_cod[i,j])%%3 != 0)
{
CMT_Ideologia_ia_cod[i,j] =
as.character(round((CM1_Ideologia_ia_cod[i,j]+CM2_Ideologia_ia_cod[i,j]+CM3_Ideologia_ia_cod[i,j
])/3,2))
}else{
CMT_Ideologia_ia_cod[i,j] =
as.character(as.integer((CM1_Ideologia_ia_cod[i,j]+CM2_Ideologia_ia_cod[i,j]+CM3_Ideologia_ia_co
d[i,j])/3))
}
}
}
CMT_Ideologia_ia_cod = cbind(c(1:11), CMT_Ideologia_ia_cod)
kable(CMT_Ideologia_ia_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Clasificación ideológica Inés Arrimadas </em></center>", escape =
FALSE, col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10", "11"), position =
"center", row_label_position = "c", font_size = 15)%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 10))%>%
column_spec(1:12, width = "1.2cm")
ACT_Ideologia_ia_cod <- c(AC1_Ideologia_ia_cod,AC2_Ideologia_ia_cod,AC3_Ideologia_ia_cod)
ACM_Ideologia_ia_cod <- mean(c(ACT_Ideologia_ia_cod))
ACSD_Ideologia_ia_cod <- sqrt(var(ACT_Ideologia_ia_cod)/3)
-
Imputación de la intención de voto
# M = 1
train2_Voto_cod <- conjunto[conjunto[,"Voto_cod"]!="99",]
impu_Voto_cod <- conjunto[conjunto[,"Voto_cod"]=="99",]
dim(train2_Voto_cod)[1]
dim(impu_Voto_cod)[1]
table(train2_Voto_cod$Voto_cod)
train2_Voto_cod[,"Voto_cod"] <- droplevels(train2_Voto_cod[,"Voto_cod"])
table(train2_Voto_cod$Voto_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_Voto_cod <- train(Voto_cod ~ .,
method = "rf",
data = train2_Voto_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_Voto_cod
varImp(rfFit_Voto_cod)
plot(varImp(rfFit_Voto_cod), top = 10, col = "#74A9CF", main = "M1")
rfFit_Voto_cod$finalModel
pred_Voto_cod <- predict(rfFit_Voto_cod, test)
impu_Voto_cod1 <- predict(rfFit_Voto_cod, impu_Voto_cod)
table(pred_Voto_cod)
test_Voto_cod <- test$Voto_cod[test$Voto_cod!=99]
test_Voto_cod <- droplevels(test_Voto_cod)
confusionMatrix(pred_Voto_cod[test$Voto_cod!=99],test_Voto_cod)
CM1_Voto_cod <- confusionMatrix(pred_Voto_cod[test$Voto_cod!=99],test_Voto_cod)$table
AC1_Voto_cod <-
as.vector(confusionMatrix(pred_Voto_cod[test$Voto_cod!=99],test_Voto_cod)$overall[1])
NA_Voto_cod <- as.numeric(rownames(test[test[,"Voto_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Voto_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_Voto_cod_impu <- as.numeric(rownames(impu_Voto_cod))
M1[NA_Voto_cod,"Voto_cod"] <- pred_Voto_cod[pos]
M1[NA_Voto_cod_impu,"Voto_cod"] <- impu_Voto_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_Voto_cod <- train(Voto_cod ~ .,
method = "rf",
data = train2_Voto_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_Voto_cod
varImp(rfFit2_Voto_cod)
plot(varImp(rfFit2_Voto_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_Voto_cod$finalModel
pred2_Voto_cod <- predict(rfFit2_Voto_cod, test)
impu_Voto_cod2 <- predict(rfFit2_Voto_cod, impu_Voto_cod)
table(pred2_Voto_cod)
confusionMatrix(pred2_Voto_cod[test$Voto_cod!=99],test_Voto_cod)
CM2_Voto_cod <- confusionMatrix(pred2_Voto_cod[test$Voto_cod!=99],test_Voto_cod)$table
AC2_Voto_cod <-
as.vector(confusionMatrix(pred2_Voto_cod[test$Voto_cod!=99],test_Voto_cod)$overall[1])
M2[NA_Voto_cod,"Voto_cod"] <- pred2_Voto_cod[pos]
M2[NA_Voto_cod_impu,"Voto_cod"] <- impu_Voto_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_Voto_cod <- train(Voto_cod ~ .,
method = "rf",
data = train2_Voto_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit3_Voto_cod
plot(varImp(rfFit3_Voto_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_Voto_cod$finalModel
pred3_Voto_cod <- predict(rfFit3_Voto_cod, test)
impu_Voto_cod3 <- predict(rfFit3_Voto_cod, impu_Voto_cod)
table(pred3_Voto_cod)
confusionMatrix(pred3_Voto_cod[test$Voto_cod!=99],test_Voto_cod)
CM3_Voto_cod <- confusionMatrix(pred3_Voto_cod[test$Voto_cod!=99],test_Voto_cod)$table
AC3_Voto_cod <-
as.vector(confusionMatrix(pred3_Voto_cod[test$Voto_cod!=99],test_Voto_cod)$overall[1])
M3[NA_Voto_cod,"Voto_cod"] <- pred3_Voto_cod[pos]
M3[NA_Voto_cod_impu,"Voto_cod"] <- impu_Voto_cod3
Matriz Confusion
CMT_Voto_cod <- (CM1_Voto_cod)
for(i in 1:nrow(CMT_Voto_cod))
{
for(j in 1:ncol(CMT_Voto_cod))
{
if((CM1_Voto_cod[i,j]+CM2_Voto_cod[i,j]+CM3_Voto_cod[i,j])%%3 != 0)
{
CMT_Voto_cod[i,j] =
as.character(round((CM1_Voto_cod[i,j]+CM2_Voto_cod[i,j]+CM3_Voto_cod[i,j])/3,2))
}else{
CMT_Voto_cod[i,j] =
as.character(as.integer((CM1_Voto_cod[i,j]+CM2_Voto_cod[i,j]+CM3_Voto_cod[i,j])/3))
}
}
}
CMT_Voto_cod = cbind(c(1:10), CMT_Voto_cod)
CM1_Voto_cod = cbind(c(1:10), CM1_Voto_cod)
CM2_Voto_cod = cbind(c(1:10), CM2_Voto_cod)
CM3_Voto_cod = cbind(c(1:10), CM3_Voto_cod)
kable(CMT_Voto_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em>
Matriz de confusión Intención de Voto </em></center>", escape = FALSE, col.names = c("Prediction",
"1","2","3", "4", "5", "6", "7", "8", "9", "10"), table.attr = "style='width:30%;'")%>%
kable_styling(full_width = FALSE, position = "center", row_label_position = "c", font_size = 15,
latex_options="scale_down")%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%
column_spec(1:11, width = "1.2cm")%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión, es
posible que no se obtenga un número entero"), threeparttable=T)
kable(CM1_Voto_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em>
Matriz de confusión Intención de Voto 1ª imputación </em></center>", escape = FALSE, col.names =
c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"), position = "center")%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%
column_spec(1:11, width = "1.2cm")
kable(CM2_Voto_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em>
Matriz de confusión Intención de Voto 2ª imputación </em></center>", escape = FALSE, col.names =
c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"),position = "center")%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%
column_spec(1:11, width = "1.2cm")
kable(CM3_Voto_cod, position = "center", booktabs = TRUE, align = "cccccc", caption = "<left><em>
Matriz de confusión Intención de Voto 3ª imputación </em></center>", escape = FALSE, col.names =
c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10"), position = "center")%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 9))%>%
column_spec(1:11, width = "1.2cm")
ACT_Voto_cod <- c(AC1_Voto_cod,AC2_Voto_cod,AC3_Voto_cod)
ACM_Voto_cod <- mean(c(ACT_Voto_cod))
ACSD_Voto_cod <- sqrt(var(ACT_Voto_cod)/3)
-
Imputación de la intención de voto alternativo
# M = 1
train2_Voto_alternativo_cod <- conjunto[conjunto[,"Voto_alternativo_cod"]!="99",]
impu_Voto_alternativo_cod <- conjunto[conjunto[,"Voto_alternativo_cod"]=="99",]
dim(train2_Voto_alternativo_cod)[1]
dim(impu_Voto_alternativo_cod)[1]
table(train2_Voto_alternativo_cod$Voto_alternativo_cod)
train2_Voto_alternativo_cod[,"Voto_alternativo_cod"] <-
droplevels(train2_Voto_alternativo_cod[,"Voto_alternativo_cod"])
table(train2_Voto_alternativo_cod$Voto_alternativo_cod)
ctrl <- trainControl(method = "cv", number = 5)
# RF train with CV to optimize number of variables
#library(doMC)
#registerDoMC(cores = 2)
set.seed(0, sample.kind = "Rounding")
rfFit_Voto_alternativo_cod <- train(Voto_alternativo_cod ~ .,
method = "rf",
data = train2_Voto_alternativo_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit_Voto_alternativo_cod
varImp(rfFit_Voto_alternativo_cod)
plot(varImp(rfFit_Voto_alternativo_cod), top = 10, col = "#74A9CF", main = "M1")
rfFit_Voto_alternativo_cod$finalModel
pred_Voto_alternativo_cod <- predict(rfFit_Voto_alternativo_cod, test)
impu_Voto_alternativo_cod1 <- predict(rfFit_Voto_alternativo_cod, impu_Voto_alternativo_cod)
table(pred_Voto_alternativo_cod)
test_Voto_alternativo_cod <- test$Voto_alternativo_cod[test$Voto_alternativo_cod!=99]
test_Voto_alternativo_cod <- droplevels(test_Voto_alternativo_cod)
confusionMatrix(pred_Voto_alternativo_cod[test$Voto_alternativo_cod!=99],test_Voto_alternativo_cod)
CM1_Voto_alternativo_cod <-
confusionMatrix(pred_Voto_alternativo_cod[test$Voto_alternativo_cod!=99],test_Voto_alternativo_cod
)$table
AC1_Voto_alternativo_cod <-
as.vector(confusionMatrix(pred_Voto_alternativo_cod[test$Voto_alternativo_cod!=99],test_Voto_altern
ativo_cod)$overall[1])
NA_Voto_alternativo_cod <- as.numeric(rownames(test[test[,"Voto_alternativo_cod"]=='99',]))
pos = c()
for(i in 1:nrow(test))
{
if(test[i,"Voto_alternativo_cod"]=="99")
{
pos=c(pos,i)
}
}
NA_Voto_alternativo_cod_impu <- as.numeric(rownames(impu_Voto_alternativo_cod))
M1[NA_Voto_alternativo_cod,"Voto_alternativo_cod"] <- pred_Voto_alternativo_cod[pos]
M1[NA_Voto_alternativo_cod_impu,"Voto_alternativo_cod"] <- impu_Voto_alternativo_cod1
M = 2
set.seed(1, sample.kind = "Rounding")
rfFit2_Voto_alternativo_cod <- train(Voto_alternativo_cod ~ .,
method = "rf",
data = train2_Voto_alternativo_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
rfFit2_Voto_alternativo_cod
varImp(rfFit2_Voto_alternativo_cod)
plot(varImp(rfFit2_Voto_alternativo_cod), top = 10, col = "#0570B0", main = "M2")
rfFit2_Voto_alternativo_cod$finalModel
pred2_Voto_alternativo_cod <- predict(rfFit2_Voto_alternativo_cod, test)
impu_Voto_alternativo_cod2 <- predict(rfFit2_Voto_alternativo_cod, impu_Voto_alternativo_cod)
table(pred2_Voto_alternativo_cod)
confusionMatrix(pred2_Voto_alternativo_cod[test$Voto_alternativo_cod!=99],test_Voto_alternativo_co
d)
CM2_Voto_alternativo_cod <-
confusionMatrix(pred2_Voto_alternativo_cod[test$Voto_alternativo_cod!=99],test_Voto_alternativo_co
d)$table
AC2_Voto_alternativo_cod <-
as.vector(confusionMatrix(pred2_Voto_alternativo_cod[test$Voto_alternativo_cod!=99],test_Voto_alter
nativo_cod)$overall[1])
M2[NA_Voto_alternativo_cod,"Voto_alternativo_cod"] <- pred2_Voto_alternativo_cod[pos]
M2[NA_Voto_alternativo_cod_impu,"Voto_alternativo_cod"] <- impu_Voto_alternativo_cod2
M = 3
set.seed(2, sample.kind = "Rounding")
rfFit3_Voto_alternativo_cod <- train(Voto_alternativo_cod ~ .,
method = "rf",
data = train2_Voto_alternativo_cod,
preProcess = c("center", "scale"),
tuneGrid = expand.grid(mtry = c(2:10)),
trControl = ctrl)
print(rfFit3_Voto_alternativo_cod)
varImp(rfFit3_Voto_alternativo_cod)
plot(varImp(rfFit3_Voto_alternativo_cod), top = 10, col = "#41AE76", main = "M3")
rfFit3_Voto_alternativo_cod$finalModel
pred3_Voto_alternativo_cod <- predict(rfFit3_Voto_alternativo_cod, test)
impu_Voto_alternativo_cod3 <- predict(rfFit3_Voto_alternativo_cod, impu_Voto_alternativo_cod)
table(pred3_Voto_alternativo_cod)
confusionMatrix(pred3_Voto_alternativo_cod[test$Voto_alternativo_cod!=99],test_Voto_alternativo_co
d)
CM3_Voto_alternativo_cod <-
confusionMatrix(pred3_Voto_alternativo_cod[test$Voto_alternativo_cod!=99],test_Voto_alternativo_co
d)$table
AC3_Voto_alternativo_cod <-
as.vector(confusionMatrix(pred3_Voto_alternativo_cod[test$Voto_alternativo_cod!=99],test_Voto_alter
nativo_cod)$overall[1])
M3[NA_Voto_alternativo_cod,"Voto_alternativo_cod"] <- pred3_Voto_alternativo_cod[pos]
M3[NA_Voto_alternativo_cod_impu,"Voto_alternativo_cod"] <- impu_Voto_alternativo_cod3
Matriz Confusión
CMT_Voto_alternativo_cod <- (CM1_Voto_alternativo_cod)
for(i in 1:nrow(CMT_Voto_alternativo_cod))
{
for(j in 1:ncol(CMT_Voto_alternativo_cod))
{
if((CM1_Voto_alternativo_cod[i,j]+CM2_Voto_alternativo_cod[i,j]+CM3_Voto_alternativo_cod[i,j])%
%3 != 0)
{
CMT_Voto_alternativo_cod[i,j] =
as.character(round((CM1_Voto_alternativo_cod[i,j]+CM2_Voto_alternativo_cod[i,j]+CM3_Voto_altern
ativo_cod[i,j])/3,2))
}else{
CMT_Voto_alternativo_cod[i,j] =
as.character(as.integer((CM1_Voto_alternativo_cod[i,j]+CM2_Voto_alternativo_cod[i,j]+CM3_Voto_al
ternativo_cod[i,j])/3))
}
}
}
CMT_Voto_alternativo_cod = cbind(c(1:11), CMT_Voto_alternativo_cod)
kable(CMT_Voto_alternativo_cod, position = "center", booktabs = TRUE, align = "cccccc", caption =
"<left><em> Matriz de confusión Intención de Voto alternativo </em></center>", escape = FALSE,
col.names = c("Prediction", "1","2","3", "4", "5", "6", "7", "8", "9", "10", "11"))%>%
kableExtra::footnote(symbol = c("Al tomar la media de los elementos de las matrices de confusión,
es posible que no se obtenga un número entero"), threeparttable=T)%>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
add_header_above(c(" " = 1, "Reference" = 1, " " = 10))%>%
column_spec(1:12, width = "1.2cm")
ACT_Voto_alternativo_cod <-
c(AC1_Voto_alternativo_cod,AC2_Voto_alternativo_cod,AC3_Voto_alternativo_cod)
ACM_Voto_alternativo_cod <- mean(c(ACT_Voto_alternativo_cod))
ACSD_Voto_alternativo_cod <- sqrt(var(ACT_Voto_alternativo_cod)/3)
-
Precisión de los modelos
accuracies1 <- data.frame(c(round(ACM_Situ,3), round(ACSD_Situ,3), round(ACM_Estudios,3),
round(ACSD_Estudios,3), round(ACM_civil_cod,3), round(ACSD_civil_cod,3),
round(ACM_Participacion_cod,3), round(ACSD_Participacion_cod,3), round(ACM_Religion_cod,3),
round(ACSD_Religion_cod,3), round(ACM_Situ_eco_cod,3), round(ACSD_Situ_eco_cod,3),
round(ACM_Conf_presi_cod,3), round(ACSD_Conf_presi_cod,3), round(ACM_clase_cod,3),
round(ACSD_clase_cod,3), round(ACM_Conf_opo_cod,3), round(ACSD_Conf_opo_cod,3),
round(ACM_Valoracion_ps_cod,3), round(ACSD_Valoracion_ps_cod,3),
round(ACM_Valoracion_pi_cod,3), round(ACSD_Valoracion_pi_cod,3), round(ACM_Simpatia_cod,3),
round(ACSD_Simpatia_cod,3), round(ACM_Valoracion_pc_cod,3),
round(ACSD_Valoracion_pc_cod,3)))
for(i in 1:nrow(accuracies1))
{
if(i%%2 == 0)
{
accuracies1[i,1] = paste0("(",accuracies1[i,1],")")
}
}
accuracies2 <- data.frame(c(round(ACM_Valoracion_sa_cod,3), round(ACSD_Valoracion_sa_cod,3),
round(ACM_Valoracion_ia_cod,3), round(ACSD_Valoracion_ia_cod,3), round(ACM_Cercania_cod,3),
round(ACSD_Cercania_cod,3), round(ACM_Pref_presi_cod,3), round(ACSD_Pref_presi_cod,3),
round(ACM_Ideologia_cod,3), round(ACSD_Ideologia_cod,3), round(ACM_Ideologia_pc_cod,3),
round(ACSD_Ideologia_pc_cod,3), round(ACM_Recuerdo_cod,3), round(ACSD_Recuerdo_cod,3),
round(ACM_Ideologia_ps_cod,3), round(ACSD_Ideologia_ps_cod,3),
round(ACM_Ideologia_sa_cod,3), round(ACSD_Ideologia_sa_cod,3),
round(ACM_Ideologia_pi_cod,3), round(ACSD_Ideologia_pi_cod,3),
round(ACM_Ideologia_ia_cod,3), round(ACSD_Ideologia_ia_cod,3), round(ACM_Voto_cod,3),
round(ACSD_Voto_cod,3), round(ACM_Voto_alternativo_cod,3),
round(ACSD_Voto_alternativo_cod,3)))
for(i in 1:nrow(accuracies2))
{
if(i%%2 == 0)
{
accuracies2[i,1] = paste0("(",accuracies2[i,1],")")
}
}
estimaciones_accuracies <-data.frame(C1 = c(rep("Situación laboral",2), rep("Nivel de Estudios",2),
rep("Estado civil",2), rep("Participación anteriores elecciones",2), rep("Religión",2), rep("Valoración
Situación económica",2), rep("Confianza en el actual presidente",2), rep("Clase social", 2),
rep("Confianza en el presidente de la oposición",2), rep("Valoración Pedro Sánchez",2), rep("Valoración
Pablo Iglesias",2), rep("Simpatía partidista",2), rep("Valoración Pablo Casado",2)), C2 =
accuracies1[,1], C3 = c(rep("Valoración Santiago Abascal",2), rep("Valoración Inés Arrimadas",2),
rep("Cercanía partidista",2), rep("Preferencia presidente del Gobierno",2), rep("Ideología",2),
rep("Ideología Pablo Casado",2), rep("Recuerdo de voto",2), rep("Ideología Pedro Sánchez", 2),
rep("Ideología Santiago Abascal",2), rep("Ideologia Pablo Iglesias",2), rep("Ideología Inés
Arrimadas",2), rep("Intención de voto",2), rep("Voto alternativo",2)), C4 = accuracies2[,1])
colnames(estimaciones_accuracies)<-NULL
kable(estimaciones_accuracies, position = "center", booktabs = TRUE, align = "cccc", caption =
"<left><em> Precisión de los modelos </em></center>", escape = FALSE, position = "center",
row_label_position = "c", font_size = 15) %>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
column_spec(c(1,3), bold = T) %>%
collapse_rows(columns = 1:4, valign = "middle")
-
Árbol de decisión para la intención de voto
library(rpart.plot)
library(visNetwork)
library(sparkline)
library(maptree)
library(RColorBrewer)
rpart_Voto_cod <- rpart(Voto_cod ~ ., data = train2_Voto_cod, control = rpart.control(minsplit = 10))
my.palette <- brewer.pal(name = "BuGn", n =9)
par(family = "serif")
rpart.plot(rpart_Voto_cod, cex = 0.6, extra = 104, fallen.leaves = FALSE, varlen = 0, type = 0, box.col =
my.palette)
rpart_Voto_cod <- rpart(Voto_cod ~ ., data = train2_Voto_cod, control = rpart.control(minsplit = 20))
my.palette <- brewer.pal(name = "PuBu", n =9)
par(family = "serif")
rpart.plot(rpart_Voto_cod, cex = 0.6, extra = 104, fallen.leaves = FALSE, varlen = 0, type = 0, box.col =
my.palette)
-
Árbol de decisión para la preferencia como presidente del gobierno
rpart_Pref_presi_cod <- rpart(Pref_presi_cod ~ ., data = train2_Pref_presi_cod, control =
rpart.control(minsplit = 50))
my.palette <- brewer.pal(name = "Greens", n =9)
par(family = "serif")
rpart.plot(rpart_Pref_presi_cod, cex = 0.6, extra = 104, fallen.leaves = FALSE, varlen = 0, type = 0,
box.col = my.palette, font = 1)
-
Árbol de decisión para la confianza como presidente del gobierno
rpart_Conf_presi_cod <- rpart(Conf_presi_cod ~ ., data = train2_Conf_presi_cod, control =
rpart.control(minsplit = 9) )
my.palette <- brewer.pal(name = "BuGn", n =9)
par(family = "serif")
rpart.plot(rpart_Conf_presi_cod, cex = 0.6, extra = 104, fallen.leaves = FALSE, varlen = 0, type = 0,
box.col = my.palette)
-
Estimación de la intención de voto
#PP
table(M1$Voto_cod)
m = 3
(prop_PP_M1 <- sum((M1$Voto_cod == "1")*(cis$PESO))/(3817 - sum(M1
$Voto_cod == "10")))
(prop_PP_M2 <- sum((M2$Voto_cod == "1")*(cis$PESO))/(3817 - sum(M2
$Voto_cod == "10")))
(prop_PP_M3 <- sum((M3$Voto_cod == "1")*(cis$PESO))/(3817 - sum(M3
$Voto_cod == "10")))
(media_PP <- round(sum(prop_PP_M1,prop_PP_M2,prop_PP_M3)/m,3))
(W_PP_M1 <- (prop_PP_M1*(1-prop_PP_M1))/(3817 - sum(M1
$Voto_cod == "10")))
(W_PP_M2 <- (prop_PP_M2*(1-prop_PP_M2))/(3817 - sum(M2$Voto_cod == "10")))
(W_PP_M3 <- (prop_PP_M3*(1-prop_PP_M3))/(3817 - sum(M3$Voto_cod == "10")))
(W_PP <- sum(W_PP_M1,W_PP_M2, W_PP_M3)/m)
(B_PP = sum((prop_PP_M1-media_PP)^2,(prop_PP_M2-media_PP)^2, (prop_PP_M3-
media_PP)^2)/(m-1))
(SE_PP = round(sqrt(W_PP+B_PP+(B_PP/m)),3))
#PSOE
(prop_PSOE_M1 <- sum((M1$Voto_cod == "2")*(cis$PESO))/(3817 - sum(M1
$Voto_cod == "10")))
(prop_PSOE_M2 <- sum((M2$Voto_cod == "2")*(cis$PESO))/(3817 - sum(M2
$Voto_cod == "10")))
(prop_PSOE_M3 <- sum((M3$Voto_cod == "2")*(cis$PESO))/(3817 - sum(M3
$Voto_cod == "10")))
(media_PSOE <- round(sum(prop_PSOE_M1,prop_PSOE_M2,prop_PSOE_M3)/m,4))
(W_PSOE_M1 <- (prop_PSOE_M1*(1-prop_PSOE_M1))/(3817 - sum(M1$Voto_cod == "10")))
(W_PSOE_M2 <- (prop_PSOE_M2*(1-prop_PSOE_M2))/(3817 - sum(M2$Voto_cod == "10")))
(W_PSOE_M3 <- (prop_PSOE_M3*(1-prop_PSOE_M3))/(3817 - sum(M3$Voto_cod == "10")))
(W_PSOE <- sum(W_PSOE_M1,W_PSOE_M2, W_PSOE_M3)/m)
(B_PSOE = sum((prop_PSOE_M1-media_PSOE)^2,(prop_PSOE_M2-media_PSOE)^2,
(prop_PSOE_M3-media_PSOE)^2)/(m-1))
(SE_PSOE = round(sqrt(W_PSOE+B_PSOE+(B_PSOE/m)),3))
#PODEMOS
(prop_PODEMOS_M1 <- sum((M1$Voto_cod == "3")*(cis$PESO))/(3817 - sum(M1
$Voto_cod ==
"10")))
(prop_PODEMOS_M2 <- sum((M2$Voto_cod == "3")*(cis$PESO))/(3817 - sum(M2
$Voto_cod ==
"10")))
(prop_PODEMOS_M3 <- sum((M3$Voto_cod == "3")*(cis$PESO))/(3817 - sum(M3
$Voto_cod ==
"10")))
(media_PODEMOS <-
round(sum(prop_PODEMOS_M1,prop_PODEMOS_M2,prop_PODEMOS_M3)/m,3))
(W_PODEMOS_M1 <- (prop_PODEMOS_M1*(1-prop_PODEMOS_M1))/(3817 - sum(M1$Voto_cod
==
"10")))
(W_PODEMOS_M2 <- (prop_PODEMOS_M2*(1-prop_PODEMOS_M2))/(3817 - sum(M2$Voto_cod
==
"10")))
(W_PODEMOS_M3 <- (prop_PODEMOS_M3*(1-prop_PODEMOS_M3))/(3817 - sum(M3$Voto_cod
==
"10")))
(W_PODEMOS <- sum(W_PODEMOS_M1,W_PODEMOS_M2, W_PODEMOS_M3)/m)
(B_PODEMOS = sum((prop_PODEMOS_M1-media_PODEMOS)^2,(prop_PODEMOS_M2-
media_PODEMOS)^2, (prop_PODEMOS_M3-media_PODEMOS)^2)/(m-1))
(SE_PODEMOS = round(sqrt(W_PODEMOS+B_PODEMOS+(B_PODEMOS/m)),3))
# CIUDADANOS
(prop_CS_M1 <- sum((M1$Voto_cod == "4")*(cis$PESO))/(3817 - sum(M1
$Voto_cod == "10")))
(prop_CS_M2 <- sum((M2$Voto_cod == "4")*(cis$PESO))/(3817 - sum(M2
$Voto_cod == "10")))
(prop_CS_M3 <- sum((M3$Voto_cod == "4")*(cis$PESO))/(3817 - sum(M3
$Voto_cod == "10")))
(media_CS <- round(sum(prop_CS_M1,prop_CS_M2,prop_CS_M3)/m,3))
(W_CS_M1 <- (prop_CS_M1*(1-prop_CS_M1))/(3817 - sum(M1$Voto_cod == "10")))
(W_CS_M2 <- (prop_CS_M2*(1-prop_CS_M2))/(3817 - sum(M2$Voto_cod == "10")))
(W_CS_M3 <- (prop_CS_M3*(1-prop_CS_M3))/(3817 - sum(M3$Voto_cod == "10")))
(W_CS <- sum(W_CS_M1,W_CS_M2, W_CS_M3)/m)
(B_CS = sum((prop_CS_M1-media_CS)^2,(prop_CS_M2-media_CS)^2, (prop_CS_M3-
media_CS)^2)/(m-1))
(SE_CS = round(sqrt(W_CS+B_CS+(B_CS/m)),3))
#VOX
(prop_VOX_M1 <- sum((M1$Voto_cod == "5")*(cis$PESO))/(3817 - sum(M1
$Voto_cod == "10")))
(prop_VOX_M2 <- sum((M2$Voto_cod == "5")*(cis$PESO))/(3817 - sum(M2
$Voto_cod == "10")))
(prop_VOX_M3 <- sum((M3$Voto_cod == "5")*(cis$PESO))/(3817 - sum(M3
$Voto_cod == "10")))
(media_VOX <- round(sum(prop_VOX_M1,prop_VOX_M2,prop_VOX_M3)/m,3))
(W_VOX_M1 <- (prop_VOX_M1*(1-prop_VOX_M1))/(3817 - sum(M1$Voto_cod == "10")))
(W_VOX_M2 <- (prop_VOX_M2*(1-prop_VOX_M2))/(3817 - sum(M2$Voto_cod == "10")))
(W_VOX_M3 <- (prop_VOX_M3*(1-prop_VOX_M3))/(3817 - sum(M3$Voto_cod == "10")))
(W_VOX <- sum(W_VOX_M1,W_VOX_M2, W_VOX_M3)/m)
(B_VOX = sum((prop_VOX_M1-media_VOX)^2,(prop_VOX_M2-media_VOX)^2, (prop_VOX_M3-
media_VOX)^2)/(m-1))
(SE_VOX = round(sqrt(W_VOX+B_VOX+(B_VOX/m)),3))
#ERC
(prop_ERC_M1 <- sum((M1$Voto_cod == "6")*(cis$PESO))/(3817 - sum(M1
$Voto_cod == "10")))
(prop_ERC_M2 <- sum((M2$Voto_cod == "6")*(cis$PESO))/(3817 - sum(M2
$Voto_cod == "10")))
(prop_ERC_M3 <- sum((M3$Voto_cod == "6")*(cis$PESO))/(3817 - sum(M3
$Voto_cod == "10")))
(media_ERC <- round(sum(prop_ERC_M1,prop_ERC_M2,prop_ERC_M3)/m,3))
(W_ERC_M1 <- (prop_ERC_M1*(1-prop_ERC_M1))/(3817 - sum(M1$Voto_cod == "10")))
(W_ERC_M2 <- (prop_ERC_M2*(1-prop_ERC_M2))/(3817 - sum(M2$Voto_cod == "10")))
(W_ERC_M3 <- (prop_ERC_M3*(1-prop_ERC_M3))/(3817 - sum(M3$Voto_cod == "10")))
(W_ERC <- sum(W_ERC_M1,W_ERC_M2, W_ERC_M3)/m)
(B_ERC = sum((prop_ERC_M1-media_ERC)^2,(prop_ERC_M2-media_ERC)^2, (prop_ERC_M3-
media_ERC)^2)/(m-1))
(SE_ERC = round(sqrt(W_ERC+B_ERC+(B_ERC/m)),3))
#JxCat
(prop_JxCat_M1 <- sum((M1$Voto_cod == "7")*(cis$PESO))/(3817 - sum(M1
$Voto_cod == "10")))
(prop_JxCat_M2 <- sum((M2$Voto_cod == "7")*(cis$PESO))/(3817 - sum(M2
$Voto_cod == "10")))
(prop_JxCat_M3 <- sum((M3$Voto_cod == "7")*(cis$PESO))/(3817 - sum(M3
$Voto_cod == "10")))
(media_JxCat <- round(sum(prop_JxCat_M1,prop_JxCat_M2,prop_JxCat_M3)/m,3))
(W_JxCat_M1 <- (prop_JxCat_M1*(1-prop_JxCat_M1))/(3817 - sum(M1$Voto_cod == "10")))
(W_JxCat_M2 <- (prop_JxCat_M2*(1-prop_JxCat_M2))/(3817 - sum(M2$Voto_cod == "10")))
(W_JxCat_M3 <- (prop_JxCat_M3*(1-prop_JxCat_M3))/(3817 - sum(M3$Voto_cod == "10")))
(W_JxCat <- sum(W_JxCat_M1,W_JxCat_M2, W_JxCat_M3)/m)
(B_JxCat = sum((prop_JxCat_M1-media_JxCat)^2,(prop_JxCat_M2-media_JxCat)^2, (prop_JxCat_M3-
media_JxCat)^2)/(m-1))
(SE_JxCat = round(sqrt(W_JxCat+B_JxCat+(B_JxCat/m)),3))
#EAJ-PNV
(prop_PNV_M1 <- sum((M1$Voto_cod == "8")*(cis$PESO))/(3817 - sum(M1
$Voto_cod == "10")))
(prop_PNV_M2 <- sum((M2$Voto_cod == "8")*(cis$PESO))/(3817 - sum(M2
$Voto_cod == "10")))
(prop_PNV_M3 <- sum((M3$Voto_cod == "8")*(cis$PESO))/(3817 - sum(M3
$Voto_cod == "10")))
(media_PNV <- round(sum(prop_PNV_M1,prop_PNV_M2,prop_PNV_M3)/m,3))
(W_PNV_M1 <- (prop_PNV_M1*(1-prop_PNV_M1))/(3817 - sum(M1$Voto_cod == "10")))
(W_PNV_M2 <- (prop_PNV_M2*(1-prop_PNV_M2))/(3817 - sum(M2$Voto_cod == "10")))
(W_PNV_M3 <- (prop_PNV_M3*(1-prop_PNV_M3))/(3817 - sum(M3$Voto_cod == "10")))
(W_PNV <- sum(W_PNV_M1,W_PNV_M2, W_PNV_M3)/m)
(B_PNV = sum((prop_PNV_M1-media_PNV)^2,(prop_PNV_M2-media_PNV)^2, (prop_PNV_M3-
media_PNV)^2)/(m-1))
(SE_PNV = round(sqrt(W_PNV+B_PNV+(B_PNV/m)),3))
#Otros
(prop_Otros_M1 <- sum((M1$Voto_cod == "9")*(cis$PESO))/(3817 - sum(M1
$Voto_cod == "10")))
(prop_Otros_M2 <- sum((M2$Voto_cod == "9")*(cis$PESO))/(3817 - sum(M2
$Voto_cod == "10")))
(prop_Otros_M3 <- sum((M3$Voto_cod == "9")*(cis$PESO))/(3817 - sum(M3
$Voto_cod == "10")))
(media_Otros <- round(sum(prop_Otros_M1,prop_Otros_M2,prop_Otros_M3)/m,3))
(W_Otros_M1 <- (prop_Otros_M1*(1-prop_Otros_M1))/(3817 - sum(M1$Voto_cod == "10")))
(W_Otros_M2 <- (prop_Otros_M2*(1-prop_Otros_M2))/(3817 - sum(M2$Voto_cod == "10")))
(W_Otros_M3 <- (prop_Otros_M3*(1-prop_Otros_M3))/(3817 - sum(M3$Voto_cod == "10")))
(W_Otros <- sum(W_Otros_M1,W_Otros_M2, W_Otros_M3)/m)
(B_Otros = sum((prop_Otros_M1-media_Otros)^2,(prop_Otros_M2-media_Otros)^2, (prop_Otros_M3-
media_Otros)^2)/(m-1))
(SE_Otros = round(sqrt(W_Otros+B_Otros+(B_Otros/m)),3))
media_PSOE <- media_PSOE*100
media_PP <- media_PP*100
media_PODEMOS <- media_PODEMOS*100
media_CS <- media_CS*100
media_VOX <- media_VOX*100
media_ERC <- media_ERC*100
media_JxCat <- media_JxCat*100
media_PNV <- media_PNV*100
media_Otros <- media_Otros*100
estimaciones_votos <- data.frame(c(media_PSOE, as.character(SE_PSOE), media_PP,
as.character(SE_PP), media_PODEMOS, as.character(SE_PODEMOS), media_CS,
as.character(SE_CS), media_VOX, as.character(SE_VOX), media_ERC, as.character(SE_ERC),
media_JxCat, as.character(SE_JxCat), media_PNV, as.character(SE_PNV), media_Otros,
as.character(SE_Otros)), stringsAsFactors=FALSE)
estimaciones_votos
for(i in 1:nrow(estimaciones_votos))
{
if(i%%2 == 0)
{
estimaciones_votos[i,1] = paste0("(",estimaciones_votos[i,1],")")
}else{
estimaciones_votos[i,1] = estimaciones_votos[i,1]
}
}
estimaciones_votos2 <-data.frame(C1 = c(rep("PSOE",2), rep("PP",2), rep("Unidas Podemos",2),
rep("Ciudadanos",2), rep("VOX",2), rep("ERC",2), rep("JxCat",2), rep("EAJ-PNV", 2), rep("Otros",2)),
C2 = estimaciones_votos[,1])
colnames(estimaciones_votos2)<-NULL
kable(estimaciones_votos2, position = "center", booktabs = TRUE, align = "cc", caption = "<left><em>
Estimación de voto en % sobre voto válido </em></center>", escape = FALSE, position = "center",
row_label_position = "c") %>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
column_spec(1, bold = T) %>%
collapse_rows(columns = 1:2, valign = "middle")%>%
column_spec(c(1), width = "3cm")
#Compración con el CIS
comparacion_est <- data.frame(c(media_PSOE, media_PP, media_VOX, media_PODEMOS, media_CS,
media_ERC, media_JxCat, media_PNV, media_Otros))
comparacion_CIS <- data.frame(c("29.5", "19.2", "14.0", "10.8", "10.5", "2.9", "1.7", "1.4", "10"))
voto_CIS <- data.frame(c("19.4", "11.8", "7", "7.1", "7.5", "1.6", "0.9", "0.9", "0.9", "1.1", "1.6", "0.4",
"0.2", "0.2", "0.5", "0.1", "0.7", "4.5", "1.3", "11.5", "16.8", "4"))
voto_CIS_est <- data.frame(c("29.5", "19.2", "14.0", "10.8", "10.5", "2.9", "1.7", "1.4", "1.2", "1.2",
"2.4", "0.8", "0.5", "0.4", "0.5", "0.1","0.9", "2"))
nombres_CIS <- data.frame(c("PSOE", "PP", "VOX", "Unidas Podemos", "Ciudadanos", "ERC",
"JxCat", "EAJ-PNV", "Otros", "EH Bildu", "Más País/Compromís","CUP", "CCa-NC", "NA+", "BNG",
"PRC", "PACMA", "En blanco", "Voto nulo", "Abstención", "NS", "NC"))
library(zoo)
tabla_total_est <- data.frame(nombres_CIS, cbind(zoo(, 1:nrow(nombres_CIS)), as.zoo(voto_CIS)))
tabla_total_est1 <- data.frame(tabla_total_est, cbind(zoo(, 1:nrow(tabla_total_est)),
as.zoo(voto_CIS_est)))
tabla_total_est2 <- data.frame(tabla_total_est1, cbind(zoo(, 1:nrow(tabla_total_est1)),
as.zoo(comparacion_CIS)))
tabla_total_est3 <- data.frame(tabla_total_est2, cbind(zoo(, 1:nrow(tabla_total_est2)),
as.zoo(comparacion_est)))
colnames(tabla_total_est3)<- NULL
options(knitr.kable.NA = '')
kable(tabla_total_est3, position = "center", booktabs = TRUE, align = "cc", caption = "<left><em>
Comparación de los resultados CIS </em></center>", col.names = c(" ", "Voto directo en la escuesta (en
% sobre censo)", "Estimación de voto CIS (en % sobre el voto válido)", "Agrupación estimación de voto
CIS", "Esimación de voto Imputación múltiple"), escape = FALSE, position = "center",
row_label_position = "c") %>%
kable_classic(full_width = F, html_font = "Times New Roman")%>%
column_spec(1, bold = T) %>%
column_spec(c(1), width = "0.5cm")