Frequency Analysis

Worked Example · Exploration

Worked Example: Frequency Analysis

11 sections

01예제로 들어가기

타이타닉 승객은 어떤 집단으로 구성되어 있었고, 누가 더 많이 생존했을까?

이번 예제에서는 빈도분석을 이용해 타이타닉 승객이 객실 등급·성별·연령대별로 얼마나 포함되어 있었는지 확인하고, 각 집단에서 생존과 사망이 어떻게 나뉘었는지 살펴봅니다.

빈도분석은 범주마다 관측값이 몇 개 있는지 세어 데이터의 구성을 파악하는 방법입니다. 다만 이 예제의 데이터는 승객 한 명이 한 행을 차지하는 원자료가 아닙니다. 등급 × 성별 × 연령대 × 생존 여부의 32개 조합과 각 조합에 속한 승객 수를 기록한 집계표입니다.

따라서 단순히 32개 행의 범주를 세면 실제 승객 분포가 아니라 표를 구성하는 조합의 개수를 얻게 됩니다. 실제 승객을 분석하려면 Freq를 빈도 가중치로 적용해야 합니다.

이 예제에서 확인할 질문은 다음과 같습니다.

타이타닉 탑승자 2,201명은 객실 등급·성별·연령대별로 어떻게 구성되어 있었으며, 생존 비율은 집단마다 어떻게 달랐을까?

예제 데이터: Titanic

분석에는 R의 datasets::Titanic 데이터를 CSV 형태로 변환한 자료를 사용했습니다.

항목내용
데이터 행32행
실제 승객 수2,201명
변수5개
데이터 구조4개 범주형 변수의 조합별 집계 빈도표
출처datasets::Titanic
변수의미분석 역할
Class승객 등급: 1st, 2nd, 3rd, Crew범주형 변수
Sex성별: Male, Female범주형 변수
Age연령대: Child, Adult범주형 변수
Survived생존 여부: No, Yes범주형 결과변수
Freq해당 조합에 속한 승객 수빈도 가중치

02요약: 핵심 발견

결과 요약: 분석 변수 3개, 관측값 32개, 범주 8개, 결측 0개 (실제 결과 화면)
결과 요약: 분석 변수 3개, 관측값 32개, 범주 8개, 결측 0개 (실제 결과 화면)
  • 현재 화면의 분석 단위: Class, Sex, Age 세 변수에 대해 32개 조합 행을 단순 집계했습니다.
  • 현재 결과: Class는 각 8행으로 25%, Sex와 Age는 각 16행으로 50%입니다.
  • 중요한 해석: 이 균형은 승객 분포가 아니라 모든 조합을 빠짐없이 만든 표의 구조에서 발생했습니다.
  • 실제 분석 단위: Freq를 적용하면 분석 대상은 32행이 아니라 총 2,201명의 승객입니다.
  • 실제 승객 구성: Crew 40.21%, 3rd 32.08%, Male 78.65%, Adult 95.05%였습니다.
  • 전체 생존 결과: 711명이 생존하고 1,490명이 사망해 생존율은 32.30%였습니다.
  • 집단별 차이: 여성 73.19%, 어린이 52.29%, 1등석 62.46%가 생존했습니다.
  • 분석 설정 보완: Survived를 분석 변수에 포함하고 Freq를 빈도 가중치로 지정해야 합니다.

현재 화면의 계산은 32개 행 자체를 분석한다는 조건에서는 틀리지 않습니다. 그러나 Titanic 데이터가 나타내는 실제 승객 구성을 설명하려는 목적에는 맞지 않습니다. 이 예제에서는 행 기준 빈도와 승객 기준 가중 빈도를 구분하는 것이 가장 중요합니다.

03결과 1. 왜 모든 범주가 균형적으로 보였을까?

결과 해석 카드: 엔트로피, 최빈 범주, 다음 단계 (실제 결과 화면)
결과 해석 카드: 엔트로피, 최빈 범주, 다음 단계 (실제 결과 화면)

원자료는 Class 4개 × Sex 2개 × Age 2개 × Survived 2개의 모든 조합으로 구성되어 있습니다.

4×2×2×2=324 \times 2 \times 2 \times 2 = 32\text{행}
4개 범주형 변수가 만드는 모든 조합의 수

모든 조합이 한 번씩 들어 있으므로 행의 개수만 세면 다음과 같이 완벽하게 균형을 이룹니다.

변수행 기준 빈도행 기준 비율
Class각 등급 8행각 25.00%
Sex남성 16행, 여성 16행각 50.00%
Age어린이 16행, 성인 16행각 50.00%
Survived사망 16행, 생존 16행각 50.00%

이 결과는 승객이 균형적으로 탑승했다는 뜻이 아닙니다. 조합표가 대칭적으로 설계되었다는 뜻입니다. 예를 들어 Crew × Female × Child × Yes처럼 실제 승객 수가 0명인 조합도 하나의 행으로 존재합니다.

따라서 현재 화면의 정규화 엔트로피 1.000과 빈도비 1.00도 실제 승객의 균형이 아니라 조합 행의 균형을 나타냅니다.

04결과 2. Class의 25%는 무엇을 의미할까?

Class 요약 통계와 막대그래프: 4개 등급이 각 8행·25% (실제 결과 화면)
Class 요약 통계와 막대그래프: 4개 등급이 각 8행·25% (실제 결과 화면)

현재 결과에서 네 등급은 모두 8행씩 나타납니다. 따라서 1st가 최빈값으로 표시되고 Top 1 Box가 25%로 계산됐습니다.

하지만 네 등급 모두 빈도가 8로 같으므로 고유한 최빈값은 없습니다. 1st, 2nd, 3rd, Crew가 공동 최빈값이며, 화면이 1st 하나만 표시한 것은 동률 가운데 첫 번째 값을 반환했기 때문입니다.

Class 빈도표: 각 등급 8행·25%, 누적비율 25%·50%·75%·100% (실제 결과 화면)
Class 빈도표: 각 등급 8행·25%, 누적비율 25%·50%·75%·100% (실제 결과 화면)

Freq를 적용하면 실제 승객의 등급 분포는 전혀 다르게 나타납니다.

Class승객 수승객 기준 비율
1st32514.77%
2nd28512.95%
3rd70632.08%
Crew88540.21%
전체2,201100.00%

실제 최빈 범주는 Crew이며 전체의 40.21%입니다. 현재 화면의 1st 25%는 승객 기준 결과로 해석하면 안 됩니다.

05결과 3. 성별과 연령대도 실제로 절반씩이었을까?

행 기준으로는 Male과 Female이 각각 16번 등장합니다. 그러나 Freq를 합산하면 남성이 1,731명, 여성이 470명입니다.

Sex 요약 통계와 막대그래프: Male·Female 각 16행·50% (실제 결과 화면)
Sex 요약 통계와 막대그래프: Male·Female 각 16행·50% (실제 결과 화면)
Sex 빈도표 (실제 결과 화면)
Sex 빈도표 (실제 결과 화면)
Sex승객 수승객 기준 비율
Male1,73178.65%
Female47021.35%

Age도 행 기준으로는 Child와 Adult가 각각 16번 등장하지만, 실제 승객은 어린이 109명과 성인 2,092명입니다.

Age 요약 통계와 막대그래프: Child·Adult 각 16행·50% (실제 결과 화면)
Age 요약 통계와 막대그래프: Child·Adult 각 16행·50% (실제 결과 화면)
Age 빈도표 (실제 결과 화면)
Age 빈도표 (실제 결과 화면)
Age승객 수승객 기준 비율
Child1094.95%
Adult2,09295.05%

따라서 Male 50%, Child 50%라는 현재 결과는 실제 승객 구성과 크게 다릅니다. 빈도분석에서 집계 데이터의 가중치를 놓치면 결론 자체가 달라질 수 있습니다.

06결과 4. 전체 승객 중 얼마나 생존했을까?

현재 분석 변수에는 Survived가 포함되지 않았습니다. 생존 여부를 분석 변수에 추가하고 Freq를 가중치로 적용하면 다음 결과를 얻습니다.

Survived승객 수비율
No1,49067.70%
Yes71132.30%
전체2,201100.00%

전체 승객의 약 3분의 1이 생존하고 3분의 2가 사망했습니다. 그러나 이 전체 비율만으로는 어떤 집단에서 생존 가능성이 높거나 낮았는지 알 수 없습니다. 이를 확인하려면 Survived와 다른 변수의 교차빈도표를 봐야 합니다.

07결과 5. 생존율은 집단마다 어떻게 달랐을까?

각 집단의 생존율은 해당 집단의 생존자 수 ÷ 해당 집단의 전체 승객 수로 계산합니다.

객실 등급별 생존율

Class생존전체생존율
1st20332562.46%
2nd11828541.40%
3rd17870625.21%
Crew21288523.95%

1등석의 생존율이 62.46%로 가장 높았고, 승무원과 3등석은 약 24~25%로 낮았습니다.

성별·연령대별 생존율

구분생존전체생존율
Male3671,73121.20%
Female34447073.19%
Child5710952.29%
Adult6542,09231.26%

여성의 생존율은 73.19%로 남성의 21.20%보다 높았고, 어린이는 52.29%로 성인의 31.26%보다 높았습니다. 다만 이 수치는 단순한 집단별 비율이므로 등급·성별·연령의 효과를 서로 통제한 결과는 아닙니다.

08결과 6. 빈도만으로 무엇까지 말할 수 있을까?

빈도표는 승객 구성과 집단별 생존 패턴을 분명하게 보여줍니다. 그러나 관찰된 비율 차이가 우연인지, 그리고 다른 변수들을 함께 고려해도 차이가 유지되는지는 빈도분석만으로 판단할 수 없습니다.

  • Class × Survived, Sex × Survived, Age × Survived의 연관성을 검정하려면 카이제곱 검정을 사용합니다.
  • 등급·성별·연령을 동시에 고려해 생존 가능성을 설명하려면 이항 로지스틱 회귀를 사용합니다.
  • 집계표를 그대로 회귀에 사용할 때는 생존·사망 인원이나 Freq 가중치를 올바르게 지정해야 합니다.
  • 빈도가 0인 8개 조합은 실제로 사람이 없었다는 의미이므로 결측값과 구분해야 합니다.

빈도분석은 결론을 확정하는 마지막 단계라기보다, 데이터의 구성과 비교해야 할 패턴을 찾는 출발점입니다.

09이 예제의 결론

현재 화면에서는 Class, Sex, Age를 32개 행 기준으로 집계했기 때문에 모든 범주가 균형적인 것처럼 나타났습니다. 그러나 Freq를 적용하면 총 2,201명 가운데 승무원과 3등석, 남성, 성인이 큰 비중을 차지했으며 전체 생존율은 32.30%였습니다.

생존율은 여성 73.19%, 어린이 52.29%, 1등석 62.46%로 높았고, 남성 21.20%, 승무원 23.95%, 3등석 25.21%로 낮았습니다. 이 차이를 더 엄밀하게 확인하려면 교차분석과 로지스틱 회귀로 이어가야 합니다.

한 문장으로 정리하면

Titanic 집계표에서는 32개 행을 세는 것이 아니라 Freq를 가중치로 적용해야 실제 2,201명의 승객 구성과 생존 패턴을 올바르게 해석할 수 있습니다.

10다음으로 확인하면 좋은 것

  • 가중 빈도표 — Freq를 적용한 Class·Sex·Age·Survived의 빈도와 비율을 확인합니다.
  • 교차빈도표 — 각 설명변수와 Survived를 교차해 집단별 생존자·사망자 수를 비교합니다.
  • 카이제곱 검정 — 생존 여부와 각 범주형 변수가 독립인지 검정합니다.
  • 효과크기 — Cramér's V로 연관성의 크기를 함께 보고합니다.
  • 로지스틱 회귀 — 등급·성별·연령을 동시에 고려해 생존 오즈를 추정합니다.
  • 상호작용 확인 — 성별 효과가 등급이나 연령에 따라 달라지는지 검토합니다.

11출처

  • 데이터: Titanic_statistica.csv
  • 원자료: datasets::Titanic
  • 분석 범위: 32개 집계 행, 실제 승객 2,201명
    Skari — AI Statistical Analysis Platform