title: “물질(돈)에 따른 건강 불평등 분석 보고서”
author: “김채은 (20210703)”
date: “2024/06/16”
output:
html_document:
fig_caption: yes

[물질(돈)에 따른 건강 불평등 분석 보고서]

1. 연구 목적 및 배경 설명

퓨리서치센터의 ‘세계 각국의 사람들은 인생의 의미를 어디서 찾을까?’ 조사연구에 따르면 한국인은 meterial-wellbing(물질의 안녕 = 돈)을 첫번째로 꼽았고, 두번째로 health를 꼽았다. 즉 우리 대한민국 사회에서 사람들이 중요하게 가장 생각하는 것은 돈과 건강인 것이다. 때문에 돈과 건강에 많은 관심을 가지고 있었다.

또한 통계청에 따르면 2013년도 평균 기대수명은 81.4세인데, 2020년도 평균 기대수명은 83.5세라고 한다. 코로나19로 인한 여파인지 2022년도에는 82.7세로 평균 기대수명이 떨어졌지만, 의료 기술의 발달로 평균 기대수명은 계속해서 늘어날 것으로 생각한다. 따라서 건강에 대한 관심도 높아질 수밖에 없다. 모두가 건강하고 행복한 삶을 살고 싶어할 테니까 말이다. 그런데 고소득자-저속득자 사이의 건강수명에서 11년 이상 격차가 벌어지고 있다는 보건사회연구원의 조사 결과를 발견하였다.

1분위~5분위 사이의 기대수명과 건강수명에서 차이가 벌어지고 있다는 것은 자산(돈)에 따라 건강 불평등이 생기고 있다는 뜻이라고 파악했다. 그렇다면 ‘정말로 돈에 따른 건강불평등이 나타나고 있는가?’ 라는 질문으로 데이터 분석을 시작하였다. 따라서 이 보고서의 최종 목적은 자산과 관련된 월급과 거주위치에 따라 건강에 차이가 나는지 분석하여 월급과 거주위치가 건강의 질에 큰 영향을 미치고 있다는 것을 증명하는 것이다.

참고자료 퓨리서치 센터 조사자료 | 통계청 기대수명 자료 | 고소득자-저소득자 건강수면 11년 격차 기사

분석 목표

첫째, 월급과 거주위치, 건강상태가 서로 관련 있는지 분석하고자 한다. 둘째, 주거위치별 월급과 건강검진이 서로 관련 있는지 분석하고자 한다. 셋째, 월급과 민간의료보험가입 건수가 관련 있는지 분석하고자 한다. 넷째, 마지막으로 월급과 주거위치가 건강 관리에 영향을 미치고 있는지 분석하고자 한다.

2. 데이터에 대한 개괄적인 설명

분석에 사용한 데이터는 ’2019년 14차 한국복지패널조사 (가구용)’이다. 2020, 2021, 2022년도의 데이터는 코로나로 인해 제대로 조사가 안 됐을 것이라고 생각하였으며 2023년 자료 또한 의료부분에서 부족한 감이 있어 가장 최근인 2019년도 데이터를 사용하였다. 2019년 가구용 데이터 중 거주위치와 평균 월급, 건강상태, 건강검진횟수, 민간의료보험 가입 건수 변수를 이용한다.

필요한 변수인 ‘월급(경상소득)’, ‘거주위치’는 물질적인 것으로 저소득층과 고소득층을 분류할 수 있고 거주위치 집단을 구할 수 있기에, ‘건강상태’, ‘건강검진 횟수’, ‘민간의료보험가입건수’ 변수는 건강과 직결되어 있기 때문에 가져왔다.

패키지 준비

install.packages(“foreign”) install.packages(“ggplot2”) install.packages(“dplyr”) install.packages(“readxl”) install.packages(“plotly”)

2019년도 복지 데이터 불러오기

raw_walfare <- read.spss(file = "Koweps_h14_2019_beta5.sav", to.data.frame = T)
## Warning in read.spss(file = "Koweps_h14_2019_beta5.sav", to.data.frame = T):
## Koweps_h14_2019_beta5.sav: Compression bias (0) is not the usual value of 100
## Warning in read.spss(file = "Koweps_h14_2019_beta5.sav", to.data.frame = T):
## Koweps_h14_2019_beta5.sav: Very long string record(s) found (record type 7,
## subtype 14), each will be imported in consecutive separate variables
welfare <- raw_walfare
head(welfare[,1:10])
##   h14_id h14_ind h14_sn h14_merkey h_new h14_cobf    h14_ws   h14_wg h14_ws_all
## 1      2       1      1      20101     0       NA 0.5105830 2061.516  0.5716205
## 2      3       1      1      30101     0       NA 0.7081582 2859.241  0.7494655
## 3      4       1      1      40101     0       NA 0.4699983 1897.653  0.5255090
## 4      6       1      1      60101     0       NA 0.5467686 2207.618  0.6181359
## 5      8       1      1      80101     0       NA 0.2812147 1135.425  0.3043254
## 6     10       1      1     100101     0       NA 0.5300717 2140.203  0.6377857
##   h14_wg_all
## 1  1783.3735
## 2  2338.2242
## 3  1639.5120
## 4  1928.4946
## 5   949.4514
## 6  1989.7993

데이터 정제 및 가공

필요 변수 이름 바꾸기

welfare <- rename(welfare,
                  income = h14_cin,
                  resident_site = h1406_2,
                  health_status = h1402_2,
                  physical_checkup = h1402_8,
                  com_insurance = h1402_3aq1,
                  house_price = h1406_6)
head(welfare[,1:10])
##   h14_id h14_ind h14_sn h14_merkey h_new h14_cobf    h14_ws   h14_wg h14_ws_all
## 1      2       1      1      20101     0       NA 0.5105830 2061.516  0.5716205
## 2      3       1      1      30101     0       NA 0.7081582 2859.241  0.7494655
## 3      4       1      1      40101     0       NA 0.4699983 1897.653  0.5255090
## 4      6       1      1      60101     0       NA 0.5467686 2207.618  0.6181359
## 5      8       1      1      80101     0       NA 0.2812147 1135.425  0.3043254
## 6     10       1      1     100101     0       NA 0.5300717 2140.203  0.6377857
##   h14_wg_all
## 1  1783.3735
## 2  2338.2242
## 3  1639.5120
## 4  1928.4946
## 5   949.4514
## 6  1989.7993

월급 데이터 전처리

월급 데이터를 정제하고 가공했다. 데이터를 분석하며 월급의 극단치로 인해 분석에 오류가 있음을 인지하여 월급의 극단치를 제거했다. (단위는 만원)

class(welfare$income)
## [1] "numeric"
summary(welfare$income)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  -46897    1418    2987    4274    5984  170204
boxplot(welfare$income)$stats

##         [,1]
## [1,] -1727.0
## [2,]  1418.5
## [3,]  2987.0
## [4,]  5984.5
## [5,] 12806.0
welfare$income <- ifelse(welfare$income > 12806.0 | welfare$income < -1727.0, NA, welfare$income)
table(is.na(welfare$income))
## 
## FALSE  TRUE 
##  6113   218
boxplot(welfare$income)$stats

##       [,1]
## [1,] -1727
## [2,]  1390
## [3,]  2837
## [4,]  5654
## [5,] 12043

극단치 제거후 그래프를 만들어서 월급데이터를 분석했다.

qplot(welfare$income) + xlim(0, 1000)
## Warning: `qplot()` was deprecated in ggplot2 3.4.0.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 5472 rows containing non-finite outside the scale range
## (`stat_bin()`).
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_bar()`).

summary(welfare$income)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   -1727    1390    2837    3806    5654   12806     218
welfare$income <- ifelse(welfare$income %in% c(0, 9999), NA, welfare$income)
head(welfare$income)
## [1] 2330  815 2116 5008 1332 2039

주거위치 데이터 전처리

거주위치 데이터를 정제하고 가공했다. 오류가 있는지 확인한 후 1~4(숫자)로 분류되어 있는 명을 코딩북을 참고하여 ’under(지하), half(반지하), ground(지상), rooptop(옥탑방)’의 분류명을 할당하였다.

class(welfare$resident_site)
## [1] "numeric"
table(welfare$resident_site)
## 
##    1    2    3    4 
##   12   90 6227    2
welfare$resident_site <- ifelse(welfare$resident_site == 1, "under",
                                ifelse(welfare$resident_site == 2, "half",
                                       ifelse(welfare$resident_site == 3, "ground", "rooftop")))

welfare$resident_site <- factor(welfare$resident_site,
                                levels = c("under", "half", "ground", "rooftop"),
                                ordered = TRUE)
head(welfare$resident_site)
## [1] ground ground ground ground ground ground
## Levels: under < half < ground < rooftop

rooftop(반지하)의 경우, 2가구 밖에 나오지 않아 데이터 분석에 있어 혼란을 가져올 것이라고 판단됐다. 따라서 resident_site 변수에서 rooftop(반지하)의 데이터를 지워 분석하고자 했다.

welfare <- welfare %>% filter(resident_site != "rooftop")

table(welfare$resident_site)
## 
##   under    half  ground rooftop 
##      12      90    6227       0

그래프를 그려서 최종적으로 rooftop데이터가 잘 지워졌는지 확인했다.

qplot(welfare$resident_site)

건강상태 데이터 전처리

건강상태 데이터를 정제하고 가공했다. 오류가 있는지 확인하고 1~5(숫자)로 분류되어 있는 명을 코딩북을 참고하여 ’very_health(아주 건강함), health(건강함), normal(그럭저럭 괜찮음), bad(나쁨), very_bad(매우 나쁨)’의 분류명을 할당하였다.

class(welfare$health_status)
## [1] "numeric"
table(welfare$health_status)
## 
##    1    2    3    4    5 
##  438 2488 1584 1614  205
welfare$health_status <- ifelse(welfare$health_status == 1, "good_healthy",
                                ifelse(welfare$health_status == 2, "healthy",
                                       ifelse(welfare$health_status == 3, "normal",
                                              ifelse(welfare$health_status == 4, "bad", "very_bad"))))

#순서 지정
welfare$health_status <- factor(welfare$health_status,
                                levels = c("good_healthy", "healthy", "normal", "bad", "very_bad"),
                                ordered = TRUE)

class(welfare$health_status)
## [1] "ordered" "factor"
table(welfare$health_status)
## 
## good_healthy      healthy       normal          bad     very_bad 
##          438         2488         1584         1614          205

민간의료 보험 가입 건수 데이터 전처리

민간의료 보험 가입 건수 데이터를 정제하고 가공했다. 극단치를 찾아내어 제거했다.

class(welfare$com_insurance)
## [1] "numeric"
table(welfare$com_insurance)
## 
##    0    1    2    3    4    5    6    7    8    9   10   12   15   19   20 
## 2811 1573 1116  486  184   86   39   13    7    5    3    1    2    1    2
boxplot(welfare$com_insurance)$stats

##      [,1]
## [1,]    0
## [2,]    0
## [3,]    1
## [4,]    2
## [5,]    5
welfare$com_insurance<- ifelse(welfare$com_insurance > 5 | welfare$income < 0, NA, welfare$com_insurance)

boxplot(welfare$com_insurance)$stats

##      [,1]
## [1,]    0
## [2,]    0
## [3,]    1
## [4,]    2
## [5,]    5
table(is.na(welfare$com_insurance))
## 
## FALSE  TRUE 
##  6045   284

3. 데이터 분석

거주위치별 평균 월급 분석

거주위치에 따라 월급 차이가 나는지 분석한 후 본격적으로 분석을 시작하고자 한다. 거주위치별로 평균월급이 차이나는지 확인하여 물질적(돈)에 거주위치도 포함되는지 확인하기 위함이다.

ggplot(data = welfare, aes(x = resident_site, y = income, fill = resident_site)) + geom_boxplot()
## Warning: Removed 218 rows containing non-finite outside the scale range
## (`stat_boxplot()`).

거주위치와 월급 데이터를 그대로 이용하여 상자 그림으로 나타냈다. 보이는 바와 같이 ground에 사는 사람들이 월급을 더 많이 받는 것으로 나타난다.

거주위치별 평균 월급표를 만들어 그래프를 만든 후 분석해 보고자 한다.

#거주지역별 월급 평균표 만들기
resident_income <- welfare %>% 
  filter(!is.na(income)) %>% 
  group_by(resident_site) %>%
  summarise(mean_income = mean(income))
resident_income
## # A tibble: 3 × 2
##   resident_site mean_income
##   <ord>               <dbl>
## 1 under               2868.
## 2 half                2575.
## 3 ground              3827.
#주거위치별 평균 월급 그래프로 나타내기
ggplot(data = resident_income, aes(x = resident_site, y = mean_income, fill = resident_site)) + geom_col()

#보기 쉽도록 평균 월급이 낮은 주거위치 순으로 그래프 나타내기
ggplot(data = resident_income, aes(x = reorder(resident_site, mean_income), y = mean_income, fill = resident_site)) + geom_col()

#간단하게 보기 위해 산점도 그래프로도 나타내기
ggplot(data = resident_income, aes(x = reorder(resident_site, mean_income), y = mean_income, col = resident_site)) + geom_point()

그래프에 따르면 ground 가구의 평균월급이 가장 높으며 under, half순으로 평균 월급이 높다. 거주위치에 따라 월급에도 차이가 있음이 나타나고 있다.

주거위치별 집의 가격

거주위치별로 평균 월급에 차이가 난다는 것은 확인했지만, 거주위치가 물질적(돈)과 관련있다는 것의 근거가 되기에는 부족하다고 판단하여 거주위치별 집의 평균 가격을 구했다.

class(welfare$house_price)
## [1] "numeric"
summary(welfare$house_price)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##       5    3000   10000   16352   21000  300000     860
house <- welfare %>% filter(!is.na(house_price), !is.na(resident_site)) %>% group_by(resident_site) %>% summarise(mean_price = mean(house_price))
house
## # A tibble: 3 × 2
##   resident_site mean_price
##   <ord>              <dbl>
## 1 under              1900 
## 2 half               4433.
## 3 ground            16568.
ggplot(data = house, aes(x = resident_site, y = mean_price, fill = mean_price)) + geom_col()

분석 결과 주거위치별 집의 가격은 차이가 크게 났다. ground가 집의 평균 가격이 제일 높았고, 다음은 half, under 순이었다. 거주위치별 집의 가격 차이가 난다는 것을 통해 거주위치가 물질적 자산에 포함될 수 있다는 것을 확인할 수 있었다. 즉 집, 거주위치를 정할 때 물질적(돈)인 요소가 크게 작용하고 있다는 것을 통해 거주위치는 물질적(돈)과 큰 관련이 있다고 생각했다. 때문에 물질적(돈)에 월급과 거주위치를 포함하여 데이터 분석을 시작했다.

평균 건강상태별 평균 월급

건강상태별 평균 월급표를 만들어, 건강에 따라 월급에 차이가 있는지 확인하기 위해 그래프를 그리고자 한다.

#건강상태별 평균월급표 만들기
income_health <- welfare %>% 
  filter(!is.na(income) & !is.na(health_status)) %>% 
  group_by(health_status) %>% 
  summarise(mean_income = mean(income))
income_health
## # A tibble: 5 × 2
##   health_status mean_income
##   <ord>               <dbl>
## 1 good_healthy        6040.
## 2 healthy             5056.
## 3 normal              3212.
## 4 bad                 2222.
## 5 very_bad            2001.
head(income_health)
## # A tibble: 5 × 2
##   health_status mean_income
##   <ord>               <dbl>
## 1 good_healthy        6040.
## 2 healthy             5056.
## 3 normal              3212.
## 4 bad                 2222.
## 5 very_bad            2001.
#월급별 건강상태 막대 그래프로 나타내기
ggplot(data = income_health, aes(x = reorder(health_status, mean_income), y = mean_income, fill = health_status)) + geom_col()

간략하게 보기 위해서 산점도로 그래프도 만든다.

#월급별 건강상태 산점도 그래프로 나타내기

ggplot(data = income_health, aes(x = reorder(health_status, mean_income), y = mean_income, col = health_status)) + geom_point()

건강상태별 평균월급표를 토대로 만든 그래프를 확인한 결과 월급이 높아질수록 건강상태도 좋아지는 것을 확인할 수 있었다. very_healthy와 very_bad 간의 평균 월급 차이는 무려 4043.693이다.

주거위치별 평균 건강상태

월급에 따라 거주위치가 달라졌던 것을 앞서 확인하였으니, 거주위치에 따라 건강상태도 달라지는지 확인해 보고자 한다.

# NA 값을 제거
welfare <- welfare %>% filter(!is.na(health_status) & !is.na(resident_site))

# resident_site와 health_status 변수를 factor로 변환
welfare$resident_site <- as.factor(welfare$resident_site)
welfare$health_status <- as.factor(welfare$health_status)

# resident_site와 health_status별로 데이터 요약
summary_data <- welfare %>%
  group_by(resident_site, health_status) %>%
  summarise(count = n(),
            mean_site = mean(resident_site)) %>%
  mutate(proportion = count / sum(count),
         mean_site = mean_site)
## Warning: There were 13 warnings in `summarise()`.
## The first warning was:
## ℹ In argument: `mean_site = mean(resident_site)`.
## ℹ In group 1: `resident_site = under` and `health_status = healthy`.
## Caused by warning in `mean.default()`:
## ! argument is not numeric or logical: returning NA
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 12 remaining warnings.
## `summarise()` has grouped output by 'resident_site'. You can override using the
## `.groups` argument.
head(summary_data)
## # A tibble: 6 × 5
## # Groups:   resident_site [2]
##   resident_site health_status count mean_site proportion
##   <ord>         <ord>         <int>     <dbl>      <dbl>
## 1 under         healthy           4        NA     0.333 
## 2 under         normal            3        NA     0.25  
## 3 under         bad               5        NA     0.417 
## 4 half          good_healthy      4        NA     0.0444
## 5 half          healthy          23        NA     0.256 
## 6 half          normal           18        NA     0.2
# resident_site 별 health_status의 분포를 막대 그래프로 시각화
ggplot(data = summary_data, aes(x = resident_site, y = proportion, fill = health_status, col = health_status)) +
  geom_col() + coord_flip()

거주위치별 건강상태표 비율 그래프를 분석해 보니, ground에서는 healthy 비율이 가장 높은 반면, half와 under에서는 bad의 비율이 가장 높았다. 그러나 건강한 편에 속하는 normal, healthy, good_healthy를 건강한 편에 속한다고 가정했을 때, under과 bad에서의 세 건강상태를 합친 비율이 bad보다 높았다.

건강상태별 평균 건강검진 횟수

건강상태별로 건강검진 횟수를 분석하여, 건강상태에 건강검진의 횟수가 영향을 미치는지 먼저 알아보고자 한다.

health_up <- welfare %>% 
  filter(!is.na(health_status) & !is.na(physical_checkup)) %>% 
  group_by(health_status) %>% 
  summarise(mean_checkup = mean(physical_checkup))
health_up
## # A tibble: 5 × 2
##   health_status mean_checkup
##   <ord>                <dbl>
## 1 good_healthy         0.639
## 2 healthy              0.594
## 3 normal               0.536
## 4 bad                  0.493
## 5 very_bad             0.444
ggplot(data = health_up, aes(x = reorder(health_status, mean_checkup), y = mean_checkup, fill = mean_checkup)) + geom_col()

분석 결과, normal, healthy, good_healthy는 평균 0.5 횟수를 넘었고 bad와 very_bad는 평균 0.5횟수를 넘지 못하고 있다. 가장 높은 good_healthy과 very_bad 사이에 0.1926675의 차이가 벌어지는 걸 확인할 수 있는데, 종합적으로 분석해봤을 때 건강상태가 좋을수록 건강검진 횟수가 높다는 것을 알 수 있고 이는 곧 건강상태가 좋은 사람들은 건강 관리를 잘하고 있다는 것으로 결론지을 수 있다. 즉, 많은 차이가 나는 것은 아니지만, 건강상태가 좋을수록 건강검진 횟수가 높아지는 것이 확인된 만큼, 건강검진 횟수가 건강상태에 영향을 미치고 있다고 볼 수 있다.

거주위치별 평균 건강검진 횟수

그렇다면 거주위치별로 건강검진 횟수에 차이가 있는지 확인하고자 한다.

average_physical_checkup <- welfare %>%
  group_by(resident_site) %>%
  summarise(mean_physical_checkup = mean(physical_checkup, na.rm = TRUE))

head(average_physical_checkup)
## # A tibble: 3 × 2
##   resident_site mean_physical_checkup
##   <ord>                         <dbl>
## 1 under                         0.417
## 2 half                          0.411
## 3 ground                        0.554
# 그래프 그리기 (비교가 쉽도록 건강검진 횟수가 낮은 건강상태부터 배치하도록 한다)
ggplot(data=average_physical_checkup, aes(x = reorder(resident_site, mean_physical_checkup), y = mean_physical_checkup, fill = mean_physical_checkup)) + geom_col()

그래프 분석 결과 건강검진을 가장 많이 받은 거주위치는 ground였다. 가장 건강검진 횟수가 낮은 거주위치는 half였는데, under과 거의 비슷한 횟수였다. 이를 통해 거주위치별로 평균 건강검진 횟수에도 차이가 있는 것을 확인할 수 있었다.

거주위치별 평균 월급과 평균 건강검진 횟수

지금까지 분석한 데이터를 토대로 종합적인 거주위치별 평균월급과 평균 건강검진 횟수를 비교해 보았다.

summary_dataa <- welfare %>%
  group_by(resident_site) %>%
  summarise(
    mean_income = mean(income, na.rm = TRUE),
    mean_physical_checkup = mean(physical_checkup, na.rm = TRUE)
  )
summary_dataa
## # A tibble: 3 × 3
##   resident_site mean_income mean_physical_checkup
##   <ord>               <dbl>                 <dbl>
## 1 under               2868.                 0.417
## 2 half                2575.                 0.411
## 3 ground              3827.                 0.554
#그래프 생성 (낮은 순부터)
ggplot(summary_dataa, aes(x = reorder(resident_site, mean_income), y = mean_income, fill = mean_physical_checkup)) +
  geom_col()

분석 결과, ground가 평균 월급이 가장 높으면서 평균 건강검진 횟수도 가장 높다는 것을 알 수 있다. 반대로 half가 평균월급이 가장 낮고, 평균 건강검진 횟수도 가장 낮았다.

이 분석을 통해 거주위치와 평균 월급은 건강검진횟수에 영향을 미치고 있다는 것을 확인할 수 있다.

거주위치별 평균 월급과 평균 건강상태

마찬가지로 종합적으로 거주위치별 평균 월급과 평균 건강상태를 비교해 보았다.

income_data <- welfare %>%
  group_by(resident_site) %>%
  summarise(mean_income = mean(income, na.rm = TRUE))

# health_status 데이터 분석
health_status_data <- welfare %>%
  group_by(resident_site, health_status) %>%
  summarise(count = n(),
            mean_income = mean(income, na.rm = TRUE)) %>%
  mutate(percent = count / sum(count) * 100) # 백분율로 변환
## `summarise()` has grouped output by 'resident_site'. You can override using the
## `.groups` argument.
health_status_data
## # A tibble: 13 × 5
## # Groups:   resident_site [3]
##    resident_site health_status count mean_income percent
##    <ord>         <ord>         <int>       <dbl>   <dbl>
##  1 under         healthy           4       5853    33.3 
##  2 under         normal            3       1205.   25   
##  3 under         bad               5       1477.   41.7 
##  4 half          good_healthy      4       2443     4.44
##  5 half          healthy          23       4476.   25.6 
##  6 half          normal           18       2577.   20   
##  7 half          bad              38       1571.   42.2 
##  8 half          very_bad          7       1842.    7.78
##  9 ground        good_healthy    434       6075.    6.97
## 10 ground        healthy        2461       5061.   39.5 
## 11 ground        normal         1563       3223.   25.1 
## 12 ground        bad            1571       2240.   25.2 
## 13 ground        very_bad        198       2007.    3.18
# 그래프 그리기
ggplot(health_status_data, aes(x = resident_site, y = mean_income, fill = health_status)) +
  geom_col()

민간 의료보험가입 건수에 따른 건강상태

민간의료 보험에 따라 건강상태에 영향을 미치는지 분석한 후 월급에 따른 민간의료 보험 건수도 보고자 한다

건강상태에 따른 평균 민간의료 보험 가입 건수를 구해 그래프를 만들었다.

com_health <- welfare %>% 
  filter(!is.na(com_insurance) & !is.na(health_status)) %>%
  group_by(health_status) %>% 
  summarise(mean_com = mean(com_insurance))
com_health
## # A tibble: 5 × 2
##   health_status mean_com
##   <ord>            <dbl>
## 1 good_healthy     1.52 
## 2 healthy          1.44 
## 3 normal           0.840
## 4 bad              0.478
## 5 very_bad         0.265
# 그래프
ggplot(data = com_health, aes(x= reorder(health_status, mean_com), y = mean_com, fill = health_status)) + geom_col()

분석결과, healthy에서 가장 많은 민간 의료보험을 들고 있었다. 반대로 very_bad에서는 0.7에 미치는 평균 민간 의료보험 건수를 확인할 수 있다.

good_healthy, healthy, normal, bad, very_bad 순으로 민간의료보험 건수가 많은 것을 확인했다. 건강상태가 평균에서 가장 좋은 상태에서는 민간의료보험 가입 횟수에서 큰 차이가 나지 않지만, 가장 안 좋은 건강상태에서 가장 적은 민간의료 보험을 들고 있는 것을 확인할 수 있다. 건강검진 횟수가 건강 악화에 영향을 미친다고 할 수는 없지만, 건강 상태 관리에 영향을 미칠 수 있다고 생각되는 분석 결과이다.

월급별 민간의료보험 가입건수

어째서 이런 차이가 나는 것인지 생각해 봤을 때 민간의료보험은 개인이 가입하는 것이기 때문에 월급에 따라 차이가 나는 것이 아닐지 생각해 월급에 따른 민간의료보험 건수를 비교해 보았다.

in_com <- welfare %>% 
  filter(!is.na(income) & !is.na(com_insurance)) %>%
  group_by(com_insurance) %>% 
  summarise(mean_income = mean(income),
            mean_com = mean(com_insurance))

head(in_com)
## # A tibble: 6 × 3
##   com_insurance mean_income mean_com
##           <dbl>       <dbl>    <dbl>
## 1             0       2150.        0
## 2             1       4699.        1
## 3             2       5451.        2
## 4             3       5858.        3
## 5             4       6033.        4
## 6             5       5990.        5
#그래프

ggplot(data = in_com, aes(x = com_insurance, y = mean_income)) + geom_col()

평균 월급이 가장 높은 6,033만 원 집단은 평균 3개의 민간의료보험을 가입하고 있었고 두번째로 평균 월급이 높은 5,990만 원 집단이 5개의 민간의료보험을 가입하고 있어 가장 높았다. 반대로 한 개의 보험도 가입하지 않은 집단은 2,150만 원 집단으로 가장 낮은 평균 월급 집단이었다.

이를 토대로 월급에 따라 민간의료보험 가입에도 영향을 미친다는 것을 알 수 있다. 다만, 어느 정도 5,000만 원 이상의 집단부터는 2개 이상의 민간의료 보험을 가입하고 있는 것을 보아 높은 소득이 유지될 때는 민간의료보험 가입에 많은 영향을 미치지는 않는 것 같다.

4. 결론

앞서 분석한 데이터를 토대로 결과를 도출해 보고자 한다.

첫째, 평균적으로 월급에 따라 주거위치가 달랐으며, 월급이 높을 수록 건강상태도 좋았으며, 주거위치가 지상일 때 건강상태가 가장 좋았다. 즉, 월급과 주거위치는 건강상태와 어느 정도 연관이 있다는 것을 알 수 있다.

a <- ggplot(data = resident_income, aes(x = reorder(resident_site, mean_income), y = mean_income, fill = resident_site)) + geom_col()
ggplotly(a)

둘째, 주거위치별 평균월급에 따라 평균 건강검진 횟수를 살펴봤을 때, Ground가 가장 평균 월급이 높고 평균 건강검진 횟수도 높았다. 반면, Half가 평균월급이 가장 낮고 평균 건강검진 횟수도 가장 낮았다. 즉, 거주위치와 평균 월급에 따라 건강검진 횟수에서도 불평등이 일어나고 있다는 것을 알 수 있었다.

b <- ggplot(summary_dataa, aes(x = reorder(resident_site, mean_income), y = mean_income, fill = mean_physical_checkup)) +
  geom_col()
ggplotly(b)

셋째, 평균 월급에 따라 민간의료보험 건수가 달라지는 것을 토대로 평균 월급과 민간의료보험 가입에도 영향을 미치고 있음을 알 수 있었다.

c <- ggplot(data = in_com, aes(x = com_insurance, y = mean_income)) + geom_col()
ggplotly(c)

넷째, 건강검진 횟수에 따라 건강상태가 달라지고 민간의료 보험 건수에 따라 건강상태가 달라진다는 것을 확인했다. 이를 통해 건강검진과 민간의료보험 가입과 같은 건강 예방책은 건강 관리에 영향을 미친다는 것을 알 수 있었다.

d <- ggplot(health_status_data, aes(x = resident_site, y = mean_income, fill = health_status)) +
  geom_col()
ggplotly(d)
e <- ggplot(data = health_up, aes(x = reorder(health_status, mean_checkup), y = mean_checkup, fill = mean_checkup)) + geom_col()
ggplotly(e)

이를 토대로 종합적인 결론을 내려보자. 월급과 거주 위치 같은 물질적인 것, 즉 돈이 건강에 영향을 미치고 있고, 평균 월급이 낮고 주택 가격이 낮은 거주위치에 사는 ’저소득층’은 건강 불평등을 겪고 있다는 사실을 확인할 수 있었다.

또 민간의료보험이나 건강검진횟수 등 건강과 관련된 예방책은 건강상태에 영향을 미치고 있다. 그러나 월급과 거주위치에 따라 건강검진 횟수에 영향을 미치고 있었고, 월급에 따라 민간의료 보험 가입 건수에서도 차이를 보이고 있었다.

대부분 ground 에 위치한 가구, 고소득층 가구가 좋은 건강상태를 가지고 있었으며 건강검진횟수나 민간의료보험 가입 건수가 많았다. 반대로 half, under에 위치한 가구는 낮은 월급을 받는 저소득층에 속하고 있었고, ground에 위치한 가구에 비해 평균 월급, 건강검진 횟수, 건강상태, 민간의료보험 가입 건수가 낮았다.

결과적으로, 실제로 저소득층 가구는 고소득층 가구에 비해 건강상태나 건강 관리에서 낮은 수치를 기록하며, 고소득층과 비교했을 때 건강불평등을 겪고 있다는 것을 확인할 수 있었다.

결국, 이 분석의 최종 목표였던 월급과 거주위치와 같은 물질적인 것이 건강의 질에 큰 영향을 미치고, 건강불평등을 초래하고 있다는 것을 밝혀냈다고 할 수 있다.

Figure

-질문과 결과는 강조를 위해 볼드체와 기울이기를 사용했다.

-참고자료는 링크를 걸었다.

-각 집단의 확실하게 비교 표현을 위해 그래프에 색깔을 넣었다.

-비교를 위해서 막대 그래프를 사용했으나, 간략한 표현을 위해 산점도 그래프를 사용하기도 했다. 또한 상자 그림으로 월급의 분포 차이를 표현했다.