Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mbojan/netseg
Segregation and homophily measurement in social networks
https://github.com/mbojan/netseg
homophily r segregation social-networks
Last synced: about 2 months ago
JSON representation
Segregation and homophily measurement in social networks
- Host: GitHub
- URL: https://github.com/mbojan/netseg
- Owner: mbojan
- Created: 2019-12-08T16:04:57.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-07-04T12:05:15.000Z (over 1 year ago)
- Last Synced: 2024-01-25T09:08:05.094Z (11 months ago)
- Topics: homophily, r, segregation, social-networks
- Language: R
- Homepage: https://mbojan.github.io/netseg/
- Size: 2.67 MB
- Stars: 16
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.Rmd
Awesome Lists containing this project
README
---
bibliography: vignettes/refs.bib
output: github_document
editor_options:
chunk_output_type: console
---```{r setup, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)
``````{r logo, include = FALSE, eval=FALSE}
library(hexSticker)
library(ergm)
library(magrittr)
library(tidygraph)
library(ggraph)set.seed(666)
net <- network.initialize(30, directed=FALSE)
net %v% "a1" <- sample( rep(1:2, each=15) )
net %v% "a2" <- sample( rep(1:2, each=15) )snet <- simulate(
net ~ edges + nodematch("a1") + nodematch("a2"),
coef = c(-5, 3, 3)
)g <- intergraph::asIgraph(snet) %>%
as_tbl_graph()p <- g %>%
ggraph(layout="stress") +
geom_edge_link(
color="gray50",
edge_width = 1/4
) +
geom_node_point(
aes(
color=as.character(a1),
fill=as.character(a2)
),
shape = 21,
size=1,
stroke = 1
) +
scale_fill_brewer(type="qual", palette="Set1") +
scale_color_brewer(type="qual", palette="Set1") +
theme_graph(
base_family = "sans"
)sticker(
p + theme_void() +
theme_transparent() +
theme(legend.position="none"),
p_size=20,
p_x = 1,
p_y = 1.6,
s_x = 1,
s_y= 0.9,
s_width=1.3,
s_height=1,
package = "netseg",
p_color = "gray50",
h_fill = "#ffffff",
h_color = "black",
url = "https://mbojan.github.io/netseg",
u_size = 4,
filename = "man/figures/logo.png",
dpi = 300
)
```# `netseg`: Measures of Network Segregation and Homophily
[![CRAN status](https://www.r-pkg.org/badges/version/netseg)](https://CRAN.R-project.org/package=netseg)
[![rstudio cran mirror downloads](https://cranlogs.r-pkg.org/badges/netseg?color=2ED968)](https://cranlogs.r-pkg.org/)
[![R-CMD-check](https://github.com/mbojan/netseg/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/mbojan/netseg/actions/workflows/R-CMD-check.yaml)Segregation is a network-level property such that edges between predefined groups of vertices are relatively less likely. Network homophily is a individual-level tendency to form relations with people who are similar on some attribute (e.g. gender, music taste, social status, etc.). In general homophily leads to segregation, but segregation might arise without homophily. This package implements descriptive indices measuring homophily/segregation. It is a computational companion to @bojanowski-corten-2014.
## Installation
Install the released version of netseg from [CRAN](https://CRAN.R-project.org/) with:
```r
install.packages("netseg")
```or the development version from [GitHub](https://github.com/) with:
```{r install, eval=FALSE}
# install.packages("remotes")
remotes::install_github("mbojan/netseg")
```## Example
To illustrate, consider the Classroom network below:
```{r Classroom, dev="svg"}
library(netseg)
library(igraph)data("Classroom")
plot(
Classroom,
layout = graphlayouts::layout_with_stress,
vertex.color = c("pink", "lightskyblue")[match(V(Classroom)$gender, c("Girl", "Boy"))],
vertex.label = NA,
edge.arrow.size = 0.5
)
legend(
"bottomright",
pch = 21,
legend = c("Boy", "Girl"),
pt.cex = 2,
pt.bg = c("lightskyblue", "pink"),
col = "black",
bty = "n"
)
```The extent of gender segregation in this network can be assessed using one of the indices provided in the package, for example odds ratio of within-group tie (`orwg()`)
```{r Classroom-orwg}
orwg(Classroom, "gender")
```tells us that same-gender tie odds are `r orwg(Classroom, "gender")` times greater than tie odds between genders.
Coleman's index [@coleman-1958] assesses the segregation on the group level:
```{r Classroom-coleman}
coleman(Classroom, "gender")
```Qualitatively speaking it compares the proportion of same-group neighbors to the proportion of that group in the network as a whole. It is a number between -1 and 1. Value of 0 means these proportions are equal. Value of 1 means that all ties outgoing from a particular group are sent to the members of the same group. Value of -1 is the opposite -- all ties are sent to members of other group(s).
## References