9-Box Grid & 데이터 분석 [2편] - ANOVA
오늘의 학습 방향
안녕하세요? 지난 시간에는 HR의 인력 운영에 관한 전략적 포트폴리오인 9-Box Grid 이론을 소개했습니다. 성과 및 잠재력 수준에 따라 3*3 행렬에서 9개 박스를 구분하고, 각 박스에 해당하는 인력 그룹의 특징과 HR 관리 포인트를 살펴봤습니다. 그리고, 9-Box Model을 활용한 HR 데이터 샘플을 바탕으로, 3개의 박스 그룹과 승진과의 관계가 통계적으로 유의미한지 여부를 카이제곱 검정을 통해 확인해봤습니다.
이번 학습은 지난 시간에 이어 동일한 데이터 샘플을 가지고 카이제곱 검정과는 다른 통계 검정 방식을 활용하여 몇 가지 가설에 대한 결과와 해석을 도출하고자 합니다. 자, 그럼 시작하겠습니다.
01. 데이터 샘플 소개
지난 시간에 사용했던 데이터 샘플과 동일한 버전입니다. 총 60개의 표본으로 구성되어 있으며, 각 열은 아래와 같은 정보를 담고 있습니다.
A열: Employee_ID (직원 고유번호)
B열: Performance (High/Mid/Low)
C열: Potential (High/Mid/Low)
D열: Box (HiPo Core Leader, Core Talent, Expert Track ...)
E열: Perf_Score (전년도 성과평가: High=3, Mid=2, Low=1)
F열: Pot_Score (전년도 잠재력 평가: High=3, Mid=2, Low=1)
G열: NextYear_Score (1~4등급, * 올해 달성된 종합 평가등급)
H열: Promotion_12M (1=1개월 내 승진)
I열: Attrition_12M (1=12개월 내 퇴사)
Excel의 [Pivot Table]을 통해 각 박스에 포함된 인원 수를 정리하면 다음과 같습니다.
02. 분산분석(ANOVA)
:: Analysis of varience
분산분석(分散分析, analysis for variance, ANOVA)은 통계학에서 두 개 이상 다수의 집단을 서로 비교하고자 할 때 집단 내의 분산, 총평균 그리고 각 집단의 평균의 차이에 의해 생긴 집단 간 분산의 비교를 통해 만들어진 F분포**를 이용하여 가설검정을 하는 방법이다. 통계학자이자 유전학자인 로날드 피셔(R.A.Fisher)에 의해 1920년대에서 1930년대에 걸쳐 만들어졌다. (위키백과)
분산분석(ANOVA)은 "세 개 이상 그룹에 있는 인력들의 평가등급이 서로 통계적으로 차이가 난다고 볼 수 있는가?"를 판단할 때 사용하는 도구입니다. 분산분석은 크게 두 가지의 변동을 비교하는 방식입니다.
첫째는 그룹 간의 변동성('SS_between', Sum of squares between groups)입니다. 즉, 집단 간의 제곱합입니다. 각 집단의 평균이 전체 평균과 얼마나 차이가 나는지를 나타내며, 집단 간의 차이로 인한 변동을 의미합니다. 둘째는, 그룹 내의 변동성('SS_within', Sum of squares within groups)입니다. 즉, 집단 내의 제곱합입니다. 각 집단 내의 개별 관측값이 해당 평균과 얼마나 차이가 나는지를 나타내며, 우연 또는 오차로 인한 변동을 의미합니다. F값=(그룹 간 변동/그룹 간 자유도)÷(그룹 내 변동/그룹 내 자유도) 입니다. F가 크면, 그룹 간의 평균 차이가 그룹 내의 들쭉날쭉한 변동보다 크다는 것으로 "그룹 간의 차이가 있다."는 측면으로 해석합니다.
지난 시간과 마찬가지로, 3개의 박스 그룹을 활용하여 분산분석을 시도해보겠습니다. 3개 박스는 HiPo Core Leader, Core Talent, Role Mismatch 그룹입니다. 그리고 다른 사용할 변수는 [Nextyear_Score] 입니다. 참고로 이 변수는 올해 달성한 성과에 대한 종합적인 평가등급으로 1등급부터 4등급까지 임의의 값들이 분포되어 있습니다. 1등급이 최고 수준을 나타내며, 4등급으로 갈수록 종합 평가의 수준이 낮다는 것을 의미합니다.
02-(1). ANOVA를 통한 검정 과정
1단계. 각 그룹에 대한 Data 정리
총 60명의 샘플에서 각 그룹에 대한 Nextyear_Score는 다음과 같이 정리할 수 있습니다.
HiPo Core Leader(6명): 1.31, 1.18, 1.63, 1.42, 1.29, 1.29
Core Talent(9명): 1.98, 1.69, 1.86, 1.93, 2.05, 1.74, 1.74, 1.67, 1.91
Role Mismatch(2명): 3.65, 3.78
2단계. 각 그룹의 n, 그룹별 평균 및 전체 평균
① 각 그룹의 인원 수를 확인합니다. HiPo는 6명, Core Talent는 9명, Role Mismatch는 2명입니다.
② 각 그룹의 평균 등급을 산출합니다. Averageif 함수를 이용합니다.
HiPo Core Leader: [=AVERAGEIF($E$4:$E$20,H4,$F$4:$F$20)]=1.353
Core Talent: [=AVERAGEIF($E$4:$E$20,H5,$F$4:$F$20)]=1.841
Role Mismatch: [=AVERAGEIF($E$4:$E$20,H6,$F$4:$F$20)]=3.715
③ 3개 박스 그룹에 대한 전체 평균을 산출합니다. Average 함수를 이용합니다.
Total_Avg: [=AVERAGE(F4:F20)]=1.889
3단계. 그룹 간 제곱합 (SS_between)
SS_between = Σ nᵢ × (mᵢ − m)²
각 그룹에 대한 제곱합을 계산합니다. 각 그룹의 데이터 수를 nᵢ, 각 그룹의 평균을 mᵢ, 전체 평균을 m이라는 기호로 정리한 후, 위 공식에 따라 각 그룹의 제곱합 및 전체 제곱합을 산출하여 그룹 간의 변동성을 수치로 나타냅니다.
① HiPo Core Leader
(m₁ − m) = 1.3533 − 1.8894 ≈ −0.536
(m₁ − m)² ≈ 0.287
n₁ × (m₁ − m)² = 6 × 0.2874 ≈ 1.72
② Core Talent
(m₂ − m) = 1.8411 − 1.8894 ≈ −0.048
(m₂ − m)² ≈ 0.002
n₂ × (m₂ − m)² = 9 × 0.0023 ≈ 0.021
③ Role Mismatch
(m₃ − m) = 3.7150 − 1.8894 ≈ 1.826
(m₃ − m)² ≈ 3.333
n₃ × (m₃ − m)² = 2 × 3.3345 ≈ 6.666
SS_between ≈ 1.724 + 0.020 + 6.667 ≈ 8.411
4단계. 그룹 내 제곱합 (SS_within)
SS_within = Σ Σ (xᵢⱼ − mᵢ)²
그룹 내에서 발생한 변동성을 측정하기 위해서는 각 그룹 안에 있는 개별 데이터 값과 해당 그룹의 평균과의 차이를 제곱한 후 전부 더하는 방식으로 계산합니다. 예를 들어 HiPo 그룹의 첫 번째 직원인 E019에 대한 NextYear_Score는 1.31입니다. 3단계에서 계산한 바와 같이 HiPo 그룹의 평균은 약 1.353입니다. 1.31에서 1.353을 빼면 -0.043(deviation)이고, 이를 제곱한 값(Square of deviation)은 0.002입니다.
이렇게 HiPo 그룹의 인력 6명에 대해 전부 계산한 다음, Core Talent 9명, Role Mismatch 2명까지 전부 계산하여 더한 값은 0.278입니다. 3단계 결과까지 종합하면 SS_between=8.411, SS_within=0.278입니다.
5단계. 자유도, MS, F값, p값 계산
① 먼저 자유도를 구합니다. 현재 그룹의 수는 3개, 전체 표본의 개수는 17개입니다. 따라서 자유도(df)는 그룹 간(between), 그룹 내(within)로 나눠 아래와 같이 계산합니다.
df_between=k-1=3-1=2
df_within=N-k=17-3=14
② 다음으로 MS 값을 구합니다. MS는 제곱합의 평균(Mean Square) 입니다. 즉, 먼저 제곱합을 계산한 다음(SS, Sum of Squares), 그 제곱들의 평균을 다시 낸 것입니다. 분산분석(ANOVA)의 본질은 "집단 간의 차이가 집단 내에서 원래 보이는 변동성의 정도보다 충분히 크게 나타나는가?"를 살펴봅니다. 여기서 "차이"를 그냥 더하게 되면, (+)인 경우도 있고, (-)인 경우도 있어서 서로 상쇄하여 지워집니다. 그렇기 때문에 모든 편차를 제곱하여 "크기"만 더한 후 남긴 다음 더하게 됩니다(SS).
그런데 왜 SS를 그대로 비교하지 않고, 'df'로 나누는 것인지에 대한 질문이 이어집니다. 그 이유는 SS는 "데이터 개수의 영향을 강하게 받는 값"이기 때문에 공정한 비교를 하려면 반드시 df로 나눠야 합니다. 좀 더 직관적인 표현을 빌리자면, SS는 "사람 수가 많으면 무조건 커지는 값"이기 때문입니다.
예를 들어 A팀과 B팀 간의 변동성의 차이가 팀 내의 변동성 보다 충분히 큰 값을 보이는지 살펴본다고 가정해 봅시다. A팀은 3명, B팀은 30명입니다. 그렇다면 똑같이 들쭉날쭉 편차를 보이더라도, B팀은 A팀에 비해 사람이 10배 더 많기 때문에 편차의 제곱을 30개를 더해야 합니다. 따라서 SS는 무조건 커질 수밖에 없습니다. 즉, 정말로 "변동이 크기 때문"이라기 보다는 "사람 수가 많아서" 커진 탓입니다. 그래서 SS 그대로는 "순수한 변동의 크기를 비교할 수 없다."라고 새겨야 합니다.
df는 말 그대로 "자유롭게 움직일 수 있는 데이터의 개수"를 의미합니다. SS를 df로 나눈다는 것은 "자유롭게 움직일 수 있는 데이터 1개에 대한 평균적인 변동"을 측정한다는 것입니다. 따라서 SS가 전체 변동성의 총량을 보는 것이라면, MS는 데이터 1개에 대한 평균적인 변동을 보는 것이라고 할 수 있습니다.
이러한 과정을 반영하여 MS는 MS_between과 MS_within으로 아래와 같이 계산합니다.
MS_between=SS_between / df_between=8.411/2=4.205
MS_within=SS_within / df_within=0.278/14=0.019
MS_between은 "각 그룹 평균들 사이의 평균적인 거리"를 측정한 값입니다. 이를 위해 각 집단의 평균 간 거리의 제곱에 대한 총합(SS_between)을 df(그룹 수-1)로 나눈 값입니다. MS_within은 "개인 1명당 평균적인 오차(편차)의 크기"를 측정한 값입니다. 이를 위해 개인들이 자신이 속한 집단의 평균에서 벗어난 정도를 제곱하여 합한 값을 df(전체 인원-그룹 수)로 나눈 값입니다.
③ 마지막으로 F값과 p-value를 계산합니다. F값은 MS_between / MS_within 입니다. 즉, 4.205를 0.019로 나눈 값으로 약 211.88이 나옵니다. 이제 p-value를 통해 통계적인 유의성을 검정해보겠습니다. p값을 구하기 위해서 엑셀에서 [=f.dist.rt(F값, df1, df2)] 함수를 적용합니다. 즉, 아래와 같습니다.
p-value: [=f.dist.rt(211.88,2,14]≈ 3.4 × 10^-11 (거의 0)
02-(2). ANOVA 검정 결과에 대한 해석
p값이 0.05보다 굉장히 낮게 측정되었기 때문에 통계적으로는 "HiPo Core Leader, Core Talent, Role Mismatch 세 그룹의 평균적인 NextYear_Score는 같다고 보기 어렵다."라는 결론을 내리게 됩니다. 앞서 우리는 세 그룹의 종합 평가등급에 대한 평균값을 구한 적이 있습니다. HiPo 그룹은 1.35로 1등급 중에서도 상당히 높은 수준의 평가를 받았습니다. Core Talen 그룹은 1.84로 1등급 후반에 분포되어 있지만 우수한 수준의 평가를 받았습니다. 반면, Role Mismatch 그룹의 경우 3.72로 최하위에 가까운 평가를 받았습니다. 즉 위와 같은 실제 세 그룹 간의 평균적인 종합 평가 등급 차이가 통계적으로도 의미가 있는 차이로서 이들 그룹에 대한 차년도 평가 등급도 어느 정도 예측이 가능하다는 점을 시사합니다.