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)

Персональные инструменты
Инструменты