단원 4-3Small Worlds Without Clustering
무작위 그래프는 왜 좁은 세상인가, 그런데 왜 뭉치지 않는가
4-1과 4-2에서 는 계속 틀렸다 — 차수 분산도, 고립자 수도, 거대 컴포넌트 크기도. 오늘은 이 모형이 놀랍도록 잘 맞히는 축을 하나 만난다: 평균 거리다. 가라테의 실제 평균 거리 2.408을 이론 가 거의 그대로 맞힌다.
그런데 같은 모형이 군집계수는 처참하게 틀린다. 이론은 라고 하는데 가라테는 1.8배, FMH 거대 컴포넌트는 47.6배다.
좁은 세상은 맞히는데 뭉침은 못 맞힌다 — 이 한 문장이 4-4의 Watts–Strogatz 모형을 낳았다.
- 오늘의 질문: 모형은 축마다 채점된다 (Models Are Graded Axis by Axis)
- 손 계산 ① 동네가 배씩 불어난다 (The Neighborhood Explosion)
- 공식 — 왜 로그인가 (Why the Logarithm)
- R 검증 ① 을 1000배 키워도 (Scaling by 1000)
- 대조군 — 고리 격자는 에 비례한다 (The Ring Lattice)
- 손 계산 ② 의 군집계수는 정확히 (Clustering Is Exactly )
- 왜 하필 정확히 인가 — 한 줄 논증 (The One-Line Argument)
- 실제 망 대조 — 삼각형을 직접 세어 본다 (Counting Triangles)
- 무작위화 — 사정권 밖 (Randomization)
- 두 축 채점표 (The Scorecard)
- FMH에서는 거리조차 안 맞는다 (Even Distance Fails in FMH)
- 모순이 다음 모형을 낳는다 (The Contradiction That Births a New Model)
- R 검증 ② (R Verification)
- 교실 적용 (Classroom Application)
- 연습문제 (Exercises)
- 해설과 답 (Solutions)
1. 오늘의 질문: 모형은 축마다 채점된다 (Models Are Graded Axis by Axis)
지금까지의 채점표를 모으면 이렇다.
| 축 | 의 성적 | 어디서 |
|---|---|---|
| 평균 차수 | 항등식 — 맞힌 게 아니라 맞춰 넣은 것 | 4-1 §10 |
| 차수 분산 | 3.8배 과소평가 (가라테) | 4-1 §10 |
| 고립자 수 | 139명 과소평가 (FMH) | 4-2 §7 |
| 거대 컴포넌트 | 225명 과대평가 (FMH) | 4-2 §12 |
| 평균 거리 | 오늘 채점 | §2~§4 |
| 군집계수 | 오늘 채점 | §6~§9 |
네 번 연속으로 틀렸으니 "이 모형은 쓸모없다"고 결론 내리고 싶어진다. 그런데 오늘 채점할 두 축에서 정반대의 성적이 나온다. 그리고 바로 그 불균형이 쓸모다 — 모형이 전부 틀리면 아무것도 배울 수 없지만, 하나는 맞고 하나는 틀리면 "틀린 쪽에 무슨 메커니즘이 있다"는 것을 알게 된다.
| 지표 | 정의 | 묻는 것 |
|---|---|---|
| 평균 거리 | 모든 짝의 최단 거리 평균 (1-6) | 얼마나 멀리 떨어져 있는가 |
| 군집계수 | (3-2 전이성) | 친구의 친구가 내 친구인가 |
2. 손 계산 ① 동네가 배씩 불어난다 (The Neighborhood Explosion)
가라테를 예로 든다. , , .
1번 학생에서 출발해 친구를 따라 퍼져 나간다. 4-2 §9의 분지 과정과 같은 셈인데, 이번에는 "죽느냐 사느냐"가 아니라 몇 단계 만에 34명을 다 만나느냐를 묻는다.
| 단계 | 그 단계에서 새로 만나는 인원 | 누적 인원 | 와 비교 | 왜 그 값인가 |
|---|---|---|---|---|
| 0 | 1.000 | 모자람 | 나 자신 한 명 | |
| 1 | 5.588 | 모자람 | 내 친구 — 평균 차수 그 자체 | |
| 2 | 26.640 | 아직 모자람 (34의 78%) | — 친구의 친구 | |
| 3 | 123.231 | 넘어섬 (34의 3.6배) | — 여기서 34명을 다 삼킨다 | |
| 4 | 566.414 | 한참 넘음 | 34명짜리 망에는 4단계가 존재할 여지가 거의 없다 |
제곱을 손으로 확인: , , ✓
누적이 34를 넘는 것은 2단계와 3단계 사이다 (2단계 26.6명, 3단계 123.2명). 그러니 "전형적인 두 사람 사이의 거리"는 2와 3 사이여야 한다.
가라테의 실제 평균 거리는 2.408이다 — 정확히 그 구간 안이다.
2-1. 가라테의 실제 거리 분포 — 다섯 항 전부 (The Actual Distance Distribution in Karate)
개의 짝을 거리별로 세면:
| 거리 | 짝의 수 | 비율 | 짝의 수 | 읽는 법 |
|---|---|---|---|---|
| 1 | 78 | 13.9% | 78 | 간선 수 그 자체 (=밀도 0.1390) |
| 2 | 265 | 47.2% | 530 | 절반 가까이가 "친구의 친구" |
| 3 | 137 | 24.4% | 411 | |
| 4 | 73 | 13.0% | 292 | |
| 5 | 8 | 1.4% | 40 | 지름 — 561짝 중 8짝뿐 |
| 합 | 561 | 100% | 1351 | ✓ |
가라테에서 거리 1과 2를 합치면 61.1%다. 즉 아무 두 사람을 골라도 열 번 중 여섯 번은 직접 친구이거나 친구의 친구다. 34명짜리 동아리에서 "두 다리 건너면 다 안다"는 말은 수사가 아니라 산술이다.
학급에서도 같은 표를 만들 수 있다. 그리고 거리 4~5인 짝이 몇 %인가가 "반이 얼마나 갈라져 있는가"를 재는 실전 지표가 된다.
3. 공식 — 왜 로그인가 (Why the Logarithm)
§2의 표를 식으로 옮긴다. 단계까지의 누적 인원은 등비수열의 합이다.
이면 이 합은 마지막 항이 지배한다 (가라테에서 누적 123.2 중 마지막 항이 96.6 — 78%다). 그러니 대충 이라 두고 양변에 로그를 취한다.
가라테에 넣으면:
| 항목 | 값 | 비고 |
|---|---|---|
| 이론 | 2.3147 | 모형이 예측 |
| 실제 평균 거리 | 2.4082 | §2-1에서 손으로 계산 |
| 비 | 1.040 | 4% 차이 — 오늘까지 나온 것 중 가장 잘 맞는 예측 |
| 실제 지름 | 5 | 평균이 아니라 최대 |
동네가 단계마다 곱셈으로 불어나므로(), 명을 다 덮는 데 필요한 단계 수는 덧셈으로만 늘어난다. 곱셈을 덧셈으로 바꾸는 것이 로그다.
그래서 사람이 백 배 늘어도 거리는 몇 걸음 늘어날 뿐이다 — 이것이 "좁은 세상"(small world)이라는 말의 수학적 내용이다.
① 이어야 한다 (이면 애초에 망이 이어지지 않는다, 4-2 §11).
② 새로 만나는 사람이 매번 전부 처음 보는 사람이라고 가정했다. 실제로는 이미 만난 사람을 또 만난다(되돌아오는 경로) — 그래서 실제 거리가 이론보다 조금 길다 (2.408 > 2.315).
③ 정확히는 대신 초과 차수 평균을 써야 한다 (4-2 §9의 각주와 같은 문제). 푸아송에서는 둘이 같아 넘어갈 수 있다.
세 어림 모두 실제 거리를 짧게 잡는 방향이므로, 이 공식은 하한선으로 쓰는 것이 안전하다.
4. R 검증 ① 을 1000배 키워도 (Scaling by 1000)
를 고정하고 만 10 → 10000으로 키운다.
set.seed(101)
for (N in c(10, 100, 1000, 10000)) {
g <- sample_gnp(N, 5/(N-1))
cc <- components(g)
big <- induced_subgraph(g, which(cc$membership == which.max(cc$csize)))
cat(N, log(N)/log(5), mean_distance(big), diameter(big), max(cc$csize), "\n")
}
| 이론 | 실측 평균 거리 (최대 컴포넌트) | 지름 | 최대 컴포넌트 | 읽는 법 | |
|---|---|---|---|---|---|
| 10 | 1.4307 | 1.4000 | 2 | 10 | 이 너무 작아 이론이 실측보다 큼 |
| 100 | 2.8614 | 3.0741 | 6 | 100 | 7% 차이 |
| 1000 | 4.2920 | 4.4092 | 9 | 993 | 3% 차이 |
| 10000 | 5.7227 | 5.8860 | 11 | 9938 | 3% 차이 |
이 1000배(10 → 10000) 늘었는데 평균 거리는 1.40에서 5.89로 4.5걸음만 늘었다.
공식으로도 .
사람 수는 곱셈으로, 거리는 덧셈으로 — 이것이 §3의 로그가 뜻하는 바다.
5. 대조군 — 고리 격자는 에 비례한다 (The Ring Lattice)
"으로 자란다"가 얼마나 특별한 일인지 보려면 비교 대상이 필요하다. 고리 격자(ring lattice)를 쓴다 — 명을 원형으로 세우고 양옆 두 명씩과만 손을 잡게 한 망이다 (차수 4, 평균 차수도 4).
sample_smallworld(1, n, nei = 2, p = 0) # p=0 이면 재배선 없는 순수 격자
격자에서는 지름길이 없다. 반대편 사람에게 가려면 고리를 따라 걸어가야 한다. 한 걸음에 최대 칸씩 가고 평균 거리는 대략 이다.
| 고리 격자 평균 거리 | 격자 근사 | 무작위 그래프 () | 이론 | 격자 ÷ 무작위 | |
|---|---|---|---|---|---|
| 20 | 2.895 | 2.5 | 2.079 | 2.161 | 1.39 |
| 50 | 6.633 | 6.25 | 2.863 | 2.822 | 2.32 |
| 100 | 12.879 | 12.5 | 3.472 | 3.322 | 3.71 |
| 200 | 25.377 | 25 | 3.816 | 3.822 | 6.65 |
| 500 | 62.876 | 62.5 | 4.513 | 4.483 | 13.93 |
| 1000 | 125.375 | 125 | 5.142 | 4.983 | 24.38 |
| 2000 | 250.375 | 250 | 5.691 | 5.483 | 43.99 |
| 5000 | 625.375 | 625 | 6.192 | 6.144 | 101.00 |
에서 두 망은 간선 수가 똑같이 10000개다. 그런데 격자는 평균 거리 625.4, 무작위는 6.19 — 101배 차이다.
차이를 만드는 것은 간선의 개수가 아니라 어디에 놓였는가다. 격자는 전부 이웃끼리 놓였고, 무작위는 먼 곳으로 건너뛰는 간선을 섞어 놓았다. 몇 개의 지름길이 거리를 100분의 1로 줄인다 — 4-4의 주제가 정확히 이것이다.
학급에서 짝·모둠으로만 관계가 생기면 그것은 격자에 가깝다. 30명 격자라면 평균 거리가 이고, 반대편 학생까지는 대여섯 다리다.
반면 동아리·학원·형제자매 같은 자리 배치와 무관한 연결이 몇 개만 있어도 평균 거리는 급격히 줄어든다. 교사가 의도적으로 만드는 "먼 짝짓기"는 학급 전체의 정보 전달 속도를 바꾸는 개입이다.
6. 손 계산 ② 의 군집계수는 정확히 (Clustering Is Exactly )
이제 두 번째 축이다. 4-1의 손 계산 예제 , 로 돌아간다.
군집계수(전이성)의 정의는 3-2에서 배운 대로다.
분자·분모의 기댓값을 각각 세어 본다.
6-1. 분자 — 기대 삼각형 수 (Numerator: Expected Number of Triangles)
삼각형이 되려면 세 사람을 고르고, 그 셋 사이의 세 동전이 모두 앞면이어야 한다.
, 를 넣고 전부 전개한다.
다섯 명에서 고를 수 있는 삼중쌍 10개를 전부 적으면 — 각각이 삼각형이 될 확률이 0.064이므로 기댓값은 개다.
6-2. 분모 — 기대 연결 삼중쌍 수 (Denominator: Expected Connected Triples)
"연결된 삼중쌍"은 가운데 사람을 기준으로 센다. 가운데가 일 때, 의 이웃 후보 명 중 두 명을 고르고 그 두 동전이 모두 앞면이면 된다.
6-3. 나누기 (Dividing)
분자·분모의 조합 부분이 같은 수임을 보이면 끝난다. 둘이 항등적으로 같다. 로 검산하면 , ✓
그러므로
7. 왜 하필 정확히 인가 — 한 줄 논증 (The One-Line Argument)
§6은 세어서 나눴다. 그런데 세지 않고도 답이 나온다.
–가 이어져 있고 –도 이어져 있다고 하자. 그러면 –가 이어져 있을 확률은?
의 동전은 , 와 다른 동전이고, 모든 동전은 독립이다. 그러니 앞의 두 동전이 앞면이라는 사실은 동전에 아무 정보도 주지 않는다.
그리고 군집계수란 정확히 이 조건부 확률이다.
§7의 조건부 확률 논증이 정확한 쪽이고, §6은 큰 에서 그것과 일치하는 어림이다. 그래서 , 의 몬테카를로에서 평균 이 나온다 — 0.1에 사실상 일치. 실전에서 둘의 차이는 무시해도 되지만, 왜 인지 설명할 때는 §7을 쓰는 게 정직하다.
는 에 "친구의 친구와 친해진다"는 메커니즘이 아예 없다는 사실의 다른 표현이다. 동전이 독립이라는 가정이 곧 "관계는 서로를 모른다"는 뜻이기 때문이다.
그리고 여기서 치명적인 따름정리가 나온다. 큰 망에서는 가 작다: 즉 에서 큰 망은 반드시 뭉치지 않는다. 평균 차수를 그대로 두고 사람 수만 늘리면 군집계수는 0으로 간다.
FMH()에서 — 모형은 군집계수가 0.09%라고 예측한다.
8. 실제 망 대조 — 삼각형을 직접 세어 본다 (Counting Triangles)
모형은 라고 했다. 실제는?
| 망 | 모형 예측 | 실제 (전이성) | 비 | 실제 (평균) | 비 | ||
|---|---|---|---|---|---|---|---|
| 가라테 | 34 | 78 | 0.139037 | 0.2557 | 1.8배 | 0.5879 | 4.2배 |
| FMH 거대 컴포넌트 | 439 | 573 | 0.005960 | 0.2840 | 47.6배 | 0.2618 | 43.9배 |
| FMH 전체 | 1461 | 974 | 0.000913 | 0.2784 | 304.9배 | 0.2685 | 294.0배 |
8-1. 왜 이 클수록 배수가 커지는가 (Why the Ratio Grows with n)
표에서 배수가 1.8 → 47.6 → 304.9로 폭발한다. 이유는 §7의 따름정리다.
| 망 | 예측 | 실제 | 읽는 법 |
|---|---|---|---|
| 가라테 | 0.139 | 0.256 | 예측이 내려가고 실제는 가만히 있다 |
| FMH 거대 | 0.006 | 0.284 | ↓ 23분의 1 |
| FMH 전체 | 0.0009 | 0.278 | ↓ 152분의 1 — 실제는 그대로 |
실제 군집계수는 세 망에서 0.256, 0.284, 0.278로 거의 같다. 사람 수가 34명에서 1461명으로 43배가 되어도 "친구의 친구가 내 친구일 확률"은 4분의 1 언저리다. 모형은 이 값이 43분의 1로 줄어야 한다고 말한다. 정확히 여기서 갈라진다.
8-2. 분자와 분모를 따로 — 어느 쪽이 문제인가 (Numerator and Denominator Separately)
는 분수이므로 "삼각형이 많아서"인지 "삼중쌍이 적어서"인지 나눠 봐야 한다. 가라테를 실제로 세어 본다.
| 항목 | 실제 | 모형 기대 | 비 | 왜 그 값인가 |
|---|---|---|---|---|
| 삼각형 수 | 45 | 2.80배 | , | |
| 연결 삼중쌍 | 528 | 1.52배 | , 차수 분산이 커서 삼중쌍도 많다 (4-1 §10) | |
| 0.139037 | 1.84배 | ✓ — 두 비의 나눗셈 |
군집계수가 1.8배라는 말은 삼각형이 1.8배라는 뜻이 아니다. 삼각형은 2.8배고 삼중쌍도 1.5배인데, 그 나눗셈이 1.84다.
삼중쌍이 1.5배인 것은 차수 분산이 크기 때문이다 (는 차수가 불균등할수록 커진다 — 차수 17인 34번 학생 혼자서 개를 만든다). 즉 4-1에서 본 차수 분산 문제가 여기서도 분모를 밀어 올린다.
그런데 분자가 더 많이 오른다 — 그것이 삼각형이라는 별개의 메커니즘이다.
FMH도 같은 방식으로 세면 훨씬 극단적이다.
| 망 | 실제 삼각형 | 모형 기대 | 비 |
|---|---|---|---|
| FMH 거대 컴포넌트 | 131 | 2.96 | 44.2배 |
| FMH 전체 | 169 | 0.395 | 427.8배 |
FMH 전체에서 모형은 삼각형이 0.4개 있으리라 예측한다 — 즉 "이런 학교 두세 곳에 하나 있을까 말까"다. 실제는 169개다.
9. 무작위화 — 사정권 밖 (Randomization)
4-1·4-2에서 그랬듯 같은 의 무작위 그래프를 여러 개 만들어 확인한다.
set.seed(103)
tk <- replicate(1000, transitivity(sample_gnm(34, 78))) # 가라테 크기
set.seed(104)
tf <- replicate(200, transitivity(sample_gnm(439, 573))) # FMH 거대 컴포넌트 크기
| 망 | 표본 수 | 무작위 평균 | 표준편차 | 관측 범위 | 실제 | 실제 이상인 무작위 표본 | |
|---|---|---|---|---|---|---|---|
| 가라테 | 1000 | 0.135228 | 0.030152 | 0.046875 ~ 0.244094 | 0.255682 | +3.99 | 0 / 1000 |
| FMH 거대 | 200 | 0.005888 | 0.003475 | 0 ~ 0.017740 | 0.283960 | +80.0 | 0 / 200 |
가라테: 1000번 던져 가장 뭉친 무작위 그래프가 0.2441이었다. 실제는 0.2557 — 1000개 전부를 넘어선다. 다만 으로 "압도적"까지는 아니다 (에서는 무작위 표본끼리의 흔들림도 크다: 0.047~0.244).
FMH 거대 컴포넌트: 무작위 평균이 0.0059인데 실제는 0.2840 — 이다. 200개 중 최대가 0.0177로, 실제의 16분의 1에 그친다.
망이 클수록 이 어긋남은 커지기만 한다 — §7의 따름정리 그대로다.
가라테 크기에서 무작위 평균은 0.135228인데 이다 (2.7% 낮다). FMH 거대 크기에서도 0.005888 대 0.005960이다.
이것은 오차가 아니라 §7의 warn 박스에서 말한 것 — — 과 이 간선 수를 고정한다는 점이 합쳐진 작은 유한 크기 효과다. 이 크면 사라진다. 결론에는 영향이 없다.
10. 두 축 채점표 (The Scorecard)
오늘의 결론을 한 표로 모은다.
| 평균 거리 축 | 군집계수 축 | |||||
|---|---|---|---|---|---|---|
| 망 | 실제 | 이론 | 비 | 실제 | 이론 | 비 |
| 가라테 (실제) | 2.4082 | 2.3147 | 1.04 | 0.2557 | 0.139037 | 1.84 |
| 같은 크기 무작위 | 2.2784 | 2.3147 | 0.98 | 0.1399 | 0.139037 | 1.01 |
| FMH 거대 (실제) | 16.8773 | 6.3411 | 2.66 | 0.2840 | 0.005960 | 47.6 |
| 같은 크기 무작위 | 6.1559 | 6.3411 | 0.97 | 0.0081 | 0.005960 | 1.36 |
① 무작위 줄부터 본다 — 두 무작위 줄 모두 거리 비가 0.97~0.98, 군집 비가 1.01~1.36이다. 이론이 자기 모형에 대해서는 정확하다는 확인이다 (이론이 틀린 게 아니라는 뜻).
② 가라테 실제 줄 — 거리는 1.04로 맞고, 군집은 1.84로 틀렸다. 이것이 오늘의 제목이다: 좁은 세상인데 뭉쳐 있다.
③ FMH 거대 줄 — 군집이 47.6배로 크게 틀렸고, 그런데 거리마저 2.66배로 틀렸다. 여기는 이야기가 다르다 (§11).
11. FMH에서는 거리조차 안 맞는다 (Even Distance Fails in FMH)
가라테에서 4% 오차로 맞던 거리 공식이 FMH 거대 컴포넌트에서는 2.66배로 빗나간다.
| 항목 | FMH 거대 컴포넌트 (실제) | 같은 의 무작위 | 비 |
|---|---|---|---|
| 439 | 439 | — | |
| 573 | 573 | — | |
| 2.6105 | 2.6105 | — | |
| 평균 거리 | 16.877 | 6.156 | 2.74배 |
| 지름 | 40 | 14 | 2.86배 |
| 군집계수 | 0.2840 | 0.0081 | 35배 |
FMH 거대 컴포넌트는 439명이 사슬처럼 길게 이어진 모양이다 (지름 40!). 왜 그런가? 간선이 삼각형으로 겹쳐 놓이면 연결에 낭비가 생기기 때문이다.
삼각형 하나에는 간선이 3개 들어가는데, 세 사람을 잇는 데는 2개면 충분하다. 세 번째 간선은 거리를 전혀 줄이지 못한다 (이미 거리 1이던 두 사람 사이).
FMH 거대 컴포넌트의 삼각형 131개 × 낭비되는 간선 1개 ≈ 573개 중 130개 가까이가 거리 단축에 기여하지 않는다. 그만큼 망이 길어진다.
그러므로 4-2 §12에서 미뤄 둔 질문 — "거대 컴포넌트가 왜 예측의 66%인가" — 의 답도 같다: 삼각형에 낭비된 간선은 새 사람을 덩어리에 끌어들이지도 못한다.
가라테도 군집계수가 1.8배로 높은데 왜 거리는 맞았는가?
이 작아서다. 에서는 이론 거리가 2.31로 이미 지름의 절반쯤이라 "길어질 여지"가 없다. 실제 지름이 5이니 평균이 2.41에서 크게 벗어날 수 없다.
에서는 다르다. 이론 6.34에서 실제 16.88까지 벌어질 공간이 충분하다. 망이 클수록 뭉침의 효과가 거리로 새어 나온다.
12. 모순이 다음 모형을 낳는다 (The Contradiction That Births a New Model)
§5의 표와 §8의 표를 겹쳐 놓으면 딜레마가 보인다.
| 모형 | 평균 거리 | 군집계수 | 판정 |
|---|---|---|---|
| 고리 격자 | — 너무 김 | 0.5 — 높음 ✓ | 뭉침은 맞고 거리는 틀림 |
| 무작위 | — 짧음 ✓ | — 너무 낮음 | 거리는 맞고 뭉침은 틀림 |
| 실제 사회망 | 짧다 | 높다 | 둘 다여야 한다 |
, 평균 차수 4로 구체적인 숫자를 넣어 보면 딜레마가 선명해진다 (§16 연습문제 1에서 직접 계산한다).
| 고리 격자 | 무작위 | 실제 사회망이 원하는 것 | |
|---|---|---|---|
| 평균 거리 | 12.88 | 3.47 | 짧게 → 무작위 쪽 |
| 군집계수 | 0.500 | 0.040 | 높게 → 격자 쪽 |
| 삼각형 수 | 100 | 10.7 | 많게 → 격자 쪽 |
"격자에서 출발해서 간선 몇 개만 무작위로 다시 이으면 어떻게 될까?"
직관적으로는 둘 사이의 중간이 나올 것 같지만, 실제로는 그렇지 않다. 거리는 몇 개만 다시 이어도 확 줄고, 군집계수는 한참을 다시 이어도 잘 안 준다. 그 속도 차이 덕분에 거리는 무작위급, 뭉침은 격자급인 구간이 생긴다 — Watts–Strogatz의 좁은 세상 구간이다.
13. R 검증 ② (R Verification)
13-1. 를 몬테카를로로 (Checking C = p by Monte Carlo)
set.seed(102)
mean(replicate(300, transitivity(sample_gnp(200, 0.1))))
# 0.09997305 -> p = 0.1 과 소수 넷째 자리까지 일치
13-2. 실제 망의 두 지표 (Two Measures on Real Networks)
kel <- as.matrix(read.table("karate_net.txt"))
gk <- add_edges(simplify(graph_from_edgelist(kel, directed=FALSE)), c(9,31))
data(faux.magnolia.high); G <- asIgraph(faux.magnolia.high)
gc <- induced_subgraph(G, which(components(G)$membership == which.max(components(G)$csize)))
c(거리 = mean_distance(gk), 이론 = log(34)/log(2*78/34)) # 2.4082 2.3147
c(군집 = transitivity(gk), 이론 = 78/choose(34,2)) # 0.2557 0.1390
c(거리 = mean_distance(gc), 이론 = log(439)/log(2*573/439)) # 16.8773 6.3411
c(군집 = transitivity(gc), 이론 = 573/choose(439,2)) # 0.2840 0.0060
13-3. 삼각형과 삼중쌍을 직접 세기 (Counting Triangles and Triples Directly)
sum(count_triangles(gk)) / 3 # 45 (각 삼각형이 세 점에서 세어지므로 /3)
sum(choose(igraph::degree(gk), 2)) # 528 (연결 삼중쌍 = 가운데점 기준 이웃 쌍의 합)
3 * 45 / 528 # 0.2556818 = transitivity(gk) ✓
transitivity(g)와 transitivity(g, type="average")는 다른 지표다앞은 전역 전이성 — 망 전체에서 삼각형 하나를 세는 비율.
뒤는 국소 군집계수의 평균 — 사람마다 를 재고 평균 낸 것.
가라테에서 0.2557 대 0.5879로 두 배 넘게 차이 난다. 왜인가? 국소 평균은 차수가 작은 사람에게 큰 가중치를 준다 (차수 2인 사람은 이웃 쌍이 1개뿐이라 가 0 아니면 1이다). 가라테에는 차수 2인 학생이 11명 있고 그들 상당수가 이다.
보고서에는 반드시 어느 쪽인지 밝혀야 한다. 이 노트에서는 별도 표기가 없으면 전역이다.
13-4. 무작위화 (Randomization)
set.seed(103); tk <- replicate(1000, transitivity(sample_gnm(34, 78)))
c(평균 = mean(tk), sd = sd(tk), 최대 = max(tk), 실제 = transitivity(gk))
# 평균 sd 최대 실제
# 0.135228 0.030152 0.244094 0.255682
mean(tk >= transitivity(gk)) # 0
14. 교실 적용 (Classroom Application)
30명 학급에 간선 60개면 , 이론 거리는 다. 실제로 재서 2.4~2.6이면 정상, 3.5를 넘으면 반이 갈라져 있다는 신호다.
그리고 이 계산은 1분이면 된다 — 인원과 간선 수만 있으면 된다.
"우리 반 군집계수 0.35"는 그 자체로 크지도 작지도 않다. 같은 학급에서 이므로 2.5배다. 학급 데이터에서 2~3배는 흔하고, 5배를 넘으면 강한 소집단 구조다.
그리고 반드시 기억할 것: 인원이 많은 집단일수록 이 배수는 저절로 커진다 (FMH 전체에서 305배). 학년끼리, 학급끼리 비교하고 서로 다른 규모를 배수로 비교하지 말 것.
삼각형(세 명이 서로 친구)은 관계의 안정성을 뜻한다 — 한 명과 틀어져도 다른 경로가 있다. 동시에 §11에서 본 대로 삼각형에 쓰인 세 번째 간선은 거리를 줄이지 못한다.
그러므로 삼각형이 많은데 평균 거리도 짧은 학급이 가장 건강하다. 삼각형만 많고 거리가 길면 끼리끼리 뭉친 여러 조각이라는 뜻이다. 두 지표를 반드시 함께 볼 것 — 이것이 오늘 배운 "두 축" 사고의 실전 형태다.
§5에서 격자와 무작위의 거리 차가 101배였다. 학급 규모로 옮기면: 모둠 안에서만 관계가 생기는 반과 모둠을 건너뛰는 관계가 몇 개 있는 반은 평균 거리가 크게 다르다.
개입 방법은 단순하다 — 모둠을 주기적으로 새로 짜되, 이전 모둠원과 겹치지 않게 짜는 것. 이것이 바로 "무작위 재배선"이고, 4-4에서 그 효과를 정량화한다.
평균 거리 2.4, 군집계수 0.35 — 전부 반 전체를 요약한 한 숫자다. 개별 학생에게 개입하려면 2단계의 중심성(누가 중심인가)과 3단계의 커뮤니티 탐지(누가 어느 무리인가)로 내려가야 한다.
4단계의 모형은 "우리 반이 정상 범위인가"를 판정하는 데 쓰고, "누구를 어떻게 도울까"는 2·3단계 도구로 답하는 것 — 이 분업을 기억해 둘 것.
15. 연습문제 (Exercises)
100명을 원형으로 세우고 양옆 두 명씩과 이었다 (고리 격자, ).
- 간선 수 과 평균 차수는? 밀도 는?
- 이 격자의 군집계수를 손으로 구하라. (힌트: 한 사람의 이웃 4명 중 서로 이어진 쌍이 몇 개인지 직접 세어라. 이웃은 나보다 2칸 왼쪽·1칸 왼쪽·1칸 오른쪽·2칸 오른쪽이다.)
- 격자의 평균 거리는 대략 얼마인가? 같은 의 무작위 그래프는? 두 값의 비는?
- 무작위 그래프의 기대 삼각형 수를 구하고, 격자의 삼각형 수(100개)와 비교하라.
- 이 두 망 중 어느 쪽도 실제 사회망이 아니다. 각각 무엇이 문제인가?
30명 학급에서 교우관계를 조사했더니 간선 60개가 나왔고, 평균 거리 2.6, 군집계수 0.35였다.
- 와 를 구하고, 동네가 불어나는 표(~3)를 만들어 거리가 대략 몇 단계여야 하는지 어림하라.
- 이론 거리 를 구하고 실제 2.6과 비교하라. 거리 축은 합격인가?
- 이론 군집계수와 실제 0.35를 비교하라. 군집 축은 합격인가?
- 같은 의 무작위 그래프 1000개를 만들면 평균 거리 2.481(표준편차 0.075), 군집계수 0.1348(표준편차 0.0364)이 나온다. 두 축의 점수를 구하고 어느 쪽이 결정적인 증거인지 판단하라.
- 실제 삼각형 수는 대략 몇 개일 것 같은가? 무작위 기대치와 비교하라. (연결 삼중쌍은 기대치 231.7과 비슷하다고 가정)
- 이 학급에 대해 교사에게 무엇이라고 보고하겠는가? — 두 축을 나눠서.
16. 해설과 답 (Solutions)
연습문제 1 해설 (Solution to Exercise 1)
(1) 무엇을 세는가 — 고리 격자에서 각자 양옆 두 명씩, 총 4명과 이어진다.
검산: ✓ — 4-1의 항등식 그대로다.
(2) 격자의 군집계수 — 이웃 쌍을 전부 세기
5번 학생을 예로 든다. 이웃은 3, 4, 6, 7번이다.
이 넷에서 만들 수 있는 쌍은 개. 여섯 쌍 전부 확인한다
(두 사람이 이어져 있으려면 번호 차가 1 또는 2여야 한다).
| 쌍 | 번호 차 | 이어져 있나? | 왜 그런가 |
|---|---|---|---|
| 1 | O | 바로 옆 | |
| 3 | X | 3칸 — 격자에서는 안 이어짐 | |
| 4 | X | 4칸 | |
| 2 | O | 2칸 — 이므로 이어짐 | |
| 3 | X | 3칸 | |
| 1 | O | 바로 옆 | |
| 이어진 쌍 | 3 / 6 | ||
모든 학생이 대칭이므로 전원 이고, 따라서 전역 군집계수도 0.5다.
공식으로도 — 차수 인 고리 격자의 군집계수는
값의 의미: 격자에서는 내 이웃 넷 중 세 쌍이 서로 친구다. "친구의 친구는 대개 내 친구"라는 실제 사회망의 성질을 격자는 잘 재현한다.
(3) 두 망의 평균 거리
격자: 한 걸음에 최대 2칸 가고, 고리의 반대편까지 최대 50칸이므로
무작위: 이므로
| 망 | 이론 | 실측 | 읽는 법 |
|---|---|---|---|
| 고리 격자 | 12.5 | 12.879 | 이론이 3% 낮음 (끝 보정) |
| 무작위 | 3.3219 | 3.4004 | 이론이 2% 낮음 (§3의 되돌아오는 경로) |
| 비 | 3.76 | 3.79 | 격자가 약 3.8배 멀다 |
값의 의미: 간선 수가 똑같이 200개인데도 이렇다. 그리고 이 배수는 이 커질수록 벌어진다 (§5 표에서 이면 101배).
(4) 삼각형 수
격자의 삼각형은 직접 셀 수 있다. 학생 를 왼쪽 끝으로 하는 삼각형은 하나뿐이고(다른 조합은 번호 차 3 이상이 생겨 끊긴다), 가 1부터 100까지 도니 정확히 100개다.
| 항목 | 고리 격자 | 무작위 | 비 | 왜 그 값인가 |
|---|---|---|---|---|
| 삼각형 수 | 100 | 10.67 | 9.4배 | 격자는 이웃끼리 겹쳐 놓아 삼각형이 저절로 생긴다 |
| 연결 삼중쌍 | 0.76배 | 무작위는 차수가 들쭉날쭉해 삼중쌍이 더 많다 | ||
| 12.4배 | ✓ |
값의 의미: 무작위 그래프에서 삼각형은 사고로 생긴다(200개 간선이 우연히 세 개씩 맞물려서). 격자에서는 구조적으로 생긴다. 실제 사회망의 삼각형도 사고가 아니라 "친구가 친구를 소개한다"는 메커니즘의 산물이며, 그래서 가 못 맞히는 것이다.
(5) 둘 다 실제 사회망이 아닌 이유
| 망 | 잘하는 것 | 못하는 것 |
|---|---|---|
| 고리 격자 | 군집계수 0.5 — 실제 사회망(0.25~0.30)보다도 높다 | 평균 거리 12.9 — 100명짜리 집단에서 "13다리 건너"는 터무니없다. 지름길이 하나도 없다 |
| 무작위 | 평균 거리 3.4 — 실제와 맞는 규모 | 군집계수 0.040 — 실제(0.25~0.35)의 8분의 1. 친구의 친구가 내 친구가 아니다 |
연습문제 2 해설 (Solution to Exercise 2)
(1) , , 동네 표
| 단계 | 새로 만나는 인원 | 누적 | 과 비교 | 읽는 법 |
|---|---|---|---|---|
| 0 | 1 | 1 | 모자람 | 나 |
| 1 | 4 | 5 | 모자람 | 내 친구 4명 |
| 2 | 16 | 21 | 아직 모자람 (30의 70%) | 친구의 친구 |
| 3 | 64 | 85 | 넘어섬 (30의 2.8배) | 여기서 30명을 다 삼킨다 |
(2) 거리 축 채점
6% 초과는 §3에서 예고한 "되돌아오는 경로 때문에 실제가 조금 길다"는 방향과 일치하고, 가라테의 1.04와 거의 같은 급이다.
(3) 군집 축 채점
가라테(1.84배)보다도 강하게 뭉쳐 있다.
(4) 두 축의 점수 — 무작위화 결과와 대조한다.
| 축 | 실제 | 무작위 평균 | 표준편차 | 실제 이상인 무작위 표본 | 판정 | |
|---|---|---|---|---|---|---|
| 평균 거리 | 2.6 | 2.4814 | 0.0750 | +1.58 | 46 / 1000 (4.6%) | 증거로 부족 — 1000번 중 46번은 우연히 이만큼 멀다 |
| 군집계수 | 0.35 | 0.1348 | 0.0364 | +5.91 | 0 / 1000 | 결정적 — 1000개 중 최대가 0.2471 |
거리 축의 은 흔히 쓰는 기준()에 못 미친다 — "2.6이 이론 2.45보다 6% 크다"는 것만으로는 아무 주장도 할 수 없다.
군집 축의 은 1000번의 무작위화가 단 한 번도 도달하지 못한 값이다. 배수(1.06 대 2.54)만 봐도 알 수 있지만, 로 확인해야 보고할 수 있다.
(5) 삼각형 수 어림 — 를 에 대해 푼다.
무작위 기대치와 비교한다.
| 항목 | 실제(추정) | 무작위 기대 | 비 | 비고 |
|---|---|---|---|---|
| 삼각형 수 | 27.0 | 10.65 | 2.54배 | 무작위 1000회 실측 평균 10.32, 범위 2~22 — 27은 그 밖 |
| 연결 삼중쌍 | 231.7 (가정) | 231.72 | 1.00 | 가정에 의해 같음 |
값의 의미: 서로 셋이 다 친한 삼총사가 약 27쌍 있다는 뜻이다. 무작위라면 10~11쌍이어야 하고, 실제로 무작위 1000회에서 최대가 22개였다. 27개는 그 범위 밖이다.
주의: 이 27은 "연결 삼중쌍이 기대치와 같다"는 가정 위의 추정이다. 가라테에서는 삼중쌍이 기대치의 1.52배였으므로(§8-2), 차수 분산이 큰 학급이면 실제 삼각형은 이보다 더 많다. 정확한 값은
sum(count_triangles(g))/3으로 직접 세면 된다.
(6) 보고 — 두 축을 반드시 나눈다.
거리 축 — 정상 범위
평균 거리 2.6은 같은 규모·같은 친구 수의 무작위 학급(2.48)과 통계적으로 구별되지 않습니다 (, 1000번 중 46번은 우연히 이 정도로 멉니다). 학급 안에서 정보나 소식은 두세 다리면 전달됩니다. 거리 4 이상으로 떨어진 학생 짝이 몇 %인지만 추가로 확인하면 충분합니다.
군집 축 — 명확한 소집단 구조
군집계수 0.35는 무작위 기대(0.135)의 2.5배이며, 무작위화 1000회 중 단 한 번도 도달하지 못한 값입니다 (). 삼각형(셋이 서로 친한 조합)이 27쌍 안팎으로 추정되는데 무작위라면 10~11쌍입니다. 이 학급에는 뚜렷한 또래 무리가 있습니다.
두 축을 합쳐 읽으면
"뭉쳐 있으나 갈라지지는 않았다" — 무리는 분명히 있는데 무리 사이를 잇는 다리가 충분해서 반 전체는 여전히 하나로 돌아갑니다. 이것은 대체로 건강한 상태입니다 (§14-③).
주의할 것은 무리에 속하지 않은 학생입니다. 전체 지표는 정상인데 개인 단위로는 소외가 있을 수 있으므로, 차수 0~1인 학생 명단과 국소 군집계수 인 학생 명단을 별도로 뽑아 2-3 매개 중심성과 함께 볼 것을 권합니다.
① 인원 과 간선 수 에서 과 를 구한다.
② 거리는 와, 군집은 와 각각 비교한다.
③ 거리가 맞고 군집만 높으면 "건강하게 뭉친 반", 둘 다 어긋나면(거리도 길고 군집도 높으면) "갈라진 반"이다 — 후자가 FMH 거대 컴포넌트의 모습이었다 (거리 2.7배, 군집 47.6배, §11).