현대 사회에서 개인의 삶의 질은 단순한 경제적 지표를 넘어서 건강, 가족관계, 만족도 등 다양한 요소들과 밀집하게 연결되어 있다. 특히, 소득 수준이 개인의 건강이나 가족생활에 어떤 영향을 미치는지는 사회복지 정책 및 삶의 질 개선 방안을 설계하는 데 있어 중요한 기준이 된다. 본 연구는 연간 총금여(salary)를 중심으로 건강 만족도, 가족생활 만족도, 그리고 가족 수입 만족도 간의 관계를 분석함으로써, 경제적 자원이 주관적 만족도에 미치는 영향을 다각도로 탐색하는 것을 목족으로 한다.
본 연구에 사용된 데이터는 한국톡지패널조사에서 제공한 2024년도 최신 조사 자료이다. 이 조사는 한국보건사회연구원과 서울대학교 사회복지연구솨 공동으로 주관하며, 전국의 가구와 가구원을 대상으로 매년 실시되는 종단 조사이다. 연구를 다음과 같은 질문에 답하고자 한다: ・소득 수준에 따라 건강 만족도는 어떻게 달라지는가? ・가족생활에 대한 만족도와 소득은 어떤 상관관계를 가지는가? ・가족의 수입에 대한 만족도는 실제 총급여와 일치하는가? ・건강 만족도와 가족생활 만족도 간에는 어떠한 관련이 존재하는가?
이번 분석의 목적에 맞게 한국 복지 패널 사이트에서 최신 데이터를 불러오고자 한다. 데이터를 불러오며 분석을 위한 데이터 가공하기 쉽게 복사본을 만든 후, 사용할 변수들의 변수명을 바꿔주었다.
date <- read.spss(file = "Koweps_hpc19_2024_beta1.sav",
to.data.frame = T)
new_date<-date
new_date <- new_date %>% select(classification= h19_hc_all, #균등화소득에 따른 가구구분
salary= p1901_6, #총급여-연금 연간 총액
health=p1903_5, #건강 만족도
familylife=p1905_aq1, #가족생활에 대한 만족도
famincome=p1903_6) #가족의 수입 만족도
총급여, 간강만족도, 가족생활에 대한 만족도, 가족의 수입 만족도 변수에 결측치가 포함된 관측치를 제거하였다. 이를 통해 결측치로 인한 분석 왜곡을 방지하고, 보다 신뢰성 있는 결과를 도출할 수 있도록 하였다.
new_date_clean <- new_date %>%
filter(!is.na(salary), !is.na(health), !is.na(familylife), !is.na(famincome))
소득 분포를 히스토그램으로 시각화하여, 소득 데이터가 어떤 구간에 몰려 있는지와 극단값 존재 여부를 직관적으로 확인하였다.
summary(new_date_clean$salary)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0 235.2 344.5 461.2 568.0 3000.0
hist(new_date$salary, breaks=30, main="소득 분포 히스토그램", xlab = "소득")
또한, 소득을 하위 33%, 중간 33%, 상위 34%로 나눈 그룹을 만들어 각 소득 그룹별 건강 만족도 분포를 확인하였다.
new_date <- new_date %>%
mutate(salary_group = case_when(
salary < quantile(salary, 0.33, na.rm=TRUE) ~ "low",
salary < quantile(salary, 0.66, na.rm=TRUE) ~ "middle",
TRUE ~ "high"
))
table(new_date$salary_group, new_date$health)
##
## 1 2 3 4 5
## high 328 1911 3032 4950 511
## low 63 374 316 199 4
## middle 31 295 404 289 8
건강 만족도(helth)와 변수는 1부터 5까지의 척도로 구성되어 있으며, 각각 다음과 같은 의미를 가진다. 1: 매우 불만족 2: 대체로 불만족 3: 그저 그렇다 4: 대체로 만족 5: 매우 만족 건강 만족도 수준별로 평균 소득을 비교하고, 각 수준에 해당하는 응답자 수를 확인하였다.
new_date %>%
group_by(health) %>%
summarise(mean_salary = mean(salary, na.rm = TRUE),
count = n()) %>%
arrange(health)
## # A tibble: 6 × 3
## health mean_salary count
## <dbl> <dbl> <int>
## 1 1 339. 422
## 2 2 367. 2580
## 3 3 473. 3752
## 4 4 552. 5438
## 5 5 612. 523
## 6 NA 413. 2707
familylife는 ’가족생활에 대한 만족도’를 7단계로 평가하는 변수이고 0은
’비해당’을 의미하고 있어 분석의 대상이 되지 않는다. 그 때문에, 0의 값을
포함하는 데이터를 제외하거나 결측값으로 치환해 처리한다. 각각 다음과
같은 의미를 가진다. 1: 매우불만족 2: 불만족
3: 약간 불만족
4: 보통
5: 약간 만족
6: 만족
7: 매우 만족
0: 비해당
new_date_clean <- new_date_clean %>%
filter(familylife != 0)
table(new_date_clean$familylife) #데이터 확인인
##
## 1 2 3 4 5 6 7
## 19 34 57 531 385 1757 193
가족생활 만족도 수준에 따라 평균 소득을 계산하여, 삶의 질과 소득 간의 관계를 간접적으로 파악하였다.
familylife_salary <- new_date_clean %>%
group_by(familylife) %>%
summarise(mean_salary = mean(salary, na.rm = TRUE),
count = n()) %>%
arrange(familylife)
familylife_salary
## # A tibble: 7 × 3
## familylife mean_salary count
## <dbl> <dbl> <int>
## 1 1 448. 19
## 2 2 359. 34
## 3 3 392. 57
## 4 4 414. 531
## 5 5 439. 385
## 6 6 469. 1757
## 7 7 597. 193
건강 만족도 값(1–5)을 기준으로 데이터를 그룹화한 뒤, 각 그룹의 평균 총급여를 계산하였다.이를 통해 건강 만족도 수준에 따라 평균 소득이 어떻게 달라지는지를 확인할 수 있다.
mean_salary_by_health <- new_date %>%
group_by(health) %>%
filter(!is.na(salary), !is.na(health)) %>%
summarise(mean_salary = mean(salary, na.rm = TRUE),
count = n()) %>%
arrange(health)
mean_salary_by_health
## # A tibble: 5 × 3
## health mean_salary count
## <dbl> <dbl> <int>
## 1 1 339. 116
## 2 2 367. 870
## 3 3 473. 1144
## 4 4 552. 868
## 5 5 612. 24
소득 그룹별로 건강 만족도와 가족생활 만족도가 어떻게 분포하는지 파악하기 위해 각 소득 그룹 내에서 건강 만족도 및 가족생활 만족도의 빈도와 비율을 계산하였다. 이를 통해 소득 수준에 따라 두 만족도의 분포가 어떻게 달라지는지 비교할 수 있다.
health_salary_percent <- new_date %>%
filter(!is.na(health), !is.na(salary_group)) %>%
group_by(salary_group, health) %>%
summarise(count = n()) %>%
group_by(salary_group) %>%
mutate(percent = count / sum(count) * 100)
## `summarise()` has grouped output by 'salary_group'. You can override using the
## `.groups` argument.
health_salary_percent
## # A tibble: 15 × 4
## # Groups: salary_group [3]
## salary_group health count percent
## <chr> <dbl> <int> <dbl>
## 1 high 1 328 3.06
## 2 high 2 1911 17.8
## 3 high 3 3032 28.3
## 4 high 4 4950 46.1
## 5 high 5 511 4.76
## 6 low 1 63 6.59
## 7 low 2 374 39.1
## 8 low 3 316 33.1
## 9 low 4 199 20.8
## 10 low 5 4 0.418
## 11 middle 1 31 3.02
## 12 middle 2 295 28.7
## 13 middle 3 404 39.3
## 14 middle 4 289 28.1
## 15 middle 5 8 0.779
연간 총급여 수준에 따라 건강 만족도(1~5)의 평균값이 어떻게 달라지는지 확인한다.
new_date %>%
group_by(salary_group) %>%
summarise(mean_health = mean(health, na.rm = TRUE),
sd_health = sd(health, na.rm = TRUE),
n = n())
## # A tibble: 3 × 4
## salary_group mean_health sd_health n
## <chr> <dbl> <dbl> <int>
## 1 high 3.32 0.923 13384
## 2 low 2.69 0.887 987
## 3 middle 2.95 0.848 1051
familylife(가족생활 만족도: 1~5)에 따라 평균 총급여(salary) 차이가 있는지 비교한다.
familylife_salary <- new_date_clean %>%
group_by(familylife) %>%
summarise(mean_salary = mean(salary),
median_salary = median(salary),
sd_salary = sd(salary),
count = n())
familylife_salary
## # A tibble: 7 × 5
## familylife mean_salary median_salary sd_salary count
## <dbl> <dbl> <dbl> <dbl> <int>
## 1 1 448. 372 282. 19
## 2 2 359. 270. 281. 34
## 3 3 392. 289 363. 57
## 4 4 414. 305 320. 531
## 5 5 439. 328 341. 385
## 6 6 469. 354 358. 1757
## 7 7 597. 420 494. 193
두 만족도는 삶의 질이라는 면에서 연결되어 있을 수 있으므로 상과관계가 있는지 확인한다.
health_familylife <- table(new_date_clean$health, new_date_clean$familylife)
health_familylife
##
## 1 2 3 4 5 6 7
## 1 3 1 5 36 23 37 6
## 2 7 16 19 188 105 477 39
## 3 7 12 24 214 165 654 56
## 4 2 5 9 89 90 579 84
## 5 0 0 0 4 2 10 8
salary, health, familylife 변수만을 선택하여 새로운 데이터프레임를 생성한 후, 이 세 변수 간의 상관관계를 확인하였다.
data_cor <- new_date_clean %>%
select(salary, health, familylife)
cor(data_cor)
## salary health familylife
## salary 1.00000000 0.2019444 0.09854018
## health 0.20194438 1.0000000 0.18580004
## familylife 0.09854018 0.1858000 1.00000000
가족 수입에 대한 만족도 수준별로 연간 총급여의 평균을 비교하였다.
famincome_salary <- new_date_clean %>%
group_by(famincome) %>%
summarise(mean_salary = mean(salary),
count = n())
famincome_salary
## # A tibble: 5 × 3
## famincome mean_salary count
## <dbl> <dbl> <int>
## 1 1 405. 38
## 2 2 413. 535
## 3 3 429. 1319
## 4 4 522. 1065
## 5 5 699. 19
가족 수입 만족도와 가족생활 만족도 간의 상관관계를 분석한다.
cor(new_date_clean$famincome, new_date_clean$familylife, use = "complete.obs")
## [1] 0.2397853
데이터분석 “1. 총급여와 건강 만족도의 관계”에서 확인한 데이터를 파악하기 쉽게 그래프로 시각화했다. 한눈에 그래프를 이해할 수 있게 각 막대에 건강 만족도 수준을 표시하고 자세한 분포도 같이 표시했다.
health_labels <- c("매우 불만족",
"대체로 불만족",
"그저 그렇다",
"대체로 만족",
"매우 만족")
ggplot(mean_salary_by_health, aes(x = factor(health, labels = health_labels), y = mean_salary)) +
geom_col(fill = "steelblue") +
geom_text(aes(label = round(mean_salary, 0)),
vjust = -0.5, size = 4, color = "black") +
labs(x = "건강 만족도 (5단계)",
y = "평균 총급여",
title = "건강 만족도별 평균 총급여") +
theme_minimal()
소득 그룹별 건강 만족도와 가족생활 만족도의 분포를 백분율 스택 바 차트로 시각화하였다. 그래프는 각 소득 그룹 내에서 건강 및 가족생활 만족도의 상대적인 비율을 보여주어, 소득 수준에 따른 만족도의 차이와 분포 특성을 한눈에 파악할 수 있도록 한다.
ggplot(health_salary_percent, aes(x = salary_group, y = percent, fill = factor(health))) +
geom_bar(stat = "identity") +
geom_text(aes(label = paste0(round(percent, 1), "%")),
position = position_stack(vjust = 0.5), size = 3, color = "black") +
scale_fill_brewer(palette = "Blues", name = "건강 만족도") +
labs(title = "소득 그룹별 건강 만족도 비율",
x = "소득 그룹", y = "비율 (%)") +
theme_minimal()
데이터분석 “2. 총급여와 가족생활 만족도의 관계”에서 확인한 데이터를 파악하기 쉽게 그래프로 시각화했다. 위와 같이 한눈에 그래프를 이해할 수 있게 각 막대에 가족생활 만족도 수준을 표시하고 자세한 분포도 같이 표시했다.
family_labels<-c("매우 불만족",
"불만족",
"약간 불만족",
"보통",
"약간 만족",
"만족",
"매우 만족" )
ggplot(familylife_salary, aes(x = factor(familylife, labels = family_labels), y = mean_salary)) +
geom_col(fill = "steelblue") +
geom_text(aes(label = round(mean_salary, 0)),
vjust = -0.5, size = 4, color = "black") +
labs(title = "가족생활 만족도별 평균 총급여",
x = "가족생활 만족도",
y = "평균 총급여") +
theme_minimal()
데이터분석 “3, 건강 만족도와 가족생활 만족도 간의 관계”에서 확인한 데이터를 파악하기 쉽게 그래프로 시각화했다. 하양색 부분은 값의 차이를 수분하기 어려워 수치를 함께 표시하고, x측 라벨의 가독성을 높기 위해 글자를 기울여 배치했다.
health_familylife_df <- as.data.frame(health_familylife)
colnames(health_familylife_df) <- c("health", "familylife", "count")
ggplot(health_familylife_df, aes(x = factor(health, labels = health_labels), y = factor(familylife, labels = family_labels), fill = count)) +
geom_tile() +
geom_text(aes(label = count), color = "black", size = 4) +
scale_fill_gradient(low = "white", high = "darkgreen") +
labs(title = "건강 만족도와 가족생활 만족도의 분포",
x = "건강 만족도",
y = "가족생활 만족도") +
theme_minimal()+
theme(axis.text.x = element_text(angle = 45, hjust = 1))
데이터분석 “5. 가족 수입 만족도별 평균 실제 소득”에서 확인한 데이터를 파악하기 쉽게 그래프로 시각화했다.
famincome_labels<-c("매우 불만족",
"대체로 불만족",
"그저 그렇다",
"대체로 만족",
"매우 만족" )
ggplot(famincome_salary, aes(x = factor(famincome, labels = famincome_labels), y = mean_salary)) +
geom_col(fill = "skyblue") +
geom_text(aes(label = round(mean_salary, 0)), vjust = -0.5) +
labs(title = "가족 수입 만족도별 평균 소득",
x = "가족 수입 만족도",
y = "평균 소득") +
theme_minimal()
본 연구에서는 데이터 분석을 통해 연구 질문을 탐색하고, 그에 따른 주요 통찰을 도출하였다.
먼저, 소득 수준이 높을수록 전잔적인 건강 만족도가 증가하는 경향을 확인할 수 있었다. 이는 경제적 여유가 건강 관리와 관련된 긍정적인 인식에 영향을 미친다는 점에서 의미가 있다. 그리고 가족생활에 대한 만족도 역시 소득과 유의미한 상관관계를 보였다. 높은 소득층에서 가족 간의 생활 만족도가 더 높게 나타났으며, 이는 안정적인 경제 상황이 가족 관계와 생활 만족도를 긍정적으로 촉진하는 요인임을 시사한다. 또한, 가족의 수입에 대한 만족도는 실제 총급여와 완전히 일치하지는 않았다. 일부 응답자들은 실제 소득 대비 만족도가 과도하게 높거나 낮게 나타나, 개인의 주관적 경험과 기대치가 수입 만족고에 중요한 영향을 미친다는 점을 알 수 있었다. 마지막으로, 건강 만족도와 가족생활 만족도 간에는 상호 보완적인 관계가 존배하였다. 건강에 대한 긍정적인 인식은 가족생활 만족도를 높이는 데 기여하며, 반대로 가족생활 만족도 또한 건강에 대한 긍정적 태도를 강화하는 상관성을 보였다.