Сетевой анализ в изучении цифровой дипломатии
/Глава 14
  • Денис Вакарчук
    Автор
В мировой политике все акторы или события в разных частях системы влияют друг на друга. Любые субъекты мировой политики, которые тем или иным способом связаны с другими субъектами, могут быть представлены в виде узлов и проанализированы посредством сетевого анализа. Этот метод помогает понять, как формируется структура связей, как эта структура определяет поведение акторов и какое место в этой структуре они занимают.

/01

Сетевой анализ как метод

Сетевой анализ уже довольно продолжительное время используется для решения научно-исследовательских задач в социальных науках. Для науки о международных отношениях этот метод также не является чем-то новым. Политологи-международники адаптировали сетевой анализ для решения исследовательских задач еще в 1960-е гг. Однако именно в 2010-е годы этот метод приобрел особую популярность как в зарубежной, так и в отечественной международно-политической науке. Связано это, с одной стороны, с цифровизацией международно-политической реальности, а с другой стороны — самой международно-политической науки.

Сетевой анализ в международных отношениях

Независимо от предметной области, в основе применения метода сетевого анализа всегда лежит исследовательский интерес к связям между акторами или узлами сети. В качестве таких узлов могут выступать государства, международные межправительственные или неправительственные организации, отдельные лица или группы лиц, представляющие интерес для исследователя. Связи между субъектами мировой политики могут быть столь же разнообразными: в частности, торговые потоки, соглашения об обороне, членство в совместных международных организациях, соавторство проектов резолюций или цифровое взаимодействие. В качестве единицы анализа может выступать как структура сети, так и отдельный ее узел — актор.
По сути, исследователь, использующий сетевой анализ, заинтересован в понимании того, как формируется та или иная структура связей, как эта структура определяет поведение акторов, какое место в этой структуре занимают те или иные акторы и почему они занимают это место. Поэтому на вопрос «Можно ли использовать сетевой анализ для изучения международных отношений?» ответ однозначно утвердительный.
Сложнее ответить на вопрос «Как использовать сетевой анализ для изучения международных отношений?». Это во многом зависит от конкретного исследовательского ракурса. В конечном итоге выбор того или иного метода всегда будет определяться исследовательской методологией.

Анализ социальных сетей

Стремительно развивающимся сегментом науки о международных отношениях в настоящее время является анализ социальных сетей, активно используемых государствами в рамках реализации цифровой дипломатии. Так, для большинства государств осуществление цифровой дипломатии посредством социальной сети «Твиттер» лежит в основе стратегии продвижения интересов за рубежом.
Выбор «Твиттера» в качестве основной технологической платформы для реализации цифровой дипломатии обусловлен конкурентными преимуществами этой социальной сети:
  • охват значительной целевой аудитории;
  • высокая скорость распространения информации в отличие от традиционных СМИ и других социальных сетей;
  • отслеживание и оценка общественного мнения в мире по тем или иным проблемам без серьезных издержек.
Однако не только государства, но также и международные межправительственные организации и негосударственные субъекты используют социальные сети. Поэтому неудивительно, что все больше ученых обращаются к данным социальных сетей при изучении мировой политики.
Взаимодействуя посредством социальных сетей, акторы определяют каналы и границы информационного потока. Подписка, лайк, ретвит, упоминание, хештег — это виды взаимодействий пользователей «Твиттера», которые выстраиваются в сети, формируя сообщества. Структура таких сообществ, связанных политической коммуникацией, представляет безусловный интерес для политологов.
Учитывая огромный объем данных, исследователям часто требуются методы, которые позволяют им структурировать или фильтровать эти данные, например, для выявления таких сообществ. Одним из таких методов выступает сетевой анализ.

/02

Базовые понятия сетевого анализа

Как уже было отмечено ранее, в рамках методологии сетевого анализа существует три основных понятия:
  • узел (вершина)
  • связь (ребро)
  • сеть
Любая сеть состоит из множества узлов, соединенных друг с другом определенным типом социальных отношений. Узлы — это основные единицы анализа. Связи демонстрируют, как узлы связаны друг с другом. Например, пользователи социальной сети «Твиттер» могут быть связаны, делая ретвиты постов друг друга. Основное допущение в этом отношении заключается в том, что ретвит является мерой влияния пользователя, поскольку чем больше ретвитов получает твит пользователя, тем больше людей знакомятся с его сообщением
В свою очередь, сеть — это не что иное, как ряд узлов, соединенных связями. На рисунке узлы показаны кружками, а связи — это линии, соединяющие их. В терминах предыдущего примера мы можем представить, что такая сеть соединяет шесть Твиттер-аккаунтов, например, дипломатических представителей Государственного департамента США. Таким образом, сеть показывает, что американские дипломаты контактировали друг с другом, посредством ретвитов.
При этом количество связей в этой сети небольшое и, на первый взгляд, может показаться, что в структуре сети нельзя выявить наиболее влиятельного актора. Однако ситуация изменится, если использовать понятие центральности, которое характеризует роль каждого узла в конфигурации сети.

Пример визуализации сети

Понятие центральности в сетевом анализе

Центральность является основным инструментом для оценки влияния акторов сети. В исследованиях цифровой дипломатии чаще всего используются:
  • Центральность по степени
    degree centrality
Центральность по степени измеряется количеством прямых связей узла сети. Чем больше таких связей имеет узел, тем более он влиятелен в рамках структуры. Высокие значения характерны для акторов, активно распространяющих контент — например, официальные аккаунты системы министерства иностранных дел.
  • Центральность по посредничеству
    betweenness centrality
Центральность по посредничеству показывает роль узла в передаче информации между сообществами. То есть, узел, имеющий высокое значение центральности по посредничеству, способен контролировать взаимодействие между акторами сети. Например, НПО или медиа-платформы часто выступают «мостами» между государственными и негосударственными акторами.
Табличные данные наглядно демонстрируют вариацию влиятельности акторов в конфигурации сети в зависимости от выбранного показателя. Только узел 4 является наиболее влиятельной вершиной вне зависимости от меры центральности. Это обусловлено его контролирующей позицией в рамках структуры сети. Именно через этот узел проходит большая часть потоков коммуникации сети. Роль этого узла является структурообразующей для рассматриваемой сети. В случае разрушения коммуникаций через этот узел единство сети разрушится.
В таблице ниже приведены значения указанных мер центральности для каждого узла.
Помимо графического изображения, сеть можно представить в виде матрицы смежности. Матричные данные представлены в виде двоичной системы: цифра «1» означает, что между узлами существует связь (в нашем примере — ретвит), цифра «0» указывает на обратное. Важно отметить, что диагональ матрицы заполнена нулями. Это означает, что рассматриваемая матрица является ненаправленной (симметричной): если узел 1 связан с узлом 2, то узел 2 связан с узлом 1 и т. д.

Матрица смежности

Природа данных позволяет нам усложнить рассматриваемую сеть посредством добавления новых параметров: вес и направленность связи. Представим, что, во-первых, американские дипломаты ретвитнули посты своих коллег определенное количество раз, во-вторых, дипломат 2 не сделал ретвит поста дипломата 1. Если добавить эту информацию в матрицу выше, то графическое изображение сети изменится. Мы получим взвешенную направленную сеть.

Взвешенная направленная сеть


/03

Сетевой анализ в R

Освоение сетевого анализа как инструмента исследования цифровой дипломатии, помимо теоретической подготовки, требует практических навыков работы со специализированными программными средствами. Целью такого исследования часто является изучение структурных особенностей сетевых взаимодействий и влияния ключевых акторов в цифровой среде, например, на основе ретвитов в социальной сети «Твиттер».
Для достижения этой цели исследователи обычно решают ряд задач:
  • строят сетевую модель взаимодействий;
  • вычисляют метрики центральности для оценки влияния акторов;
  • идентифицируют подгруппы (например, k-ядра);
  • анализируют связь политической принадлежности акторов с их позицией в сети;
  • визуализируют структуру сети для интерпретации паттернов.
Языки программирования, такие как R и Python, заняли доминирующее положение в обработке и анализе сетевых данных. Язык R, в частности, предоставляет мощный инструментарий для решения указанных задач, позволяя ответить на классические исследовательские вопросы: Какие акторы сети играют ключевую роль в формировании информационных потоков цифровой дипломатии (структуры сети)? Как их политическая принадлежность влияет на эту роль?
Для решения этих задач обычно используются следующие пакеты на языке программирования R:
  • igraph
  • statnet
  • tidygraph
Эти пакеты стали стандартом де-факто, позволяя эффективно структурировать данные, вычислять метрики и визуализировать сети. Каждый пакет имеет свои преимущества и недостатки. В рамках нашего практикума мы будем использовать возможности каждого из этих пакетов.
/ Шаг 1

Подготовка датасета

Конкретный датасет, использованный в этой главе для демонстрации возможностей сетевого анализа, содержит информацию о дискурсе, связанном с инициативой КНР «Один пояс, один путь» в социальной сети «Твиттер» с 7 сентября 2013 года по 30 ноября 2021 года.
В исходном датасете предоставлена информация о 500 711 сообщениях и 714 794 репостах, связанных с инициативой «Один пояс, один путь». Датасет был собран через Twitter API путем применения набора ключевых слов, включая хештеги: «belt and road», «one belt one road», «new silk road», «maritime silk road», and «silk road economic belt». В датасете представлены четыре таблицы: твиты, ретвиты, пользователи и потенциально несвязанные с темой твиты.
В этой главе, используя данные, содержащие информацию о ретвитах, мы идентифицируем ключевых акторов, связанных с нарративом «Один пояс, один путь» в социальной сети «Твиттер». Рабочая выборка содержит 5000 ретвитов, извлеченных случайным образом из исходного датасета.
/ Шаг 2

Загрузка пакетов

Предполагается, что на вашем компьютере уже установлена среда R. Для начала работы необходимо также установить и открыть IDE RStudio и выполнить предварительное включение соответствующих пакетов. В случае отсутствия установленных пакетов, следует осуществить их инсталляцию перед началом работы.
# Загрузка необходимых для работы пакетов
library(igraph)
library(statnet)
library(tidygraph)
library(intergraph)
library(dplyr)
library(openxlsx)
Помимо уже указанных выше пакетов, для манипуляции с табличными данными будет использован пакет dplyr, для работы с файлами в формате .xlsx будет использован пакет openxlsx, наконец, для преобразования сетевых объектов в формате statnet в формат igraph и наоборот будет использован пакет intergraph.
/ Шаг 3

Подготовка данных

Практическая реализация сетевого анализа в R всегда начинается с подготовки данных. Как правило, исходная информация представляет собой таблицу рёбер (edge list), где каждая строка описывает направленную связь между источником (source) и целью (target) — например, ретвит поста одного пользователя другим.
Импорт данных осуществляется через функцию read.csv (). После чего исследователь может выбрать релевантные для анализа столбцы, такие как source и target. Важно отметить, что дополнительные атрибуты узлов (в частности, политическая принадлежность) позволяют углубить анализ, выделив подгруппы внутри сети.
# Импорт данных из CSV файла
edges_5000 <- read.csv("retweets_political_5000.csv")
# Отбор нужных для работы столбцов
edges_5000_1 <- edges_5000 %>% 
    select(source, target)
Преобразование данных в сетевой объект осуществляется с помощью пакета tidygraph, который интегрирован в экосистему tidyverse. Это обеспечивает удобство манипуляций с узлами и рёбрами, а также возможность переключения между форматами: например, statnet — для расчёта плотности сети и иных статистических метрик, или igraph — для поиска подграфов сети. Функция as_tbl_graph () автоматически идентифицирует узлы, преобразуя уникальные значения source и target в вершины графа.
# Создание сетевого объекта из табличных данных
tg_5000 <- as_tbl_graph(edges_5000_1) %>% 
  activate(nodes) %>% # Активируем таблицу узлов
  activate(edges) # Активируем таблицу ребер

# Переключение формата под требования пакета statnet для дальнейшего анализа сети 
tg_5000 <- intergraph::asNetwork(tg_5000)
 
# Проверка класса изучаемого объекта
class(tg_5000)
 
# Расчет описательных статистик сети, включая показатель плотности сети
summary(tg_5000)
Результаты работы функций summary () и class () демонстрируют, что мы успешно создали сетевой объект, содержащий 4768 вершин, 5853 ребра. Созданная сеть является направленной. Показатель плотности сети равен 0,00026. Плотность сети — это парметр, варьирующийся от 0 до 1, означающий долю связей сети по отношению к максимально возможному количеству связей. То есть чем ближе плотность сети к 1, тем выше взаимосвязность сети.
Расчёт центральности в R осуществляется через функции degree (), betweenness (), а результаты экспортируются в таблицы для дальнейшей интерпретации.
# Расчет показателей центральности по степени и по посредничеству для каждой вершины сети
deg <- degree(tg_5000)
bet <- betweenness(tg_5000)
 
# Сведение полученных показателей центральности в таблицу
df_tg_5000 <- data.frame(deg, bet)
 
# Переключение формата под требования пакета igraph для дальнейшего анализа сети 
net_to_graph_5000 <- asIgraph(tg_5000)
 
# Извлечение наименований вершин графа и запись их в отдельную переменную
nodes_name <- vertex_attr(net_to_graph_5000, 
   name = "vertex.names", index = V(net_to_graph_5000))
 
# Добавление полученной переменной в ранее сформированную таблицу
df_tg_5000 <- add_column(df_tg_5000, nodes_name, .before = 1)
 
# Сохранение получившейся таблицы в рабочую папку в формате .xlsx
write.xlsx(df_tg_5000, 'df_tg_5000.xlsx')

/ Шаг 4

Фильтрация и очистка данных

Важным этапом сетевого анализа является фильтрация и очистка данных. Это может включать удаление нерелевантных записей или фильтрацию по значениям метрик для выявления наиболее активных и структурно значимых акторов. Например, можно установить пороговые значения для показателя «центральность по степени» на уровне >= 40 и для показателя «центральность по посредничеству» — на уровне >= 10 000.
# Сортировка данных по убыванию на основе значений переменной deg;
# Фильтрация полученных значений по следующему условию: значения переменной deg >=40;
# Отбор для анализа только столбцов, содержащих значения переменной deg и наименования узлов
deg_1 <- df_tg_5000 %>% 
  arrange(desc(deg)) %>% 
  filter(deg >= 40) %>% 
  select(nodes_name, deg)
 
# Сохранение получившейся таблицы в рабочую папку в формате .xlsx
write.xlsx(deg_1, 'deg_1.xlsx')
График влиятельности Твиттер-аккаунтов по показателю «центральность по степени»

# Сортировка данных по убыванию на основе значений переменной bet;
# Фильтрация полученных значений по следующему условию: значения переменной bet >= 10000;
# Отбор для анализа только столбцов, содержащий значения переменной bet и наименования узлов
bet_1 <- df_tg_5000 %>% 
  arrange(desc(bet)) %>% 
  filter(bet >= 10000) %>% 
  select(nodes_name, bet)
 
# Сохранение получившейся таблицы в рабочую папку в формате .xlsx
write.xlsx(bet_1, 'bet_1.xlsx')
График влиятельности Твиттер-аккаунтов по показателю «центральность по посредничеству»
Если отбросить непроиндексированные по типу аккаунты, то к наиболее влиятельным узлам сети по показателям «центральность по степени» и «центральность по посредничеству» в нашей выборке относятся Твиттер-аккаунты китайских государственных медиа и аккаунты, аффилированные с китайским правительством.
/ Шаг 5

Визуализация сетевых данных

Графическое представление сети — это ключевой этап понимания ее структуры: визуализация помогает выявить структурные особенности сети. Стандартной функцией для визуализации сети является функция plot ().
# Визуализация сетевых данных
plot(net_to_graph_5000, vertex.label = NA)
Визуализация сетевых данных
На рисунке изображена визуализация наших сетевых данных. Очевидно, что какие-либо значимые выводы из этого рисунка сделать невозможно. Следовательно, если вы работаете с сетевыми данными, содержащими большое количество узлов, то для корректной визуализации потребуется тонкая настройка. Иными словами, цель графического представления сети заключается в том, чтобы построить рисунок, демонстрирующий важную информацию, содержащуюся в сетевых данных.
Для этого необходимо настроить каждый элемент графического отображения сети, поскольку, как и любой другой тип графической информации, графическое представление сети состоит из большого количества элементов: цвет узла, размер узла, цвет ребра, размер ребра, укладка структуры сети и т. д. Возможности пакетов igraph и statnet позволяют настроить каждый такой элемент.
#Запись варианта укладки визуализации сети в отдельную переменную
lo <- layout_with_kk(net_to_graph_5000) 
 
#Настройка визуализации сети
plot(net_to_graph_5000, 
vertex.size= log(deg), #Размер узлов пропорционален логарифму центральности по степени
vertex.label = NA, #Наименования узлов не будут отображаться
vertex.color = deg, #Привязка цвета узлов к показателю центральности по степени
edge.arrow.size = .25, #Настройка размера направления ребер
layout=lo*1) #Алгоритм укладки Камады-Каваи минимизирует пересечения рёбер
Визуализация сетевых данных после настройки укладки
Несмотря на настройку визуализации сети, из обновленного рисунка все еще очень сложно сделать какие-либо значимые выводы. Решить эту проблему возможно при помощи фильтрации. В нашей сети для узлов рассчитан показатель центральности по степени. Следовательно, для визуализации наиболее центральных узлов сети, можно использовать следующий программный код.
#Фильтрация сети на основе параметра центральность по степени (degree), значения которого >= 40
filtr_net_to_graph_5000_deg <- get.inducedSubgraph(tg_5000, which(deg >= 40))
 
#Переключение формата под требования пакета igraph 
для дальнейшего анализа сети
net_to_graph_5000_deg <- asIgraph(filtr_net_to_graph_5000_deg)

# Запись варианта укладки визуализации сети в отдельную переменную
lo_deg <- layout_with_kk(net_to_graph_5000_deg)

# Загрузка таблицы с атрибутами вершин
deg_1_at <- read.xlsx("deg_1_at.xlsx")

#Визуализация отфильтрованной сети
my_pal <- brewer.pal(5, "Dark2")
rolecat <- as.factor(deg_1_at$type)
plot(net_to_graph_5000_deg, vertex.size= log(deg), 
    edge.arrow.width = .25, 
    edge.arrow.size = .25, 
    layout = lo_deg*1, 
    vertex.color = my_pal[rolecat], 
    vertex.label = deg_1_at[,3], 
    asp = 0.35)

Визуализация сетевых данных после фильтрации
/ Шаг 6

k-ядерный анализ

Помимо анализа акторов сети и визуализации результатов анализа в R возможно исследовать подгруппы в рамках больших социальных сетей. Для этого можно использовать k-ядерный анализ.
Под k-ядром понимается подграф, в котором каждая вершина связана как минимум с вершинами этого же подграфа. Следовательно, k-ядерный анализ используется для поиска подгрупп, которые полностью зависят от структуры внутренних связей. При этом k-ядра вложены друг в друга и не перекрываются, поэтому их легко визуально определить. Таким образом, k-ядерный анализ позволяет идентифицировать подгруппы с максимальной плотностью связей.
Для идентификации k-ядер необходимо использовать функцию graph.coreness () из пакета igraph. Эта функция вычисляет для каждой вершины ядро с максимальным значением k, к которому она относится. После запуска кода мы определим, что k варьируется от 1 до 22 ядер на примере наших данных. Для лучшей интерпретации полученный результат можно визуализировать. Предварительно необходимо присвоить метки каждому узлу и подобрать различные цвета для каждого k-ядра.
# Определение k-ядерной структуры сети
coreness_5000 <- graph.coreness(net_to_graph_5000)
table(coreness_5000)
maxcoreness <- max(coreness_5000) 

# Присвоение меток, подбор цветов и визуализация k-ядерной структуры 
Vname <- vertex_attr(net_to_graph_5000, name = "vertex.names", 
    index = V(net_to_graph_5000))
V(net_to_graph_5000)$name <- Vname
V(net_to_graph_5000)$color <- coreness_5000 
plot(net_to_graph_5000, vertex.label = NA, 
    edge.arrow.width = 0.25, 
    edge.arrow.size = 0.25, layout=lo*1, 
    vertex.size = 1.0, asp = 0.35)
Визуализация k-ядерной структуры сети
На первом этапе после запуска кода мы получим не очень информативный график. Дело в том, что большая часть узлов сети (3981) принадлежат к первому ядру. Узлы, входящие в это ядро, относительно слабо связаны друг с другом, следовательно их можно исключить для лучшего графического отображения k-ядер более высокой степени. Для этого установим параметр фильтрации k-ядер на отметке >=10. Следовательно, ядра, не отвечающие заданному условию, будут исключены из визуализации.
# Удаление k-ядер, не соответствующих заданному условию
net_to_graph_5000_10_22 <- induced.subgraph(net_to_graph_5000, 
     vids = which(coreness_5000 >= 10))
 
# Визуализация результата фильтрации
V(net_to_graph_5000)$color <- coreness_5000
V(net_to_graph_5000)$name <- coreness_5000

plot(net_to_graph_5000_10_22, layout = lo[which(coreness_5000 >= 10),], 
    edge.arrow.width = 0.25, 
    edge.arrow.size = 0.1, asp = 0.35, 
    vertex.size= 3.0, vertex.label = deg_1_at[,3], 
    vertex.label.cex = 0.6, 
    main = "Графическое отображение отфильтрованной k-ядерной 
структуры сети")
Визуализация отфильтрованной k-ядерной структуры сети
Анализ состава акторов в полученных k-ядрах не позволяет нам утверждать о доминировании определенных типов акторов в наиболее плотных частях сети. Это означает, что на выборочных данных в первом приближении мы не можем сделать вывод о наличии какой-либо закономерности относительно формирования подгрупп в сети. Как уже было отмечено выше, k-ядра имеют вложенную структуру. Следовательно, для более глубокого изучения структуры сети можно детально изучить отдельные подгруппы, удаляя k-ядра более низкой степени. Однако такая задача выходит за рамки формата учебника.

/04

Ограничения сетевого анализа как метода

Сетевой анализ утвердился в политической науке как мощный инструмент для выявления и визуализации структурных паттернов взаимодействий, недоступных другим методам. Однако его эвристическая ценность раскрывается только в рамках смешанных исследовательских дизайнов при триангуляции с качественными методами: контент-анализом, кейс-стади.
Ключевые вызовы, стоящие перед исследователем, использующим сетевой анализ:
  • Учет динамики изучаемых процессов;
  • Обеспечение валидности и полноты данных;
  • Теоретически обоснованная интерпретация метрик с учетом структуры сети и изучаемого контекста;
  • Осознание неизбежной исследовательской абстракции и допущений при операционализации сложных политических феноменов.
Преодоление этих ограничений требует понимания как возможностей, так и допущений самого метода сетевого анализа. Типичной ловушкой, в которую попадают многие начинающие исследователи, является чрезмерный акцент на визуализации сети. Расположение узлов на графике часто зависит от алгоритма укладки и не несет содержательного смысла, если это не оговорено специально. Интерпретировать необходимо метрики и структуру, а не только «красивую картинку».
Таким образом, сеть — это не зеркало объективной реальности, а конструируемая исследователем модель, аналитический инструмент, эффективность которого напрямую зависит от теоретической подготовки, методологической строгости и критического мышления исследователя.
Материал настоящей главы не претендует на всеобъемлющий характер. За рамками остались многие важные аспекты методологии сетевого анализа, такие как сети аффилированности, модели динамических сетей, алгоритмы обнаружения сообществ. Тем не менее, освоение этой главы поможет вам использовать язык программирования R для реализации базовых исследовательских задач в области изучения цифровой дипломатии — от построения сети до проверки гипотез о влиянии и структуре взаимодействий.
Практикум
Рекомендуем пройти весь путь самостоятельно – использовать адаптированные для сетевого анализа данные и изучить их, ориентируясь на предложенный в главе код.

Хотите больше узнать по теме? Ознакомьтесь с данными ресурсами

Читайте также:
Тематическое моделирование в Google Colab
Анализ вовлеченности в цифровой дипломатии