En el presente documento realizamos el calculo del índice EI de homofilia utilizando el paquete Egor diseñado para el entorno R (Krenz et al., 2020). Optamos por utilizar este paquete por que facilita algunos procesos de calculo y, por lo tanto, reduce lineas de código. Además, cuenta con el respaldo de haber sido diseñado por el prestigioso grupo de trabajo enfocado en el análisis de redes sociales, “Statnet” de la universidad de Washington http://statnet.org/.
Para atributos categóricos de los alter de la red ego, además de la proporción de alter similares a ego, una medida generalmente usada ha sido el índice EI (Krackhardt & Stern, 1988, Perry et al., 2018). Esta medida se define como el número de alter diferentes de ego (lazos externos E) menos el número de alter iguales a ego (lazos internos I), dividido por el número de alter. Esta es una medida “reversa” de homofilia toa vez que una medida alta de este índice índica mayor heterofilia. Además, debido a que es una transformación lineal de la medida de proporción de lazos homofilicos, su correlación es un perfecto -.1
$$ EI = {\frac {E - I}{E + I}}$$
A continuación, desarrollamos el trabajo de código. Todo el análisis es realizado con datos de la encuesta ELSOC COES, considerando las olas 2 y 4.
librerías
pacman::p_load(ggplot2,ggthemes,tidyverse,sjlabelled,sjPlot,vcd,texreg,ordinal,
nnet,MASS,mlogit,matrixStats,expss,sjlabelled,sjmisc,tidyverse,
survey,egor,haven,car,dplyr,stargazer,janitor,gridExtra,ggeffects,
haven,summarytools,skimr,weights,ggcorrplot,ggridges,panelr)
Cargamos data
load("ELSOC_W02_v2.10_R.RData") # Ola 2 (2017)
load("ELSOC_W04_v1.00_R.RData") # Ola 4 (2019)
Renombrar ID
a<-elsoc_2017 %>% rename(.egoID = idencuesta)
b<-elsoc_2019 %>% rename(.egoID = idencuesta)
definir NA
a[a=="-999"] <- NA
a[a=="-888"] <- NA
b[b=="-999"] <- NA
b[b=="-888"] <- NA
Subset
2017
a1<-a %>%
dplyr::select(.egoID,r13_sexo_01, r13_sexo_02, r13_sexo_03, r13_sexo_04, r13_sexo_05,
r13_edad_01, r13_edad_02, r13_edad_03, r13_edad_04, r13_edad_05,
r13_relacion_01, r13_relacion_02, r13_relacion_03, r13_relacion_04,
r13_relacion_05,
r13_tiempo_01, r13_tiempo_02, r13_tiempo_03, r13_tiempo_04, r13_tiempo_05,
r13_barrio_01, r13_barrio_02, r13_barrio_03, r13_barrio_04, r13_barrio_05,
r13_educ_01, r13_educ_02, r13_educ_03, r13_educ_04, r13_educ_05,
r13_relig_01, r13_relig_02, r13_relig_03, r13_relig_04, r13_relig_05,
r13_ideol_01, r13_ideol_02, r13_ideol_03, r13_ideol_04, r13_ideol_05,
r13_contacto_01, r13_contacto_02, r13_contacto_03, r13_contacto_04,
r13_contacto_05)
2019
b1<-b%>%
dplyr::select(.egoID,r13_sexo_01, r13_sexo_02, r13_sexo_03, r13_sexo_04, r13_sexo_05,
r13_edad_01, r13_edad_02, r13_edad_03, r13_edad_04, r13_edad_05,
r13_relacion_01, r13_relacion_02, r13_relacion_03, r13_relacion_04, r13_relacion_05,
r13_tiempo_01, r13_tiempo_02, r13_tiempo_03, r13_tiempo_04, r13_tiempo_05,
r13_barrio_01, r13_barrio_02, r13_barrio_03, r13_barrio_04, r13_barrio_05,
r13_educ_01, r13_educ_02, r13_educ_03, r13_educ_04, r13_educ_05,
r13_relig_01, r13_relig_02, r13_relig_03, r13_relig_04, r13_relig_05,
r13_ideol_01, r13_ideol_02, r13_ideol_03, r13_ideol_04, r13_ideol_05)
Crear data frame alteris para 2017=a1
alter_1<-a1 %>%
dplyr::select(.egoID, sexo=r13_sexo_01, edad=r13_edad_01, rel=r13_relacion_01,
tiempo=r13_tiempo_01,barrio=r13_barrio_01, educ=r13_educ_01,
relig=r13_relig_01, ideol=r13_ideol_01)
#View(alter_1)
alter_2<-a1 %>%
dplyr::select(.egoID, sexo=r13_sexo_02, edad=r13_edad_02, rel=r13_relacion_02,
tiempo=r13_tiempo_02,barrio=r13_barrio_02, educ=r13_educ_02,
relig=r13_relig_02, ideol=r13_ideol_02)
alter_3<-a1 %>%
dplyr::select(.egoID, sexo=r13_sexo_03, edad=r13_edad_03, rel=r13_relacion_03,
tiempo=r13_tiempo_03,barrio=r13_barrio_03, educ=r13_educ_03,
relig=r13_relig_03, ideol=r13_ideol_03)
alter_4<-a1 %>%
dplyr::select(.egoID, sexo=r13_sexo_04, edad=r13_edad_04, rel=r13_relacion_04,
tiempo=r13_tiempo_04, barrio=r13_barrio_04, educ=r13_educ_04,
relig=r13_relig_04, ideol=r13_ideol_04)
alter_5<-a1 %>%
dplyr::select(.egoID, sexo=r13_sexo_05, edad=r13_edad_05, rel=r13_relacion_05,
tiempo=r13_tiempo_05, barrio=r13_barrio_05, educ=r13_educ_05,
relig=r13_relig_05, ideol=r13_ideol_05)
setear
alter_1$n<-1
alter_2$n<-2
alter_3$n<-3
alter_4$n<-4
alter_5$n<-5
Crear base long
alteris<-rbind(alter_1,alter_2,alter_3,alter_4,alter_5)
alteris<-arrange(alteris, .egoID)
Crear vector alter id
alteris <- rowid_to_column(alteris, var = ".altID")
alteris <- as_tibble(alteris)
alteris$n <- NULL
Recod atributos de alteris
alteris$educ <-factor(Recode(alteris$educ,"1=1;2:3=2;4=3;5=4;-999=NA"))
alteris$relig<-factor(Recode(alteris$relig,"1=1;2=2;3=3;4=4;5=5;-999=NA"))
alteris$ideol<-factor(Recode(alteris$ideol,"1=1;2=2;3=3;4=4;5=5;6=6;-999=NA"))
alteris$edad <-factor(Recode(alteris$edad,"0:18=1;19:29=2;30:40=3;41:51=4;52:62=5;63:100=6"))
alteris$sexo <-factor(Recode(alteris$sexo,"1=1;2=2"))
alteris<-na.omit(alteris)
Data Frame Ego’s
egos <-a %>%
dplyr::select(.egoID, sexo=m0_sexo, edad=m0_edad, ideol=c15, educ=m01,
relig=m38, ideol=c15)
egos <- as_tibble(egos)
Recod data Ego’s
egos$educ <-factor(Recode(egos$educ,"1:3=1;4:5=2;6:7=3;8:10=4;-999:-888=NA"))
egos$relig<-factor(Recode(egos$relig,"1=1;2=2;9=3;7:8=4;3:6=5;-999:-888=NA"))
egos$ideol<-factor(Recode(egos$ideol,"9:10=1;6:8=2;5=3;2:4=4;0:1=5;11:12=6;-999:-888=NA"))
egos$edad <-factor(Recode(egos$edad,"18=1;19:29=2;30:40=3;41:51=4;52:62=5;63:100=6"))
egos$sexo <-factor(Recode(egos$sexo,"1=1;2=2"))
Crear objeto Egor
a_ego<-egor(alters=alteris,
egos=egos,
ID.vars=list(ego = ".egoID",
alter = ".altID"))
summary(a_ego)
a_ego
Composición
composition() calcula la composición proporcional o absoluta de alteris para un atributo/variable dado. En este caso usamos la proporcional.
comp_sexo <- composition(a_ego, "sexo", absolute = FALSE)
comp_edad <- composition(a_ego, "edad", absolute = FALSE)
comp_educ <- composition(a_ego, "educ", absolute = FALSE)
comp_relig <- composition(a_ego, "relig", absolute = FALSE)
comp_ideol <- composition(a_ego, "ideol", absolute = FALSE)
EI
La función comp_ei () de Egor calcula los valores del índice EI (Krackhardt & Stern, 1988) como una medida para la homofilia/heterofilia ego-alter.
ei_sexo <-comp_ei(a_ego, "sexo" , "sexo")
#hist(ei_sexo$ei)
ei_edad <-comp_ei(a_ego, "edad" , "edad")
#hist(ei_edad$ei)
ei_educ <-comp_ei(a_ego, "educ" , "educ")
#hist(ei_educ$ei)
ei_relig<-comp_ei(a_ego, "relig", "relig")
#hist(ei_relig$ei)
ei_ideol<-comp_ei(a_ego, "ideol", "ideol")
#hist(ei_ideol$ei)
Renombrar
ei_sexo <- rename(ei_sexo, ei_sexo = ei)
ei_edad <- rename(ei_edad, ei_edad = ei)
ei_educ <- rename(ei_educ, ei_educ = ei)
ei_relig <- rename(ei_relig, ei_relig = ei)
ei_ideol <- rename(ei_ideol, ei_ideol = ei)
Definir nagturaleza de vector ID
ei_sexo$.egoID <-as.numeric(ei_sexo$.egoID)
ei_edad$.egoID <-as.numeric(ei_edad$.egoID)
ei_educ$.egoID <-as.numeric(ei_educ$.egoID)
ei_relig$.egoID<-as.numeric(ei_relig$.egoID)
ei_ideol$.egoID<-as.numeric(ei_ideol$.egoID)
Agregar variables calculadas al data frame elsoc 2017
# Selección de variables
a<-dplyr::select(a, .egoID, ponderador01, m0_sexo,
m0_edad, m01, r14, c08_01, c08_02, c08_03, c08_04)
# Join
a<-left_join(a,ei_sexo, by = ".egoID")
a<-left_join(a,ei_edad, by = ".egoID")
a<-left_join(a,ei_educ, by = ".egoID")
a<-left_join(a,ei_relig, by = ".egoID")
a<-left_join(a,ei_ideol, by = ".egoID")
Crear data frame alteris para 2019=b1
alter_1b<-b1 %>%
dplyr::select(.egoID, sexo=r13_sexo_01, edad=r13_edad_01, rel=r13_relacion_01,
tiempo=r13_tiempo_01,barrio=r13_barrio_01, educ=r13_educ_01,
relig=r13_relig_01, ideol=r13_ideol_01)
#View(alter_1)
alter_2b<-b1 %>%
dplyr::select(.egoID, sexo=r13_sexo_02, edad=r13_edad_02, rel=r13_relacion_02,
tiempo=r13_tiempo_02,barrio=r13_barrio_02, educ=r13_educ_02,
relig=r13_relig_02, ideol=r13_ideol_02)
alter_3b<-b1 %>%
dplyr::select(.egoID, sexo=r13_sexo_03, edad=r13_edad_03, rel=r13_relacion_03,
tiempo=r13_tiempo_03,barrio=r13_barrio_03, educ=r13_educ_03,
relig=r13_relig_03, ideol=r13_ideol_03)
alter_4b<-b1 %>%
dplyr::select(.egoID, sexo=r13_sexo_04, edad=r13_edad_04, rel=r13_relacion_04,
tiempo=r13_tiempo_04, barrio=r13_barrio_04, educ=r13_educ_04,
relig=r13_relig_04, ideol=r13_ideol_04)
alter_5b<-b1 %>%
dplyr::select(.egoID, sexo=r13_sexo_05, edad=r13_edad_05, rel=r13_relacion_05,
tiempo=r13_tiempo_05, barrio=r13_barrio_05, educ=r13_educ_05,
relig=r13_relig_05, ideol=r13_ideol_05)
setear
alter_1b$n<-1
alter_2b$n<-2
alter_3b$n<-3
alter_4b$n<-4
alter_5b$n<-5
Crear base long
alterisb<-rbind(alter_1b,alter_2b,alter_3b,alter_4b,alter_5b)
alterisb<-arrange(alterisb, .egoID)
Crear vector alter id
alterisb <- rowid_to_column(alterisb, var = ".altID")
alterisb <- as_tibble(alterisb)
alterisb$n <- NULL
Recod alteris
alterisb$educ <-factor(Recode(alterisb$educ,"1=1;2:3=2;4=3;5=4;-999=NA"))
alterisb$relig<-factor(Recode(alterisb$relig,"1=1;2=2;3=3;4=4;5=5;-999=NA"))
alterisb$ideol<-factor(Recode(alterisb$ideol,"1=1;2=2;3=3;4=4;5=5;6=6;-999=NA"))
alterisb$edad <-factor(Recode(alterisb$edad,"0:18=1;19:29=2;30:40=3;41:51=4;52:62=5;63:100=6"))
alterisb$sexo <-factor(Recode(alterisb$sexo,"1=1;2=2"))
alterisb<-na.omit(alterisb)
Data Frame Ego’s
egosb <-b %>%
dplyr::select(.egoID, sexo=m0_sexo, edad=m0_edad, ideol=c15, educ=m01,
relig=m38, ideol=c15)
egosb <- as_tibble(egosb)
Recod data Ego’s
egosb$educ <-factor(Recode(egosb$educ,"1:3=1;4:5=2;6:7=3;8:10=4;-999:-888=NA"))
egosb$relig<-factor(Recode(egosb$relig,"1=1;2=2;9=3;7:8=4;3:6=5;-999:-888=NA"))
egosb$ideol<-factor(Recode(egosb$ideol,"9:10=1;6:8=2;5=3;2:4=4;0:1=5;11:12=6;-999:-888=NA"))
egosb$edad <-factor(Recode(egosb$edad,"18=1;19:29=2;30:40=3;41:51=4;52:62=5;63:100=6"))
egosb$sexo <-factor(Recode(egosb$sexo,"1=1;2=2"))
Crear objeto Egor
a_egob<-egor(alters=alterisb,
egos=egosb,
ID.vars=list(ego = ".egoID",
alter = ".altID"))
summary(a_egob)
a_egob
Composición
La función composition() de Egor calcula la composición proporcional o absoluta de alteris para un atributo/variable dado. En este caso usamos la proporcional.
comp_sexo_b <- composition(a_egob, "sexo", absolute = FALSE)
comp_edad_b <- composition(a_egob, "edad", absolute = FALSE)
comp_educ_b <- composition(a_egob, "educ", absolute = FALSE)
comp_relig_b <- composition(a_egob, "relig", absolute = FALSE)
comp_ideol_b <- composition(a_egob, "ideol", absolute = FALSE)
EI
comp_ei () calcula los valores del índice EI (Krackhardt & Stern, 1988) como una medida para la homofilia/heterofilia ego-alter.
ei_sexo_b <-comp_ei(a_ego, "sexo" , "sexo")
#hist(ei_sexo$ei)
ei_edad_b <-comp_ei(a_ego, "edad" , "edad")
#hist(ei_edad$ei)
ei_educ_b <-comp_ei(a_ego, "educ" , "educ")
#hist(ei_educ$ei)
ei_relig_b<-comp_ei(a_ego, "relig", "relig")
#hist(ei_relig$ei)
ei_ideol_b<-comp_ei(a_ego, "ideol", "ideol")
#hist(ei_ideol$ei)
Renombrar variable
ei_sexo_b <- rename(ei_sexo_b, ei_sexo=ei)
ei_edad_b <- rename(ei_edad_b, ei_edad=ei)
ei_educ_b <- rename(ei_educ_b, ei_educ=ei)
ei_relig_b <- rename(ei_relig_b, ei_relig=ei)
ei_ideol_b <- rename(ei_ideol_b, ei_ideol=ei)
Definir nagturaleza de vector ID
ei_sexo_b$.egoID <-as.numeric(ei_sexo_b$.egoID)
ei_edad_b$.egoID <-as.numeric(ei_edad_b$.egoID)
ei_educ_b$.egoID <-as.numeric(ei_educ_b$.egoID)
ei_relig_b$.egoID<-as.numeric(ei_relig_b$.egoID)
ei_ideol_b$.egoID<-as.numeric(ei_ideol_b$.egoID)
Selecionar vaariables
b<-dplyr::select(b, .egoID, ponderador01, m0_sexo,
m0_edad, m01, r14, c08_01, c08_02, c08_03, c08_04)
## Join
b<-left_join(b,ei_sexo_b, by = ".egoID")
b<-left_join(b,ei_edad_b, by = ".egoID")
b<-left_join(b,ei_educ_b, by = ".egoID")
b<-left_join(b,ei_relig_b, by = ".egoID")
b<-left_join(b,ei_ideol_b, by = ".egoID")
Crear base long
a$ola<-1
b$ola<-2
elsoc_long<-rbind(a,b, make.row.names=FALSE)
elsoc_long<-arrange(elsoc_long, .egoID)
elsoc_long<-as_tibble(elsoc_long)
elsoc_long<-elsoc_long %>% rename(id = .egoID)
elsoc_long<-panel_data(elsoc_long, id = id, wave = ola)
Descriptivos elsoc long
summary(elsoc_long, by.wave = TRUE, by.id = FALSE)
plot ei sexo
elsoc_long %>%
ggplot(aes(x = ei_sexo), na.rm=T) +
geom_bar() +
facet_grid(~ola) +
theme_minimal()
plot ei educ
elsoc_long %>%
ggplot(aes(x = ei_educ), na.rm=T) +
geom_bar() +
facet_grid(~ola) +
theme_minimal()
plot ei edad
elsoc_long %>%
ggplot(aes(x = ei_edad), na.rm=T) +
geom_bar() +
facet_grid(~ola) +
theme_minimal()
plot ei ideol
elsoc_long %>%
ggplot(aes(x = ei_ideol), na.rm=T) +
geom_bar() +
facet_grid(~ola) +
theme_minimal()
plot ei relig
elsoc_long %>%
ggplot(aes(x = ei_relig), na.rm=T) +
geom_bar() +
facet_grid(~ola) +
theme_minimal()
Anexo
Bivariados
ttes ei sexo
t<-wtd.t.test(x=elsoc_long$ei_sexo[elsoc_long$ola=="1"],
y=elsoc_long$ei_sexo[elsoc_long$ola=="2"],
weight= elsoc_long$ponderador01[elsoc_long$ola=="1"],
weighty=elsoc_long$ponderador01[elsoc_long$ola=="2"],
samedata=FALSE,alternative="two.tailed")
t
ttes ei edad
t<-wtd.t.test(x=elsoc_long$ei_edad[elsoc_long$ola=="1"],
y=elsoc_long$ei_edad[elsoc_long$ola=="2"],
weight= elsoc_long$ponderador01[elsoc_long$ola=="1"],
weighty=elsoc_long$ponderador01[elsoc_long$ola=="2"],
samedata=FALSE,alternative="two.tailed")
t
ttes ei educ
t<-wtd.t.test(x=elsoc_long$ei_educ[elsoc_long$ola=="1"],
y=elsoc_long$ei_educ[elsoc_long$ola=="2"],
weight= elsoc_long$ponderador01[elsoc_long$ola=="1"],
weighty=elsoc_long$ponderador01[elsoc_long$ola=="2"],
samedata=FALSE,alternative="two.tailed")
t
ttes ei ideol
t<-wtd.t.test(x=elsoc_long$ei_ideol[elsoc_long$ola=="1"],
y=elsoc_long$ei_ideol[elsoc_long$ola=="2"],
weight= elsoc_long$ponderador01[elsoc_long$ola=="1"],
weighty=elsoc_long$ponderador01[elsoc_long$ola=="2"],
samedata=FALSE,alternative="two.tailed")
t
ttes ei relig
t<-wtd.t.test(x=elsoc_long$ei_relig[elsoc_long$ola=="1"],
y=elsoc_long$ei_relig[elsoc_long$ola=="2"],
weight= elsoc_long$ponderador01[elsoc_long$ola=="1"],
weighty=elsoc_long$ponderador01[elsoc_long$ola=="2"],
samedata=FALSE,alternative="two.tailed")
t
Bibliografía
-
Krackhardt, D., & Stern, R. N. (1988). Informal networks and organizational crises: An experimental simulation. Social Psychology Quarterly, 123–140.
-
Krenz, T., Krivitsky, P. N., Vacca, R., Bojanowski, M., Gamper, M., Herz, A., & McCarty, C. (2020). egor: Import and Analyse Ego-Centered Network Data (0.20.06) [Computer software]. https://CRAN.R-project.org/package=egor
-
Perry, B. L., Pescosolido, B. A., & Borgatti, S. P. (2018). Egocentric network analysis: Foundations, methods, and models. Cambridge University Press.