── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr 1.1.4 ✔ readr 2.1.5
✔ forcats 1.0.0 ✔ stringr 1.5.1
✔ ggplot2 3.4.4 ✔ tibble 3.2.1
✔ lubridate 1.9.3 ✔ tidyr 1.3.1
✔ purrr 1.0.2
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(igraph) # This is the package to analyze the network
Warning: package 'igraph' was built under R version 4.3.3
Attaching package: 'igraph'
The following objects are masked from 'package:lubridate':
%--%, union
The following objects are masked from 'package:dplyr':
as_data_frame, groups, union
The following objects are masked from 'package:purrr':
compose, simplify
The following object is masked from 'package:tidyr':
crossing
The following object is masked from 'package:tibble':
as_data_frame
The following objects are masked from 'package:stats':
decompose, spectrum
The following object is masked from 'package:base':
union
library(visNetwork) # Creates visualizations of the network
Warning: package 'visNetwork' was built under R version 4.3.3
library(DT)library(plotly)
Attaching package: 'plotly'
The following object is masked from 'package:igraph':
groups
The following object is masked from 'package:ggplot2':
last_plot
The following object is masked from 'package:stats':
filter
The following object is masked from 'package:graphics':
layout
library(broom) # includes some of our regression functions
friendships <-read_csv("friendships.csv")
Rows: 6972 Columns: 4
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
dbl (4): nominator, nominated, score, expected_score
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Rows: 84 Columns: 2
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
dbl (2): id, name
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Create a data table with scores for nominator and nominated, and be sure to include an appropriate title.
This data tables shows how many friends each person named and how many people named them as friends. The last column shows a popularity score where a positive integer shows that more people named them as friends compared to how many people the person named as friends.
Create a histogram using plotly of the number of friends that students named.
friendship_nodes |>mutate(named_friends =degree((friend_network), mode ="out")) |>mutate(named_by_others=degree((friend_network), mode ="in")) |>plot_ly(x =~named_friends) |>add_histogram() |>layout(title ="How many friends each student named")
This histogram shows the amount of people who named friends in each group. The largest group of named friends was 10-14 with the smallest group being 40-49.
Find the reciprocity in the network.
reciprocity(friend_network, mode ="ratio")
[1] 0.527088
The reciprocity for friendship with this data set was a little over 50% of the time.
Because there are too many students to visualize all friendships clearly, create a new network using only best friends. Size the nodes by degree, and include different colors for the communities.
friendship_nodes |>mutate(group =membership(infomap.community(best_friend_network))) |>visNetwork(best_friends, main ="Network of Best Friends") |>visIgraphLayout(layout ="layout_with_kk") |>visEdges(arrows ="to") |>visOptions(highlightNearest = T, nodesIdSelection = T)
Warning: There was 1 warning in `mutate()`.
ℹ In argument: `group = membership(infomap.community(best_friend_network))`.
Caused by warning:
! `infomap.community()` was deprecated in igraph 2.0.0.
ℹ Please use `cluster_infomap()` instead.
This network of best friends shows each connection of the strongest friendship, a score of 5, between two people. It also shows that some people were rated as best friends but did not rate others back and who rated other people as best friends but did not have the feelings reciprocated. Lastly, there were some people who neither rated anyone as a best friend or was rated by others as a best friend.