SchoolsStructure
Материал из Letopisi.Ru — «Время вернуться домой»
Социальная структура школ
Содержание |
Извлечение данных
Предварительная обработка данных
Анализ и визуализация данных в R
Получаем граф из данных
rm(list=ls()) hist <- read.csv(file.choose(),sep=";", as.is=T, header=T, encoding ="UTF-8") ## hist - as a history - если есть необходимость hist <- na.omit(hist ) ## df <- data.frame(User= (hist[,1]),Document=hist[,2]) # Agent vs Object net <- graph.edgelist(as.matrix(df)) V(net)$type <- bipartite.mapping(net)$type # превращение в двумодальный граф
Визуализация графа
V(net)$color <- c( "red", "steel blue")[V(net)$type+1] V(net)$shape <- c("circle", "square")[V(net)$type+1] V(net)$label <- "" V(net)$degree <- degree(net) # plot(net, edge.arrow.size=0.1, vertex.size=2, layout=layout.kamada.kawai) # Best choice E(net)$weight <- ifelse (hist$Action[E(net)] == "create",10,1) # повысим вес связи создания E(net)$lty <- ifelse (E(net)$weight < 10, 3, 1) plot(net, edge.arrow.size=0.1, vertex.size=2, layout=layout.graphopt) #
Оставим в одномодальном графе документы
Получение одномодального графа
users <- bipartite.projection(net)$proj1 users V(users)$color <- "red" plot(users, edge.arrow.size=0.1, vertex.size=2, layout=layout.graphopt) # idx <- V(users)[degree(users)==0] V(users)$degree <- degree(users) g2 <- delete.vertices(users,V(users)[degree(users)<=1]) plot(g2, edge.arrow.size=0.1, vertex.size=2, layout=layout.graphopt) # plot(g2, edge.arrow.size=0.1, vertex.size=2, layout=layout.fruchterman.reingold) doc<- bipartite.projection(net)$proj2 V(doc)$degree <- degree(doc) g2 <- delete.vertices(doc,V(doc)[degree(doc)<=1]) V(g2)$color <- "steel blue" V(g2)$shape <- "square" V(g2)$shape <- ifelse (hist$Doc.Type[V(net)] == "document","pie","square") if (hist$Doc.Type[V(g2)] == "presentation" ){V(g2)$shape == "rectangle"} V(g2)$doctype <- hist$Doc.Type[V(g2)] set.seed(3952) plot(g2, edge.arrow.size=0.1, vertex.size=2, layout=layout.graphopt) #
Метрики и как они считаются
graph.density(gm) # Density (No of edges / possible edges) clusters(gm)$no ## # Число островов - не связанных между собой компонентов diameter(gm) ## Diameter of the graph measure the longest distance between any two nodes # clusters(gm, mode="weak") # Connected Component transitivity(gm, type="global") # Global cluster coefficient centralization.betweenness (gm, directed = FALSE, nobigint = TRUE, normalized = TRUE)- централизация по посредничеству largest.cliques(gm)