본문 바로가기
IT관련

중선형 회귀모델 , 교육, 평판, 여성 비율로 알아보는 연봉 예측 모델 ( +R코드 )

by aostory77 2025. 4. 7.

   중선형 회귀모델로 알아본 연봉 예측 모델

 

어떤 직업이 연봉이 높을까요?
교육 수준, 직업 평판, 성별 비율 같은 요소들이 연봉에 어떤 영향을 줄까요?

오늘은 간단한 통계 모델을 이용해 직업 데이터(Prestige.csv)를 기반으로 연봉을 예측하고, 성별 격차까지 분석하여 데이터로 들여다보는 사회구조와 성별 격차에 대해 알아보겠습니다. 

 

🧾 사용한 데이터는?

Prestige.csv라는 공개 데이터를 사용했습니다.

  • education: 평균 교육 연수
  • prestige: 직업의 사회적 평판 점수
  • women: 여성 종사자 비율 (%)
  • income: 평균 연봉

# 1. 필요한 패키지 설치 및 불러오기
install.packages("ggplot2")
install.packages("readr")
install.packages("dplyr")
install.packages("summarytools")

library(ggplot2)
library(readr)
library(dplyr)
library(summarytools)

# 2. 데이터 불러오기
url <- "https://raw.githubusercontent.com/bluesky0950/datasets/main/Prestige.csv"
newdata <- read_csv(url)
View(newdata)

 

# 3. 기초통계량
str(newdata)
summary(newdata)
dfSummary(newdata)

 

🔍 중선형 회귀 분석

분석 목적: 교육, 평판, 여성비율을 통해 연봉을 예측할 수 있을까?

 

# 4. 중선형 회귀 모델 생성
model <- lm(income ~ education + prestige + women, data = newdata)
summary(model)

Call:
lm(formula = income ~ education + prestige + women, data = newdata)

Residuals:
    Min      1Q  Median      3Q     Max 
-7715.3  -929.7  -231.2   689.7 14391.8 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -253.850   1086.157  -0.234    0.816    
education    177.199    187.632   0.944    0.347    
prestige     141.435     29.910   4.729 7.58e-06 ***
women        -50.896      8.556  -5.948 4.19e-08 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2575 on 98 degrees of freedom
Multiple R-squared:  0.6432,    Adjusted R-squared:  0.6323 
F-statistic: 58.89 on 3 and 98 DF,  p-value: < 2.2e-16

 

회귀 모델 수식:
income = -253.85 + 177.2 * education + 141.4 * prestige - 50.9 * women

해석:

  • 교육 연수 1년 증가 → 연봉 평균 +177.2
  • 평판 점수 1점 증가 → 연봉 평균 +141.4
  • 여성 비율 1% 증가 → 연봉 평균 -50.9

prestige, women은 통계적으로 유의미한 영향을, education은 상대적으로 덜 유의미한 영향을 미치는 모델입니다.

 

 

📈 예측 예시 <

조건: 교육 연수 9.5년, 평판 점수 80, 여성 비율 20%

# 5. 예측
new_obs <- data.frame(education = 9.5, prestige = 80, women = 20)
predict(model, newdata = new_obs)  # 자동으로 예측해줌


예측 연봉 계산:

income = -253.85 + 177.2*9.5 + 141.4*80 - 50.9*20 ≈ 11,723.55



 

📈 변수별 시각화 요약

  • 교육 연수: 증가할수록 연봉도 다소 증가

# 6-1. 교육 VS 연봉 시각화 : education vs income 
  ggplot(newdata, aes(x = education, y = income)) +
  geom_point(color = "steelblue") +
  geom_smooth(method = "lm", se = FALSE, color = "darkred") +
  labs(title = "교육 연수 vs 연봉", x = "Education (years)", y = "Income")

 

  • 평판 점수: 높은 평판 → 높은 연봉 (명확한 관계)

# 6-2. 평판 VS 연봉 시각화 : prestige  vs income 

ggplot(newdata, aes(x = prestige, y = income)) +
  geom_point(color = "darkgreen") +
  geom_smooth(method = "lm", se = FALSE, color = "blue") +
  labs(title = "평판 점수 vs 연봉", x = "Prestige", y = "Income")

 

  • 여성 비율: 비율 높을수록 연봉은 낮은 경향

# 6-3. 평판 VS 연봉 시각화 : women   vs income  

ggplot(newdata, aes(x = women, y = income)) +
  geom_point(color = "purple") +
  geom_smooth(method = "lm", se = FALSE, color = "orange") +
  labs(title = "여성 비율 vs 연봉", x = "Women (%)", y = "Income")

 

특히 평판여성 비율은 강한 패턴을 보여줍니다. 이는 사회 구조나 업계 특성에 따른 차이일 수 있습니다.

 

 

⚖️ 성별 격차 분석

 

여성 비율을 기준으로 직군을 나눠 평균 연봉을 비교해봤습니다.

  • 여성 비율 > 50%: 평균 연봉 낮음
  • 여성 비율 ≤ 50%: 평균 연봉 높음

# 7. 그룹별 평균 연봉 계산

newdata2 <- newdata %>%
  mutate(women_group = ifelse(women > 50, "여성 비율 높음", "여성 비율 낮음"))

ggplot(newdata2, aes(x = women_group, y = income, fill = women_group)) +
  geom_boxplot() +
  labs(title = "여성 비율에 따른 연봉 분포", x = "여성 비율 그룹", y = "Income") +
  theme_minimal()

 

 

박스플롯 시각화 결과, 여성 비율이 높은 직군일수록 낮은 연봉 분포를 보였습니다.


 

⚖️ 결론

  • 평판이 좋은 직업일수록 연봉이 높다 ✔
  • 여성 비율이 높은 직군은 평균 연봉이 낮다 ✔
  • 단순한 모델이지만 사회 구조와 불평등을 이해하는 데 유용 ✔

참고 : 이 데이터는 공개된 샘플 데이터입니다.