기초 지표 — 크기·밀도·상호성·전이성

SNA 입문 · R로 시작하기STAGED+ 스터디

4.1 크기와 밀도 (Size and Density)

밀도는 "있을 수 있는 관계 중 실제로 있는 비율"이다. 방향 네트워크에서 가능한 관계는 n(n1)n(n-1)개다 (자기 자신 제외, 방향이 다르면 다른 관계).

density=mn(n1)\text{density} = \frac{m}{n(n-1)}
기호어디서
학생 수nn26nrow(adj)
지명 수mm88sum(adj)
가능한 방향 관계n(n1)n(n-1)26 × 25 = 650손 계산
밀도m/n(n1)m/n(n-1)88 / 650 = 0.1354sna::gden(adj)
평균 지명 수m/nm/n88 / 26 = 3.385손 계산
sna::gden(adj)
[1] 0.1353846
igraph::edge_density(g)
[1] 0.1353846          # 두 패키지가 일치
교실 해석 — 밀도 0.135는 "한 학생이 나머지 25명 중 평균 3.4명을 지명했다"는 뜻이다. 밀도만으로 좋다·나쁘다를 판단할 수 없다. 지명 개수를 몇 개로 제한했느냐에 따라 밀도는 얼마든지 달라지기 때문이다. 이 조사는 최대 6명까지 적게 했다(max(rowSums(adj)) = 6). 밀도는 같은 방식으로 조사한 다른 학급과 비교할 때만 의미가 있다.

4.2 상호성 — 짝맞춤 세기 (Reciprocity and the Dyad Census)

두 사람 사이에 있을 수 있는 상태는 셋뿐이다.

  • 상호(Mutual, M) — 서로 지명. A[i,j]=A[j,i]=1A[i,j]=A[j,i]=1
  • 비대칭(Asymmetric, A) — 한쪽만 지명
  • 없음(Null, N) — 둘 다 안 함
상호 (M) 비대칭 (A) 없음 (N) A B A B A B 서로 지명 한쪽만 지명 둘 다 안 함 22쌍 44쌍 259쌍
모든 쌍은 반드시 이 셋 중 하나다. 그래서 세 개수의 합이 (262)=325\binom{26}{2}=325가 되어야 한다.
sna::dyad.census(adj)
      Mut Asym Null
[1,]   22   44  259
22 + 44 + 259
[1] 325                # = choose(26, 2), 모든 쌍의 수

합이 (262)=325\binom{26}{2}=325와 맞는지 확인하는 습관을 들이면 자료 오류를 일찍 잡는다.

grecip()measure=에 따라 값이 완전히 달라진다. 초보자가 "상호성이 0.86이래요"라고 말할 때 십중팔구 기본값을 그대로 쓴 것이다.
measure=정의손 계산
"dyadic"
(기본값)
M+NM+A+N\frac{M+N}{M+A+N}(22+259)/3250.8646"짝이 맞는" 비율. 아무 관계 없는 쌍(N)도 "맞았다"고 세므로 성긴 네트워크에서는 항상 크게 나온다
"dyadic.nonnull"MM+A\frac{M}{M+A}22/(22+44) = 22/660.3333관계가 있는 쌍만 놓고 볼 때 서로 지명한 비율
"edgewise"2Mm\frac{2M}{m}44/880.5000내 지명이 되돌아올 확률. 교실 해석에는 이게 제일 자연스럽다
sna::grecip(adj, measure = "dyadic")           [1] 0.8646154
sna::grecip(adj, measure = "dyadic.nonnull")   [1] 0.3333333
sna::grecip(adj, measure = "edgewise")         [1] 0.5
igraph::reciprocity(g)                         [1] 0.5   # igraph 기본 = edgewise
교실 해석 — 지명 88개 중 44개가 짝을 이룬다. 정확히 절반이다. 바꿔 말하면 학생이 "친하다"고 적은 이름 두 개 중 하나는 짝사랑이다. 9세 학급에서 0.5는 상당히 높은 편이고, 관계가 안정적으로 자리 잡았다는 신호로 읽는다.

4.3 전이성 — 친구의 친구 (Transitivity)

"내 친구의 친구도 내 친구인가"를 재는 값이다. iji \to j, jkj \to k인 경로가 있을 때 iki \to k도 있는 비율.

열린 2-경로 — i→k 가 없다 닫힌 삼각형 — i→k 도 있다 i j k ? i j k 전이성 = 닫힌 것 ÷ (열린 것 + 닫힌 것) = 0.457
왼쪽처럼 ijki \to j \to k가 있을 때 오른쪽처럼 iki \to k까지 있는 비율이 전이성이다.
sna::gtrans(adj)
[1] 0.4570447
igraph::transitivity(g, type = "global")
[1] 0.4732394
값이 다르다. 버그가 아니다. igraph::transitivity()방향을 무시하고 계산한다. 확인해 보면 바로 드러난다.
gu <- igraph::as_undirected(g, mode = "collapse")
igraph::transitivity(gu, type = "global")
[1] 0.4732394              # 방향 그래프와 똑같다 → 방향을 안 본다
sna::gtrans(sna::symmetrize(adj, rule = "weak"))
[1] 0.4732394              # sna도 무방향으로 주면 같은 값
방향을 살린 전이성이 필요하면 sna::gtrans()를 쓴다. "A가 B를 좋아하고 B가 C를 좋아하면 A도 C를 좋아하는가"는 방향이 있는 질문이다.
교실 해석 — 0.457은 친구의 친구가 내 친구일 확률이 46%라는 뜻이다. 밀도 0.135에 비하면 3배 넘게 높다. 우연이 아니라 학생들이 무리를 짓고 있다는 증거다. 이 "밀도보다 훨씬 높은 전이성"이 사람 네트워크의 거의 보편적인 특징이다.

4.4 연결성과 고립 (Connectivity and Isolates)

sna::isolates(adj)
[1] 8                              # 8번째 정점
rownames(adj)[sna::isolates(adj)]
[1] "1024"

sna::components(adj, connected = "weak")     [1] 2
sna::components(adj, connected = "strong")   [1] 9

sna::component.dist(adj, connected = "weak")$csize
[1] 25  1
개념정의이 학급
약한 컴포넌트
weak
화살표 방향을 무시하고 이어져 있으면 한 덩어리2개 — 25명 덩어리 + 1024 혼자
강한 컴포넌트
strong
화살표 방향을 지켜서 서로 왕복할 수 있어야 한 덩어리9개 — 14명 / 3명 / 3명 / 1명 × 6
약한 — 방향을 무시하면 셋이 이어져 있다 강한 — 방향을 지키면 되돌아올 수가 없다 A B C A B C 1개 3개 같은 그림·같은 화살표인데 세는 규칙만 다르다
이 학급도 마찬가지다 — 약한 컴포넌트는 2개(25명 + 1024), 강한 컴포넌트는 9개이고 그중 가장 큰 것이 14명이다.
고립자와 지명 못 받은 학생
그림 3 — 빨강 = 완전 고립(1024), 노랑 = 지명은 했지만 아무도 지명해 주지 않은 학생(1030·1036)
교실 해석 — 이 그림이 이 안내서에서 가장 실용적인 장면이다.
  • 1024는 아무도 지명하지 않았고 아무에게도 지명받지 않았다. 설문에 성의 없이 답했을 수도 있고, 결석했을 수도 있고, 정말 고립됐을 수도 있다. 네트워크 자료만으로는 구분할 수 없다. 확인이 필요한 학생이다.
  • 1030과 1036은 성격이 다르다. 이들은 친구를 지명했다 — 관계를 맺으려 했다. 그런데 돌아온 지명이 하나도 없다. 그림에서 이 둘이 화살표를 밖으로만 내보내고 있는 게 보인다. 담임이 실제로 먼저 봐야 할 학생은 오히려 이쪽인 경우가 많다.
  • 강한 컴포넌트가 9개라는 건, 방향을 지키면 서로 오갈 수 있는 핵심 무리가 14명뿐이라는 뜻이다. 나머지 12명은 그 핵심에 한 방향으로만 붙어 있다.