1. 연구 목적 및 배경 설명

삶의 만족도는 개인의 주관적 행복감과 삶의 질을 평가하는 중요한 척도이다. 이는 단순히 물질적 풍요뿐만 아니라 정신적, 사회적, 환경적 요인들에 의해 복합적으로 영향을 받는다. 현대 사회에서는 경제적 성장이 개인의 행복을 담보하지 못하는 경우가 많아, 삶의 만족도에 대한 연구가 더욱 중요해지고 있다.

한국 사회 또한 빠른 경제 성장과 더불어 다양한 사회 문제들이 발생하고 있다. 이러한 문제들을 해결하기 위해서는 개인이 느끼는 삶의 만족도에 어떤 요인들이 영향을 미치는지 명확히 이해할 필요가 있다.

그러한 삶의 만족도를 측정하는 가장 보편적인 방법으로는 ‘삶의 사다리’(ladder of life)가 있다. 1965년 심리학자 캔트릴에 의해 고안된 이 척도는 0부터 10까지의 숫자로 구성되어 있으며, 스스로의 삶을 사다리에 빗대어 평가하는 방식으로 진행된다. 0은 최악의 상태를 의미하며, 10은 최상의 상태를 의미한다.

이 보고서는 삶의 사다리 점수를 바탕으로 다양한 변수들을 통해 삶의 만족도에 밀접한 영향을 끼치는 요인과 상관관계를 분석해 보고, 그 결과를 통해 한국 사회의 삶의 만족도를 높이기 위한 방향성을 제시하고자 한다.

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

보건복지부에서 제공하는 2023년 18차 한국복지패널조사 데이터를 바탕으로 분석에 필요한 변수를 선정하였으며, 조사에 참여한 전체 응답자를 표본으로 설정하였다.

본 분석에는 주된 종속변수로 ‘삶의 사다리’를 선정하였다. 이에 ’삶의 사다리’에 영향을 미치는 다양한 특성을 고려하여 주된 독립변수로 ’성별’, ‘연령’, ‘월소득’, ‘균등화소득에 따른 가구구분’, ‘1년간 근심이나 갈등을 초래한 문제(1순위)’, ’건강 만족도’를 선정하였다.

‘삶의 사다리(life)’는 타 변수와의 상관관계 도출의 용이성을 위해 ’low’, ‘middle’, ‘high’ 총 3단계로 구분한 ‘level’ 변수를 새로 생성하였다. ’low’에는 0~3점, ’middle’에는 4~6점, ’high’에는 7~10점이 속한다.

3. 데이터 정제 및 가공 과정

3-1. 데이터 불러오기

한국복지패널 홈페이지에서 ’2023년 18차 한국복지패널조사 데이터’를 다운받아 ’welfare’에 할당하였다.

welfare <- read.spss(file = "Koweps_hpda18_2023_beta1.sav",
                         to.data.frame = T)

코딩북을 통해 데이터 분석에 사용할 7개의 변수만 선택한 후, 알아보기 쉬운 단어로 변경하였다.

welfare <- welfare %>% select(life = p1805_12aq1,
                              sex = h18_g3,
                              birth = h18_g4,
                              income = p1802_8aq1,
                              class = h18_hc_n_all,
                              con = h1817_1,
                              health = p1803_5)

3-2. 삶의 사다리 변수 정제

’삶의 사다리’의 결측치 및 모름/무응답(99)에 해당하는 값을 확인한 후, 전처리를 진행하였다.

table(welfare$life)
## 
##    0    1    2    3    4    5    6    7    8    9   10   99 
##   15   46  148  380  627 2084 2311 2920 3021 1069  451  606
table(is.na(welfare$life))
## 
## FALSE  TRUE 
## 13678  2253
welfare$life <- ifelse(welfare$life == 99, NA, welfare$life)

삶의 사다리 3단계 구분을 위한 데이터를 정제하여 ‘level’ 변수를 추가한 후, 결과를 확인하였다.

welfare <- welfare %>%
  mutate(level = ifelse(life <= 3, "low",
                        ifelse(life <= 6, "middle", "high")))
welfare %>% 
  select(life, level) %>% 
  head()
##   life  level
## 1    5 middle
## 2   10   high
## 3    7   high
## 4    9   high
## 5    7   high
## 6    7   high

3-3. 성별 변수 정제

’삶의 사다리’의 결측치 및 모름/무응답(9)에 해당하는 값을 확인하였다.

table(welfare$sex)
## 
##    1    2 
## 7144 8787
table(is.na(welfare$sex))
## 
## FALSE 
## 15931

코딩북에 따르면, ’1’은 ’남성’을 의미하며 ’2’는 ’여성’을 의미한다. 이에 맞게 단어를 변경하고 결과를 확인하였다.

welfare$sex <- ifelse(welfare$sex == 1, "male", "female")
welfare %>% 
  select(sex) %>% 
  head()
##      sex
## 1 female
## 2   male
## 3   male
## 4   male
## 5 female
## 6 female

3-4. 태어난 연도 정제

’태어난 연도’의 결측치 및 모름/무응답(9999)에 해당하는 값을 확인하였다.

table(is.na(welfare$birth))
## 
## FALSE 
## 15931
table(welfare$birth == 9999)
## 
## FALSE 
## 15931

보다 인식하기 쉽도록, 태어난 연도를 통해 ’연령’을 추가한 후 결과를 확인하였다.

welfare$age <- 2023 - welfare$birth
welfare %>% 
  select(birth, age) %>% 
  head()
##   birth age
## 1  1945  78
## 2  1948  75
## 3  1942  81
## 4  1962  61
## 5  1963  60
## 6  2003  20

3-5. 월소득 변수 정제

’월소득’의 결측치 및 모름/무응답(9999)에 해당하는 값을 확인한 후, 전처리를 진행하였다.

table(is.na(welfare$income))
## 
## FALSE  TRUE 
##  5630 10301
table(welfare$income == 9999)
## 
## FALSE 
##  5630

’월소득’의 극단치 이상값을 제외하였다.

boxplot(welfare$income)$stats

##      [,1]
## [1,]    0
## [2,]  133
## [3,]  250
## [4,]  375
## [5,]  736
welfare$income <- ifelse(welfare$income > 736, NA, welfare$income)
boxplot(welfare$income)$stats

##      [,1]
## [1,]    0
## [2,]  125
## [3,]  240
## [4,]  350
## [5,]  687

3-6. 가구구분(균등화소득에 따른 가구구분) 변수 정제

’균등화소득에 따른 가구구분’의 결측치에 해당하는 값을 확인하였다.

table(is.na(welfare$class))
## 
## FALSE 
## 15931
table(welfare$class)
## 
##     1     2 
## 11667  4264

코딩북에 따르면, ’1’은 ’일반가구’를 의미하며 ’2’는 ’저소득층 가구’를 의미한다. 이에 맞게 단어를 변경하고 결과를 확인하였다.

welfare$class <- ifelse(welfare$class == 1, "nomal", "low")
welfare %>% 
  select(level) %>% 
  head()
##    level
## 1 middle
## 2   high
## 3   high
## 4   high
## 5   high
## 6   high

3-7. 갈등(1년간 근심이나 갈등을 초래한 문제) 변수 정제

’갈등’의 결측치 및 모름/무응답(99)에 해당하는 값을 확인하였다.

table(is.na(welfare$con))
## 
## FALSE 
## 15931
table(welfare$con)
## 
##    0    1    2    3    4    5    6    7    8    9   10   11 
## 8546 1274  527  452 4341   44    3  218   11  167  141  207

‘갈등’의 각 번호에 해당하는 갈등 내용을 기술한 ’c_list’ 변수를 추가한 후 결과를 확인하였다.

con_list <- data.frame(con = c(0:11),
                       c_list = c("특별한 어려움 없음",
                                "경제적 어려움",
                                "가구원의 취업 및 실업",
                                "자녀교육 혹은 행동",
                                "가구원의 건강",
                                "가구원의 알코올",
                                "가족 내 폭력",
                                "가구원간 관계",
                                "가구원의 가출",
                                "주거관련 문제",
                                "기타",
                                "자녀의 결혼문제"))
class(con_list$con)
## [1] "integer"
class(welfare$con)
## [1] "numeric"
con_list$con <- as.numeric(con_list$con)

welfare <- left_join(welfare, con_list, by = "con")
welfare %>% 
  select(con, c_list) %>% 
  head()
##   con             c_list
## 1   4      가구원의 건강
## 2   4      가구원의 건강
## 3   1      경제적 어려움
## 4   0 특별한 어려움 없음
## 5   0 특별한 어려움 없음
## 6   0 특별한 어려움 없음

3-8. 건강 만족도 변수 정제

’건강 만족도’결측치 및 모름/무응답(9)에 해당하는 값을 확인하였다.

table(welfare$health)
## 
##    1    2    3    4    5 
##  413 2628 3826 5814  390
table(is.na(welfare$health))
## 
## FALSE  TRUE 
## 13071  2860

‘건강 만족도’의 각 번호에 해당하는 내용을 기술한 ’h_list’ 변수를 추가한 후 결과를 확인하였다.

health_list <- data.frame(health = c(1:5),
                          h_list = c("매우불만족",
                                   "대체로불만족",
                                   "그저그렇다",
                                   "대체로만족",
                                   "매우만족"))
class(health_list$health)
## [1] "integer"
class(welfare$health)
## [1] "numeric"
health_list$health <- as.numeric(health_list$health)

welfare <- left_join(welfare, health_list, by = "health")
welfare %>% 
  select(health, h_list) %>% 
  head()
##   health       h_list
## 1      2 대체로불만족
## 2      4   대체로만족
## 3      2 대체로불만족
## 4      3   그저그렇다
## 5      3   그저그렇다
## 6      4   대체로만족

4. 데이터 분석

우선 삶의 사다리를 평가한 응답자의 전체 평균을 구해보았다.

round(mean(welfare$life, na.rm = T), 1)
## [1] 6.7

대한민국의 삶의 사다리 점수 평균은 6.7을 기록하였다. 삶의 사다리 척도를 기반으로 산출된 국가 행복 지수 순위에서 본 데이터의 조사와 같은 해인 2023년, 대한민국은 OECD 38개국 중 35위를 차지하였다. 이를 통해 6.7이란 수치는 OECD 회원국 중 최하위에 속해있음을 확인할 수 있다.

4-1. 성별

’성별’이 삶의 사다리 점수에 영향을 주는 요인인지에 대해 확인해 보겠다. 결과 도출을 위해 성별에 따른 삶의 사다리 점수 평균을 구해보았다.

welfare_sex <- welfare %>% 
  group_by(sex) %>% 
  filter(!is.na(life)) %>% 
  summarise(mean_life = round(mean(life),1))
welfare_sex
## # A tibble: 2 × 2
##   sex    mean_life
##   <chr>      <dbl>
## 1 female       6.6
## 2 male         6.7

성별에 따른 삶의 사다리 점수 평균은 여성이 남성보다 0.1점 낮은 수치를 기록하고 있으나, 유의한 차이를 나타낸다고 보기는 어렵다. 이를 바탕으로 ’성별’이라는 요인은 삶의 사다리 점수에 큰 영향을 미치지 않음을 확인할 수 있다.

4-2. 소득

다음으로는 ’월소득’이 삶의 사다리 평가에 영향을 주는 요인인지에 대해 확인해 보겠다. 결과 도출을 위해 삶의 사다리 3단계 별 월소득 평균을 구해보았다.

welfare %>% 
  filter(!is.na(level)) %>% 
  group_by(level) %>%
  summarise(mean_income = mean(income, na.rm = T)) %>% 
  arrange(desc(-mean_income))
## # A tibble: 3 × 2
##   level  mean_income
##   <chr>        <dbl>
## 1 low           154.
## 2 middle        211.
## 3 high          280.

월소득 평균은 확연한 차이를 보이며 ‘low’, ‘middle’, ’high’순으로 상승하고 있었다.

이와 비슷하게, 가구 구분 별 삶의 사다리 점수 평균 또한 구해보았다.

welfare %>% 
  filter(!is.na(class)) %>% 
  group_by(class) %>% 
  summarise(mean_life = round(mean(life, na.rm = T), 1)) %>% 
  arrange(desc(-mean_life))
## # A tibble: 2 × 2
##   class mean_life
##   <chr>     <dbl>
## 1 low         5.9
## 2 nomal       7

일반가구와 저소득층 가구는 1.1점의 차이를 보이고 있었다.

이 결과가 유의한지 확인해 보기 위해 t 검정을 사용해 보겠다.

t.test(data = welfare, life ~ class, var.equal = T)
## 
##  Two Sample t-test
## 
## data:  life by class
## t = -36.443, df = 13070, p-value < 2.2e-16
## alternative hypothesis: true difference in means between group low and group nomal is not equal to 0
## 95 percent confidence interval:
##  -1.199353 -1.076919
## sample estimates:
##   mean in group low mean in group nomal 
##            5.855667            6.993804

t 검정의 결과, 일반가구와 저소득층 가구의 점수 차이는 유의함을 확인할 수 있었다. 위의 삶의 사다리 3단계 별 월소득 평균과 가구 구분 별 삶의 사다리 점수 평균, t 검정 결과를 바탕으로, 소득의 차이가 삶의 사다리 점수 평가에 유의한 영향을 끼치는 요인임을 확인할 수 있다.

4-3. 갈등

다음으로는 어떠한 ’갈등’이 삶의 사다리 평가에 영향을 주는 요인인지에 대해 확인해 보겠다. 결과 도출을 위해 삶의 사다리 3단계 별 갈등 문제 비율을 구해보았다.

con_level <- welfare %>% 
  filter(!is.na(level)) %>% 
  group_by(level, c_list) %>% 
  summarise(n_con = n()) %>% 
  mutate(pct = round(n_con/sum(n_con)*100, 1)) %>% 
  arrange(level)
## `summarise()` has grouped output by 'level'. You can override using the
## `.groups` argument.
con_level
## # A tibble: 34 × 4
## # Groups:   level [3]
##    level c_list                n_con   pct
##    <chr> <chr>                 <int> <dbl>
##  1 high  가구원간 관계            64   0.9
##  2 high  가구원의 가출             2   0  
##  3 high  가구원의 건강          1561  20.9
##  4 high  가구원의 알코올          14   0.2
##  5 high  가구원의 취업 및 실업   217   2.9
##  6 high  경제적 어려움           345   4.6
##  7 high  기타                     86   1.2
##  8 high  자녀교육 혹은 행동      154   2.1
##  9 high  자녀의 결혼문제         101   1.4
## 10 high  주거관련 문제            89   1.2
## # ℹ 24 more rows

전체적으로 삶의 사다리 3단계 모두 ‘특별한 어려움 없음’, ‘가구원의 건강’, ’경제적 어려움’과 같은 문제가 높은 비율을 차지하고 있음을 확인할 수 있었다. 그러나 각 단계마다 그 비율은 다름을 알 수 있는데, 단순한 표로는 그 상관관계를 쉽게 파악하기 어렵다. 이에 대한 확인은 밑의 그래프를 통해 자세히 알아보도록 하겠다.

4-4. 연령

다음으로는 ’연령’이 삶의 사다리 평가에 영향을 주는 요인인지에 대해 확인해 보겠다. 결과 도출을 위해 연령 별 삶의 사다리 점수 평균을 구해보았다.

welfare_age <- welfare %>%
  group_by(age) %>% 
  summarise(mean_life = round(mean(life, na.rm = T),1)) %>% 
  filter(!is.na(mean_life))
welfare_age
## # A tibble: 85 × 2
##      age mean_life
##    <dbl>     <dbl>
##  1    16       8  
##  2    17       7  
##  3    18       7.2
##  4    19       6.5
##  5    20       7.1
##  6    21       7.1
##  7    22       7  
##  8    23       7  
##  9    24       7  
## 10    25       6.8
## # ℹ 75 more rows

대체적으로 연령이 높아질 수록 삶의 사다리 점수 평균이 낮아지는 듯 보이지만, 단순한 표로는 연령과 삶의 사다리의 상관관계를 쉽게 파악하기 어렵다. 이에 대한 확인은 밑의 그래프를 통해 자세히 알아보도록 하겠다.

4-5. 건강 만족도

다음으로는 ’건강 만족도’가 삶의 사다리 평가에 영향을 주는 요인인지에 대해 확인해 보겠다. 결과 도출을 위해 건강 만족도 별 삶의 사다리 점수 평균을 구해보았다.

welfare_health <- welfare %>%
  group_by(h_list) %>% 
  filter(!is.na(health)) %>% 
  summarise(mean_life = mean(life, na.rm = T)) %>% 
  arrange(mean_life)
welfare_health
## # A tibble: 5 × 2
##   h_list       mean_life
##   <chr>            <dbl>
## 1 매우불만족        4.45
## 2 대체로불만족      5.83
## 3 그저그렇다        6.47
## 4 대체로만족        7.24
## 5 매우만족          7.68

건강 만족도 별 삶의 사다리 점수 평균은 건강 만족도가 높아질 수록 유의하게 높아지는 모습을 보이고 있었다. 이를 통해 ’건강 만족도’라는 요인은 삶의 사다리 점수에 영향을 미치는 요인임을 확인할 수 있다.

5. 그래프 만들기

Figure 1

다음 그래프는 응답자의 삶의 사다리 점수 빈도를 나타낸 막대 그래프이다. 연속형 변수인 ‘삶의 사다리’는 범위가 크지 않아 1점씩 x축으로, 각 점수에 대응하는 연속형 변수인 ’응답자의 수’를 y축으로 지정하였고, 이에 대한 결과를 쉽게 파악할 수 있도록 막대 그래프 유형을 선정하였다. 또한 x축과 y축에 각각 ’점’, ‘명’ 단위를 지정하여 확인의 용이성을 높였다.

welfare %>% 
  filter(!is.na(life)) %>% 
  ggplot(aes(x = life)) + geom_bar() +
  scale_x_continuous(breaks = seq(0, 10, 1),
                     labels = paste0(seq(0, 10, 1), '점')) +
  scale_y_continuous(limits = c(0, 3500),
                     breaks = seq(0, 3500, 500),
                     labels = paste0(seq(0, 3500, 500), '명')) +
  ggtitle("삶의 사다리 점수 빈도") +
  theme(plot.title = element_text(face = "bold", hjust = 0.5, size = 15))

그래프를 통해, 삶의 사다리 점수의 최빈값은 평균인 6.7보다 높은 8점임을 확인할 수 있었다. 그러나 9점 이상의 점수에 응답한 사람은 5~8점에 비해 현저히 적음을 확인할 수 있었다.

Figure 2

다음 그래프는 성별에 따른 삶의 사다리 점수 평균을 나타낸 막대 그래프이다. 범주형 변수인 ‘성별’은 x축으로, 연속형 변수인 ’삶의 사다리’를 y축으로 지정하였고, 이에 대한 결과를 쉽게 파악할 수 있도록 막대 그래프 유형을 선정하였다. 또한 y축에 ’명’ 단위를 지정하고, 성별에 따라 색을 지정하여 확인의 용이성을 높였다.

ggplot(welfare_sex, aes(x = sex, y = mean_life, fill = sex)) + geom_col() +
  scale_y_continuous(limits = c(0, 10),
                     breaks = seq(0, 10, 1),
                     labels = paste0(seq(0, 10, 1), '점')) +
  ggtitle("성별에 따른 삶의 사다리 점수 평균") +
  theme(plot.title = element_text(face = "bold", hjust = 0.5, size = 15))

그래프를 통해 성별에 따른 삶의 사다리 점수 평균이 유의한 차이를 보이지 않음을 4-1의 표에 비해 더욱 쉽게 확인할 수 있었으며, ’성별’은 삶의 사다리 평가에 대한 영향요인이 아님을 알 수 있었다.

Figure 3

다음 그래프는 삶의 사다리 3단계 별 월소득 분포를 나타낸 박스플롯 그래프이다. 범주형 변수인 ‘삶의 사다리 3단계’는 x축으로, 연속형 변수인 ’월소득’을 y축으로 지정하였고, 이에 대한 결과를 쉽게 파악할 수 있도록 박스플롯 유형을 선정하였다. 또한 y축에 ’만원’ 단위를 지정하고, 삶의 사다리 3단계 별로 색을 지정하여 확인의 용이성을 높였다.

welfare %>%
  filter(!is.na(level), !is.na(income)) %>% 
  ggplot(aes(x = level, y = income, fill = level)) + geom_boxplot() +
  scale_x_discrete(limits = c("low", "middle", "high")) +
  scale_y_continuous(breaks = seq(0, 800, 100),
                     labels = paste0(seq(0, 800, 100), '만원')) +
  ggtitle("삶의 사다리 3단계 별 월소득") +
  theme(plot.title = element_text(face = "bold", hjust = 0.5, size = 15))

그래프를 통해 삶의 사다리 3단계 별 월소득이 유의한 차이를 보임을 4-2의 표에 비해 더욱 쉽게 확인할 수 있었다.

Figure 4

다음 그래프는 균등화소득에 따른 가구구분 별 삶의 사다리 점수 빈도를 나타낸 막대 그래프이다. 연속형 변수인 ‘삶의 사다리’는 범위가 크지 않아 1점씩 x축으로, 각 점수에 대응하는 연속형 변수인 ’응답자의 수’를 y축으로 지정하였고, 이에 대한 결과를 쉽게 파악할 수 있도록 막대 그래프 유형을 선정하였다. 또한 x축과 y축에 각각 ’점’, ‘명’ 단위를 지정하고, 가구구분 별로 빈도를 나누어 확인의 용이성을 높였다.

welfare %>%
  filter(!is.na(life)) %>% 
  ggplot(aes(x = life, fill = class)) +
  geom_bar(position = "dodge") +
  scale_x_continuous(breaks = seq(0, 10, 1),
                     labels = paste0(seq(0, 10, 1), '점')) +
  scale_y_continuous(limits = c(0, 3000),
                     breaks = seq(0, 3000, 500),
                     labels = paste0(seq(0, 3000, 500), '명')) +
  ggtitle("균등화소득에 따른 가구구분 별 삶의 사다리 점수") +
  theme(plot.title = element_text(face = "bold", hjust = 0.5, size = 15))

그래프를 통해 일반가구의 최빈값은 8점이나, 저소득층 가구의 최빈값은 5점임을 확인할 수 있었다. 삶의 사다리 3단계 별 월소득과 균등화소득에 따른 가구구분 별 삶의 사다리 점수의 결과를 바탕으로, ’소득’은 삶의 사다리 평가에 대한 영향요인임을 확인할 수 있었다.

Figure 5

다음 그래프는 삶의 사다리 3단계 별 갈등 문제 비율을 나타낸 막대 그래프이다. 범주형 변수인 ‘삶의 사다리 3단계’는 x축으로, 연속형 변수인 ’pct’는 y축으로 지정하였고, 이에 대한 결과를 쉽게 파악할 수 있도록 막대 그래프 유형을 선정하였다. 또한 y축에’%’ 단위를 지정하고, 갈등 비율의 스택을 쌓아 전체적인 확인의 용이성을 높혔다.

ggplot(con_level, aes(x = level, y = pct, fill = c_list)) + geom_col() +
  scale_x_discrete(limits = c("low", "middle", "high")) +
  scale_y_continuous(breaks = seq(0, 100, 20),
                     labels = paste0(seq(0, 100, 20),'%')) +
  ggtitle("삶의 사다리 3단계 별 갈등 문제") +
  theme(plot.title = element_text(face = "bold", hjust = 0.5, size = 15))

그래프를 통해, 삶의 사라디 3단계 모두 ‘특별한 어려움 없음’과 ’가구원의 건강’, ‘경제적 어려움’이 높은 비율을 차지하고 있음을 알 수 있었다. 그러나 ’low’ 단계로 갈 수록 ‘특별한 어려움 없음’의 비율은 줄어들지만, ’가구원의 건강’과 ’경제적 어려움’ 비율은 커지고 있는 모습을 보이고 있었다. 이를 바탕으로 ‘소득’ 문제와 ‘건강’ 문제가 삶의 사다리 평가에 영향을 주는 요인임을 확인할 수 있었다.

Figure 6

다음 그래프는 연령 별 삶의 사다리 점수 평균을 나타낸 막대 그래프이다. 연속형 변수인 ‘연령’은 x축으로, 마찬가지로 연속형 변수인 ’삶의 사다리’를 y축으로 지정하였고, 이에 대한 결과를 쉽게 파악할 수 있도록 산점도 유형을 선정하였다. 또한 x축과 y축에 ’살’, ‘점’ 단위를 지정하고, 값이 나타나는 구간인 5점과 8점으로 y축의 범위를 좁혀 확인의 용이성을 높였다.

ggplot(welfare_age, aes(x = age, y = mean_life)) + geom_point() +
  ggtitle("연령 별 삶의 사다리 점수 평균") +
  scale_x_continuous(breaks = seq(0, 100, 10),
                     labels = paste0(seq(0, 100, 10), '살')) +
  scale_y_continuous(limits = c(5, 8),
                     breaks = seq(5, 8, 1),
                     labels = paste0(seq(5, 8, 1), '점')) +
  theme(plot.title = element_text(face = "bold", hjust = 0.5, size = 15))

그래프를 통해 대체적으로 연령이 높아질 수록 삶의 사다리 점수 평균이 유의하게 낮아짐을 확인할 수 있었다. 4-3의 표에 비해 그 차이가 확연함을 파악할 수 있었으며, ’연령’은 삶의 사다리 평가에 대한 영향요인임을 알 수 있었다. 그러나 단순히 연령이 높아지는 것만으로 삶의 만족도가 떨어지지는 않을 것이라 생각하였다. 그렇기에 4-5의 ’건강 만족도가 낮을 수록 삶의 만족도 또한 낮아진다’는 결과와 4-2의 ’소득이 낮을 수록 삶의 만족도 또한 낮아진다’는 결과를 바탕으로, ’연령’과 상관관계를 나타내는 변수에 대해 분석해 보겠다.

Figure 7

다음은 연령 별 건강 만족도 문항 비율을 나타낸 산점도 그래프이다. 연속형 변수인 ‘연령’을 x축으로, 마찬가지로 연속형 변수인 ’pct’를 y축으로 지정하였고, 이에 대한 결과를 쉽게 파악할 수 있도록 산점도 유형을 선정하였다. 또한 ’그저그렇다’ 응답을 제외한 후 응답 별로 색을 지정하고 각 축에 맞는 단위를 설정하여 확인의 용이성을 높혔다.

age_health <- welfare %>% 
  filter(!is.na(h_list)) %>%
  filter(!health == 3) %>% 
  group_by(age, h_list) %>% 
  summarise(n_list = n()) %>% 
  mutate(pct = round(n_list/sum(n_list)*100, 1))
## `summarise()` has grouped output by 'age'. You can override using the `.groups`
## argument.
age_health
## # A tibble: 286 × 4
## # Groups:   age [84]
##      age h_list       n_list   pct
##    <dbl> <chr>         <int> <dbl>
##  1    16 매우만족          1 100  
##  2    17 대체로만족        1 100  
##  3    18 대체로만족        3  75  
##  4    18 매우만족          1  25  
##  5    19 대체로만족        6  85.7
##  6    19 대체로불만족      1  14.3
##  7    20 대체로만족       71  87.7
##  8    20 대체로불만족      2   2.5
##  9    20 매우만족          8   9.9
## 10    21 대체로만족       58  80.6
## # ℹ 276 more rows
age_health %>% 
  ggplot(aes(x = age, y = pct)) + geom_point(aes(col = h_list)) +
  scale_x_continuous(breaks = seq(0, 100, 10),
                     labels = paste0(seq(0, 100, 10), '살')) +
  scale_y_continuous(breaks = seq(0, 100, 20),
                     labels = paste0(seq(0, 100, 20), '%')) +
  ggtitle("연령 별 건강 만족도 문항 비율") +
  theme(plot.title = element_text(face = "bold", hjust = 0.5, size = 15))

그래프를 통해, 연령이 높아질 수록 ‘불만족’에 해당하는 응답 비율이 높아짐을 알 수 있었다. 이를 바탕으로, 삶의 사다리 평가의 영향요인인 ’건강 만족도’는 ’연령’과 상관관계를 보인다는 것과 동시에 ’연령’과 ’삶의 사다리 평가’ 간 상관관계의 요인 중 하나란 것 또한 확인할 수 있었다.

Figure 8

다음은 연령 별 월소득 평균을 나타낸 선 그래프이다. 연속형 변수인 ‘연령’을 x축으로, 마찬가지로 연속형 변수인 ’월소득 평균’을 y축으로 지정하였고, 이에 대한 결과를 쉽게 파악할 수 있도록 선 유형을 선정하였다. 또한 x축과 y축에 ’살’, ‘만원’ 단위를 지정하여 확인의 용이성을 높였다.

welfare_income <- welfare %>% 
  group_by(age) %>% 
  filter(!is.na(income)) %>% 
  summarise(mean_income = mean(income)) %>% 
  arrange(mean_income)
welfare_income
## # A tibble: 76 × 2
##      age mean_income
##    <dbl>       <dbl>
##  1    86        26.9
##  2    89        27  
##  3    90        27  
##  4    91        27  
##  5    93        27  
##  6    94        27.5
##  7    88        27.7
##  8    92        28  
##  9    83        28.5
## 10    85        29.4
## # ℹ 66 more rows
ggplot(welfare_income, aes(x = age, y = mean_income)) + geom_line() +
  scale_x_continuous(breaks = seq(0, 100, 10),
                     labels = paste0(seq(0, 100, 10), '살')) +
  scale_y_continuous(breaks = seq(0, 400, 50),
                     labels = paste0(seq(0, 400, 50), '만원')) +
  ggtitle("연령 별 월소득 평균") +
  theme(plot.title = element_text(face = "bold", hjust = 0.5, size = 15))

그래프를 통해, 연령이 높아질 수록 월소득 평균이 줄어들고 있음을 알 수 있었다. 이를 바탕으로, 삶의 사다리 평가의 영향요인인 ‘소득’은 ’연령’과 상관관계를 보인다는 것과 동시에 ’연령’과 ’삶의 사다리 평가’ 간 상관관계의 요인 중 하나란 것 또한 확인할 수 있었다.