Итак, на данной странице я попытался использовать метод Exponential Random Graph Modeling, также известный как p* models, чтобы проанализировать нашу модель студенческой группы, которая была визуализирована ранее.

Что такое ERGM в двух словах? Это вероятностная статистическая модель, предназначенная для анализа социальных сетей. Вероятностная она потому, что оценивает, как та или иная переменная (атрибут агента) или то или иное свойство (количество edges или triangles в сети) влияет на вероятность модели в целом или вероятность возникновения связи/отношения между агентами. В нашем случае модель могла бы позволить оценить, насколько сильно демонстративное потребление, академическая успеваемость, принадлежность к социальному классу, гендер и другие показатели обусловливают связи между субъектами сети. А вернее, говоря более статистическим языком, как те или иные свойства влияют на вероятность и имеет ли это влияние статистически значимый эффект. Взяв, к примеру, отношения студентов из сети, модель оценит вероятность того, что отношение между ними существует благодаря тому, что они являются демонстративными потребителями.

Эта мощная статистическая модель существует сравнительно недавно, с середины 90х годов, возникла в двух дисциплинах - статистике и социологии, однако уже очень популярна среди социологов-количественников. Ввиду новизны, теоретическое развитие и дополнение модели идет во многом параллельно тому приложению, которое она получила в программировании. Локомотивом тут является Университет Вашингтона, который и является разработчиком релевантных пакетов statnet и ergm для R.

Прочитаем необходимые файлы и создадим файл социальной сети.

nodes1 <- read_sav("~/R/idnodesfinal.sav")
links1 <- read.csv("idlinks.csv", header=T, as.is=T, sep = ";")
net1 <- graph_from_data_frame(d=links1, vertices=nodes1, directed=T) 

Как мы знаем, сети из igraph не распознаются в statnet, поэтому объект нужно переформатировать.

egnet <- asNetwork(net1)

Теперь мы можем строить с данным объектом статистические модели. Что нам наиболее интересно? Посмотреть, наблюдается ли в нашей социальной сети явление гомофилии. Гомофилия - это тенденция индивидов связывать себя или вступать в отношения с себе подобными людьми. Визуальная репрезентация сети, которую я предпринимал в предыдущем анализе, позволяет нам гипотезировать, что в сети может быть гомофилия по демонстративному потреблению. Как бы то ни было, нам интересно также оценить эффект академической успеваемости, социального класса, референтной группы и гендера. Каково влияние данных переменных на вероятность возникновения связи между агентами? На этот вопрос должна ответить наша ergm модель.

Модель состоит из разного числа команд/терминов, каждый соответствует типу переменной - категориальной или количественной, а также типу сети - направленной или ненаправленной. Я решил построить модель на номинальных и ординальных переменных и использовать команду nodematch, так как она показывает наиболее четко, наблюдается ли в сети гомофилия по тому или иному признаку. При этом, для количетвенной переменной Индекс Влияния Реферетной группы (RGI) я использовал функцию nodecov, так как это ковариата. То же самое можно было бы сделать и с ДП, но я решил взять категориальную переменную с делением на три уровня (низкий, средний, высокий), так как с категориальной переменной гомофилия видна четче и лично мне с учетом моего ограниченного горизонта знаний проще будет в последствии подсчитать вероятность.

stargazer(model1, type = 'html')
Dependent variable:
egnet
edges -2.587***
(0.518)
nodematch.CCIOrd.high 1.447***
(0.242)
nodematch.CCIOrd.low 0.354
(0.436)
nodematch.CCIOrd.moderate 0.469
(0.329)
nodematch.socialclass.Lower Middle Class -Inf.000***
(0.000)
nodematch.socialclass.Medium Middle Class -0.027
(0.214)
nodematch.socialclass.Upper Middle Class 0.004
(0.477)
nodematch.acad_grade.Excellent 0.273
(0.291)
nodematch.acad_grade.Good 0.445**
(0.224)
nodecov.RGI -0.849**
(0.388)
nodematch.gender.female 1.037***
(0.237)
nodematch.gender.male 1.402***
(0.337)
Akaike Inf. Crit. 778.714
Bayesian Inf. Crit. 840.380
Note: p<0.1; p<0.05; p<0.01

Итак, как мы можем видеть из данной таблицы, в сети наблюдается гомофилия между субъектами, чей уровень демонстративного потребления - высокий. Они наиболее склонны к созданию связей друг меж другом. Этот эффект также является статистически значимым, о чем нам свидетельствует p-Value. Данные о размере эффекта содержатся в колонке Estimate и представляют собой логарифм шансов - log-odds в оригинале. Сам по себе данный показатель мало о чем говорит, и в дальнейшем его надо либо трансформировать в odds ratio (отношение шансов, которое говорит, в сколько раз шансы на установление связи выше или ниже с учетом эффекта данной переменной), либо в вероятность. Ods ratio представляет собой не что иное как произведение регрессионного коэффициента и экспоненты.

Таким образом, шансы на установление связи между студентами с высоким индексом демонстративного потребления составляют в 4.250 раз больше, чем между теми студентами, у кого уровень ДП низкий.

Интересно, что данная модель не фиксирует статистически значимого эффекта социального класса. Это можно объяснить следующим: в нашей выборке присутствуют только три фракции среднего класса, при этом нижний средний класс представлен лишь двумя агентами, поэтому так как все студенты принадлежат к подуровням одного класса, и стратификация/неравенство не являются ярко выраженными в группе, данный криетрий не оказывает сильного влияния на формирование взаимоотношений в группе.

Также сильная гомофилия наблюдается по гендеру, то есть мальчики (которых меньшинство) склонны дружить с мальчиками, а девочки - с девочками.

Более слабый, но тем не менее статистически значимый эффект зафиксирован в случае с хорошей академической успеваемостью. Хорошисты склонны дружить между собой сильнее, чем отличники, возможно ввиду большей конкуренции, которая существует между безупречными студентами.

Ну и последнее, индекс референтной группы, который оказывает негативное влияние на шансы и вероятность. Иначе говоря, люди с высокой зависимостью от референтной группы менее вероятно смогут создать связи с другими агентами сети.

Так как все это пока что имеет несколько распылвчатое значение, мы можем подсчитать вероятность связи между субъектами с выбранными параметрами. Так, если принять эффекты, которые идентифицировала модель, мы вероятнее всего хотим подсчитать вероятность возникновения связи между студентами с высоким уровнем ДП, хорошистами, мужского пола и с низким уровнем влияния референтной группы (например, 0.25). Эффект социального класса ввиду его статистической незначимости нами игнориурется, он не имеет никакой математической ценности.

Так, вероятность будет считаться следующим образом и будет составлять.:

prd_prob1 <- plogis(-2.586 + 1.447 + 0.444 + (-0.849*0.25) +1.401 )
prd_prob1
## [1] 0.6209894

Таким образом, вероятность составляет 62%. Достаточно хороший показатель.

Тем не менее, это еще не все. Нам необходимо проверить модель на качество, для этого есть целый комплекс так называемых goodness-of-fit statistics, которые мы для наглядности визуализируем, а не будем презентовать в виде нудных таблиц с цифрами. Картинки всегда веселее и нягляднее :) Качество модели оценивается следующим образом. R на основе параметров моделт создает симуляции, и на основе 100 симулируемых моделей она оценивает разброс значений. Если значения нашей модели (жирная линия) находятся в пределах доверительных интервалов (также визуализированы), значит все супер. Небольшие отклонения также приемлемы. Итак, визуализируем качество модели по 4 основным параметрам: indegree, outdegree, геодезическая дистанция и edge-wise shared partners.

gofmodel1 <- gof(model1~idegree+odegree+espartners+distance) 
par(mfrow = c(2, 2))
plot(gofmodel1)

Как мы видим, наша модель не безупречна, но, по моему мнению, все-таки является вполне себе рабочей.

Идеальным также является оценка модели на дегенеративность (model degeneracy), но тут у меня уже не хватает сил и времени :) Я думаю, полученных данных и базовой валидности модели на данном этапе достаточно.

Теперь на основании первой и второй заметки надо будет сгенерировать какую то аннотацию, но я займусь этим уже завтра вечером.