단원 3-5Structural Equivalence and Blockmodeling
구조적 등위성과 블록모델링
- 지난 시간 연습문제 확인 (Checking Last Session)
- 오늘의 질문: 간선이 없는데 거리가 0이라니 (A Distance of Zero Without a Tie)
- 구조적 등위성의 정의 (Defining Structural Equivalence)
- W에서 손으로 찾기 — 28쌍 전부 (Finding It by Hand in W)
- 두 가지 관례 — 서로 아는 쌍둥이 문제 (Two Conventions: The True-Twin Problem)
- 거리로 재기 — 해밍 거리 (Measuring by Hamming Distance)
- R의 sedist는 왜 값이 두 배인가 (Why sedist Doubles Everything)
- 상관으로 재기 (Measuring by Correlation)
- 위계적 군집화 — 덴드로그램 손 추적 (Hierarchical Clustering by Hand)
- 블록모델 ① 밀도 행렬 25칸 (Blockmodel: The Density Matrix)
- 블록모델 ② 이미지 행렬과 오차 (The Image Matrix and Fit)
- 방향 네트워크 — 보내기와 받기 (Directed Networks: Send and Receive)
- R로 검증 (Verification in R)
- 가라테에 적용 (Applying It to Karate)
- 커뮤니티와 위치는 다른 질문이다 (Community vs Position)
- 정규 등위성 맛보기 (A Taste of Regular Equivalence)
- 교실 적용 (Classroom Application)
- 연습문제 (Exercises)
- 해설과 답 (Solutions)
1. 지난 시간 연습문제 확인 (Checking Last Session's Exercises)
단원 3-4에서 아령 그래프 (삼각형 A와 삼각형 B를 다리 A1–B1로 이은 6명 7간선)에 Girvan–Newman과 fast greedy를 각각 돌려 보라고 했다. 답을 짚고 넘어간다.
문제 1 — Girvan–Newman (Solution 1 — Girvan–Newman)
| 간선 | 매개 중심성 | 왜 그 값인가 |
|---|---|---|
| A1–B1 | 9 | A쪽 3명 × B쪽 3명 = 9쌍이 전부 여기를 지난다 |
| A1–A2 | 4 | (A1,A2) 1 + (A2,B1) (A2,B2) (A2,B3) 3 = 4 |
| A1–A3 | 4 | 대칭 |
| B1–B2 | 4 | 대칭 |
| B1–B3 | 4 | 대칭 |
| A2–A3 | 1 | (A2,A3) 자기 쌍 하나뿐 |
| B2–B3 | 1 | 대칭 |
| 합 | 27 | 모든 쌍의 거리 합과 일치 |
검산: . 15쌍의 거리는 1이 7쌍, 2가 4쌍, 3이 4쌍이므로 . 맞다.
GN이 첫 번째로 제거하는 간선은 A1–B1(9로 최대)이고, 그 순간 . 두 번째부터는 남은 6개 간선이 전부 매개 1로 동점이라 아무거나 잘리고, 는 내려간다.
문제 2 — fast greedy (Solution 2 — Fast Greedy)
에 전원 단독 상태의 값을 넣으면:
| 쌍 | 비고 | |||
|---|---|---|---|---|
| A2–A3 | 1 | 2, 2 | 최대 | |
| B2–B3 | 1 | 2, 2 | 최대(동점) | |
| A1–A2, A1–A3 | 1 | 3, 2 | ||
| B1–B2, B1–B3 | 1 | 3, 2 | ||
| A1–B1 | 1 | 3, 3 | 간선 있는 쌍 중 꼴찌 | |
| 간선 없는 8쌍 | 0 | — | 모두 음수 |
다리 A1–B1이 꼴찌인 이유는 공식이 그대로 말해 준다. 분자의 벌점 는 두 끝점의 차수를 곱한 값인데, 다리의 양 끝은 이 그래프에서 가장 차수가 큰 두 명(3, 3)이다. 잇는 간선 수는 똑같이 1개인데 벌점만 18로 가장 크다. 최종 로 GN과 같은 답에 도달한다.
2. 오늘의 질문: 간선이 없는데 거리가 0이라니 (A Distance of Zero Without a Tie)
단원 3-4의 walktrap 절에서 이런 값을 봤다. 우리 학급 네트워크 에서
walktrap의 무작위 걷기 거리가 정확히 0이었다. 그런데 를 다시 보면 — S1과 S2는 서로 친구가 아니다. 한 번도 이어져 있지 않은 두 사람의 거리가 왜 0인가?
| S1 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | 이웃 목록 | |
|---|---|---|---|---|---|---|---|---|---|
| S1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | {S3, S4, S5} |
| S2 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | {S3, S4, S5} |
| S3 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | {S1, S2, S5} |
| S4 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | {S1, S2, S5} |
| S5 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | {S1, S2, S3, S4, S6} |
| S6 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | {S5, S7, S8} |
| S7 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | {S6, S8} |
| S8 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | {S6, S7} |
S1의 행과 S2의 행이 여덟 칸 모두 글자 하나 다르지 않다. 두 사람은 서로를 모르지만 아는 사람의 명단이 완전히 같다.
3. 구조적 등위성의 정의 (Defining Structural Equivalence)
정점 와 가 구조적으로 등위라는 것은, 두 사람이 나머지 모든 사람에 대해 똑같은 관계를 갖는다는 뜻이다. 무방향 네트워크에서는:
방향 네트워크라면 보내는 쪽과 받는 쪽을 둘 다 봐야 한다:
행렬로 말하면 행과 행이 같고, 열과 열이 같다는 것이다. 행은 가 누구에게 보내는지, 열은 가 누구에게 받는지를 담고 있으니, 등위란 보내는 명단도 같고 받는 명단도 같다는 말이다.
4. W에서 손으로 찾기 — 28쌍 전부 (Finding It by Hand in W: All 28 Pairs)
8명이니 쌍은 개. 이웃 목록만 놓고 전부 대조한다.
| 정점 | 이웃 목록 | 차수 |
|---|---|---|
| S1 | {S3, S4, S5} | 3 |
| S2 | {S3, S4, S5} | 3 |
| S3 | {S1, S2, S5} | 3 |
| S4 | {S1, S2, S5} | 3 |
| S5 | {S1, S2, S3, S4, S6} | 5 |
| S6 | {S5, S7, S8} | 3 |
| S7 | {S6, S8} | 2 |
| S8 | {S6, S7} | 2 |
이웃 목록이 글자 그대로 같은 쌍을 찾으면 두 쌍이 바로 보인다.
(S3, S4) — 둘 다 {S1, S2, S5}. 완전히 같다. 등위
나머지 쌍은 왜 아닌지 한 번씩 짚어 둔다. 차수부터 다르면 볼 것도 없다:
| 쌍 | 이웃 목록 비교 | 판정 |
|---|---|---|
| (S1, S3) | {S3,S4,S5} vs {S1,S2,S5} — S5만 겹친다 | 아님 |
| (S1, S5) | 차수 3 vs 5 — 애초에 개수가 다르다 | 아님 |
| (S1, S6) | {S3,S4,S5} vs {S5,S7,S8} — S5만 겹친다 | 아님 |
| (S3, S6) | {S1,S2,S5} vs {S5,S7,S8} — S5만 겹친다 | 아님 |
| (S5, S6) | 차수 5 vs 3, 게다가 서로 이어져 있다 | 아님 |
| (S6, S7) | {S5,S7,S8} vs {S6,S8} — 차수 3 vs 2 | 아님 |
| (S7, S8) | {S6,S8} vs {S6,S7} — 겹치는 건 S6뿐인데… | 보류 |
(S7, S8)이 걸린다. 두 사람의 이웃 목록은 정확히 한 글자만 다르고, 그 다른 글자가 하필 서로의 이름이다. 이건 별도로 다룬다.
5. 두 가지 관례 — 서로 아는 쌍둥이 문제 (Two Conventions: The True-Twin Problem)
S7과 S8을 나란히 놓아 보자.
| 열 | S1 | S2 | S3 | S4 | S5 | S6 | S7 | S8 |
|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | |
| 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | |
| 같은가? | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ |
여섯 칸은 같고 딱 두 칸이 다르다. 그런데 그 두 칸은 7열과 8열, 즉 두 사람 자신의 자리다. S7이 S8과 친구이고 S8이 S7과 친구인 것 — 사실 이건 "이웃이 다르다"기보다 "서로 친구다"라는 말에 가깝다.
그래서 두 가지 관례가 있다.
| 엄격 관례 (strict) | 완화 관례 (relaxed) | |
|---|---|---|
| 비교하는 열 | 모든 | — 두 사람 자신의 열은 뺀다 |
| (S1, S2) | 등위 | 등위 |
| (S3, S4) | 등위 | 등위 |
| (S7, S8) | 등위 아님 | 등위 |
차이가 나는 자리는 오직 와 두 종류뿐이다. 자기 고리가 없는 네트워크에서 이므로, 두 관례가 갈리는 것은 일 때, 즉 두 사람이 서로 친구일 때뿐이다.
서로 모르는 쌍둥이 (S1, S2) — 이웃이 같고 서로 안 친하다. 두 관례 모두 등위. (false twins)
서로 아는 쌍둥이 (S7, S8) — 이웃이 같고 서로 친하다. 완화 관례에서만 등위. (true twins)
sna::sedist()와 equiv.clust()는 완화 관례를 쓴다.
열과 열을 빼고 비교한다. 앞으로 이 노트의 거리 는 전부 완화 관례다.
손으로 셀 때 "두 사람 자신의 열은 뺀다"를 잊으면 R과 값이 안 맞는다.
6. 거리로 재기 — 해밍 거리 (Measuring by Hamming Distance)
실제 데이터에서 완전히 등위인 쌍은 거의 없다. 그래서 "얼마나 등위에 가까운가"를 재는 자가 필요하다. 가장 단순한 자가 해밍 거리다.
말로 하면 "두 사람의 이웃 명단에서 서로 어긋나는 이름이 몇 개인가"이다. 0이면 완전 등위, 클수록 다른 자리에 있다.
손 계산 — (S1, S3) (Hand Calculation: S1 and S3)
1열과 3열을 빼고 나머지 여섯 열을 하나씩 대조한다. 같은 칸도 빠짐없이 적는다.
| 열 | 다른가? | 왜 그 값인가 | ||
|---|---|---|---|---|
| S2 | 0 | 1 | ✗ 1 | S3은 S2와 친구, S1은 아니다 |
| S4 | 1 | 0 | ✗ 1 | S1은 S4와 친구, S3은 아니다 |
| S5 | 1 | 1 | ✓ 0 | 둘 다 S5와 친구 |
| S6 | 0 | 0 | ✓ 0 | 둘 다 S6과 남남 |
| S7 | 0 | 0 | ✓ 0 | 둘 다 S7과 남남 |
| S8 | 0 | 0 | ✓ 0 | 둘 다 S8과 남남 |
| 합 | 2 | 1열·3열은 제외했다 | ||
손 계산 — (S5, S6) (Hand Calculation: S5 and S6)
이 쌍이 에서 가장 먼 쌍 중 하나다. 5열과 6열을 빼고 여섯 열을 본다.
| 열 | 다른가? | 왜 그 값인가 | ||
|---|---|---|---|---|
| S1 | 1 | 0 | ✗ 1 | S5는 S1과 친구, S6은 아니다 |
| S2 | 1 | 0 | ✗ 1 | S5는 S2와 친구, S6은 아니다 |
| S3 | 1 | 0 | ✗ 1 | S5는 S3과 친구, S6은 아니다 |
| S4 | 1 | 0 | ✗ 1 | S5는 S4와 친구, S6은 아니다 |
| S7 | 0 | 1 | ✗ 1 | S6은 S7과 친구, S5는 아니다 |
| S8 | 0 | 1 | ✗ 1 | S6은 S8과 친구, S5는 아니다 |
| 합 | 6 | 여섯 열이 전부 어긋난다 | ||
— 여섯 칸 중 여섯 칸이 다르다. 남은 모든 사람에 대해 두 사람의 태도가 정반대다. 그런데 이 두 사람은 서로 친구다(). 친하지만 자리가 정반대인 사이 — 다리를 놓는 두 사람의 전형적인 모습이다.
28쌍 전부 (All 28 Pairs)
| 쌍 | 어긋나는 열 | 쌍 | 어긋나는 열 | ||
|---|---|---|---|---|---|
| (S1,S2) | 0 | 없음 | (S2,S8) | 5 | S3, S4, S5, S6, S7 |
| (S1,S3) | 2 | S2, S4 | (S3,S4) | 0 | 없음 |
| (S1,S4) | 2 | S2, S3 | (S3,S5) | 2 | S4, S6 |
| (S1,S5) | 2 | S2, S6 | (S3,S6) | 4 | S1, S2, S7, S8 |
| (S1,S6) | 4 | S3, S4, S7, S8 | (S3,S7) | 5 | S1, S2, S5, S6, S8 |
| (S1,S7) | 5 | S3, S4, S5, S6, S8 | (S3,S8) | 5 | S1, S2, S5, S6, S7 |
| (S1,S8) | 5 | S3, S4, S5, S6, S7 | (S4,S5) | 2 | S3, S6 |
| (S2,S3) | 2 | S1, S4 | (S4,S6) | 4 | S1, S2, S7, S8 |
| (S2,S4) | 2 | S1, S3 | (S4,S7) | 5 | S1, S2, S5, S6, S8 |
| (S2,S5) | 2 | S1, S6 | (S4,S8) | 5 | S1, S2, S5, S6, S7 |
| (S2,S6) | 4 | S3, S4, S7, S8 | (S5,S6) | 6 | S1, S2, S3, S4, S7, S8 |
| (S2,S7) | 5 | S3, S4, S5, S6, S8 | (S5,S7) | 5 | S1, S2, S3, S4, S8 |
| (S6,S7) | 1 | S5 | (S5,S8) | 5 | S1, S2, S3, S4, S7 |
| (S6,S8) | 1 | S5 | (S7,S8) | 0 | 없음 |
거리 행렬로 정리하면:
S1 S2 S3 S4 S5 S6 S7 S8 S1 0 0 2 2 2 4 5 5 S2 0 0 2 2 2 4 5 5 S3 2 2 0 0 2 4 5 5 S4 2 2 0 0 2 4 5 5 S5 2 2 2 2 0 6 5 5 S6 4 4 4 4 6 0 1 1 S7 5 5 5 5 5 1 0 0 S8 5 5 5 5 5 1 0 0
가장 먼 쌍은 (S5,S6)의 6. 서로 친구인데도 자리는 정반대.
(S6,S7)과 (S6,S8)이 1. 딱 S5 한 칸만 다르다 — S6은 S5와 이어져 있고 S7·S8은 아니다. S6이 "S7·S8과 거의 같은 자리인데 바깥으로 통하는 문 하나를 더 가진 사람"임을 숫자가 말해 준다.
유클리드 거리 (Euclidean Distance)
교재는 유클리드 거리도 쓴다. 0과 1로만 된 데이터에서는 둘의 관계가 아주 단순하다.
는 −1, 0, 1 셋 중 하나뿐이고 제곱하면 1, 0, 1이 된다. 즉 제곱합이 곧 어긋난 칸의 개수다. 따라서 이진 데이터에서는
예: 일 때 . 순서(누가 더 가까운가)는 어차피 같으므로, 손으로 볼 때는 해밍 쪽이 훨씬 읽기 좋다.
7. R의 sedist는 왜 값이 두 배인가 (Why sedist Doubles Everything)
교재 코드대로 sedist(W, method="hamming")를 돌리면 우리가 손으로 구한 값의
정확히 두 배가 나온다. 인데 R은 4를 찍는다. 왜 그럴까?
sedist는 방향 네트워크를 기본으로 만들어졌다. §3에서 봤듯 방향 네트워크의 등위는
행(보내기)과 열(받기)을 둘 다 봐야 한다. 그래서 sedist는
각 정점의 프로필을 이렇게 이어 붙인다:
그런데 무방향 네트워크에서는 가 대칭이라 다. 보내기 프로필과 받기 프로필이 똑같은 벡터다. 같은 벡터를 두 번 이어 붙였으니 어긋나는 칸도 정확히 두 번 세어진다.
> all(D == sedist(W, method='hamming') / 2)
[1] TRUE
sedist(..., "hamming")을 쓰면
2로 나눠야 손 계산과 맞는다. 유클리드는 배가 된다
(). 다행히 순서는 바뀌지 않으므로
군집화 결과는 똑같다. 다만 blockmodel(..., h=?)에 자를 높이를 넣을 때는
R의 눈금(두 배)으로 넣어야 한다 — 이게 §9에서 바로 걸린다.
8. 상관으로 재기 (Measuring by Correlation)
해밍은 "몇 칸 다른가"만 센다. 그런데 차수가 크게 다른 두 사람은 겹치는 이웃이 많아도 해밍이 커진다. 이걸 보정하려고 피어슨 상관을 쓰기도 한다.
해밍과 달리 클수록 비슷하다(거리가 아니라 유사도다). 1이면 완전 등위, −1이면 정반대.
손 계산 — (Hand Calculation)
1열·3열을 빼면 남는 열은 (S2, S4, S5, S6, S7, S8) 여섯 개.
평균은 둘 다 . 편차를 전부 적는다.
| 열 | 곱 | ||||||
|---|---|---|---|---|---|---|---|
| S2 | 0 | 1 | |||||
| S4 | 1 | 0 | |||||
| S5 | 1 | 1 | |||||
| S6 | 0 | 0 | |||||
| S7 | 0 | 0 | |||||
| S8 | 0 | 0 | |||||
| 합 | |||||||
재미있는 점: S6, S7, S8 세 칸은 둘 다 0인데도 곱이 로 양수 기여를 한다. "둘 다 저 사람들과는 안 논다"는 공통의 부재도 유사성으로 세는 것이다. 해밍이라면 이 세 칸은 그냥 "안 다름"으로 0점 처리된다. 이게 두 자의 성격 차이다.
손 계산 — (A Perfect Anticorrelation)
5열·6열을 빼면:
여기서 다. 즉 는 의 완벽한 뒤집기다. 어떤 변수와 그것을 뒤집은 변수의 상관은 항상 정확히 −1이므로
§6에서 해밍 6(최댓값)이었던 그 쌍이 상관에서도 −1(최솟값)이다. 두 자가 같은 답을 준 셈.
주요 쌍 비교 (Side-by-Side Comparison)
| 쌍 | 해밍 | 유클리드 | (완화, 열 제외) | 읽는 법 |
|---|---|---|---|---|
| (S1,S2) | 0 | 0 | 완전 등위 | |
| (S1,S3) | 2 | 1.4142 | 약하게 비슷 | |
| (S1,S5) | 2 | 1.4142 | 해밍은 같지만 상관은 더 높다 | |
| (S6,S7) | 1 | 1.0000 | 한 칸 차이 | |
| (S7,S8) | 0 | 0 | 완전 등위(완화 관례) | |
| (S5,S6) | 6 | 2.4495 | 완벽하게 정반대 |
(S1,S3)과 (S1,S5)를 보라. 해밍은 둘 다 2로 똑같은데 상관은 0.25 대 0.5로 갈린다. S5는 차수 5로 S1의 이웃을 전부 품고 있어서, "겹치는 정도"로 보면 S1과 더 닮았다. 해밍은 이 차이를 못 잡고 상관은 잡는다.
cor(t(W))와 sedist(W,"correlation")은 다른 값을 준다.
cor(t(W))는 8열을 전부 쓰지만 sedist는 열을 빼고 계산한다.
(S1,S3)의 경우 vs , (S7,S8)의 경우 vs 로
결론이 완전히 달라진다. 특히 (S7,S8)은 cor(t(W))로 보면
"별로 안 닮았다"는 엉뚱한 답이 나온다.참고로
sedist가 프로필을 두 배로 이어 붙이는 것(§7)은 상관에는 영향이 없다.
같은 벡터를 두 번 붙이면 분자·분모가 똑같이 2배가 되어 약분된다.
그래서 위 표의 여섯 칸짜리 손 계산이 R의 값과 그대로 맞는다.
9. 위계적 군집화 — 덴드로그램 손 추적 (Hierarchical Clustering by Hand)
이제 거리 행렬 가 있으니 가까운 것끼리 묶어 올라간다. 단원 3-4의 fast greedy와 겉모습은 같은 병합형이지만, 기준이 가 아니라 등위 거리라는 점이 다르다.
묶인 덩어리 사이의 거리는 완전 연결법(complete linkage)으로 잰다:
"가장 안 닮은 두 사람의 거리"를 덩어리의 거리로 삼는 것이다. 보수적인 기준이라
덩어리 안의 모든 사람이 서로 그 높이 이내로 닮았음이 보장된다. 등위 분석에는
이 성질이 중요해서 equiv.clust의 기본값도 complete다.
1단계 — 거리 0인 쌍부터 (Step 1: Distance Zero)
의 최솟값은 0이고, 그런 쌍이 세 개다. 순서대로 묶는다.
| 병합 | 높이 | 근거 |
|---|---|---|
| {S1, S2} | 0 | |
| {S3, S4} | 0 | |
| {S7, S8} | 0 |
지금 덩어리는 다섯 개: {S1,S2}, {S3,S4}, {S5}, {S6}, {S7,S8}
2단계 — 다섯 덩어리의 거리 10쌍 전부 (Step 2: All Ten Cluster Pairs)
| 덩어리 쌍 | 최대값을 잡는 계산 | 거리 |
|---|---|---|
| {S1,S2} – {S3,S4} | — 네 쌍 모두 2 | 2 |
| {S1,S2} – {S5} | 2 | |
| {S1,S2} – {S6} | 4 | |
| {S1,S2} – {S7,S8} | 5 | |
| {S3,S4} – {S5} | 2 | |
| {S3,S4} – {S6} | 4 | |
| {S3,S4} – {S7,S8} | 5 | |
| {S5} – {S6} | 6 | |
| {S5} – {S7,S8} | 5 | |
| {S6} – {S7,S8} | 1 ← 최소 |
가장 가까운 쌍은 {S6}과 {S7,S8}. 높이 1에서 병합한다. 덩어리는 넷: {S1,S2}, {S3,S4}, {S5}, {S6,S7,S8}
3단계 — 세 곳이 동점 2 (Step 3: A Three-Way Tie)
| 덩어리 쌍 | 계산 | 거리 |
|---|---|---|
| {S1,S2} – {S3,S4} | 2 ← 동점 | |
| {S1,S2} – {S5} | 2 ← 동점 | |
| {S3,S4} – {S5} | 2 ← 동점 | |
| {S1,S2} – {S6,S7,S8} | 5 | |
| {S3,S4} – {S6,S7,S8} | 5 | |
| {S5} – {S6,S7,S8} | 6 |
2가 셋이나 동점이다. R은 번호 순서로 {S1,S2}+{S3,S4}를 먼저 묶는다(높이 2). 그다음 {S1,S2,S3,S4}와 {S5}의 거리는 로 여전히 2 — 그래서 같은 높이 2에서 S5도 흡수된다.
4단계 — 마지막 (Step 4: The Last Merge)
남은 두 덩어리 {S1,S2,S3,S4,S5}와 {S6,S7,S8}의 거리는 — 이 최대다. 높이 6에서 전체가 하나가 된다.
어디서 자를 것인가 (Where to Cut)
| 자르는 높이 | 위치 개수 | 위치 |
|---|---|---|
| 0.5 | 5 | {S1,S2} {S3,S4} {S5} {S6} {S7,S8} — 완전 등위만 묶은 것 |
| 1.5 | 4 | {S1,S2} {S3,S4} {S5} {S6,S7,S8} |
| 2.5 | 2 | {S1,S2,S3,S4,S5} {S6,S7,S8} — 3-4의 커뮤니티와 우연히 일치 |
| 6.5 | 1 | 전체 하나 |
equiv.clust의 덴드로그램 높이는
sedist 눈금이라 우리 손 계산의 두 배다 (0, 0, 0, 1, 2, 2, 6 → 0, 0, 0, 2, 4, 4, 12).
그래서 위치 5개를 얻으려면 blockmodel(W, ec, h=1)이라고 써야 한다
(손 눈금 0.5 × 2 = 1).
10. 블록모델 ① 밀도 행렬 25칸 (Blockmodel: The Density Matrix)
위치를 정했으면 이제 위치끼리의 관계를 요약한다. 8×8 행렬을 5×5로 줄이는 것이다. 이것이 블록모델링이다.
위치 에서 위치 로 가는 블록 밀도는:
에서 자른 다섯 위치로 25칸을 전부 계산한다.
P1={S1,S2}, P2={S3,S4}, P3={S5}, P4={S6}, P5={S7,S8}
| 블록 | 더하는 칸 | 간선 | 칸 수 | 밀도 | 왜 그 값인가 |
|---|---|---|---|---|---|
| P1→P1 | 0 | S1과 S2는 서로 친구가 아니다 | |||
| P1→P2 | 1 | 네 칸 전부 이어져 있다 | |||
| P1→P3 | 1 | 둘 다 S5와 친구 | |||
| P1→P4 | 0 | 둘 다 S6과 남남 | |||
| P1→P5 | 0 | 한 칸도 없다 | |||
| P2→P1 | 1 | 대칭이므로 P1→P2와 같다 | |||
| P2→P2 | 0 | S3과 S4도 서로 친구가 아니다 | |||
| P2→P3 | 1 | 둘 다 S5와 친구 | |||
| P2→P4 | 0 | 둘 다 S6과 남남 | |||
| P2→P5 | 0 | 한 칸도 없다 | |||
| P3→P1 | 1 | S5는 둘 다와 친구 | |||
| P3→P2 | 1 | S5는 둘 다와 친구 | |||
| P3→P3 | 없음 (혼자) | NA | 셀 칸이 없다 — 0이 아니라 정의 불가 | ||
| P3→P4 | 1 | 유일한 다리 | |||
| P3→P5 | 0 | S5는 S7·S8을 모른다 | |||
| P4→P1 | 0 | 대칭 | |||
| P4→P2 | 0 | 대칭 | |||
| P4→P3 | 1 | 대칭 | |||
| P4→P4 | 없음 (혼자) | NA | 셀 칸이 없다 | ||
| P4→P5 | 1 | S6은 둘 다와 친구 | |||
| P5→P1 | 0 | 대칭 | |||
| P5→P2 | 0 | 대칭 | |||
| P5→P3 | 0 | 대칭 | |||
| P5→P4 | 1 | 대칭 | |||
| P5→P5 | 1 | S7과 S8은 서로 친구다 |
칸 수를 다 더하면 로, 대각선(자기 자신)을 뺀 인접행렬의 모든 칸을 정확히 한 번씩 덮었다. 검산 통과.
P1 P2 P3 P4 P5 P1 0 1 1 0 0 P2 1 0 1 0 0 P3 1 1 NA 1 0 P4 0 0 1 NA 1 P5 0 0 0 1 1
P1→P1 = 0, P2→P2 = 0 — 서로 모르는 쌍둥이. 이런 블록을 영 블록(null block)이라 한다.
P5→P5 = 1 — 서로 아는 쌍둥이. 이런 블록을 완전 블록(complete block)이라 한다.
§5에서 관례를 따져 가며 구분했던 두 종류의 쌍둥이가, 블록모델에서는 대각 블록이 0이냐 1이냐로 자동으로 구분된다.
11. 블록모델 ② 이미지 행렬과 오차 (The Image Matrix and Fit)
밀도 행렬을 한 번 더 줄여 0과 1만 남긴다. 기준은 보통 전체 밀도다.
그런데 의 밀도 행렬은 이미 전부 0 아니면 1이다. 자를 것이 없다. 밀도 행렬 = 이미지 행렬이다.
블록모델의 오차 (Blockmodel Error)
오차는 "이상적인 블록이라면 이랬어야 하는데 실제로 어긋난 칸의 수"다. 1블록(완전 블록)에서는 0인 칸이, 0블록(영 블록)에서는 1인 칸이 오차다.
의 5위치 블록모델에서는 오차 = 0이다. 모든 블록이 밀도 정확히 0 아니면 1이니, 어긋난 칸이 하나도 없다. 이를 완벽 적합(perfect fit) 또는 lean fit이라 부른다.
더 굵게 자르면 어떻게 되는가 (Cutting Coarser)
를 높여 위치를 줄이면 오차가 생긴다. R 눈금 (손 눈금 1.5)이면 위치 4개 — {S1,S2} {S3,S4} {S5} {S6,S7,S8} — 이고, 이때 P4→P4 밀도가 다음과 같다:
여기는 삼각형이라 아직 1이다. 문제는 다른 칸에서 생긴다. R로 확인하면 에서 0.3333짜리 칸이 나타난다 — 0도 1도 아닌 어중간한 블록, 곧 오차가 있는 블록이다. (손 눈금 2.5, 위치 2개)까지 굵게 자르면 0.8000, 0.0667, 1.0000 같은 값이 나온다.
12. 방향 네트워크 — 보내기와 받기 (Directed Networks: Send and Receive)
§3에서 방향 네트워크는 행과 열을 둘 다 봐야 한다고 했다. 왜 그런지
교재(block modeling.r)의 5명짜리 예제로 확인한다.
A B C D E A 0 1 1 0 0 A는 B, C에게 보낸다 B 0 0 0 1 1 B는 D, E에게 보낸다 C 0 0 0 1 1 C는 D, E에게 보낸다 D 0 0 0 1 1 D는 자기 자신과 E에게 보낸다 ← 자기 고리 E 0 0 0 1 0 E는 D에게 보낸다
| 정점 | 행 = 보내는 명단 | 열 = 받는 명단 |
|---|---|---|
| A | {B, C} | { } — 아무에게도 안 받는다 |
| B | {D, E} | {A} |
| C | {D, E} | {A} |
| D | {D, E} | {B, C, D, E} |
| E | {D} | {B, C, D} |
완화 관례(자기들 행·열은 제외)로 10쌍을 판정하면 이렇게 갈린다.
| 쌍 | 행 일치 | 열 일치 | 읽는 법 | |
|---|---|---|---|---|
| (A, B) | ✗ | ✓ | 3 | 받는 건 같고 보내는 게 다르다 — 열만 보면 속는다 |
| (A, C) | ✗ | ✓ | 3 | 위와 같음 |
| (A, D) | ✗ | ✗ | 6 | 둘 다 다르다 — 최대 |
| (A, E) | ✗ | ✗ | 6 | 둘 다 다르다 — 최대 |
| (B, C) | ✓ | ✓ | 0 | 구조적 등위 |
| (B, D) | ✓ | ✗ | 3 | 보내는 건 같고 받는 게 다르다 — 행만 보면 속는다 |
| (B, E) | ✓ | ✗ | 3 | 위와 같음 |
| (C, D) | ✓ | ✗ | 3 | 위와 같음 |
| (C, E) | ✓ | ✗ | 3 | 위와 같음 |
| (D, E) | ✓ | ✓ | 0 | 구조적 등위 |
(A, B)를 손으로 (Hand Calculation: A and B)
행 비교 — A행과 B행에서 A열·B열을 뺀 (C, D, E) 세 칸:
| 열 | 다른가? | ||
|---|---|---|---|
| C | 1 | 0 | ✗ 1 |
| D | 0 | 1 | ✗ 1 |
| E | 0 | 1 | ✗ 1 |
| 행 해밍 | 3 | ||
열 비교 — A열과 B열에서 A행·B행을 뺀 (C, D, E) 세 칸:
| 행 | 다른가? | ||
|---|---|---|---|
| C | 0 | 0 | ✓ 0 |
| D | 0 | 0 | ✓ 0 |
| E | 0 | 0 | ✓ 0 |
| 열 해밍 | 0 | ||
행만 같은 쌍 (B,D) — 둘 다 D와 E에게 보내지만, B는 A에게만 받고 D는 넷에게 받는다.
열만 같은 쌍 (A,B) — 둘 다 (C·D·E로부터는) 아무것도 안 받지만, 보내는 곳이 완전히 다르다.
둘 다 같은 쌍 (B,C), (D,E) — 이것만 진짜 구조적 등위다.
방향 네트워크에서 한쪽만 보면 10쌍 중 4~6쌍을 잘못 판정한다.
13. R로 검증 (Verification in R)
library(sna); library(igraph)
nm <- paste0("S", 1:8)
W <- matrix(0, 8, 8, dimnames = list(nm, nm))
el <- rbind(c(1,3),c(1,4),c(1,5),c(2,3),c(2,4),c(2,5),c(3,5),c(4,5),
c(5,6),c(6,7),c(6,8),c(7,8))
for (i in 1:nrow(el)) { W[el[i,1], el[i,2]] <- 1; W[el[i,2], el[i,1]] <- 1 }
## 완화 해밍 거리 D — i, j 열을 빼고 비교 (손 계산과 같은 눈금)
D <- matrix(0, 8, 8, dimnames = list(nm, nm))
for (i in 1:8) for (j in 1:8) {
kk <- setdiff(1:8, c(i, j))
D[i, j] <- sum(W[i, kk] != W[j, kk])
}
D
S1 S2 S3 S4 S5 S6 S7 S8
S1 0 0 2 2 2 4 5 5
S2 0 0 2 2 2 4 5 5
S3 2 2 0 0 2 4 5 5
S4 2 2 0 0 2 4 5 5
S5 2 2 2 2 0 6 5 5
S6 4 4 4 4 6 0 1 1
S7 5 5 5 5 5 1 0 0
S8 5 5 5 5 5 1 0 0
## sedist는 보내기+받기를 이어 붙이므로 무방향에서는 정확히 두 배 (§7)
all(D == sedist(W, method = "hamming") / 2)
[1] TRUE
## 상관은 두 배로 붙여도 값이 안 변한다 (§8)
sedist(W, method = "correlation")[5, 6]
[1] -1
## 위계적 군집화 — 손으로 추적한 병합 순서(§9)와 대조
hc <- hclust(as.dist(D), method = "complete")
cbind(hc$merge, height = hc$height)
height
[1,] -1 -2 0 {S1,S2}
[2,] -3 -4 0 {S3,S4}
[3,] -7 -8 0 {S7,S8}
[4,] -6 3 1 S6 + {S7,S8}
[5,] 1 2 2 {S1,S2} + {S3,S4}
[6,] -5 5 2 S5 흡수
[7,] 4 6 6 전체 통합
paste(cutree(hc, h = 0.5), collapse = "")
[1] "11223455"
## 블록모델 — h는 sedist 눈금이라 손 눈금의 두 배로 넣는다
ec <- equiv.clust(W, method = "hamming", cluster.method = "complete")
ec$cluster$height
[1] 0 0 0 2 4 4 12 ← 손 계산 0,0,0,1,2,2,6 의 두 배
bm <- blockmodel(W, ec, h = 1) # 손 눈금 0.5
bm$block.membership[order(bm$order.vector)]
[1] 1 1 2 2 3 4 5 5
round(bm$block.model, 4)
Block 1 Block 2 Block 3 Block 4 Block 5
Block 1 0 1 1 0 0
Block 2 1 0 1 0 0
Block 3 1 1 NaN 1 0
Block 4 0 0 1 NaN 1
Block 5 0 0 0 1 1
## 전체 밀도 — 이미지 행렬의 문턱값
sum(W) / (8 * 7)
[1] 0.4285714
NaN은 혼자인 위치의 대각 블록
(칸 수가 0이라 0으로 나눈 결과)이고, 우리가 NA로 적은 그 자리다.
14. 가라테에 적용 (Applying It to Karate)
인공 예제 는 너무 깨끗했다. 실제 데이터에서는 어떨까? 34명 78간선의 가라테 클럽에 같은 절차를 돌린다.
완전히 등위인 쌍 (Perfectly Equivalent Pairs)
쌍 중 거리가 정확히 0인 쌍은 11개다. 그런데 이 11쌍은 흩어져 있지 않고 딱 두 무리를 이룬다.
| 위치 | 구성원 | 이웃 | 차수 | 쌍 개수 |
|---|---|---|---|---|
| 초록 | 15, 16, 19, 21, 23 | {33, 34} | 2 | |
| 빨강 | 18, 22 | {1, 2} | 2 | |
| 합 | 11 | |||
거의 등위인 쌍과 가장 먼 쌍 (Near-Equivalent and Farthest Pairs)
거리 1(딱 한 칸 어긋남)인 쌍도 9개 있다: (5,6), (7,11), (8,14), (10,29), (12,13), (12,18), (12,22), (18,20), (20,22).
반대쪽 끝은 (1, 34), 거리 25다. 차수 16과 17로 이 클럽에서 가장 큰 두 사람, 사범과 회장이다. 561쌍 중 가장 등위가 아닌 쌍이 두 지도자라는 것 — 둘 다 "지도자"이지만 거느린 사람이 겹치지 않는다는 뜻이다.
덴드로그램을 잘라 보면 (Cutting the Dendrogram)
| 위치 | 파벌과의 ARI | ||
|---|---|---|---|
| 2 | {33, 34} / 나머지 32명 | ||
| 4 | {1} / {2,3,4,8,12,13,14,18,20,22} / 21명 / {33,34} | ||
| 6 | {1} / {2,4,8,12,13,14,18,20,22} / {3} / {5,6,7,10,11,17,25,26,28,29} / {9,15,16,19,21,23,24,27,30,31,32} / {33,34} |
이건 등위 분석이 틀린 게 아니라 다른 걸 물었기 때문이다. 등위 분석이 가장 먼저 갈라낸 것은 파벌이 아니라 "많이 거느린 사람 vs 그렇지 않은 사람", 즉 계층이다. 로 더 쪼개서야 1번과 33·34번이 각각 떨어져 나오고 ARI가 0.3675까지 올라간다.
15. 커뮤니티와 위치는 다른 질문이다 (Community vs Position)
| 커뮤니티 (community) | 위치 (position) | |
|---|---|---|
| 같은 집단이라는 뜻 | 서로 자주 이어져 있다 | 이웃 명단이 같다 |
| 묻는 질문 | 누구와 어울리는가 | 어떤 자리에 있는가 |
| 같은 집단인데 서로 남남일 수 있나 | 드물다 (그러면 가 깎인다) | 흔하다 — S1·S2, 가라테 15·16 |
| 서로 친구인데 다른 집단일 수 있나 | 경계에서 가끔 | 흔하다 — S5·S6은 거리 6 |
| 기준 | 모듈러리티 최대화 | 등위 거리 최소화 |
| 몇 개로 나눌지 | 가 알아서 정한다 | 분석자가 를 정한다 |
| 가라테의 답 | 4모둠, | {33,34} vs 나머지 32명 |
| 교실에서 대응하는 것 | 무리, 패거리 | 역할, 처지 |
커뮤니티는 "누구와 같이 노는가"를 묻고,
위치는 "누구를 통해 학급에 속해 있는가"를 묻는다.
같은 네트워크에서 두 답이 다르게 나오는 것은 오류가 아니라 당연한 일이다.
16. 정규 등위성 맛보기 (A Taste of Regular Equivalence)
구조적 등위성에는 한계가 하나 있다. 지난 시간의 아령 그래프 를 보자.
A2 ---- A3 B2 ---- B3
\ / \ /
\ / \ /
A1 ------------- B1
A1과 B1의 등위 거리는 4다 — 여섯 칸 중 네 칸이 어긋난다. 구조적 등위성의 기준으로는 전혀 닮지 않은 두 사람이다.
그런데 그림을 보면 두 사람은 명백히 똑같은 처지다. 각자 삼각형 하나를 거느리고, 다리 하나를 붙들고 있다. 왼쪽 그림을 좌우로 뒤집으면 A1은 정확히 B1이 된다.
이 직관을 정의로 옮긴 것이 정규 등위성(regular equivalence)이다. 대략 이런 뜻이다:
정의에 "등위"가 다시 들어가는 재귀적 정의라, 구조적 등위성처럼 한 번 훑어서 계산할 수 없다. 반복해서 수렴시키는 알고리즘(REGE, CATREGE 등)이 따로 있다.
| 구조적 등위 (structural) | 정규 등위 (regular) | |
|---|---|---|
| 기준 | 이웃의 이름이 같다 | 이웃의 종류가 같다 |
| 아령의 A1, B1 | 등위 아님 (거리 4) | 등위 |
| 교실 비유 | "같은 친구들과 논다" | "같은 역할을 한다" |
| 계산 | 한 번에 (sedist) | 반복 수렴 (REGE 등) |
| 구조적이면 정규인가 | 그렇다. 구조적 등위는 정규 등위의 특수한 경우다 | |
17. 교실 적용 (Classroom Application)
가라테의 15, 16, 19, 21, 23번은 각각 보면 그냥 "차수 2인 학생"이다. 그런데 다섯 명이 완전히 같은 위치임을 알면 이야기가 달라진다. 이들은 모두 회장단하고만 이어져 있고 서로는 모른다. 교실로 옮기면 "담임하고만 말하는 학생 다섯 명"이다. 한 명씩 상담하는 것보다 이 다섯을 서로 이어 주는 활동이 훨씬 효율적이다 — 같은 처지에 있으니 접점을 만들기도 쉽다.
같은 위치의 두 학생을 한 모둠에 넣으면 역할이 겹친다. 둘 다 같은 사람들하고만 통하니, 모둠 안에서 가져오는 정보가 똑같다. 반대로 다른 위치끼리 섞으면 모둠이 닿는 범위가 넓어진다. S1(중심부)·S6(다리)·S7(주변부)을 한 모둠으로 묶는 식이다. "친한 애들끼리 vs 안 친한 애들끼리"라는 흔한 이분법보다 훨씬 쓸모 있는 기준이다.
30명짜리 교우관계는 눈으로 못 읽는다. 위치 4~5개로 줄인 이미지 행렬은 읽힌다. "중심부 ↔ 준중심부는 1, 중심부 ↔ 주변부는 0, 주변부는 다리 한 명을 통해서만 연결" 같은 문장 몇 개로 학급 구조를 요약할 수 있다. 그리고 오차가 큰 블록이야말로 흥미로운 곳이다 — "같은 위치인데 저 사람만 다르게 행동한다"는 신호다.
3월과 7월에 같은 조사를 하고 위치를 비교하면, "주변부에 있던 학생이 준중심부로 이동했는가"를 볼 수 있다. 차수 하나가 늘어난 것보다 위치가 바뀐 것이 훨씬 큰 변화다 — 차수는 친구 한 명이 늘어도 오르지만, 위치가 바뀌려면 어울리는 사람들의 종류가 달라져야 하기 때문이다.
"이 학생은 주변부"라고 딱지를 붙이는 순간 분석은 낙인이 된다. 위치는 지금 이 관계망에서 그 사람이 놓인 자리이지 성격이나 능력이 아니다. 관계가 바뀌면 위치도 바뀐다 — 실제로 ④가 그걸 재는 방법이다. 게다가 등위 분석은 측정에 특히 민감하다. 설문에서 친구를 3명까지만 적게 했다면 차수 3인 학생이 잔뜩 생기고, 그중 상당수가 인위적으로 "등위"가 된다. 결과를 학생·학부모에게 그대로 보여 주는 일은 없어야 한다.
18. 연습문제 (Exercises)
지난 시간과 같은 아령 그래프 : 삼각형 A(A1, A2, A3)와 삼각형 B(B1, B2, B3)를 간선 A1–B1 하나로 이은 6명 7간선.
- 여섯 명의 이웃 목록을 쓰고, 완화 해밍 거리 15쌍을 전부 구하라. 각 쌍마다 어긋나는 열이 무엇인지도 적을 것.
- 완전히 등위인 쌍을 모두 찾아라. 그 쌍은 서로 모르는 쌍둥이인가 서로 아는 쌍둥이인가?
- complete linkage로 병합 5단계를 추적하고 각 단계의 높이를 적어라.
- 위치 {A1} / {A2,A3} / {B1} / {B2,B3}로 잘랐을 때 밀도 행렬 16칸을 전부 구하라. 오차는 몇인가?
- A1과 B1의 거리는 얼마인가? 구조적으로 등위가 아닌데도 "같은 역할"이라 부르고 싶은 이유를 §16의 용어로 설명하라.
§19 해설 — 먼저 풀고 맞춰 볼 것.
우리 학급 네트워크 에 S1–S2 간선 하나를 추가한다(13간선이 된다). S1과 S2가 서로 친구가 된 것이다.
- S1과 S2는 여전히 구조적으로 등위인가? 완화 관례와 엄격 관례로 각각 답하라.
- 거리 행렬에서 값이 바뀌는 칸을 전부 찾아라 (12칸이다). 바뀌지 않는 칸이 왜 안 바뀌는지도 한 줄로 설명할 것.
- 는 2에서 1로 줄어든다. 왜 줄어드는가?
- 은 4에서 5로 늘어난다. 왜 늘어나는가?
- 덴드로그램의 병합 순서는 어떻게 바뀌는가? 에서 자르면 위치가 몇 개인가?
- 다섯 위치의 밀도 행렬에서 딱 한 칸이 바뀐다. 어느 칸이 얼마로 바뀌는가? 이 변화가 §11의 "서로 아는 쌍둥이"와 어떻게 연결되는지 설명하라.
§19 해설 — 먼저 풀고 맞춰 볼 것.
19. 해설과 답 (Solutions)
문제 1 해설 — 아령 그래프의 구조적 등위성 (Solution 1)
(1) 이웃 목록과 15쌍의 거리. 먼저 인접행렬을 놓는다.
| A1 | A2 | A3 | B1 | B2 | B3 | 이웃 목록 | 차수 | |
|---|---|---|---|---|---|---|---|---|
| A1 | 0 | 1 | 1 | 1 | 0 | 0 | {A2, A3, B1} | 3 |
| A2 | 1 | 0 | 1 | 0 | 0 | 0 | {A1, A3} | 2 |
| A3 | 1 | 1 | 0 | 0 | 0 | 0 | {A1, A2} | 2 |
| B1 | 1 | 0 | 0 | 0 | 1 | 1 | {A1, B2, B3} | 3 |
| B2 | 0 | 0 | 0 | 1 | 0 | 1 | {B1, B3} | 2 |
| B3 | 0 | 0 | 0 | 1 | 1 | 0 | {B1, B2} | 2 |
(A2, A3)를 예로 전개해 본다. 2열·3열을 빼고 나머지 (A1, B1, B2, B3) 네 칸:
| 열 | 다른가? | 왜 그 값인가 | ||
|---|---|---|---|---|
| A1 | 1 | 1 | ✓ 0 | 둘 다 A1과 친구 |
| B1 | 0 | 0 | ✓ 0 | 둘 다 B1을 모른다 |
| B2 | 0 | 0 | ✓ 0 | 둘 다 B2를 모른다 |
| B3 | 0 | 0 | ✓ 0 | 둘 다 B3을 모른다 |
| 합 | 0 | 완전 등위 | ||
(A1, B1)도 전개한다. A1열·B1열을 빼고 (A2, A3, B2, B3) 네 칸:
| 열 | 다른가? | 왜 그 값인가 | ||
|---|---|---|---|---|
| A2 | 1 | 0 | ✗ 1 | A1만 A2와 친구 |
| A3 | 1 | 0 | ✗ 1 | A1만 A3와 친구 |
| B2 | 0 | 1 | ✗ 1 | B1만 B2와 친구 |
| B3 | 0 | 1 | ✗ 1 | B1만 B3와 친구 |
| 합 | 4 | 네 칸이 전부 어긋난다 — 최댓값 | ||
15쌍 전부:
| 쌍 | 어긋나는 열 | 왜 그 값인가 | |
|---|---|---|---|
| (A2, A3) | 0 | 없음 | 둘 다 {A1}만 본다(서로는 제외) |
| (B2, B3) | 0 | 없음 | 둘 다 {B1}만 본다(서로는 제외) |
| (A1, A2) | 1 | B1 | A1만 다리를 붙들고 있다 |
| (A1, A3) | 1 | B1 | 위와 같음 |
| (B1, B2) | 1 | A1 | B1만 다리를 붙들고 있다 |
| (B1, B3) | 1 | A1 | 위와 같음 |
| (A1, B2) | 3 | A2, A3, B3 | A1은 A쪽 둘을, B2는 B3를 갖는다 |
| (A1, B3) | 3 | A2, A3, B2 | 위와 같음 |
| (A2, B1) | 3 | A3, B2, B3 | 대칭 |
| (A3, B1) | 3 | A2, B2, B3 | 대칭 |
| (A1, B1) | 4 | A2, A3, B2, B3 | 두 다리지기 — 가장 먼 쌍 |
| (A2, B2) | 4 | A1, A3, B1, B3 | 양쪽 삼각형의 부하들 |
| (A2, B3) | 4 | A1, A3, B1, B2 | 위와 같음 |
| (A3, B2) | 4 | A1, A2, B1, B3 | 위와 같음 |
| (A3, B3) | 4 | A1, A2, B1, B2 | 위와 같음 |
(3) 병합 5단계. complete linkage로 추적한다.
| 단계 | 병합 | 높이 | 근거 (최댓값 계산) |
|---|---|---|---|
| 1 | {A2, A3} | 0 | |
| 2 | {B2, B3} | 0 | |
| 3 | {A1} + {A2,A3} | 1 | — 남은 최소 |
| 4 | {B1} + {B2,B3} | 1 | |
| 5 | 전체 | 4 | — |
equiv.clust 눈금으로는 0, 0, 2, 2, 8이다.)
(4) 밀도 행렬 16칸. a={A1}, b={A2,A3}, c={B1}, d={B2,B3}로 놓는다.
| 블록 | 더하는 칸 | 간선 | 칸 수 | 밀도 | 왜 그 값인가 |
|---|---|---|---|---|---|
| a→a | 없음 (혼자) | 0 | NA | 셀 칸이 없다 | |
| a→b | 1 | A1은 부하 둘 다와 친구 | |||
| a→c | 1 | 다리 그 자체 | |||
| a→d | 0 | A1은 B쪽 부하를 모른다 | |||
| b→a | 1 | 대칭 | |||
| b→b | 1 | 서로 아는 쌍둥이 → 완전 블록 | |||
| b→c | 0 | A쪽 부하는 B1을 모른다 | |||
| b→d | 0 | 한 칸도 없다 | |||
| c→a | 1 | 대칭 | |||
| c→b | 0 | 대칭 | |||
| c→c | 없음 (혼자) | 0 | NA | 셀 칸이 없다 | |
| c→d | 1 | B1은 부하 둘 다와 친구 | |||
| d→a | 0 | 대칭 | |||
| d→b | 0 | 대칭 | |||
| d→c | 1 | 대칭 | |||
| d→d | 1 | 서로 아는 쌍둥이 → 완전 블록 |
칸 수 검산: . 통과.
a b c d a NA 1 1 0 b 1 1 0 0 c 1 0 NA 1 d 0 0 1 1
대각선을 보라. b→b = 1, d→d = 1로 두 대각 블록이 모두 완전 블록이다. 에서는 P1→P1과 P2→P2가 0(서로 모르는 쌍둥이)이고 P5→P5만 1이었다. 아령에서는 등위 쌍이 둘 다 삼각형 안에 있으니 둘 다 1이 된다.
그런데도 "같은 역할"로 보이는 이유는 §16의 정규 등위성 때문이다. A1의 이웃은 {A2, A3, B1}, B1의 이웃은 {A1, B2, B3}로 이름은 하나도 안 겹치지만, A2·A3와 B2·B3는 서로 등위이고 A1과 B1도 (재귀적으로) 서로 등위다. 즉 두 사람은 "같은 종류의 사람들"에 둘러싸여 있다. 구조적 등위성은 이웃의 이름을 보고, 정규 등위성은 이웃의 종류를 본다.
문제 2 해설 — W에 간선 하나를 더하면 (Solution 2)
(1) 여전히 등위인가. 새 행렬 에서 S1행과 S2행을 나란히 놓는다.
| 열 | S1 | S2 | S3 | S4 | S5 | S6 | S7 | S8 |
|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | |
| 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | |
| 같은가? | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
즉 S1·S2가 서로 모르는 쌍둥이에서 서로 아는 쌍둥이로 바뀌었다. 간선 하나가 등위 여부는 바꾸지 않았지만 쌍둥이의 종류는 바꿨다.
(2)(3)(4) 바뀌는 칸. 바뀌는 이유는 하나다 — 1열과 2열의 값이 달라졌기 때문. 따라서 어떤 쌍의 거리는 그 쌍이 1열·2열을 비교 대상에 포함하는지에만 달려 있다.
| 쌍 | 전 | 후 | 왜 그렇게 바뀌는가 |
|---|---|---|---|
| (S1,S2) | 0 | 0 | 1·2열을 둘 다 뺀다 → 바뀔 여지가 없다 |
| (S1,S3) | 2 | 1 | 2열에서 가 0→1이 되어 과 일치. 어긋남 하나 소멸 |
| (S1,S4) | 2 | 1 | 위와 같음 |
| (S1,S5) | 2 | 1 | 2열에서 가 0→1, 과 일치. 남은 어긋남은 6열뿐 |
| (S1,S6) | 4 | 5 | 2열에서 가 0→1인데 → 새 어긋남 발생 |
| (S1,S7) | 5 | 6 | 이므로 새 어긋남 |
| (S1,S8) | 5 | 6 | 위와 같음 |
| (S2,S3) | 2 | 1 | 1열에서 이 0→1, 과 일치 |
| (S2,S4) | 2 | 1 | 위와 같음 |
| (S2,S5) | 2 | 1 | 위와 같음 |
| (S2,S6) | 4 | 5 | 이므로 새 어긋남 |
| (S2,S7) | 5 | 6 | 위와 같음 |
| (S2,S8) | 5 | 6 | 위와 같음 |
| S1·S2가 안 들어간 15쌍 | — | 그대로 | 1열·2열의 값은 바뀌었지만, 그 두 열에서 서로 비교되는 값은 그대로다. 예: (S3,S4)는 1열에서 로 여전히 같다 |
(3) 답: 는 2→1로 줄어든다. 전에는 2열( vs )과 6열( vs ) 두 칸이 어긋났는데, S1이 S2와 친구가 되면서 2열이 맞아떨어진다. 남은 어긋남은 6열 하나뿐이다. S5는 원래 S2와 친구였으니, S1이 S2를 얻은 순간 S5와 더 닮아진 것이다.
(4) 답: 은 4→5로 늘어난다. S6은 S2와 남남이다(). S1이 S2를 얻으면 2열에서 새로운 어긋남이 생긴다. 같은 간선 하나가 어떤 쌍은 가깝게, 어떤 쌍은 멀게 만든다 — 새 이웃을 이미 갖고 있던 쪽과는 가까워지고, 안 갖고 있던 쪽과는 멀어진다.
(5) 새 덴드로그램. 새 거리 행렬:
S1 S2 S3 S4 S5 S6 S7 S8 S1 0 0 1 1 1 5 6 6 S2 0 0 1 1 1 5 6 6 S3 1 1 0 0 2 4 5 5 S4 1 1 0 0 2 4 5 5 S5 1 1 2 2 0 6 5 5 S6 5 5 4 4 6 0 1 1 S7 6 6 5 5 5 1 0 0 S8 6 6 5 5 5 1 0 0
| 단계 | 병합 | 높이 | 근거 |
|---|---|---|---|
| 1 | {S1,S2} | 0 | |
| 2 | {S3,S4} | 0 | |
| 3 | {S7,S8} | 0 | |
| 4 | {S1,S2} + {S3,S4} | 1 | — 원래는 2였다 |
| 5 | {S6} + {S7,S8} | 1 | — 그대로 |
| 6 | {S1,S2,S3,S4} + {S5} | 2 | |
| 7 | 전체 | 6 | 이 여전히 최대 |
그래서 에서 자르면 위치가 3개가 된다: {S1,S2,S3,S4} / {S5} / {S6,S7,S8}. 원래 에서 는 위치 4개였는데, 간선 하나로 S1·S2와 S3·S4가 한 위치로 합쳐졌다. 에서 자르면 여전히 위치 5개로 원래와 같다.
(6) 밀도 행렬의 변화. 다섯 위치를 그대로 두고 25칸을 다시 계산하면, 바뀌는 것은 P1→P1 한 칸뿐이다.
| 블록 | 더하는 칸 | 전 | 후 | 왜 그런가 |
|---|---|---|---|---|
| P1→P1 | 영 블록 → 완전 블록 | |||
| 나머지 24칸 | S1·S2가 다른 위치로 보내는 칸 | — | 그대로 | 새 간선은 P1 안에만 생겼다 |
P1 P2 P3 P4 P5 P1 P2 P3 P4 P5 P1 0 1 1 0 0 → P1 1 1 1 0 0 P2 1 0 1 0 0 P2 1 0 1 0 0 P3 1 1 NA 1 0 P3 1 1 NA 1 0 P4 0 0 1 NA 1 P4 0 0 1 NA 1 P5 0 0 0 1 1 P5 0 0 0 1 1
이것이 §11에서 말한 "두 종류의 쌍둥이가 대각 블록에 드러난다"는 것의 실물이다. S1·S2는 등위인 채로 서로 모르는 쌍둥이에서 서로 아는 쌍둥이로 바뀌었고, 그 변화가 블록모델에서는 대각 칸 0→1로 딱 한 칸에만 기록된다. 이미지 행렬은 여전히 전부 0/1이므로 오차는 여전히 0이다.
바뀐 것은 두 가지다. 하나는 대각 블록이 0에서 1이 된 것 — "같은 자리에 있으면서 서로 아는 사이"가 됐다는 기록이다. 다른 하나는 S1·S2가 S3·S4와 더 닮아진 것(거리 2→1)이라 에서 네 명이 한 위치로 묶인다. 모둠 안에서 짝을 붙여 주는 개입이 학급 구조 자체를 바꾸지는 않지만 그 자리의 성격은 바꾼다는 것을 숫자가 보여 준다.
다음 단원 3-6 — 이분 네트워크와 투영 (Bipartite Networks and Projection). 학생–동아리, 학생–모둠처럼 두 종류의 노드가 있는 네트워크를 다루고, 그걸 학생–학생 네트워크로 투영할 때 무엇이 생기고 무엇이 사라지는지 손으로 확인한다. 오늘 본 "같은 활동에 참여하는 학생은 자동으로 등위에 가까워진다"는 현상이 거기서 다시 등장한다.