목차
R로 배우는 HR 통계 기초: 데이터 분석의 첫걸음
“통계는 어렵고, R은 낯설다”고 느끼시나요? 이 문서는 통계 이론과 R 코드 실습을 함께 엮어, 통계의 '원리'를 이해하고 R로 '구현'하는 능력을 동시에 기르도록 돕는 완전 초보자용 가이드입니다.
⚙️ 0단계: 분석을 위한 준비 운동
본격적인 통계 여행을 떠나기 전, 우리의 '탐사선(R)'과 '조종석(RStudio)'을 준비해야 합니다.
1. R과 RStudio 설치: '엔진'과 '운전석'
- R: 통계 계산을 실제로 수행하는 핵심 '엔진'입니다.
- 설치: CRAN 공식 사이트에서 최신 버전을 다운로드하여 설치합니다.
- RStudio: R이라는 엔진을 편하게 조작하는 '운전석'입니다. 코드 작성, 결과 확인, 그래프 보기를 편리하게 해줍니다.
- 설치: RStudio 공식 사이트에서 무료 버전을 다운로드하여 설치합니다. (R이 먼저 설치되어 있어야 합니다.)
2. Tidyverse 패키지 설치: '만능 공구 세트'
'패키지'는 R의 능력을 확장하는 '앱(App)'과 같습니다. 그중 `tidyverse`는 데이터 분석에 필요한 대부분의 도구를 모아놓은 '만능 공구 세트'입니다. 이것 하나만 설치해도 충분합니다.
RStudio를 실행한 후, 아래 명령어를 Console 창에 입력하고 Enter 키를 누르세요.
# tidyverse 패키지(만능 공구 세트) 설치하기 install.packages("tidyverse")
3. 데이터 불러오기: 분석할 '재료' 준비
이제 분석할 데이터를 R로 불러옵니다. 이 가이드에서는 `my_data`라는 이름으로 데이터를 사용하겠습니다.
# 앞으로 tidyverse 공구 세트를 사용하겠다고 선언 (R을 켤 때마다 실행) library(tidyverse) # CSV 파일을 불러와 my_data 라는 이름의 상자에 저장 my_data <- read_csv("C:/Users/내PC이름/Desktop/분석할_데이터.csv") # 데이터가 잘 불어왔는지 첫 6줄만 확인 head(my_data)
📊 1장: 기술 통계 - 데이터의 첫인상 파악하기
기술 통계(Descriptive Statistics)는 우리가 가진 데이터가 어떤 특징을 가졌는지 요약하고 설명하는 것입니다. 마치 처음 만난 사람의 '자기소개'를 듣는 것과 같습니다.
1. 중심 경향성: 데이터는 어디에 모여 있을까?
데이터들이 어떤 값을 중심으로 모여 있는지를 나타냅니다.
- 평균 (Mean): 모든 값을 더해 개수로 나눈 값. 가장 일반적이지만, 극단적인 값(이상치)에 영향을 많이 받습니다.
예시
: 우리 팀 9명의 연봉은 5천만원인데, 팀장님 연봉이 5억이라면 팀 평균 연봉은 실제보다 훨씬 높게 계산됩니다.
- 중앙값 (Median): 모든 값을 순서대로 나열했을 때 정확히 가운데 있는 값. 이상치의 영향을 받지 않아 안정적입니다.
예시
: 위와 같은 상황에서, 중앙값은 5천만원에 가깝게 계산되어 팀의 일반적인 연봉 수준을 더 잘 보여줍니다.
# my_data의 '만족도' 점수에 대한 평균과 중앙값 계산 # %>% (파이프 연산자): 왼쪽의 데이터를 가지고 오른쪽 작업을 하라는 의미 (Ctrl+Shift+M) my_data %>% summarise( 평균만족도 = mean(만족도, na.rm = TRUE), # na.rm=TRUE : 빈 값(NA)은 제외하고 계산 중앙값만족도 = median(만족도, na.rm = TRUE) )
2. 변동성: 데이터는 얼마나 흩어져 있을까?
데이터가 중심에서 얼마나 넓게 퍼져있는지를 나타냅니다.
- 표준편차 (Standard Deviation): 값들이 평균에서 평균적으로 얼마나 떨어져 있는지를 나타냅니다. 표준편차가 크면 데이터가 넓게 퍼져있고(개인차가 크고), 작으면 평균 주변에 모여있다는 의미입니다.
예시
: 두 부서의 평균 만족도가 4점으로 같더라도, A부서의 표준편차가 B부서보다 크다면, A부서는 만족도가 매우 높은 사람과 매우 낮은 사람이 섞여있다는 의미일 수 있습니다.
# 만족도 점수의 표준편차 계산 my_data %>% summarise( 만족도_표준편차 = sd(만족도, na.rm = TRUE) )
3. 분포 시각화: 데이터의 전체적인 '모양' 보기
숫자 요약만으로는 알 수 없는 데이터의 전체적인 형태를 그래프로 확인합니다.
- 히스토그램: 데이터가 어떤 구간에 얼마나 많이 분포하는지를 보여주는 막대그래프입니다.
용도
: 연령대 분포, 만족도 점수 분포 등 연속된 숫자 데이터의 형태를 볼 때 사용합니다.
# 만족도 점수의 분포를 히스토그램으로 그리기 ggplot(data = my_data, aes(x = 만족도)) + geom_histogram(bins = 10, fill = "skyblue", color = "white") + labs(title = "직무 만족도 점수 분포", x = "만족도 점수", y = "인원수")
🔍 2장: 추론 통계 - 일부로 전체를 추측하기
추론 통계(Inferential Statistics)는 우리가 가진 일부 데이터(표본)를 통해, 우리가 보지 못한 전체(모집단)의 특성을 추측하는 과정입니다. 마치 국 한 숟가락을 맛보고 솥 전체의 간을 판단하는 것과 같습니다.
여기서 가장 중요한 개념은 p-value입니다.
- p-value: “우리가 데이터에서 발견한 차이나 관계가 순전히 '우연'에 의해 발생했을 확률”
- 해석: p-value가 0.05보다 작으면, 이 결과가 우연일 확률이 5% 미만이라는 뜻이므로, 우리는 “통계적으로 유의미하다”고 말하며, 우리의 주장이 맞다고 판단합니다.
1. 차이 검정: 두 그룹은 정말 다른가?
두 개 이상의 그룹 간에 평균 차이가 통계적으로 유의미한지 검정합니다.
- t-검정 (t-test):
두 개
의 그룹 간 평균을 비교할 때 사용합니다.HR 질문 예시
: “영업팀과 마케팅팀의 직무 만족도 평균에 차이가 있는가?”
# 부서(A팀, B팀)에 따라 만족도에 차이가 있는지 t-검정 t.test(만족도 ~ 부서, data = my_data) # 결과에서 p.value가 0.05보다 작은지 확인합니다.
- 분산분석 (ANOVA):
세 개 이상
의 그룹 간 평균을 비교할 때 사용합니다.HR 질문 예시
: “영업팀, 마케팅팀, 개발팀의 직무 만족도 평균에 차이가 있는가?”
# aov() 함수로 ANOVA 모델 생성 anova_model <- aov(만족도 ~ 부서, data = my_data) summary(anova_model) # 결과 테이블에서 p-value (Pr(>F) 값) 확인
2. 관계 검정: 두 요소는 서로 관련이 있을까?
두 변수(요소)가 서로 어떤 관계를 맺고 있는지 파악합니다.
- 상관 분석 (Correlation):
두 숫자형 변수
간의 직선적인 관계를 분석합니다.HR 질문 예시
: “근속연수가 길어질수록 직무 만족도도 높아지는가?”- 해석: 상관계수®는 -1 ~ 1 사이의 값을 가지며, 1에 가까우면 강한 양의 관계, -1에 가까우면 강한 음의 관계, 0에 가까우면 관계가 없음을 의미합니다.
# 근속연수와 만족도의 상관계수 계산 cor(my_data$근속연수, my_data$만족도, use = "complete.obs") # use="...": NA값 처리 옵션 # 관계를 산점도로 시각화 ggplot(data = my_data, aes(x = 근속연수, y = 만족도)) + geom_point() + # 점으로 나타내기 geom_smooth(method = "lm") # 추세선 추가
- 카이제곱 검정 (Chi-squared Test):
두 범주형 변수
간의 관련성을 분석합니다.HR 질문 예시
: “직급(사원/대리)에 따라 퇴사 여부(Yes/No)에 차이가 있는가?”
# 직급과 퇴사여부로 교차표 생성 cross_table <- table(my_data$직급, my_data$퇴사여부) # 카이제곱 검정 실행 chisq.test(cross_table) # p-value 확인
🔮 3장: 예측 모델링 - 관계를 넘어 예측으로
회귀분석(Regression Analysis)은 여러 원인 변수들이 특정 결과 변수에 얼마나 영향을 미치는지 분석하여, 미래의 결과를 '예측'하는 모델을 만드는 것입니다.
- 선형 회귀분석: '직무 만족도'라는
숫자형 결과
를 예측할 때 사용합니다.HR 질문 예시
: “직원의 근속연수, 월급, 상사와의 관계 점수가 직무 만족도에 각각 얼마나 영향을 미칠까?”
# lm() 함수로 선형 회귀모델(Linear Model) 생성 # 만족도 ~ 근속연수 + 월급 : 만족도를 근속연수와 월급으로 예측 model <- lm(만족도 ~ 근속연수 + 월급, data = my_data) # 결과 요약 확인 (가장 중요!) summary(model)
summary(model)
핵심 해석법:
Estimate
: 각 원인이 1단위 증가할 때 결과가 얼마나 변하는지 (영향력의 크기)Pr(>|t|)
(p-value): 이 값이 0.05보다 작고, 옆에 별(*
)이 많을수록 중요한 원인 변수임을 의미합니다.Adjusted R-squared
: 이 모델이 결과(만족도)의 변동을 몇 %나 설명하는지 (모델의 전반적인 설명력)
💡 최종 정리:
이 가이드를 통해 우리는 R이라는 도구로 데이터의 ①자기소개를 듣고(기술통계) → ②관계를 추측하고(추론통계) → ③미래를 예측하는(회귀분석) 기본적인 데이터 분석의 전 과정을 경험했습니다. 통계는 정답을 찾는 학문이 아니라, 데이터를 통해 더 나은 질문과 합리적인 의사결정을 하도록 돕는 과정입니다.