Randomisasi jaringan
Pada latihan sebelumnya, Anda mungkin memperhatikan bahwa panjang lintasan rata-rata jaringan Forrest Gump lebih kecil daripada panjang lintasan rata-rata jaringan acak. Jika Anda menjalankan kodenya beberapa kali, Anda akan melihat bahwa hampir selalu lebih rendah pada jaringan Forrest Gump dibandingkan jaringan acak. Hal ini menunjukkan bahwa jaringan Forrest Gump lebih saling terhubung rapat daripada setiap jaringan acak meskipun jaringan acak memiliki jumlah simpul yang sama dan kerapatan graf yang kurang lebih identik. Alih-alih menjalankan kode ini berkali-kali, Anda dapat menanganinya secara lebih formal dengan membuat 1000 graf acak berdasarkan jumlah simpul dan kerapatan graf Forrest Gump asli. Lalu, Anda dapat melihat berapa kali panjang lintasan rata-rata graf acak lebih kecil daripada jaringan Forrest Gump asli. Ini disebut uji randomisasi.
Graf g, dan panjang lintasan rata-ratanya (yang Anda hitung pada latihan sebelumnya), g.apl sudah tersedia di ruang kerja Anda.
Latihan ini merupakan bagian dari kursus
Analisis Jaringan di R
Instruksi latihan
- Hasilkan 1000 graf acak dari graf asli
gdengan mengeksekusi kode yang membuat objek daftargldan for loop. - Hitung panjang lintasan rata-rata dari 1000 graf acak menggunakan
lapply(). Buat vektorgl.aplsberisi 1000 nilai ini dengan mengeksekusi kode yang menggunakanunlist(). - Plot histogram panjang lintasan rata-rata dari 1000 graf acak menggunakan
hist()pada vektorgl.apls. Tambahkan garis vertikal putus-putus berwarna merah ke plot menggunakanabline()dengan x-intercept berupa nilai panjang lintasan rata-rata graf asli,g.apl. - Hitung proporsi jumlah kejadian ketika nilai panjang lintasan rata-rata graf acak
gl.aplslebih rendah daripada nilai graf aslig.apl. Ini pada dasarnya adalah probabilitas bahwa kita akan memperoleh panjang lintasan rata-rata yang teramati secara kebetulan, mengingat kerapatan dan jumlah simpul graf aslinya.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
library(igraph)
# Generate 1000 random graphs
gl <- vector('list', 1000)
for(i in 1:1000){
gl[[i]] <- erdos.renyi.game(n = gorder(g), p.or.m = gd, type = "gnp")
}
# Calculate average path length of 1000 random graphs
gl.apls <- unlist(lapply(gl, ___, directed = FALSE))
# Plot the distribution of average path lengths
___(gl.apls, xlim = range(c(1.5, 6)))
abline(v = ___, col = "red", lty = 3, lwd = 2)
# Calculate the proportion of graphs with an average path length lower than our observed
mean(___ < ___)