1 Introduction

A family can be viewed as a social network because each person is connected through a specific relationship. My family network includes my mother, father, brother, my dad’s wife, her children and grandchildren, my brother’s unidentified partner, and my father’s four cats.

My parents are divorced. My father remarried, while my mother did not. My dad’s wife has two adult daughters who are married and have children of their own. My brother is also connected to a woman he has not introduced to the family. My father considers his cats to be part of the family, so they are included as household members in the network.

Three of the four cats are brothers. In this report, Dad’s Cat 1, Dad’s Cat 2, and Dad’s Cat 3 are represented as the three cat brothers, while Dad’s Cat 4 is connected to my father but is not part of that sibling group.

2 Family Members and Household Members

The network includes the following nodes:

  • Brandon
  • Brother
  • Mother
  • Father
  • Dad’s Wife
  • Brother’s Mystery Woman
  • Dad’s Wife’s Daughter 1
  • Daughter 1’s Spouse
  • Daughter 1’s Child
  • Dad’s Wife’s Daughter 2
  • Daughter 2’s Spouse
  • Daughter 2’s Child
  • Dad’s Cat 1
  • Dad’s Cat 2
  • Dad’s Cat 3
  • Dad’s Cat 4

3 Relationship Data

family_relationships <- data.frame(
  from = c(
    "Brandon",
    "Brandon",
    "Brandon",
    "Brother",
    "Brother",
    "Mother",
    "Father",
    "Brother",
    "Dad's Wife",
    "Dad's Wife",
    "Dad's Wife's Daughter 1",
    "Dad's Wife's Daughter 1",
    "Daughter 1's Spouse",
    "Dad's Wife's Daughter 2",
    "Dad's Wife's Daughter 2",
    "Daughter 2's Spouse",
    "Father",
    "Father",
    "Father",
    "Father",
    "Dad's Cat 1",
    "Dad's Cat 1",
    "Dad's Cat 2"
  ),
  to = c(
    "Mother",
    "Father",
    "Brother",
    "Mother",
    "Father",
    "Father",
    "Dad's Wife",
    "Brother's Mystery Woman",
    "Dad's Wife's Daughter 1",
    "Dad's Wife's Daughter 2",
    "Daughter 1's Spouse",
    "Daughter 1's Child",
    "Daughter 1's Child",
    "Daughter 2's Spouse",
    "Daughter 2's Child",
    "Daughter 2's Child",
    "Dad's Cat 1",
    "Dad's Cat 2",
    "Dad's Cat 3",
    "Dad's Cat 4",
    "Dad's Cat 2",
    "Dad's Cat 3",
    "Dad's Cat 3"
  ),
  relationship = c(
    "Parent-child",
    "Parent-child",
    "Sibling",
    "Parent-child",
    "Parent-child",
    "Former marriage",
    "Marriage",
    "Dating or partner relationship",
    "Parent-child",
    "Parent-child",
    "Marriage",
    "Parent-child",
    "Parent-child",
    "Marriage",
    "Parent-child",
    "Parent-child",
    "Pet parent",
    "Pet parent",
    "Pet parent",
    "Pet parent",
    "Cat siblings",
    "Cat siblings",
    "Cat siblings"
  ),
  stringsAsFactors = FALSE
)

kable(
  family_relationships,
  caption = "Relationships Included in the Expanded Family Network"
)
Relationships Included in the Expanded Family Network
from to relationship
Brandon Mother Parent-child
Brandon Father Parent-child
Brandon Brother Sibling
Brother Mother Parent-child
Brother Father Parent-child
Mother Father Former marriage
Father Dad’s Wife Marriage
Brother Brother’s Mystery Woman Dating or partner relationship
Dad’s Wife Dad’s Wife’s Daughter 1 Parent-child
Dad’s Wife Dad’s Wife’s Daughter 2 Parent-child
Dad’s Wife’s Daughter 1 Daughter 1’s Spouse Marriage
Dad’s Wife’s Daughter 1 Daughter 1’s Child Parent-child
Daughter 1’s Spouse Daughter 1’s Child Parent-child
Dad’s Wife’s Daughter 2 Daughter 2’s Spouse Marriage
Dad’s Wife’s Daughter 2 Daughter 2’s Child Parent-child
Daughter 2’s Spouse Daughter 2’s Child Parent-child
Father Dad’s Cat 1 Pet parent
Father Dad’s Cat 2 Pet parent
Father Dad’s Cat 3 Pet parent
Father Dad’s Cat 4 Pet parent
Dad’s Cat 1 Dad’s Cat 2 Cat siblings
Dad’s Cat 1 Dad’s Cat 3 Cat siblings
Dad’s Cat 2 Dad’s Cat 3 Cat siblings

4 Building the Network

family_graph <- graph_from_data_frame(
  d = family_relationships,
  directed = FALSE
)

V(family_graph)$degree <- degree(family_graph)

5 Interactive Family Network

6 Basic Network Statistics

network_summary <- data.frame(
  Measure = c(
    "Number of nodes",
    "Number of relationships",
    "Network density",
    "Connected components",
    "Network diameter",
    "Average distance",
    "Global transitivity"
  ),
  Value = c(
    vcount(family_graph),
    ecount(family_graph),
    round(edge_density(family_graph), 3),
    components(family_graph)$no,
    diameter(family_graph),
    round(mean_distance(family_graph), 3),
    round(transitivity(family_graph, type = "global"), 3)
  )
)

kable(
  network_summary,
  caption = "Summary of the Expanded Family Network"
)
Summary of the Expanded Family Network
Measure Value
Number of nodes 16.000
Number of relationships 23.000
Network density 0.192
Connected components 1.000
Network diameter 5.000
Average distance 2.700
Global transitivity 0.484

6.1 Interpretation

The network includes immediate family, extended family, a partner who has not yet been introduced to the family, and four cats. Because all nodes connect back to the same larger family structure, the graph forms one connected component.

The network density is expected to be fairly low because most family members are directly connected only to a few people. The cats are connected to my father, and three of the cats also form their own sibling group.

7 Individual Network Measurements

individual_statistics <- data.frame(
  Node = V(family_graph)$name,
  Degree = degree(family_graph),
  Betweenness = round(
    betweenness(family_graph, normalized = TRUE),
    3
  ),
  Closeness = round(
    closeness(family_graph, normalized = TRUE),
    3
  )
) |>
  arrange(desc(Degree), desc(Betweenness), Node)

datatable(
  individual_statistics,
  caption = "Individual Network Measurements",
  rownames = FALSE,
  options = list(
    pageLength = 20,
    dom = "tip"
  )
)

8 Degree Ranking

degree_ranking <- data.frame(
  Node = V(family_graph)$name,
  Direct_Connections = degree(family_graph)
) |>
  arrange(desc(Direct_Connections), Node)

kable(
  degree_ranking,
  caption = "Nodes Ranked by Number of Direct Connections"
)
Nodes Ranked by Number of Direct Connections
Node Direct_Connections
Father Father 8
Brother Brother 4
Brandon Brandon 3
Dad’s Cat 1 Dad’s Cat 1 3
Dad’s Cat 2 Dad’s Cat 2 3
Dad’s Cat 3 Dad’s Cat 3 3
Dad’s Wife Dad’s Wife 3
Dad’s Wife’s Daughter 1 Dad’s Wife’s Daughter 1 3
Dad’s Wife’s Daughter 2 Dad’s Wife’s Daughter 2 3
Mother Mother 3
Daughter 1’s Child Daughter 1’s Child 2
Daughter 1’s Spouse Daughter 1’s Spouse 2
Daughter 2’s Child Daughter 2’s Child 2
Daughter 2’s Spouse Daughter 2’s Spouse 2
Brother’s Mystery Woman Brother’s Mystery Woman 1
Dad’s Cat 4 Dad’s Cat 4 1

9 Main Findings

My father is one of the most central figures because he connects the original family, his current marriage, and all four cats.

My dad’s wife acts as a bridge to her two adult daughters and their families.

My brother’s mystery woman appears as an outer node because she is connected only to him and has not been introduced to the larger family.

The cats form a small household subnetwork. All four cats are connected to my father, while Cats 1, 2, and 3 also have sibling connections with one another.

10 Limitations

This network describes family structure, but it does not measure emotional closeness, relationship quality, frequency of communication, or conflict. A line between two nodes only shows that a relationship exists.

11 Conclusion

Social network analysis provides a useful way to represent a complicated family structure. This graph includes immediate family, remarriage, extended family, grandchildren, a private romantic relationship, and pets.

12 References

Schoch, D. Introduction to Social Network Analysis with R: Basic Network Descriptives.
https://schochastics.github.io/R4SNA/descriptive/descriptives-basic.html

Csardi, G., & Nepusz, T. The igraph Software Package for Complex Network Research.