setwd("~/Desktop/NTHU/Spring 2024/courses/Social Network Analysis & Management/Week 7")
# Getting the whole data
library(readr)
library(igraph)
##
## Attaching package: 'igraph'
## The following objects are masked from 'package:stats':
##
## decompose, spectrum
## The following object is masked from 'package:base':
##
## union
onlinefoods <- read_csv("onlinefoods.csv"); onlinefoods
## New names:
## • `` -> `...13`
## Rows: 388 Columns: 13
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (8): Gender, Marital Status, Occupation, Monthly Income, Educational Qua...
## dbl (5): Age, Family size, latitude, longitude, Pin code
##
## ℹ 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.
## # A tibble: 388 × 13
## Age Gender `Marital Status` Occupation `Monthly Income`
## <dbl> <chr> <chr> <chr> <chr>
## 1 20 Female Single Student No Income
## 2 24 Female Single Student Below Rs.10000
## 3 22 Male Single Student Below Rs.10000
## 4 22 Female Single Student No Income
## 5 22 Male Single Student Below Rs.10000
## 6 27 Female Married Employee More than 50000
## 7 22 Male Single Student No Income
## 8 24 Female Single Student No Income
## 9 23 Female Single Student No Income
## 10 23 Female Single Student No Income
## # ℹ 378 more rows
## # ℹ 8 more variables: `Educational Qualifications` <chr>, `Family size` <dbl>,
## # latitude <dbl>, longitude <dbl>, `Pin code` <dbl>, Output <chr>,
## # Feedback <chr>, ...13 <chr>
y <- data.frame(onlinefoods$`Monthly Income`, onlinefoods$`Family size`);y
## onlinefoods..Monthly.Income. onlinefoods..Family.size.
## 1 No Income 4
## 2 Below Rs.10000 3
## 3 Below Rs.10000 3
## 4 No Income 6
## 5 Below Rs.10000 4
## 6 More than 50000 2
## 7 No Income 3
## 8 No Income 3
## 9 No Income 2
## 10 No Income 4
## 11 No Income 5
## 12 Below Rs.10000 2
## 13 No Income 5
## 14 No Income 4
## 15 10001 to 25000 5
## 16 No Income 6
## 17 25001 to 50000 2
## 18 No Income 3
## 19 No Income 4
## 20 Below Rs.10000 1
## 21 No Income 3
## 22 No Income 4
## 23 No Income 4
## 24 No Income 4
## 25 Below Rs.10000 3
## 26 No Income 3
## 27 No Income 5
## 28 No Income 3
## 29 10001 to 25000 3
## 30 Below Rs.10000 4
## 31 10001 to 25000 5
## 32 No Income 4
## 33 More than 50000 4
## 34 10001 to 25000 5
## 35 No Income 2
## 36 10001 to 25000 3
## 37 No Income 5
## 38 No Income 5
## 39 No Income 3
## 40 No Income 4
## 41 More than 50000 4
## 42 No Income 3
## 43 No Income 4
## 44 No Income 5
## 45 No Income 5
## 46 10001 to 25000 2
## 47 No Income 3
## 48 No Income 2
## 49 No Income 3
## 50 10001 to 25000 5
## 51 No Income 5
## 52 No Income 2
## 53 No Income 3
## 54 No Income 2
## 55 No Income 3
## 56 No Income 2
## 57 No Income 1
## 58 No Income 3
## 59 More than 50000 5
## 60 No Income 4
## 61 No Income 5
## 62 No Income 3
## 63 25001 to 50000 1
## 64 No Income 4
## 65 No Income 2
## 66 No Income 6
## 67 10001 to 25000 4
## 68 No Income 4
## 69 No Income 4
## 70 More than 50000 4
## 71 No Income 4
## 72 10001 to 25000 3
## 73 No Income 3
## 74 No Income 2
## 75 No Income 4
## 76 25001 to 50000 3
## 77 No Income 4
## 78 No Income 4
## 79 No Income 3
## 80 No Income 5
## 81 10001 to 25000 4
## 82 No Income 3
## 83 No Income 3
## 84 No Income 3
## 85 No Income 3
## 86 No Income 4
## 87 No Income 5
## 88 No Income 1
## 89 No Income 5
## 90 10001 to 25000 2
## 91 25001 to 50000 5
## 92 10001 to 25000 1
## 93 No Income 2
## 94 No Income 3
## 95 No Income 1
## 96 No Income 1
## 97 No Income 5
## 98 No Income 5
## 99 25001 to 50000 5
## 100 No Income 3
## 101 10001 to 25000 3
## 102 No Income 2
## 103 10001 to 25000 3
## 104 No Income 3
## 105 25001 to 50000 2
## 106 More than 50000 3
## 107 More than 50000 2
## 108 No Income 1
## 109 Below Rs.10000 2
## 110 No Income 5
## 111 No Income 4
## 112 No Income 1
## 113 Below Rs.10000 2
## 114 No Income 5
## 115 10001 to 25000 2
## 116 25001 to 50000 4
## 117 No Income 5
## 118 More than 50000 2
## 119 25001 to 50000 5
## 120 25001 to 50000 3
## 121 More than 50000 5
## 122 25001 to 50000 3
## 123 25001 to 50000 3
## 124 More than 50000 5
## 125 More than 50000 6
## 126 25001 to 50000 3
## 127 No Income 3
## 128 No Income 4
## 129 No Income 3
## 130 No Income 4
## 131 More than 50000 3
## 132 More than 50000 1
## 133 No Income 2
## 134 No Income 2
## 135 No Income 4
## 136 25001 to 50000 2
## 137 25001 to 50000 3
## 138 More than 50000 5
## 139 More than 50000 3
## 140 Below Rs.10000 4
## 141 No Income 3
## 142 No Income 3
## 143 25001 to 50000 2
## 144 No Income 5
## 145 No Income 3
## 146 10001 to 25000 3
## 147 More than 50000 3
## 148 No Income 4
## 149 10001 to 25000 4
## 150 No Income 4
## 151 More than 50000 3
## 152 No Income 4
## 153 No Income 2
## 154 No Income 2
## 155 10001 to 25000 5
## 156 No Income 4
## 157 25001 to 50000 3
## 158 No Income 3
## 159 More than 50000 5
## 160 No Income 2
## 161 No Income 2
## 162 More than 50000 3
## 163 10001 to 25000 4
## 164 25001 to 50000 3
## 165 25001 to 50000 3
## 166 More than 50000 4
## 167 No Income 5
## 168 No Income 5
## 169 More than 50000 2
## 170 No Income 2
## 171 No Income 1
## 172 Below Rs.10000 3
## 173 25001 to 50000 1
## 174 No Income 3
## 175 Below Rs.10000 2
## 176 10001 to 25000 6
## 177 No Income 2
## 178 More than 50000 3
## 179 Below Rs.10000 1
## 180 25001 to 50000 3
## 181 More than 50000 3
## 182 Below Rs.10000 3
## 183 25001 to 50000 4
## 184 No Income 2
## 185 No Income 5
## 186 More than 50000 1
## 187 No Income 2
## 188 10001 to 25000 2
## 189 25001 to 50000 2
## 190 More than 50000 6
## 191 No Income 3
## 192 25001 to 50000 2
## 193 More than 50000 5
## 194 25001 to 50000 2
## 195 More than 50000 2
## 196 No Income 3
## 197 No Income 6
## 198 More than 50000 6
## 199 No Income 6
## 200 No Income 2
## 201 No Income 2
## 202 No Income 5
## 203 25001 to 50000 4
## 204 More than 50000 4
## 205 No Income 3
## 206 No Income 2
## 207 25001 to 50000 4
## 208 No Income 1
## 209 More than 50000 2
## 210 25001 to 50000 4
## 211 25001 to 50000 6
## 212 10001 to 25000 3
## 213 No Income 2
## 214 No Income 3
## 215 10001 to 25000 4
## 216 10001 to 25000 3
## 217 25001 to 50000 5
## 218 10001 to 25000 2
## 219 No Income 5
## 220 25001 to 50000 3
## 221 No Income 1
## 222 No Income 2
## 223 10001 to 25000 4
## 224 More than 50000 5
## 225 No Income 2
## 226 10001 to 25000 2
## 227 No Income 3
## 228 No Income 2
## 229 10001 to 25000 5
## 230 25001 to 50000 3
## 231 More than 50000 6
## 232 No Income 5
## 233 25001 to 50000 3
## 234 More than 50000 2
## 235 More than 50000 3
## 236 25001 to 50000 3
## 237 No Income 3
## 238 No Income 2
## 239 25001 to 50000 2
## 240 No Income 3
## 241 More than 50000 6
## 242 No Income 2
## 243 25001 to 50000 3
## 244 No Income 2
## 245 More than 50000 1
## 246 No Income 3
## 247 Below Rs.10000 6
## 248 More than 50000 3
## 249 Below Rs.10000 1
## 250 25001 to 50000 2
## 251 25001 to 50000 3
## 252 No Income 6
## 253 No Income 3
## 254 10001 to 25000 2
## 255 No Income 6
## 256 More than 50000 3
## 257 No Income 2
## 258 25001 to 50000 6
## 259 No Income 3
## 260 25001 to 50000 6
## 261 More than 50000 6
## 262 25001 to 50000 2
## 263 No Income 2
## 264 10001 to 25000 3
## 265 More than 50000 4
## 266 25001 to 50000 2
## 267 10001 to 25000 3
## 268 25001 to 50000 2
## 269 25001 to 50000 3
## 270 25001 to 50000 2
## 271 10001 to 25000 2
## 272 Below Rs.10000 2
## 273 25001 to 50000 3
## 274 10001 to 25000 2
## 275 No Income 2
## 276 No Income 4
## 277 More than 50000 3
## 278 No Income 2
## 279 More than 50000 5
## 280 10001 to 25000 4
## 281 No Income 6
## 282 No Income 2
## 283 No Income 4
## 284 25001 to 50000 3
## 285 10001 to 25000 2
## 286 No Income 2
## 287 10001 to 25000 2
## 288 25001 to 50000 5
## 289 No Income 3
## 290 No Income 2
## 291 More than 50000 6
## 292 25001 to 50000 3
## 293 No Income 5
## 294 More than 50000 1
## 295 25001 to 50000 3
## 296 Below Rs.10000 5
## 297 No Income 3
## 298 10001 to 25000 1
## 299 25001 to 50000 2
## 300 More than 50000 6
## 301 Below Rs.10000 3
## 302 No Income 6
## 303 Below Rs.10000 4
## 304 More than 50000 2
## 305 No Income 3
## 306 No Income 3
## 307 No Income 2
## 308 No Income 4
## 309 No Income 5
## 310 Below Rs.10000 2
## 311 More than 50000 5
## 312 No Income 2
## 313 10001 to 25000 2
## 314 No Income 3
## 315 No Income 2
## 316 10001 to 25000 5
## 317 25001 to 50000 3
## 318 More than 50000 6
## 319 No Income 5
## 320 25001 to 50000 3
## 321 More than 50000 2
## 322 More than 50000 3
## 323 25001 to 50000 3
## 324 No Income 3
## 325 No Income 2
## 326 25001 to 50000 2
## 327 No Income 3
## 328 More than 50000 6
## 329 No Income 2
## 330 25001 to 50000 4
## 331 More than 50000 4
## 332 No Income 3
## 333 No Income 2
## 334 25001 to 50000 4
## 335 No Income 1
## 336 More than 50000 2
## 337 25001 to 50000 4
## 338 25001 to 50000 6
## 339 10001 to 25000 3
## 340 No Income 2
## 341 No Income 3
## 342 10001 to 25000 4
## 343 10001 to 25000 3
## 344 25001 to 50000 5
## 345 10001 to 25000 2
## 346 25001 to 50000 4
## 347 More than 50000 4
## 348 No Income 3
## 349 No Income 2
## 350 25001 to 50000 4
## 351 No Income 1
## 352 More than 50000 2
## 353 25001 to 50000 4
## 354 25001 to 50000 6
## 355 10001 to 25000 3
## 356 No Income 2
## 357 No Income 2
## 358 10001 to 25000 5
## 359 25001 to 50000 3
## 360 More than 50000 6
## 361 No Income 5
## 362 25001 to 50000 3
## 363 More than 50000 2
## 364 More than 50000 3
## 365 25001 to 50000 3
## 366 No Income 3
## 367 No Income 2
## 368 25001 to 50000 2
## 369 No Income 3
## 370 More than 50000 6
## 371 No Income 2
## 372 25001 to 50000 3
## 373 No Income 2
## 374 More than 50000 1
## 375 No Income 3
## 376 Below Rs.10000 6
## 377 More than 50000 3
## 378 Below Rs.10000 1
## 379 25001 to 50000 2
## 380 Below Rs.10000 4
## 381 More than 50000 2
## 382 No Income 3
## 383 No Income 3
## 384 No Income 2
## 385 No Income 4
## 386 No Income 5
## 387 Below Rs.10000 2
## 388 No Income 5
net <- graph_from_data_frame(y, directed=T)
V(net)
## + 11/11 vertices, named, from 5b805b1:
## [1] No Income Below Rs.10000 More than 50000 10001 to 25000
## [5] 25001 to 50000 4 3 6
## [9] 2 5 1
E(net)
## + 388/388 edges from 5b805b1 (vertex names):
## [1] No Income ->4 Below Rs.10000 ->3 Below Rs.10000 ->3 No Income ->6
## [5] Below Rs.10000 ->4 More than 50000->2 No Income ->3 No Income ->3
## [9] No Income ->2 No Income ->4 No Income ->5 Below Rs.10000 ->2
## [13] No Income ->5 No Income ->4 10001 to 25000 ->5 No Income ->6
## [17] 25001 to 50000 ->2 No Income ->3 No Income ->4 Below Rs.10000 ->1
## [21] No Income ->3 No Income ->4 No Income ->4 No Income ->4
## [25] Below Rs.10000 ->3 No Income ->3 No Income ->5 No Income ->3
## [29] 10001 to 25000 ->3 Below Rs.10000 ->4 10001 to 25000 ->5 No Income ->4
## [33] More than 50000->4 10001 to 25000 ->5 No Income ->2 10001 to 25000 ->3
## [37] No Income ->5 No Income ->5 No Income ->3 No Income ->4
## + ... omitted several edges
V(net)$label <- V(net)$name
V(net)$degree <- degree(net)
The result: Around 4 nodes with the range between 0 to 100 degree and some nodes with high degree (150 to 200 connections) also. It indicates that many nodes with few connections and few nodes with many connections.
hist(V(net)$degree,
col = 'green',
main = 'Histogram of Node Degree',
ylab = 'Frequency',
xlab = 'Degree of Vertices')
set.seed(222)
plot(net,
vertex.color = 'green',
vertext.size = 2,
edge.arrow.size = 0.1,
vertex.label.cex = 0.8,
main = "Network diagram")
The result: “No Income” is the highest degree followed by others.
plot(net,
vertex.color = rainbow(52),
vertex.size = V(net)$degree*0.4,
edge.arrow.size = 0.1,
layout=layout.fruchterman.reingold)
The number of its adjacent edges
degree(net)
## No Income Below Rs.10000 More than 50000 10001 to 25000 25001 to 50000
## 187 25 62 45 69
## 4 3 6 2 5
## 63 117 29 101 54
## 1
## 24
Indicates the length of the longest geodesic
diameter(net, directed = F, weights = NA)
## [1] 2
Shows the largest possible number of edges in the graph
edge_density(net)
## [1] 3.527273
Show how many steps is required to access every other vertex from a given vertex
closeness(net, mode = "all", weights = NA)
## No Income Below Rs.10000 More than 50000 10001 to 25000 25001 to 50000
## 0.07142857 0.07142857 0.07142857 0.07142857 0.07142857
## 4 3 6 2 5
## 0.06666667 0.06666667 0.06666667 0.06666667 0.06666667
## 1
## 0.06666667
A measure of centrality in a graph based on shortest paths
betweenness(net, directed = T, weights = NA)
## No Income Below Rs.10000 More than 50000 10001 to 25000 25001 to 50000
## 0 0 0 0 0
## 4 3 6 2 5
## 0 0 0 0 0
## 1
## 0
max() shows the maximum of Edge betweenness value min() shows the minimum of Edge betweenness value
edge_betweenness(net)
## [1] 0.03225806 0.16666667 0.16666667 0.11111111 0.20000000 0.07692308
## [7] 0.01818182 0.01818182 0.01960784 0.03225806 0.03333333 0.14285714
## [13] 0.03333333 0.03225806 0.12500000 0.11111111 0.05882353 0.01818182
## [19] 0.03225806 0.25000000 0.01818182 0.03225806 0.03225806 0.03225806
## [25] 0.16666667 0.01818182 0.03333333 0.01818182 0.07692308 0.20000000
## [31] 0.12500000 0.03225806 0.12500000 0.12500000 0.01960784 0.07692308
## [37] 0.03333333 0.03333333 0.01818182 0.03225806 0.12500000 0.01818182
## [43] 0.03225806 0.03333333 0.03333333 0.07692308 0.01818182 0.01960784
## [49] 0.01818182 0.12500000 0.03333333 0.01960784 0.01818182 0.01960784
## [55] 0.01818182 0.01960784 0.09090909 0.01818182 0.11111111 0.03225806
## [61] 0.03333333 0.01818182 0.50000000 0.03225806 0.01960784 0.11111111
## [67] 0.12500000 0.03225806 0.03225806 0.12500000 0.03225806 0.07692308
## [73] 0.01818182 0.01960784 0.03225806 0.03571429 0.03225806 0.03225806
## [79] 0.01818182 0.03333333 0.12500000 0.01818182 0.01818182 0.01818182
## [85] 0.01818182 0.03225806 0.03333333 0.09090909 0.03333333 0.07692308
## [91] 0.16666667 0.50000000 0.01960784 0.01818182 0.09090909 0.09090909
## [97] 0.03333333 0.03333333 0.16666667 0.01818182 0.07692308 0.01960784
## [103] 0.07692308 0.01818182 0.05882353 0.06666667 0.07692308 0.09090909
## [109] 0.14285714 0.03333333 0.03225806 0.09090909 0.14285714 0.03333333
## [115] 0.07692308 0.09090909 0.03333333 0.07692308 0.16666667 0.03571429
## [121] 0.11111111 0.03571429 0.03571429 0.11111111 0.08333333 0.03571429
## [127] 0.01818182 0.03225806 0.01818182 0.03225806 0.06666667 0.20000000
## [133] 0.01960784 0.01960784 0.03225806 0.05882353 0.03571429 0.11111111
## [139] 0.06666667 0.20000000 0.01818182 0.01818182 0.05882353 0.03333333
## [145] 0.01818182 0.07692308 0.06666667 0.03225806 0.12500000 0.03225806
## [151] 0.06666667 0.03225806 0.01960784 0.01960784 0.12500000 0.03225806
## [157] 0.03571429 0.01818182 0.11111111 0.01960784 0.01960784 0.06666667
## [163] 0.12500000 0.03571429 0.03571429 0.12500000 0.03333333 0.03333333
## [169] 0.07692308 0.01960784 0.09090909 0.16666667 0.50000000 0.01818182
## [175] 0.14285714 1.00000000 0.01960784 0.06666667 0.25000000 0.03571429
## [181] 0.06666667 0.16666667 0.09090909 0.01960784 0.03333333 0.20000000
## [187] 0.01960784 0.07692308 0.05882353 0.08333333 0.01818182 0.05882353
## [193] 0.11111111 0.05882353 0.07692308 0.01818182 0.11111111 0.08333333
## [199] 0.11111111 0.01960784 0.01960784 0.03333333 0.09090909 0.12500000
## [205] 0.01818182 0.01960784 0.09090909 0.09090909 0.07692308 0.09090909
## [211] 0.20000000 0.07692308 0.01960784 0.01818182 0.12500000 0.07692308
## [217] 0.16666667 0.07692308 0.03333333 0.03571429 0.09090909 0.01960784
## [223] 0.12500000 0.11111111 0.01960784 0.07692308 0.01818182 0.01960784
## [229] 0.12500000 0.03571429 0.08333333 0.03333333 0.03571429 0.07692308
## [235] 0.06666667 0.03571429 0.01818182 0.01960784 0.05882353 0.01818182
## [241] 0.08333333 0.01960784 0.03571429 0.01960784 0.20000000 0.01818182
## [247] 0.50000000 0.06666667 0.25000000 0.05882353 0.03571429 0.11111111
## [253] 0.01818182 0.07692308 0.11111111 0.06666667 0.01960784 0.20000000
## [259] 0.01818182 0.20000000 0.08333333 0.05882353 0.01960784 0.07692308
## [265] 0.12500000 0.05882353 0.07692308 0.05882353 0.03571429 0.05882353
## [271] 0.07692308 0.14285714 0.03571429 0.07692308 0.01960784 0.03225806
## [277] 0.06666667 0.01960784 0.11111111 0.12500000 0.11111111 0.01960784
## [283] 0.03225806 0.03571429 0.07692308 0.01960784 0.07692308 0.16666667
## [289] 0.01818182 0.01960784 0.08333333 0.03571429 0.03333333 0.20000000
## [295] 0.03571429 1.00000000 0.01818182 0.50000000 0.05882353 0.08333333
## [301] 0.16666667 0.11111111 0.20000000 0.07692308 0.01818182 0.01818182
## [307] 0.01960784 0.03225806 0.03333333 0.14285714 0.11111111 0.01960784
## [313] 0.07692308 0.01818182 0.01960784 0.12500000 0.03571429 0.08333333
## [319] 0.03333333 0.03571429 0.07692308 0.06666667 0.03571429 0.01818182
## [325] 0.01960784 0.05882353 0.01818182 0.08333333 0.01960784 0.09090909
## [331] 0.12500000 0.01818182 0.01960784 0.09090909 0.09090909 0.07692308
## [337] 0.09090909 0.20000000 0.07692308 0.01960784 0.01818182 0.12500000
## [343] 0.07692308 0.16666667 0.07692308 0.09090909 0.12500000 0.01818182
## [349] 0.01960784 0.09090909 0.09090909 0.07692308 0.09090909 0.20000000
## [355] 0.07692308 0.01960784 0.01960784 0.12500000 0.03571429 0.08333333
## [361] 0.03333333 0.03571429 0.07692308 0.06666667 0.03571429 0.01818182
## [367] 0.01960784 0.05882353 0.01818182 0.08333333 0.01960784 0.03571429
## [373] 0.01960784 0.20000000 0.01818182 0.50000000 0.06666667 0.25000000
## [379] 0.05882353 0.20000000 0.07692308 0.01818182 0.01818182 0.01960784
## [385] 0.03225806 0.03333333 0.14285714 0.03333333
max(edge_betweenness(net))
## [1] 1
min(edge_betweenness(net))
## [1] 0.01818182