Neste conjunto de vídeo-aulas mostrarei apenas como usar R para analisar redes. Para entender em maior detalhes os conceitos apresentados, sugiro que você visite o canal do Youtube , The art of network analysis by Symbio6 . Em especial assista aos vídeos sobre centralidade. Assista também ao vídeo "what is clique".
Introdução à análise de redes sociais ( pacote igraph) (3 min 27 seg)
Calculando os graus dos nós de uma rede (função "degree") (2 min 40 seg)
Calculando a intermediação de cada nó e a densidade de uma rede (2min 27 seg)
Identificando o número de cliques (subconjunto de atores próximos e intensamente conectados) (2 min 45 seg)
Visualizando autoridades, hubs e comunidades (9 min 5 seg)
library(igraph)
# CARREGANDO DADOS ARQUIVO CSV E PLOTANDO REDE
arquivo= read.csv("REDE.csv")
rede= graph_from_data_frame(arquivo, vertices= NULL)
plot(rede)
# ANALISANDO A REDE
# DEGREE (GRAUS)
degree(rede)
degree(rede, mode = 'all')
degree(rede, mode = 'in')
degree(rede, mode = 'out')
# INTERMEDIACAO
# intermediacao( pontes entre individuos= INTERMEDIACAO)
# mede os individuos que controlam o fluxo pela rede
betweenness(rede)
#DENSIDADE
# mede a densidade( numero de conexos/ numero de possiveis conexoes)
# uma rede completa tem densidade igual a 1
edge_density(rede, loops = F)
# NUMERO DE CLIQUES
# clique eh um sub-conjunto de uma rede onde os atores estao mais proximo
# e intensamente conectados
clique_num(rede)
# mostra os subgraficos com no minino 3 nodes
cliques(rede, min = 3)
# IDENTIFICANDO VERTICES E EDGES
V(rede)
E(rede)
str(V(rede))
str(E(rede))
# CRIANDO UM HISTOGRAMA DOS GRAUS DOS NOS
graus = degree(rede)
str(graus)
class(graus)
# grafico de barras dos nos
degree(rede)
barplot(graus,col= "green", main= "Grafico de barras",
xlab = "Nos", ylab= "Graus")
# histograma
# mostra quantos nos tem por de 1 a 2 graus, de 2 a 4 etc
hist(graus,col= "green", main= "Histograma dos graus do nos",
xlab = "Graus", ylab= "Numero de nos")
# MELHORANDO A VISUALIZACAO DA REDE mostrando os graus
plot(rede,
vertex.color= rainbow(52),
vertex.size = graus*10,
edge.color= "blue",
edge.arrow.size= 0.5)
# hubs e authorities
# hubs mede o numero de links de saida
# exemplo: uma webpage com um grande numero de links para outras paginas
hs = hub_score(rede)$vector
hs
# hubs mede o numero de links entrada
# exemplo: uma webpage apontada por varia outras webpages
as= authority.score(rede)$vector
as
# plotando hubs
plot(rede,vertex.size = hs*30, main= "Hubs",
vertex.color= rainbow(52), layout =layout.kamada.kawai)
# plotando autorities
# autorities sao os nos mais apontados
plot(rede,vertex.size = as*30, main= "Autoridades",
vertex.color= rainbow(52), layout =layout.kamada.kawai)
# ENCONTRANDO COMUNIDADES ( NOS DENSAMENTE LIGADOS)
comunidades = cluster_edge_betweenness(rede)
plot(comunidades, rede)
# melhorando
plot(comunidades, rede)
Nota: neste conjunto de vídeo-aulas usarei como referência o website Statistics Globe de Joachim Schork
Visão geral das funções de combinações de arquivos do pacote dplyr (4 min 46 seg)
Aplicando as funções de combinações de arquivos ( 6 min 39 seg)
library(dplyr)
# Referencia: Statistics Globe
df1 <- data.frame(ID = 1:2,
X1 = c("a1", "a2"),
stringsAsFactors = FALSE)
df2 <- data.frame(ID = 2:3,
X2 = c("b1", "b2"),
stringsAsFactors = FALSE)
str(df1)
# busca os dados das linhas que estao em ambos data frames
df.inner_join = inner_join(df1, df2, by = "ID")
# toma como referencia as linhas do primeiro data frame
df.left_join = left_join(df1, df2, by = "ID")
# toma como referencia as linhas do segundo data frame
df.right_join = right_join(df1, df2, by = "ID")
# junta os dados dos dois
df.full_join = full_join(df1, df2, by = "ID")
# semi_join: retorna todas a linhas de df1 cujo ID tb esta´em df2
df.semi_join = semi_join(df1, df2, by = "ID")
# anti_join: retorna todas a linhas de df1 cujo ID tb NAO esta´em df2
df.anti_join = anti_join(df1, df2, by = "ID")