{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Your feedback\n", "\n", "**Go to [this online form](https://forms.gle/wQMj2GV4XPFNJEuS7) and fill the Survey \"_Mid Term Feedback\"_.**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Overview\n", "\n", "In this class, we will learn more about networks. You will get an overview of concepts such as Assortativity, Centrality and Communities.\n", "The lecture is structured as follows.\n", "\n", "* __Part 1__: Learn about Centrality and Assortativity with a lecture from Sune. Apply the concepts to undertand a bit more about the structure of our network of Computational Social Scientists. \n", "* __Part 2__: Learn about Community Detection with a lecture from Sune and an exercise related to the famous [Zachary Karate Club Network](https://en.wikipedia.org/wiki/Zachary%27s_karate_club). Then, apply what you have learned to study the network of Computational Social Scientists.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Part 1: Centrality and Assortativity\n", "\n", "We will start by learning about some advanced concepts in network science: Centrality and Assortativity. Then, we will apply these concepts to learn a bit more about our network of scientsits. \n", "\n", "> **_Video lecture:_** [Network measures.](https://www.youtube.com/watch?v=IOWXZFOyk9Y)\n", ">\n", "> **_Reading_**: Learn about assortativity by reading [Chapter 7](http://networksciencebook.com/chapter/7#introduction7). The important parts are in sections [7.2](http://networksciencebook.com/chapter/7#assortativity) and [7.3](http://networksciencebook.com/chapter/7#measuring-degree)." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/jpeg": "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\n", "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import YouTubeVideo\n", "YouTubeVideo(\"IOWXZFOyk9Y\", width=600)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's dig in and try to understand more about the network of Computational Social Scientists using more advanced features. If your network has more than one component, just work on the giant connected component (GCC) in the exercises below. For the exercises below, you shall use the network you built in [Week 4](https://github.com/lalessan/comsocsci2023/blob/main/lectures/Week4.ipynb).\n", "\n", "\n", "> **Exercise 1: Mixing Patterns and Assortativity.** \n", ">\n", "> * For each node, compute the fraction of edges that connect to a node that works in the same top field. Find the average value across all nodes.\n", "> * Create a new graph, with the same nodes and edges, but where the association between nodes and field is shuffled. Compute the measure above for this randomized graph.\n", "> * Repeat the point above 100 times (at least). Plot the distribution of the values obtained and compare it with the value you have found for the real graph. Is the chance to connect to a member of the same field significantly higher than it would be by chance?\n", "> * Compute the assortativity coefficient with respect to author's field. How do you interpret the value you obtain? (__Hint__: See [this paper](https://nbviewer.org/github/suneman/socialgraphs2019/blob/master/lectures/Week5.ipynb), eq (2)). **Important**: here I do not want you to use the NetworkX implementation, but rather to implement your own version of the measure. \n", "> * Is the graph assortative with respect to the degree? (e.g. do high-degree scientists tend to link to other high-degree scientists, and low-degree scientists to other low-degree scientists?). Provide an interpretation of your answer.\n", "> * _Optional:_ Estimate the gender of each author from their name, using the [World Gender Name Dictionary](https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/MSEGSJ). Repeat the analysis above to study the assortativity of the network by gender rather than by field. What do you observe?\n", "\n", "> **Exercise 2: Central nodes.** Remember to write your answers in the notebook. \n", "> * Find the 5 most central scientists according to the closeness centrality. What role do you imagine scientists with high closeness centrality play? \n", "> * Find the 5 most central scientists according to eigenvector centrality. \n", "> * Plot the closeness centrality of nodes vs their degree. Is there a correlation between the two? Did you expect that? Why? \n", "> * Repeat the two points above using eigenvector centrality instead. Do you observe any difference? Why?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Part 2: Community detection." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will continue the analysis of our network of Computational Social Scientists.\n", "We will start by learning about community detection with a lecture from Sune.\n", "\n", "> **_Video Lecture_**: Communities in networks. \n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2MBERISGBUYLxoaL2NCOEJjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY//AABEIAWgB4AMBIgACEQEDEQH/xAAbAAACAwEBAQAAAAAAAAAAAAAAAgEDBAUGB//EADwQAAIBAwICBQsEAgEDBQAAAAABAgMEESExBRIyQVFTkgYTFiIjM2FxkdHSFBVSgUJDsSQ0oWJygsHh/8QAGAEBAQEBAQAAAAAAAAAAAAAAAAECAwT/xAAeEQEBAQEBAQEAAwEAAAAAAAAAARECMRIhA0FRE//aAAwDAQACEQMRAD8A+fgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdaXk/dxSbqUdf/U/sL+w3XeUfq/sTYuVywOg+EXCeOel9X9iP2i4/nT+r+w1MYAOh+0XH86X1f2D9nuP50vq/sNMc8Do/s1x/Ol9X9g/Zrn+dL6v7DYuOcB0Hwe4X+VP6v7ELhFd/50vq/sNhjAB0lwS5e1Sj9X9if2O5/nR+r+w2GOYB0/2O5/nR+r+wfsdz/Oj9X9hsMcwDp/sd1/Oj9X9g/Y7nvKP1f2GwxzAOp+w3XeUfq/sT+wXXeUfq/sNhlcoDrej933lHxP7E+jt33lDxP7D6hlcgDsLybvH/ALKHif2J9GrzvaHif2H1D5rjAdn0Zve9t/E/sNDyXvZ7VbfxS+w2GVxAO96JX/e23il9g9E7/vbbxS+w2GVwQO96JX/fW3il9g9Er/vrbxS+w2GVwQO/6I3/AH1t4pfiHojf99beKX4jYZXAA7/ojf8AfW3il+IeiPEO+tvFL8RsMcADvvyR4gv91t4pfiC8kOIP/dbeKX4jYZXAA7/ojf8AfW3il+JPohxDvrbxS/EbDK8+B6D0Q4h31t4pfiR6IcQ7628UvxGwyuAB3/RG/wC+tvFL7EPySv1/ttvFL7DYZXBA73onf97beKX2Ifknfr/bbeKX2GwyuEB3l5J37/223il9iPRS/wC9tvFL7DYZXCA7j8lr5f7bfxS+xHove97b+KX2GwyuIB2vRi97238T+xHo1ed7Q8T+w+oZXGA7fove97b+KX2D0Wvu9t/FL7D6hlcQDueit93tv4pfYPRa+7238UvsPqGVwwOzLyavI71bfxP7AvJq8f8AtoeJ/YbDK4wHY9G7zvKHif2Ffk9dr/ZQ8T+w2GVyQOjLgtzGWHOl9X9hlwO5e1Sj9X9hsMrmAdT9huu8o/V/Yj9iuu8o/V/YfUPmvT1OhEqLavu4lKObbLU6bIJqdNkI0ykkgkgZDCoYKMCygmMSBSuaBbGonuGBXDsAtySUpuJYpJkU6Fe6JQr6QFrJRDJRKsOh0IixEUyHQiHQEllDcrLaG5Roewq3G6imc1B5eyCL+ohNGOpcupnkemOpmenOryvmrJ5010GrjqtrtKKl1CK0nFv5mCU3FYnUj8nIonWhB5jNZfYs5Gny6NDiVKpPkk+SWcYZtTPN1bx49pThL4Nai0+IcrXLUlBdSzlDTHppbBDY4X7xOEllwmuvBttOMWtfEXNU5vqloVMdDrGK1OOd0WBEMgkAIFkMLICERIZCyAIkPcmJD3Cq5biMeW4jMqgR7jiPcCxDoVDxQAJJ9g8hVHrYRTJCl0yp9ZQdRTLcuexRUeoGKv7wtp7FVbposp7EU7IZLICrqvuolJdV91EoNMM9TpsUap02KjSJJIJQQ6JRCJRFBIE4AgCQAjGRXHGxYDIpIya3JTzInCYmGpAaGShVsMiVYdDoRDoKdDoVDIgYsoblZZR01YF1WahBts4ta7lzy5Vzf2Rxe8U5ebhlJbtHIjyuWZOr/WhSNVa7UdccsmUq5dRc0VJ/1lFValGfL7SfLnVzzkZV6FvH2c6zeMes00FWwry2cYrsb1RRc3E4f4p/+1//AEZ61151/wCL+CM8ptPVNfMsia007tTerwx9G20s57ZGHl5vmXU45SjLOE+ouBa1SUZaPT4MaNWdWLahhJZyaqNHLnmOYvRrqQ1ShGFF8meZxXyZNhlJbcSrwWOd9mrPSWfFlU5KSi28dJ7Hl3bOEHJZbWrN9g+Zqrjlz/igY9fGSksolmXh0+enhyybMIMkFkWaCyQCoiRKIkARFe40SHuBVLcRjy3EI0hiPcdlctyC5FsEUxZfTAhoVlkhWsIIpmVPctqMpbKJexlrGrqM1fcDHV6SLKexVV3RbT2CnZBLFCtFb3USg0VvcxM2SsM9Tpsgmp02KaZMShSdQGQ6K0OiKZEkEagSGCMsMsB8BgXLJyRUkLpEohdIIslJR3Gi8ox8QqeagpFlnVVSmnkNRrRYitDxIqxDoRDogk53EbyVPFKk8PGZNGq8q+aoSkt+o81VrSbcm8vtKHr1o41bk/gZJ3zi+XEmvmU1OebzuJyyf+JqSF1plX84nhKS7Huih0ZSeVGMV8xqcJdSfyZspUamPgTcWTWH9O89T+Rqo29ScMNZXYzo21m3hyjlHUt7JYeY4M3pufxuJQ4drtob6fDlplanXjQS2RZ5pLqM66TmOfC0jCLSW4lS0TWEdNwwVyjqTVxx69m8Z301RRQjGhzaYedY7/2dyVNMwX1pmPPHSSLKx1yusbunzc0W12pnag1OKcXlHkKeVLmT+aZ2uG3Elik3o9jccbHWwQ0JmQKUisnSIkStURIAjsK9xo7CvcKqluKNLcUilZVLctZTUeGQWxZopsyQkjTTYFjIexDepDehUUVCpltTdlTAZdEz19Fk0rYqqpNAc2rqyylsFaOGRTCrCGDIA1VvcozGmv7hfMymmVFTpsUap02KGTIkUkoZDIVEoinJIJAgAACQAGQSQukSQukBm4unK2eDDwW4eXCT2OnxDDt5ZPOWlXzd4mtmzU8HsIsdFFCXNTTL4mG1iHRWh0Bj4rUcLZ40T3PNVakOv6Hd49LFGC6snnqNN1rhL+ywa6FDnx6uDZCyTexbQp4N1KK6jna7c8stPh/yZrpWiSw0aYR07C6NPTczreK6VBRNCikiYwUVqyXNbRWQoS7ETgFzPcbAQkkVSWpe4lU4hVOzFnHmTyPJYFA4d5SdKq5QHtK6hUjJr1kaL2OrOc8wn2r4G449R7ClNVacZpbhJHM4Hc88JUW9tUdSRtyoiLMaJEwiI7CvcaOwr3CqpbiDy3EZFQzHeS5Y5NbMPEHimwGs6nOjoQehx+HS0OvB+qREc2Zlj2M6ftDR1AUVCIrI1Qq5miixlMy2OqEqbgYLjpCU9yy56RVDcKsyQSQBrr+4/syGuv7j+zGaZVVOmxSanSZBWUkkEgSiUQiUA6JFQxFAAAEoGCBgHUEekieoiPSAp4nLFszyylifN8cnpuLP/pmeXNcp09bw2pz0I/I3xOJwOrmil2HaiYrcWodFcR4kVyvKBvzUFjTtOZw2n605Y+B1OPZdOlrpnYw2OlN/MXxefW+l8djXSfVFf2ZKS7djVTk30Vp2nKvRGmKk92WrkitZ/wDkogl1stjGKltkjR1OmtN2PGqs6R1BKJK5chDLnfwG5e1kZeNEK4t7tlEtLtFwu0aMIL4/MHhLYCppFUtC5tN6FU92Bgu1nQ51aL5Wde4p80crc5twmjcc+ong9ZUr6HM9HoeomeOh7OpGXYz1sJqpRhNapo241ZEiZMSJhlEdhXuNDYV7hVMtxRpbisilZg4j7pm9nP4j7pgc+0ufN5XxO7Z1PO08nk4dJ/M9Nwx+xRbHOW618iUsk5GZCRG1VQqZbU3EAeC9Urqoup9Erq7gc+53KYbl93uUQ3AsIAArZX/7f+zGa63uP7MeTTKqfSICfSBFZSCAkCSUQSgGW4wi3HIoJIJQEkMkGAdREekHUEekgMfGZYtzzR6Ljb9gedNRmutwOpibj8T0cWeS4ZPkul8T1dJ5gjPTfPi9DoriWIy0wcap81opfxZyrF+q0ehuaSrW8oPrWh5m3bpV3F6POB/Sz116eyNcE8aaIx0n6upfGrFL1noc3olaoxj25L4QS1MMb2hDRyNVG8pT0T3Ji61pJInrxgVS5ojprGSgByil6xluK8qcZcv9HOuqlzXkop4j8CxK6lS7pQ/zRjq3aezMlLh1WcvXk4o3UuHUILDqNv4sJ+sjvJcyxqjRC7UoessmuNpSjF8qiZ6lBLRIGU26OfxCHLiS2ZtpLRrs2Kb+ObaTW61EL45jWzPS2PLHh9Nzlh42OFZxVWrGL1TO5GOIqPUtC2s88S+tMXlZWxE9hafqxSyNPY1Lrl3z80Q2Fe40NhGVhVLpCMaW4rI0VmDiPuWbmYOIe6YHEpQcpPC6z0fDU1SWTk8PpqTZ3KCUYpItZk/tc2PHYrLIdEgpqblZbU3K+oKsp9ESsW0l6olZBHOuzNDc1Xi0MkNwq0AAK11vcf2YjZW9w/mYjTKufSBEVOkCKyYkgkCQQAQMhhBwqSUKSgHFYwr3AgI9IlrQXOAMHG37A8+d7jLzQOCbjNWW8uWvB/E9daS5qUTx0XiSZ6vhsuahH5GemuXQiWRKolkTDZzhcYoeau4VorEZb/M7pRe236qyqQx6y1XzA5NSr5uGFuzO3XrT5acXJ/AMOrUinpojs2kKdvSy9EutmfHWfrm0+G1m8z9U30rd08NvbYS64pTh6uVHO2Vlv+jLHiPPJKMub4YaH6v5HcoVk1hvU1waZ5v9S2+ZHYsbnnpLO5muk/WivRUlqUNKOnWaJVMoq5IzUm9+pAYLipVrVFSpNpbPHWci5VeNzKk5uL5+X/8ATtSpzp1VPKTWyRM7Kne1FOu02uvBvmyesd82+VyrOd3DzjjVdTkny47f7OvQrznH2iafx3NlK2o0o4pxX9IJUl2E6unMxXGKxkSpBSTT2ZbGONGRNGW3DtVK24pGD6L2PRUUqkMKWe04t+uStCqlnDydSFSKoqpTeMrODSc/lXxyqnKyyWxVTnz8si2exeXL+b1MNhJbsaGwktzTipluKyZbisiokYOIe6ZtbMPEPdMKy8N3Z2aWxxOGv1n8ztUXoEXFtPYpLqfRCKqu5X1FlYqWwF9Doi10NQ6Itco5170THT3Nl90DDS3Iq8gkArVW9w/mYTbV9w/mYM6mmST6QIifSBFZOiUQiUAwAAEjlY+SKklC5JyA6Yr3IyGdQH6imbx9SxvQpqPVfMDBxd+xOIdniz9ijjG4zQel4PLNCPyPNHf4JL2SROl59duLLEUxLYs5uiwz3TkorEml8GXoWdPztKSW+5KvPrixpuNRvsbT/wCSb64moxhDVvb5l2MTaZEqWZprVk12zGWpYKdGFSEs1V0k3qyyxtKkJxqVYrEU0lnfPadGmkkuaCyFRSmuxfAv2z/zm6yeZUMycl8EjVYZzgonHBpsFqYrrPW9rAvK39yyemoRw9g0p8xLOXqWwhjqLEmNjO5WcEdESCixuVbshhHHJVURe9CmprkK515SdSPLF41Low/6elST1bwFU02aTpqeNVsVmerFHzfKn1FlSSwY+I1JqHs+k2h6PNKkuY3y4/y39aoP1RJbsmGkRZdZXJTJ6iky3FyRUS0MF/7pm2bMF/7plGThr9Znao7HD4c/WZ26L0ILy+l0TOaKHRCKqxSi6vuyqJRfb9EW4RbarMWRcrQDl3q9Qw09zoXq9l/RzobkVcBGQyFa63uJHPyb6r9hI55pks+kQgluCKysRIqJAYCAIpiRSQJJFJAkjIEZAbOhTVeqLCmrugMXFfco452OKe5OObjNB2eCS0wcY6vBZYk0OvF59eiiWRZTFlsWcnRYW0NyksoPUDLxGj5uoqiWkiulFNZOhe0/O27XWtTm0JYWGZ6duLrSlhETloSnlCtZZh1xnq7Nmix9VZKbiOiRrsVGWmSjVhyXzKpRnHOEbE4Rg8bmedzBPDTb7EslwTRrTTxNb9ZpTTMkq0JQwk0+xrBohFOC7QLUidCtNpjZAWeMGeRdORTLITWStuabeXLboy1tzVbpeYiWRjrr5DhzPMizaJKREmbcLduni9BJMmL0EkwyrluK2D3EkRoSZgvvds2NGK+92yoycP6TOzQehw7B4k/mdmg9EKkacmm32ZlNVtqmBkvasoT0K6VRyjk0XkIvOhXbQTjsXEbLLWBN0vVL+G004se/pJQLia4V77n+jmQ6R2L+GLf+jiwfrGbG4vBvAuRZSCt1X3Ejn9Zvqv2Ejn9ZWUS3BES3BFZOmMIiUyBgyQCCpyMmITkBski5DIDEMCGBOSms9UW5M9d6oDLxP3KOQdbiXuUck3GaDdwqfLcY7TCaLKXLcxFJ69XB6ItizPReYIvicnVamPQepUiyg/WA1vVYONXi6NxJdR2DFxClz0udLWP/AAKvFyqaUso0U1kx0Xoa6MtNTm9UukuorOVuYo3VWnVzGGhoua3rNGaCy9tSxK20rqVR7cpopbaPGSqjQXLktpvllylDqMVLmerL41ktGVuK0fUK46kVe6yYRqprQzrCe5PMlrjQItbEkxU9NytyyyIpq75NdD/t4fIx1WbKelGC+Bvly/kWpiSZKegknqacTp6CyYJ6CyYVU3qKyXuK2RUSZgv37Nm2Wxz+Ie6ZYjkULrzc38zp2nEoyljJxY0028jRioPKN4xr1P6yGM5LqPEacM+sjyjrzx0iuVaS/wAmTF16m64rS/kiq24vSxjmR5GpUlN6tiJtbM1jOvqHBbylVi8SRp4jWhybo+Z2PE7izkuSb5ew7M+KV7qkm2NwjrcSuIK1evUzhW1TnyzHeXlSfs8svsvVpozW42tlc5aFVeq47GWd36jUtzOK79T3EjBnU3VH7GRz3uVBLcEyHuCKydEipkgNkExSSKkkUnIEk5IQATkMkENgSZ679ZF5mrv10Bm4j7lHLOnxD3SOYbjNBZQeK0X8SsmDxNP4lR6u2eaaNMWYrKWaKNcTlXVch6PSKkyyj0iK2dQkkpRcXs1hjZ0FCOTjzdSUJbxeC2lU6h+IU+Wcaq69GZYy7DFjvz0Wrl1Wky+isNMjlXK5MyVbiqmlGmku1sNO1TqR5cOWCV5qD55VE/kedavakvUrYXYlglWd3NPzlaWH1ZLjf7/j0FXilvSXrSivmyh8SjJZp0pSzsYbThNKD5pLL+J1aVvGMeaWy2QXP9VKNetDmk/N52S1GpxnFYqPJqSe+CmrLVoyzTSfq6YKubXTYjmytBctFY0k/WkbYv2aMkY5kbKVOcqbcYtpPqNRjvxKegknqNtoxJPU05GT0FkyU9BJMCtvUVsG9SGwqJMwX3QZtkzDfdBiI4mcNkNky3YrOjCGympLqLGyiTywiAACoDbbXHJSwYhk9MEqxqg1Oo5M22ss5wc2DxA3WekTNbjXPDWpzL5RWx0Jy0OTdT56rEK9VUfsZHPe5um/Yy+Rgb1IB7giHuCKyZE5FJyA2SUKmSRUkikgSSKSBJDAGAGerHM8stlLCMc6jlPAFfEH7NHNOjfe6RzjcZoAlprdEFR6Lhk+aijoI43B5+pg7ETlXWeLUx6L9YqRZR6RFbOojJMIym8RTb+But+GSaUqz5V2BGHzDuU6SWcnKr0J21d06ixKL1PY06VKhF+bjj4nA4xDmaqdecCxrm/rnSa5SqUFLX/wTLOBKc8T1MY7SraMOV6bGpSgkslSwyWtNQ6Tqro1eqKL4KUmubYxU5S5sRibab5VqDV7eF8DNUjq5DTqdpXOWUGaRvGhGMsXdlsVjcrCYxwbrCtKjJtMyRXYXU9Av9PQSt6F5RTlBJtbrqOXc8Ir08unia/8m7hlTNBp9TNvNodJ+x57+V5SUZQeJpp/Erk9D1dWjSqrFWCku051zwWM8uhPHwYxHAb1FbNFzZXFs/aU3jtWxlbI0iTMV70GbGzDeP1GIjjSerEbGluxGdGCyehSWTZWVAAAEBKRBdCk5U209SLBBm62eEYI6PU127M1qLripy02cpvLNd5U/wATLBZkWJXq5v2MvkYHubpP2UvkYG9TLSSUKSEMSIMghkBCJQVI2BUSBOCcCt4Fc87AM2kK5NkYbJwAsl6rMT95/Ztn0WYpdP8AsoulBVI4ZELSmnnA62LIkWMHEacYRXKjnnY4hT56OUcc1yz06fB367O7E4nBac51MRg232I9lY8FlNKdxmK/j1mevWp459GjUrS5acHJ/A7FnwVx9a4l/wDFHVoW9OhDlpwUUW5SQw1XSo06McQiooic9H2BJ5En0WBVOTcTl8Th7FP4nUSzEx8QpOVtPHVqSrz689KBROLi89RucSqdPK2MO9jPTq5ZppvmeuxllScJPQvpT5FgYsrakoliksGSVTMdBVOXVkYv00ylpgreZPQWEZS30RbGOEXGbURj1FqjoCXKhorQCYotQqWB0RXS4X0KnzRub0Zj4fHFBvtkbHotTpz48/XqIy6hoyxo9ivJKeSoteGsNJrsZzrzg9C4zKl7Ofw2NyeCcgeRvbC4tH7SHq/yWxx71+oz6NJRnFxnFST6mcXifk5b3cG7eXmp9nUTDXzqW7EZ0OI8HvuH1JefoS5P5xWUc2TNsEYozFKgBLIFtNpLXcLIrwPGrKEeVJEyh2C7LBFxKeUWU6jiVJYG5sRwRcpas+eWR6CTlqUj03gt8Znr08n7OXyMLepsb9m/kYXuYbSSKMVEk5IABkxkyEiW1EgbBDmlsVSqNkpdoA25MZLBK0JAjLDJLIAN0Vuks5LCFlvCWWAso4QRN9twi8u2uSk4x7ZaHYtfJaCw7iq38I6EVwKdu665MZb6jZZ+Scq01KouSL+p622sLa1jilTS+JpzjZFGLh/CLWwhilTSfXJ7m7CRGSMgS5aFcphKQoEt4RXU6IzeWJU2AiC9QWrBSi09msDUnrgeSyijzVWHm6koPqeBeU6PE6GJKqlo9GYUjlfx6ObsUygVSglsa3FMh0dcoLjMossgsFip4ZYoIJhFl47B1hNk46kiHFtlXErVlkI4WBYQwyzrIJSHRBbaU/O10upasrNrq20OSjCPYiyq/VSCO4tV5njsOjgMhkUlsBsk5EyTkB09CcleScgPJRnHEkmuxo49/wCTPDL1uUqPm5v/AChodVMnmA8BxfyPurSMqtpL9RTX+P8AkjzMk4tqSaa3TPsuTica8nLPialUUfNV8aTj1/MsrNj5oBfd2layuJ0K8eWcHhlBpk0ZNDbiIdbErpwkRkti5EOqATwwRIZx6TPs38jE9zX/AIP5GN7mGkoZCIujDrZUQlkfCjuLKoo6Ipc3JkFsqvYIsyIUSxACWBkKTkBiRckhUkNgQwiT0nk7w3zfNWrwTm16qfUc/glmqs/P1FmMein2np7VpTkvgFalosLQnIjepKYDZJyJkHIBnIrciGxdQptQyCXxIAELMfqK5PLKIWU0y7fUqGpz15WEJWpKpBwltI4lWlKlUcJbo9A0ZLy18/DMemtviZ6mt8dY5CWo+AcXFtNYa3GWxzdtI4gizArWEFRog0IbXWiObG+xRYsIbcrhq87IfOXyx1CWm1bxFZb2R1rS3VClh6yesmU2dt5r16nTey7DYuw6cxx6638OmknJ9RTnLyTVmuiuoTJWDZDIuQyA+QyJkMgPknJXkjmCrck5KuYnnAsyQ5Cc4spBHL43wmjfLzvKudaP4o8fxDgNW2TnTTcV1H0Fv1X8ji8c4hQpWUk8c22CeHrwKQwN5k32kGln4WRAzRGCsWBEgDA9D/g/kY3ua2/UfyMb3MKeElF5wROq2Vyy9iYxKJWXuOlghIkgZEoUlASMKSBJORSQJGpU3VqxhHdsQ6HC6OZuq1togrt2sVSpxhHRRWDbQlitH46GKkXqWGn2GWnQbBMrbT17SFJmkXZIbFyGQJJF/obIB1AiGSgCTE0JYr3AnKSETJkxQi+ElJfEllMXh5RapJ/Moz3FrGtqvVn29pgqUZ0niccfHqOwGFs0S861OrHFUc6oWcXk68ralLXlS+WhXKxpy/ykv7M/Nb/6RyJrlW2pW08PMvkdr9vovpcz/senaUKXQpRT7cZL8l/kjl21vVqwWINLrb0OnbWsKGvSn2l+CcGpJHO9WpQs5qCx1sidRLRblTfaEMsE5FDIE8wZIIAnINi5DIDNkZIyAEhkggKbJDZBABnRngvKOnKnxOabbjJKSTPdy0ieT8saOJ0Ky68xYI80QBC3KVJBLwRkrNBDJFYSu9zeq/kZXuZf19XGOWH0Yn6up2RJhrdklMwfq6nZEn9ZU7I/QYa35Jyc/wDWVP4x+hP62p/GH0GGuhkk5366r/GH0ZP66r/GH0ZMproobJzP19X+MPow/X1f4w+jGU108k5OX+vq/wAYfRk/uFX+MPox8011Irnkord6HdtqahTjFbJHkKfE61OamoU212p/c1x8pLyO1Kh4X9x81ZY9jAtWx4xeVN8v9Vv4Zfcf0sv+5tvDL7k+av1HuaU8wS60OeEj5XX8XlUbbwy+4/plxHubXwy/IvzT6j3KZOTwvplxHubXwy/IPTPiPc2vhl+Qyn1HvCUeD9M+I9za+GX5B6acS7m18MvyGU+o93nLBs8IvLTiK/02vhl+QemnEe5tfDL8hifUe5fzF6zw/pnxHubXwy/IPTLiPc2vhl+RcPqPcPcg8P6Y8Q7m18MvyJ9MuI9za+GX5DDY9uic6nhvTLiPc2vhl+RPplxHubXwy/IYbHu41NNdSxST2PAemXEe5tfDL8g9MuI9za+GX5DDY+gEYPAry04kv9Vt4ZfkT6a8T7q18EvyGJse9wGx4H014l3Vr4ZfkR6Z8R7m18MvyGGvfOaXxElNv4HhPTPiPc2vhl+QemXEe5tfDL8hhse40I1PD+mXEe5tfDL8g9MeI9zbeGX5DF17kPmeG9MeI9za+GX5B6Y8Q7m18MvyGGvcZIPEemPEO5tfDL8g9MeIdza+GX5DDXt8hlniPTHiHc2vhl+RHphxDubXwy/IYa9wCPD+mHEO5tvDL8g9MOIdza+GX5DDY9u2Ge08R6YcQ7m18MvyD0w4h3Nt4ZfkMPqPbZBnifS/iHc23hl+Qel/EO5tvDL8hh9R7SWxxfKil53hEpY1pyUjiPyv4g/9Nt4ZfkUXXlJeXVtOhUpUFCaw2ovP/Iw+o5WSBQKmpAgCpqSAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//2Q==\n", "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import YouTubeVideo\n", "YouTubeVideo(\"FSRoqXw28RI\",width=800, height=450)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> **_Reading_**: [Chapter 9 of the NS book.](http://networksciencebook.com/chapter/9). You can skip sections 9.3, 9.5 and 9.7. \n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> __Exercise 3: Zachary's karate club__: In this exercise, we will work on Zarachy's karate club graph (refer to the Introduction of Chapter 9). The dataset is available in NetworkX, by calling the function [karate_club_graph](https://networkx.org/documentation/stable//auto_examples/graph/plot_karate_club.html) \n", ">\n", "> 1. Visualize the graph using [netwulf](https://netwulf.readthedocs.io/en/latest/). Set the color of each node based on the club split (the information is stored as a node attribute). My version of the visualization is below.\n", ">\n", "> 2. Write a function to compute the __modularity__ of a graph partitioning (use **equation 9.12** in the book). The function should take a networkX Graph and a partitioning as inputs and return the modularity.\n", "> 3. Explain in your own words the concept of _modularity_. \n", "> 4. Compute the modularity of the Karate club split partitioning using the function you just wrote. Note: the Karate club split partitioning is avilable as a [node attribute](https://networkx.org/documentation/networkx-1.10/reference/generated/networkx.classes.function.get_node_attributes.html), called _\"club\"_.\n", "> 5. We will now perform a small randomization experiment to assess if the modularity you just computed is statitically different from $0$. To do so, we will implement the _double edge swap_ algorithm. The _double edge swap_ algorithm is quite old... it was implemented in 1891 (!) by Danish mathematician Julius Petersen(https://en.wikipedia.org/wiki/Julius_Petersen). Given a network G, this algorithm creates a new network, such that each node has exactly the same degree as in the original network, but different connections. Here is how the algorithm works.\n", "> * __a.__ Create an identical copy of your original network.\n", "> * __b.__ Consider two edges in your new network (u,v) and (x,y), such that u!=v and v!=x.\n", "> * __c.__ If none of edges (u,y) and (x,v) exists already, add them to the network and remove edges (u,v) and (x,y).\n", "> * Repeat steps __b.__ and __c.__ to achieve at least N swaps (I suggest N to be larger than the number of edges).\n", "> 6. Double check that your algorithm works well, by showing that the degree of nodes in the original network and the new 'randomized' version of the network are the same.\n", "> 7. Create $1000$ randomized version of the Karate Club network using the _double edge swap_ algorithm you wrote in step 5. For each of them, compute the modularity of the \"club\" split and store it in a list.\n", "> 8. Compute the average and standard deviation of the modularity for the random network.\n", "> 9. Plot the distribution of the \"random\" modularity. Plot the actual modularity of the club split as a vertical line (use [axvline](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.axvline.html)). \n", "> 10. Comment on the figure. Is the club split a good partitioning? Why do you think I asked you to perform a randomization experiment? What is the reason why we preserved the nodes degree?\n", "> 11. Use [the Python Louvain-algorithm implementation](https://anaconda.org/auto/python-louvain) to find communities in this graph. Report the value of modularity found by the algorithm. Is it higher or lower than what you found above for the club split? What does this comparison reveal?\n", "> 12. Compare the communities found by the Louvain algorithm with the club split partitioning by creating a matrix **_D_** with dimension (2 times _A_), where _A_ is the number of communities found by Louvain. We set entry _D_(_i_,_j_) to be the number of nodes that community _i_ has in common with group split _j_. The matrix **_D_** is what we call a [**confusion matrix**](https://en.wikipedia.org/wiki/Confusion_matrix). Use the confusion matrix to explain how well the communities you've detected correspond to the club split partitioning." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\"Drawing\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> __Exercise 4__: Community detection on the network of Computational Social Scientists. \n", ">\n", "> * Consider the network you built in [Week 4](https://github.com/lalessan/comsocsci2023/blob/main/lectures/Week4.ipynb).\n", "> * Use [the Python Louvain-algorithm implementation](https://anaconda.org/auto/python-louvain) to find communities. How many communities do you find? What are their sizes? Report the value of modularity found by the algorithm. Is the modularity significantly different than 0? \n", "> * If you are curious, you can also try the *Infomap* algorithm. Go to [this page]. (https://mapequation.github.io/infomap/python/). It's harder to install, but a better community detection algorithm. You can read about it in [advanced topics 9B](http://networksciencebook.com/chapter/9#advanced-9b).\n", "> * Visualize the network, using netwulf (see Week 5). This time assign each node a different color based on their _community_. Describe the structure you observe.\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\"Drawing\"" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.7" } }, "nbformat": 4, "nbformat_minor": 2 }