30 мар. 2011 г.

Сеть сексуальных контактов героев телесериала

Всё началось с вводной презентации об анализе социальных сетей для группы студентов-медиков. Что могло бы быть для них более захватывающим, если не разговор о привлекательных персонажах телевизионного сериала о жизни врачей? Эти персонажи по законам жанра не только говорят о медицине, но и влюбляются друг в друга, а потом, конечно, занимаются друг с другом сексом.

Просмотр сериала Grey’s Anatomy и изучение страниц поклонников сериала дали обширный, но, безусловно, отнюдь не исчерпывающий список связывающих персонажи этого шоу сексуальных контактов, который можно скачать http://www.babelgraph.org/data/ga_edgelist.csv.



library(igraph)
ga.data <- read.csv('ga_edgelist.csv', header=TRUE)

подключается библиотека igraph, записывается перечень связей между героями сериала;

g <- graph.data.frame(ga.data, directed=FALSE)
список связей преобразуется в нужный библиотеке igraph формат;

summary(g)
g$layout <- layout.fruchterman.reingold(g)

в атрибуты графа записывается информация о координатах узлов на будущих рисунках этого графа; эти координаты рассчитываются по алгоритму Fruchterman'а и Reingold'a. При всех последующих операциях взаимное расположение узлов на рисунке не будет меняться, что удобно для презентаций (библиотеки network и sna при каждой визуализации меняют рисунок).

plot(g)


Что мы можем сказать, глядя на рисунок, но не зная, кто именно изображён каждым узлом графа? С точки зрения общественного здоровья, если бы можно было протестировать только одного человека на наличие ИППП, кто им бы был? Если можно было бы предоставить консультацию и дать бесплатные презервативы только одному человеку, кто им бы был? Если бы было известно, что эпидемия распространяется в этой сети, то кто на кого именно нужно подействовать, чтобы остановить заразу?

Попробуем сделать визуализацию более интересной. Сначала уберём метки узлов, а затем изменим их размер так, чтобы он отражал степень центральности (degree centrality), т. е. число партнёров, связанных с каждым узлом. В контексте инфекций, передаваемых половым путём степень центральности будет обозначать количество людей, которые могли заразить данного конкретного человека или заразиться сами от него.

V(g)$label <- NA
удаляются метки узлов;

V(g)$size <- degree(g) * 2
plot(g)

переменным «размер узла» присваиваются значения соответствующей степени центральности, умноженные на 2.


Полученная схема показывает абсолютное число партнёров, но ничего не говорит об относительных позициях каждого узла в сети. Рассмотрим два типа центральности: близость (closeness) и посредничество (betweenness).

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

clo <- closeness(g)
в вектор clo записываются значения «близости» каждого из узлов;

clo.score <- round( (clo-min(clo))*length(clo)/max(clo))+1

clo.colors <- rev(heat.colors(max(clo.score)))
создаётся вектор с перечнем цветов, в которые будут потом раскрашиваться узлы;

V(g)$color <- clo.colors[clo.score]
создаётся вектор атрибутов узла с именем color и этим атрибутам присваиваются значения цветов в зависимости от рассчитанных выше значений «близости»;

plot(g)


Как видно, на схеме есть как несколько узлов, окрашенных в красные, «горячие» тона, так и несколько в «холодных» тонах.

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

Посредничество — это число кратчайших путей в сети, проходящих через данный узел. Узлы с высоким показателем посредничества могут считаться привратниками — они контролируют самые короткие пути между другими узлами.

btw <- betweenness(g)
btw.score <- round(btw) + 1
btw.colors <- rev(heat.colors(max(btw.score)))
V(g)$color <- btw.colors[ btw.score ]
plot(g)



Этот рисунок с указанием посредничества демонстрирует две ключевых фигуры в сети, по сравнению с анализом показателей близости.

Полезной техникой в анализе социальных сетей является использование алгоритмов нахождения сообществ. Тут мы воспользуемся алгоритмом Гирвана-Ньюмена (Girvan-Newman algorithm, http://en.wikipedia.org/wiki/Girvan%E2%80%93Newman_algorithm и http://www.pnas.org/content/99/12/7821), который нам поможет установить, из каких сообществ состоит граф.

gnc <- edge.betweenness.community(g, directed=FALSE)
m <- vector()
for (s in 0:nrow(gnc$merges) ) {
memb <- community.to.membership(g,gnc$merge,steps=s)$membership
m <- c(m,modularity (g, memb, weights=NULL))
}
ideal_steps <- which(m==max(m)) - 1
plot(0:(length(m)-1),m, col="blue",xlab="Steps",ylab="Modularity")
gn.groups <- community.to.membership(g,gnc$merge, steps=ideal_steps)$membership
V(g)$color <- gn.groups
V(g)$size <- 15 # reset to default size
plot(g)




Сокращённый перевод материала: gary. Grey’s Anatomy Network of Sexual Relations [Электронный ресурс]. — Режим доступа: http://www.babelgraph.org/wp/?p=1

Читать далее

25 мар. 2011 г.

Бинарная логистическая регрессия: что это такое и с чем её едят?

В социологии, экономике и эпидемиологии существуют такие переменные, которые могут принимать только два значения: да – нет, купил – не купил, заболел – не заболел. В ряде случаев, в таком же виде можно представить и другие характеристики, напр. возраст до 25 – 25 и старше.

Если одна из таких переменных (её ещё называют объясняемой) зависит от других факторов (объясняющих переменных), то можно построить уравнение, коэффициенты которого будут свидетельствовать о вероятности для объясняемой переменной принять одно из двух альтернативных значений.

Такое уравнение называется бинарной логистической регрессией.

p(y) = b0+b1*x1+b2*x2+ ... + bn*xn (*)

bi = ln(ORi)

ORi = ebi (**)



Вычисление либо параметров этого уравнения, либо соответствующих им отношений шансов и составляет сугубо математическую часть работы.

В самом простейшем случае, когда объясняющая переменная одна и принимает только два значения, всё сводится к вычислению отношения шансов по простейшей таблице 2×2:

OR = (A / B) / (C / D),


где A, B, C, D — соответственно количества респондентов в таблице (они не должны равняться нулю):

Фактор (объясняющая переменная)

действовал

не действовал

Событие (объясняемая переменная)

произошло

A

C

не произошло

B

D


Конечно, такие простые ситуации чрезвычайно редки: как правило, объясняемая переменная зависит от нескольких параметров. Например, ответ на вопрос, купит ли человек компьютер, зависит не только от его уровня дохода, но и от возраста (при одинаково высоком доходе люди старше 60 лет существенно реже могут нуждаться в компьютере), профессии (скажем, учёные и офисные работники чаще чем грузчики будут нуждаться в компьютере), места жительства (обитатели крупных городов с развитой инфраструктурой компьютерных магазинов чаще становятся покупателями компьютеров, чем жители малых городов и сёл).

Ситуация усложняется ещё и тем, что объясняющие переменные могут зависеть друг от друга. Например, среди жителей малых городов и сёл реже встречаются учёные и офисные работники, может быть более весома доля старшего поколения (вузы расположены в крупных городах и соответственно туда едет молодёжь учиться) и ниже уровень доходов у большинства населения.

Именно поэтому использование бинарной логистической регрессии (собственно, как и любого другого метода) не сводится только к выполнению вычислений. Важную роль играет построение модели (какие объясняющие переменные включать в уравнение), осмысление результатов анализа, корректировка исходного уравнения и формулирование выводов.

Что касается интерпретации результатов, то она похожа на интерпретацию значений OR: если их диапазон при заданном доверительном интервале не включает в себя единицу, то рассматриваемый фактор значимо влияет на объясняемую переменную.

Практический пример

Рассмотрим общий алгоритм работы с данными. Примером послужат сведения о клиентах проекта «Сеть», выполнявшегося в трёх областях Украины в 2009–2010 гг. при финансовой поддержке Федерального министерства здравоохранения Германии, организации «Коннект Плюс» и Центра «Наш мир».

Проект охватил 2331 мужчин, имеющих сексуальные отношения с мужчинами. Каждому из них социальный работник (перед тем, как выдать контакты дружественных специалистов, презервативы и смазку для анального секса) рассказывал о проекте, его целях и задачах, а также заполнял (с согласия клиента) небольшую анкету: возраст, семейное положение, кто из окружающих знает о гомо- или бисексуальной ориентации клиента, предпочитаемые им способы знакомства и общения с другими МСМ, а также востребованность услуг проекта. Ряд процедур был направлен на исключение дублировавшихся у разных социальных работников клиентов и на проверку достоверности зафиксированной информации.

0. Формулировка гипотезы

Указанная выше информация была необходима для оценки хода выполнения проектных задач. Тем не менее на её основе можно попытаться проверить гипотезу о связи виртуального и реального пространств гомосексуальной субкультуры: существует мнение, что те мужчины, которые избегают гомосексуальной тусовки (плешка, гей-клуб, приватные вечеринки на квартирах), преимущественно ищут контактов через виртуальные средства коммуникации (интернет, телетекст, объявления). Иными словами, среди тех, кто пользуется телетекстом и интернетом, будет меньше доля ходящих, к примеру, на плешку, чем среди не пользующихся этими виртуальными средствами.

Опросник содержал два пункта, с помощью которых соцработники выясняли характер связей клиента с местным ЛГБТ/МСМ/ЖСЖ-сообществом:

— «Контакты с темой» с вариантами «не контактирует», «тематический клуб», «вечеринки у друзей из темы», «плешка» (можно было указать или на отсутствие контактов, или выбрать все подходящие из оставшихся).

— «Как знакомится с другими геями» с вариантами «через Интернет», «в тематическом клубе», «на плешке», «через друзей», «через телетекст», «другое» (можно было указать все подходящие варианты или не указывать ничего).

— «Как был установлен контакт?» с вариантами «через интернет», «в гей-клубе», «на плешке», «через друзей», «в гей-организации», «через телетекст», «другое» (социальный работник должен был отметить только один подходящий вариант).

Очевидно, что за исключением интернета и телетекста все эти пункты описывают те или иные сообщества, которые делают возможными установление социальных связей разного плана, в том числе поиск партнёра, и которые структурируют пространство города (из проведённых качественных исследований известно, что в современных украинских городах (за исключением, пожалуй, Киева) в силу неразвитости инфраструктуры местных ЛГБТ-сообществ плешка, группы друзей и, в меньшей степени, клуб функционируют как единое пространство).

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

Именно поэтому, на этапе обработки была создана новая переменная, описывающая принадлежность респондента к четырём сообществам (тематический клуб, круг «друзей по теме» и плешка. Напр., если респондент хотя бы в одном из указанных трёх пунктов получал отметку возле плешки, то в этой новой переменной он обозначался как имеющий отношение к сообществу плешки.

1. Выбор объясняемой переменной (следует как можно более понятно описать, что именно мы считаем событием)

Исходя из гипотезы, событием мы будем считать принадлежность клиента к совокупности пользователей телетекста (т. е. либо клиент упомянул телетекст среди своих обычных способов знакомства с другими МСМ, либо с ним был установлен контакт с помощью телетекста).

2. Выбор объясняющих переменных и построение модели

Гипотеза связывает большую вероятность наступления события («клиент пользуется телетекстом») и отрицание клиентом своей принадлежности к не-виртуальным гомосексуальным сообществам. Следовательно, уравнение регрессии должно связывать пользование телетекстом и принадлежность к сообществам плешки и групп друзей (для простоты изложения мы исключаем посетителей гей-клубов — их немного).

3. Расчёты с R

Мои данные содержатся под именем network2010. Присоединим их:

> attach(network2010)

Расчёт логистической регресии по уравнению (*) производится командой glm():

> summary(glm(teletext~cruising+parties, family=binomial))

teletext — имя объясняемой переменной, cruising, parties — соответствующие имена объясняющих переменных, family=binomial — аргумент, указывающий программе на то, что нас интересует именно бинарная регрессия.

В ответ машина выдаёт:

Call:
glm(formula = teletext ~ cruising + parties, family = binomial)

Deviance Residuals:
Min        1Q           Median     3Q         Max
-1.4623  −0.8461  0.9171  0.9171  1.7049


Coefficients:
EstimateStd. Errorz valuePr(>|z|)
(Intercept)-1.18720.1624-7.310***
cruising(«да»)1.49170.113713.121***
parties(«да»)0.34400.15432.229*
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

Null deviance: 2163.8 on 1560 degrees of freedom
Residual deviance: 1970.4 on 1557 degrees of freedom
(770 observations deleted due to missingness)
AIC: 1978.4

Number of Fisher Scoring iterations: 4


Цифры рядом с объясняющими переменными — это соответствующие коэффициенты bi и их стандартное отклонение.

Пересечение с осью ординат (intercept) даёт при экспоненцировании отношение рисков наступления события в том случае, когда отсутствуют какие-либо факторы. 

Значения Pr(>|z|) характеризуют вероятность того, что коэффициенты bi равны нулю (чем меньше эта вероятность, тем лучше, ведь если коэффициент при объясняющей переменной равен нулю, то эта переменная не вносит никакого вклада в объясняемую). Справа находится колонка, содержащая астериксы (*), указывающие на значимость переменных (линия снизу, названная «Signif. Codes», даёт расшифровку этим значениям: три астерикса (***) означают, что p-value находится между 0 и 0.001, два (**) — между 0.001 и 0.01, один (*) — между 0.01 и 0.05 , точка (.) — между 0.05 и 0.1, а пробел — p-value принимает значения между 0.1 и 1.0).

Коэффициенты b можно, конечно, вручную пересчитать в OR по уравнению (**), но лучше поручить это компьютеру. Для этого установим и подключим необходимую библиотеку. При наличии интернета введём в терминал R:

> install.packages(epicalc)
> library(epicalc)


Теперь мы можем просто написать:

> logistic.display(glm(teletext~cruising+parties, family=binomial), decimal=1)

аргумент decimal=1 указывает R, что результаты следует показать с точностью до одной десятой.

В ответ машина выдаёт:

Logistic regression predicting teletext
crude OR(95%CI)adj. OR(95%CI)P(Wald's test)P(LR-test)
cruising: («да») vs («нет»)4.3 (3.5, 5.4)4.4 (3.6, 5.6)< 0.001< 0.001
parties: («да») vs («нет»)1.4 (1.1, 1.9)1.4 (1.0, 1.9)0.030.03

Log-likelihood = −985.217
No. of observations = 1561
AIC value = 1978.434


Отношения шансов объясняющих переменных подгоняются (are adjusted) друг к другу. «Сырые» (crude) OR программа рассчитывает так, как если бы каждая объясняющая переменная была единственной. Поскольку в нашем случае «подогнанные» OR не сильно отличаются от «сырых», то это значит, что объясняющие переменные являются независимыми друг от друга.


4. Интерпретация полученных результатов


Обе объясняющих переменные (принадлежность к сообществу плешки и к «группам друзей») являются дихотомичными. Соответственно, отношение шансов для переменной «плешка» (cruising) сравнивает тех, кто её посещает, и тех, кто туда не ходит. То же самое относится и к переменной «группы друзей» (parties).

OR для «плешки» составляет 4.4, при этом интервал значений не включает единицу (от 3.6 до 5.6). Это значит, что принадлежность к сообществу плешки связана с использованием телетекста для знакомств с другими МСМ — те, кто ходит на плешку, более чем в четыре раза чаще тех, кто на плешку не ходит, пользуются телетекстом.

В отличие от плешки, интервал значений OR для «групп друзей» единицу включает (от 1.0 до 1.9), т. е. в отношении телетекста не обнаруживается существенных различий между теми МСМ, которые поддерживают контакты с другими МСМ через «группы друзей», и теми, кто предпочитает другие способы общения.

Гипотетическим пояснением этим результатам может с нашей точки зрения служить то, что плешка представляет собой значительно более публичное пространство, чем группа друзей — на плешку может прийти всякий и она предполагает значительную анонимность случайного секса. В отличие от неё «группа друзей», собирающаяся на квартире, хотя и может включать в себя людей, приведённых с плешки, является всё же пространством личным — туда попадают только те, кто «вписывается» в требования как хозяина квартиры, так и его хороших знакомых.

Соответственно, мужчины, идущие на встречу с незнакомцем после непродолжительной беседы по телефону (в телетексте публикуются смс-объявления с указанием номера мобильного телефона, с которого они были посланы), действуют аналогично тому, как они вели бы себя на плешке: пришёл — увидел — поимел :) Иными словами, секс как следствие объявления в телетексте, точно также как секс при знакомстве в туалете, не предполагает знакомства.

В отношении же выдвинутой гипотезы («те мужчины, которые избегают гомосексуальной тусовки, преимущественно ищут контактов через виртуальные средства коммуникации») можно сказать, что эти результаты её не подтверждают.

Следовательно, телетекст может служить вспомогательным к аутрич-работе на плешках средством в установлении контакта с целевой аудиторией МСМ-ориентированных ВИЧ-профилактических проектов, но он не даёт качественно иной группы клиентов для социальной работы специализированных объединений граждан.

Использованные источники

1. Virasakdi Chongsuvivatwong. Analysis of Epidemiological Data Using R and Epicalc [Электронный ресурс] / Epidemiology Unit Prince of Songkla University, THAILAND. — 316 p. — Режим доступа: http://cran.r-project.org/doc/contrib/Epicalc_Book.pdf
2. Teetor P. R Cookbook. — O’Reilly Media, Inc., 2011. — 416 p.
3. Logos T. Simple logistic regression on qualitative dichotomic variables [Электронный ресурс]. — Режим доступа: http://www.r-bloggers.com/simple-logistic-regression-on-qualitative-dichotomic-variables/

Автор:

Читать далее