우리나라에선 전통적 가족관이 점차 옅어지고, 개인의 라이프 스타일을 중시하며 보다 독립적이고 자유로운 가치를 추구하는 사회로 변모하고 있다. 평균 초혼 연령이 높아지고 비혼주의를 선언하는 사람들이 늘어나며 1인 가구의 수 역시 급격히 증가하고 있다. 이러한 흐름에 맞추어 기업에서는 ’혼밥족’을 위한 1인석, 한조각 피자, 1인분 배달처럼 1인 가구를 타겟으로 한 서비스들을 내놓고 있지만, 제도적 지원은 충분히 마련되어 있다고 보기 어렵다.
1인 가구는 혼자서 모든 생활비용을 부담해야 하기 때문에 일자리가 불안정하거나 수입이 적은 경우에 어려움을 겪을 수도 있고, 사회적 관계의 약화로 인해 고립감과 외로움을 겪을 수도 있다. 이외에도 개인의 생활에 밀접하게 연관된 문제들에 취약한 모습을 보이고 있으며 신체적/심리적 건강에도 악영향을 줄 수 있다.
본 연구에서는 변화하는 사회의 지표인 1인 가구 비율의 증가와 함께 이들의 행복도가 어떠한지 알아보고, 이에 영향을 미칠 수 있는 요인을 파악하여 취약점을 보완하고 문제에 발빠르게 대처할 수 있는 방안에 대한 통찰을 제공하고자 한다.분석에 사용한 데이터는 2005년부터 2022년까지 한국복지패널에서 조사를 진행한 1차~18차 결합데이터이다. 가구용 데이터와 가구원용 데이터를 합한 머지데이터를 세로로 이어붙인 데이터를 사용하였다.
그중에서도 9차~18차에 해당되는 데이터를 추출하여 2013년부터 2022년까지 10년간 1인 가구 수의 추이를 살펴보고, 가장 최신 자료인 18차 데이터를 활용하여 더 자세히 분석하였다.
본 연구에서는 1인 가구의 행복에 어떤 요인이 영향을 미치는지 분석하기 위해서 1) 인구사회학적 요인, 2) 경제적 요인, 3) 심리사회적 요인으로 나눠 살펴보았다.
행복을 측정하는 변수로는 0점(최악의 상태)부터 10점(최상의 상태)으로 이뤄진 ‘삶의 사다리 점수’를 활용하였다. 삶의 사다리 점수란, 개인의 삶을 밑(0)부터 꼭대기(10)까지 숫자가 매겨져 있는 사다리로 비유하여 자신이 어느 상태에 위치해 있는지를 표현하는 점수이다.
한국복지패널의 1~18차 결합데이터를 세로로 이어붙인 머지데이터(가구+가구원+부가데이터)를 불러온 뒤, 2022년에 해당하는 18차 데이터와 2013년~2022년에 해당하는 9~18차 데이터를 각각 ‘wel18’과 ‘wel10’에 따로 저장하였다.
분석의 편의를 위해 변수명과 일부 관측치의 이름을 한글화하는 과정을 거쳤다.
# 원자료 불러오기
raw_welfare <- read.spss(file = "koweps_hp01_18_long_240329.sav",
to.data.frame = T)
# 9~18차 10개년 데이터
wel10 <- raw_welfare %>% filter(year >= 2013) %>%
select(year, # 조사 연도
code_hhold = h01_110) # 가구 형태 코드
wel10 %>% head
- year code_hhold
- 1 2013 1
- 2 2014 1
- 3 2015 1
- 4 2016 1
- 5 2017 1
- 6 2013 1
# 18차 데이터
wel18 <- raw_welfare %>% filter(year == 2022) %>%
select(sex = h_g3, # 성별
birth = h_g4, # 태어난 연도
income = p02_8aq1, # 월급
code_hhold = h01_110, # 가구 형태 코드
cost = h07_9, # 총생활비
cost_rent = h07_3aq3, # 월세
cost_maintain = h07_3aq4, # 관리비
cost_water = h07_3aq5, # 수도세
cost_meal_in = h07_3aq1, # 가정식비
cost_meal_out = h07_3aq2, # 외식비
sat_family = p03_8, # 가족관계 만족도
sat_social = p03_10, # 사회적 관계 만족도
happy = p05_12aq1, # 삶의 사다리 점수
need_income = da_18aq5, # 지원 필요도 - 소득보장
need_psi = da_18aq7, # 지원 필요도 - 의료보장(신체건강)
need_psy = da_18aq9, # 지원 필요도 - 의료보장(정신건강)
need_hire = da_18aq11, # 지원 필요도 - 고용보장
need_live = da_18aq13, # 지원 필요도 - 주거보장
need_move = da_18aq15, # 지원 필요도 - 이동권보장
need_par_com = da_18aq17, # 지원 필요도 - 의사소통 정보접근 참여보장
need_edu = da_18aq19, # 지원 필요도 - 보육 교육 보장
need_par_soc = da_18aq21, # 지원 필요도 - 사회 참여 보장
need_leisure = da_18aq23, # 지원 필요도 - 문화여가생활 및 체육활동 보장
need_selfdec = da_18aq25, # 지원 필요도 - 자기의사결정권 행사 지원
need_abuse = da_18aq27, # 지원 필요도 - 학대 방지
need_disc = da_18aq29) # 지원 필요도 - 사회적 차별 금지
wel18 %>% head
- sex birth income code_hhold cost cost_rent cost_maintain cost_water
- 1 2 1945 NA 1 90 0 0.1 7
- 2 1 1948 180 1 177 40 0.0 10
- 3 1 1942 NA 1 91 0 0.3 10
- 4 1 1962 252 5 408 0 0.9 15
- 5 2 1963 NA 5 408 0 0.9 15
- 6 2 2003 NA 5 408 0 0.9 15
- cost_meal_in cost_meal_out sat_family sat_social happy need_income need_psi
- 1 25 5 4 3 5 NA NA
- 2 50 5 4 4 10 NA NA
- 3 24 6 2 3 7 NA NA
- 4 71 55 4 4 9 NA NA
- 5 71 55 1 3 7 NA NA
- 6 71 55 1 4 7 NA NA
- need_psy need_hire need_live need_move need_par_com need_edu need_par_soc
- 1 NA NA NA NA NA NA NA
- 2 NA NA NA NA NA NA NA
- 3 NA NA NA NA NA NA NA
- 4 NA NA NA NA NA NA NA
- 5 NA NA NA NA NA NA NA
- 6 NA NA NA NA NA NA NA
- need_leisure need_selfdec need_abuse need_disc
- 1 NA NA NA NA
- 2 NA NA NA NA
- 3 NA NA NA NA
- 4 NA NA NA NA
- 5 NA NA NA NA
- 6 NA NA NA NA
‘단독(1인) 가구’, ‘모자 가구’, ‘부자 가구’, ‘조손 가구/소년소녀가장’, ’기타’의 5가지 유형이 숫자로 코딩된 가구 형태 코드를 한글로 변환하였다.
list_hhold <- data.frame(code_hhold = c(1:5),
household = c("단독(1인) 가구",
"모자 가구",
"부자 가구",
"조손 가구/소년소녀가장",
"기타"))
wel18 <- left_join(wel18, list_hhold, by = join_by(code_hhold))
wel10 <- left_join(wel10, list_hhold, by = join_by(code_hhold))
wel18 %>% select(code_hhold, household) %>% head
- code_hhold household
- 1 1 단독(1인) 가구
- 2 1 단독(1인) 가구
- 3 1 단독(1인) 가구
- 4 5 기타
- 5 5 기타
- 6 5 기타
wel10 %>% select(code_hhold, household) %>% head
- code_hhold household
- 1 1 단독(1인) 가구
- 2 1 단독(1인) 가구
- 3 1 단독(1인) 가구
- 4 1 단독(1인) 가구
- 5 1 단독(1인) 가구
- 6 1 단독(1인) 가구
이상치를 제거하고, 0~3점은 낮음(low), 4~7점은 보통(moderate), 8~10점은 높음(high)으로 구분하여 factor 형태로 ‘happyg’ 변수에 추가하였다.
wel18$happy <- ifelse(wel18$happy > 10, NA, wel18$happy)
wel18 <- wel18 %>%
mutate(happyg = as.factor(ifelse(happy <= 3, "low",
ifelse(happy <=7, "moderate", "high"))))
wel18$happyg <- factor(wel18$happyg, levels = c('high', 'moderate', 'low'))
wel18$happyg %>% head
- [1] moderate high moderate high moderate moderate
- Levels: high moderate low
이상치를 제거한 뒤, 남성(male)과 여성(female)으로 구분하여 명명했다. 연령은 연도에서 출생연도를 뺀 만 나이로 계산하였고, 34세 이하는 청년(young), 35세~64세는 중년(middle), 65세 이상은 노년(old)으로 구분하였다.
# 성별
wel18$sex <- ifelse(wel18$sex == 9, NA, ifelse(wel18$sex == 1, "male", "female"))
table(wel18$sex)
-
- female male
- 8787 7144
# 연령
wel18$age <- (2022 - wel18$birth)
wel18 <- wel18 %>%
mutate(ageg = as.factor(ifelse(age < 35, "young",
ifelse(age < 65, "middle", "old"))))
wel18$ageg <- factor(wel18$ageg, levels = c('young', 'middle', 'old'))
wel18$ageg %>% head(20)
- [1] old old old middle middle young old old old middle
- [11] young old old middle middle middle young young old old
- Levels: young middle old
먼저 boxplot으로 월급과 생활비의 극단치를 확인하여 월급은 0 ~ 736 사이를 벗어나는 수치, 생활비는 30 ~ 1229 사이를 벗어나는 수치를 결측 처리하였다.
boxplot(wel18$cost)$stats
- [,1]
- [1,] 30
- [2,] 192
- [3,] 377
- [4,] 607
- [5,] 1229
boxplot(wel18$income)$stats
- [,1]
- [1,] 0
- [2,] 133
- [3,] 250
- [4,] 375
- [5,] 736
wel18$cost <- ifelse(wel18$cost < 30, NA,
ifelse(wel18$cost > 1229, NA, wel18$cost))
wel18$cost %>% head(20)
- [1] 90 177 91 408 408 408 408 408 76 182 182 105 105 42 796 796 796 796 198
- [20] 198
wel18$income <- ifelse(wel18$income == 0, NA,
ifelse(wel18$income > 736, NA, wel18$income))
wel18$income %>% head(20)
- [1] NA 180 NA 252 NA NA NA NA 27 NA NA NA NA NA 283 233 NA NA NA
- [20] 60
그 다음 총생활비를 월급으로 나누어 ‘월급 대비
총생활비(cost_income)’ 파생변수를 생성하였다. 소수점 아래 둘째
자리까지 표시하였다.
wel18$cost_income <- round(wel18$cost/wel18$income, 2)
wel18$cost_income %>% head(20)
- [1] NA 0.98 NA 1.62 NA NA NA NA 2.81 NA NA NA NA NA 2.81
- [16] 3.42 NA NA NA 3.30
그리고 주 지출 분야를 확인하기 위하여
‘주거비(월세+관리비+수도세)’와
‘식비(가정식비+외식비)’를 추가하고 극단치를 결측치
처리하였다. 모든 금액의 단위는 만
원이다.
# 주거비
wel18 <- wel18 %>%
mutate(cost_living = cost_rent+cost_maintain+cost_water)
boxplot(wel18$cost_living)$stats
- [,1]
- [1,] 0
- [2,] 17
- [3,] 23
- [4,] 31
- [5,] 52
wel18$cost_living <- ifelse(wel18$cost_living == 0, NA,
ifelse(wel18$cost_living > 52, NA, wel18$cost_living))
wel18$cost_living %>% head
- [1] 7.1 50.0 10.3 15.9 15.9 15.9
# 식비
wel18 <- wel18 %>%
mutate(cost_meal = cost_meal_in+cost_meal_out)
boxplot(wel18$cost_meal)$stats
- [,1]
- [1,] 3
- [2,] 57
- [3,] 87
- [4,] 124
- [5,] 224
wel18$cost_meal <- ifelse(wel18$cost_meal < 3, NA,
ifelse(wel18$cost_meal > 224, NA, wel18$cost_meal))
wel18$cost_meal %>% head
- [1] 30 55 30 126 126 126
가족관계, 사회적 관계 만족도 모두 1~2점은 ‘low’, 3점(그저 그렇다)은 ‘moderate’, 4~5점은 ‘high’의 factor 변수로 치환하였다.
wel18 <- wel18 %>%
mutate(sat_fam_g = as.factor(ifelse (sat_family == 9, NA, ifelse(sat_family >= 4, 'high',
ifelse(sat_family == 3, 'moderate', 'low')))),
sat_soc_g = as.factor(ifelse (sat_social == 9, NA, ifelse(sat_social >= 4, 'high',
ifelse(sat_social == 3, 'moderate', 'low')))))
wel18$sat_fam_g <- factor(wel18$sat_fam_g, levels = c('low', 'moderate', 'high'))
wel18$sat_soc_g <- factor(wel18$sat_soc_g, levels = c('low', 'moderate', 'high'))
wel18 %>% select(sat_fam_g, sat_soc_g) %>% head
- sat_fam_g sat_soc_g
- 1 high moderate
- 2 high high
- 3 low moderate
- 4 high high
- 5 low moderate
- 6 low high
마지막으로 소득, 의료, 고용, 주거, 교육 등 13 항목으로 이루어진 ‘삶에 필요한 서비스에 대한 조사’에서 각 항목에 동의하는 정도를 알아보기 위하여 ‘필요’와 ’매우 필요’는 ’O’, ’전혀 불필요’와 ’불필요’는 NA로 치환하여 각 항목별 파생변수를 추가하였다. 그리고 1인 가구 데이터에 한해서 항목명, 필요 여부를 변수로 두는 새 데이터프레임 ’needif’를 생성하였다.
wel18 <- wel18 %>% mutate(N_income_if = ifelse (need_income == 9, NA, ifelse(need_income >= 3, 'O', NA)))
wel18 <- wel18 %>% mutate(N_psi_if = ifelse (need_psi == 9, NA, ifelse(need_psi >= 3, 'O', NA)))
wel18 <- wel18 %>% mutate(N_psy_if = ifelse (need_psy == 9, NA, ifelse(need_psy >= 3, 'O', NA)))
wel18 <- wel18 %>% mutate(N_hire_if = ifelse (need_hire == 9, NA, ifelse(need_hire >= 3, 'O', NA)))
wel18 <- wel18 %>% mutate(N_live_if = ifelse (need_live == 9, NA, ifelse(need_live >= 3, 'O', NA)))
wel18 <- wel18 %>% mutate(N_move_if = ifelse (need_move == 9, NA, ifelse(need_move >= 3, 'O', NA)))
wel18 <- wel18 %>% mutate(N_parcom_if = ifelse (need_par_com == 9, NA, ifelse(need_par_com >= 3, 'O', NA)))
wel18 <- wel18 %>% mutate(N_edu_if = ifelse (need_edu == 9, NA, ifelse(need_edu >= 3, 'O', NA)))
wel18 <- wel18 %>% mutate(N_parsoc_if = ifelse (need_par_soc == 9, NA, ifelse(need_par_soc >= 3, 'O', NA)))
wel18 <- wel18 %>% mutate(N_leisure_if = ifelse (need_leisure == 9, NA, ifelse(need_leisure >= 3, 'O', NA)))
wel18 <- wel18 %>% mutate(N_selfdec_if = ifelse (need_selfdec == 9, NA, ifelse(need_selfdec >= 3, 'O', NA)))
wel18 <- wel18 %>% mutate(N_abuse_if = ifelse (need_abuse == 9, NA, ifelse(need_abuse >= 3, 'O', NA)))
wel18 <- wel18 %>% mutate(N_disc_if = ifelse (need_disc == 9, NA, ifelse(need_disc >= 3, 'O', NA)))
wel18 %>% filter(!is.na(N_income_if)) %>% select(N_income_if,
N_psi_if,
N_psy_if,
N_hire_if,
N_live_if,
N_move_if,
N_parcom_if,
N_edu_if,
N_parsoc_if,
N_leisure_if,
N_selfdec_if,
N_abuse_if,
N_disc_if) %>% head
- N_income_if N_psi_if N_psy_if N_hire_if N_live_if N_move_if N_parcom_if
- 1 O O <NA> O <NA> <NA> <NA>
- 2 O O O <NA> O <NA> O
- 3 O <NA> O O <NA> O <NA>
- 4 O O O O O O O
- 5 O O O O O O O
- 6 O O O O O O O
- N_edu_if N_parsoc_if N_leisure_if N_selfdec_if N_abuse_if N_disc_if
- 1 <NA> <NA> O O O <NA>
- 2 O <NA> O <NA> O O
- 3 <NA> O O <NA> <NA> <NA>
- 4 O O O O O O
- 5 O O O O O O
- 6 O O O O O O
happy_one <- wel18 %>% filter(household == '단독(1인) 가구' & !is.na(happy))
needif <- data.frame(value=c("소득",
"의료: 신체건강",
"의료: 정신건강",
"고용",
"주거",
"이동권",
"의사소통/정보접근 참여",
"보육/교육",
"사회 참여",
"문화/여가/체육",
"자기의사결정권 행사",
"학대 방지",
"사회적 차별 금지"),
check = rep(c("O"), length.out = 13),
count = c(table(happy_one$N_income_if),
table(happy_one$N_psi_if),
table(happy_one$N_psy_if),
table(happy_one$N_hire_if),
table(happy_one$N_live_if),
table(happy_one$N_move_if),
table(happy_one$N_parcom_if),
table(happy_one$N_edu_if),
table(happy_one$N_parsoc_if),
table(happy_one$N_leisure_if),
table(happy_one$N_selfdec_if),
table(happy_one$N_abuse_if),
table(happy_one$N_disc_if)))
needif %>% head
- value check count
- 1 소득 O 377
- 2 의료: 신체건강 O 392
- 3 의료: 정신건강 O 216
- 4 고용 O 181
- 5 주거 O 256
- 6 이동권 O 282
먼저 2022년 기준, 각 가구유형이 전체에서 차지하는 비율과 그 수는 다음과 같다.
hhold_n <- wel18 %>%
group_by(household) %>%
filter(!is.na(household)) %>%
summarise(n=n()) %>%
mutate(total = sum(n)) %>%
mutate(prop = round(n/total*100, 2))
hhold_n
- # A tibble: 5 × 4
- household n total prop
- <chr> <int> <int> <dbl>
- 1 기타 12778 15931 80.2
- 2 단독(1인) 가구 2972 15931 18.7
- 3 모자 가구 103 15931 0.65
- 4 부자 가구 44 15931 0.28
- 5 조손 가구/소년소녀가장 34 15931 0.21
ggplot(hhold_n, aes(x = "", y = n, fill = household)) +
geom_bar(stat = "identity") +
theme_void()+
coord_polar(theta = "y") +
geom_text(aes(label=paste0(round(prop, 1), '%')),
position=position_stack(vjust=0.5),
color='black', size=5) +
labs(title = "2022 한국 가구 형태 분포",
fill = "가구 형태",
x = NULL,
y = NULL) +
theme(legend.position = "bottom",
plot.title = element_text(face = "bold", hjust = 0.5, size = 20, color = "darkblue"))
다음으로 1인 가구의 증가 시점과 양상을 알아보기 위해 10년간의 데이터를 분석해 봤다.
wel10 %>% filter(household == '단독(1인) 가구') %>% group_by(year) %>% summarise(count=n()) %>%
ggplot(aes(x = year, y = count)) +
geom_line(color = "darkblue", size = 0.8) +
geom_point(color = "darkblue") +
geom_text(aes(label=count), vjust=2.5) +
theme(plot.title = element_text(face = "bold", hjust = 0.5, size = 20, color = "darkblue"),
panel.background = element_rect(fill = "white"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(color = "black")) +
labs(title = "최근 10년 간 1인 가구 수의 변화", x = "연도", y = "1인 가구 수(명)") +
scale_x_continuous(breaks = seq(2013,2022)) +
coord_cartesian(ylim=c(1000,3200))
데이터를 보면 1인 가구의 수는 2019년에 잠시 주춤하긴 했으나 전체적으로 증가하는 양상을 띠고 있다. 특히 2021년에는 전년도보다 무려 800여가구가 늘어나며 가파르게 증가했다. 그러나 이 그래프는 전체 가구 중 1인 가구가 차지하는 비율이 아닌 단순 1인 가구의 수만 나타냈기 때문에 전체 인구 혹은 응답자 수와 함께 늘어났을 가능성이 있어 10년 동안의 1인 가구의 비율을 분석해 봤다.
hhold10_n <- wel10 %>%
group_by(year, household) %>%
filter(!is.na(household)) %>%
summarise(n=n()) %>%
mutate(total = sum(n)) %>%
mutate(prop = round(n/total*100, 2))
hhold10_n
- # A tibble: 50 × 5
- # Groups: year [10]
- year household n total prop
- <dbl> <chr> <int> <int> <dbl>
- 1 2013 기타 14654 17134 85.5
- 2 2013 단독(1인) 가구 1989 17134 11.6
- 3 2013 모자 가구 242 17134 1.41
- 4 2013 부자 가구 93 17134 0.54
- 5 2013 조손 가구/소년소녀가장 156 17134 0.91
- 6 2014 기타 14182 16664 85.1
- 7 2014 단독(1인) 가구 2017 16664 12.1
- 8 2014 모자 가구 252 16664 1.51
- 9 2014 부자 가구 87 16664 0.52
- 10 2014 조손 가구/소년소녀가장 126 16664 0.76
- # ℹ 40 more rows
이 표는 2013년부터 2022년까지 각 가구유형의 비율과 그 수, 그리고
각 연도의 전체 응답자 수를 나타낸다.
그래프를 통해 각 유형별 비율 변화를 나타내면 다음과 같다.
ggplot(hhold10_n, aes(x = year, y = prop, color = household, linetype = household,)) +
geom_line(size=0.8) +
theme(legend.position = "bottom",
plot.title = element_text(face = "bold", hjust = 0.5, size = 20, color = "darkblue"),
panel.background = element_rect(fill = "white"),
panel.grid.major = element_line(color = "lightgray"),
panel.grid.minor = element_blank(),
axis.line = element_line(color = "black")) +
labs(title = "최근 10년 간 가구 유형의 변화", x = "연도", y = "비율(%)", color = "가구 유형", linetype = "가구 유형") +
scale_x_continuous(breaks = seq(2013,2022)) +
coord_cartesian(ylim=c(0,100))
이렇듯 점차 그 비중이 늘어나고 있는 1인 가구의 행복도가 기타 가구와 어느 정도의 차이가 있을지 알아보았다.
hhold_happy <- wel18 %>%
group_by(household) %>%
filter(household %in% c('단독(1인) 가구','기타')) %>%
summarise(mean_happy = round(mean(happy, na.rm = T), 2))
hhold_happy
- # A tibble: 2 × 2
- household mean_happy
- <chr> <dbl>
- 1 기타 6.82
- 2 단독(1인) 가구 6.1
ggplot(hhold_happy, aes(x=household, y=mean_happy)) +
geom_col(fill='pink', width=0.5) +
geom_text(aes(label=round(mean_happy, 1), vjust=-1.5)) +
theme(plot.title = element_text(face = "bold", hjust = 0.5, size = 20, color = "darkblue"),
panel.background = element_rect(fill = "white"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(color = "black")) +
labs(title = "1인 가구/기타 가구의 행복도: 평균 점수", x = "", y = "평균 점수") +
scale_y_continuous(breaks = seq(0,10)) +
coord_cartesian(ylim=c(0,10))
1인 가구의 평균 행복도는 10점 만점에 약 6.1점으로, 기타 가구의 6.82점에 비해 0.7점 정도 차이나는 것으로 나타났다.
hhold_happyg <- wel18 %>%
group_by(household, happyg) %>%
filter(household %in% c('단독(1인) 가구','기타') & !is.na(happyg)) %>%
summarise(n=n()) %>%
mutate(total = sum(n)) %>%
mutate(prop = round(n/total*100, 2))
hhold_happyg
- # A tibble: 6 × 5
- # Groups: household [2]
- household happyg n total prop
- <chr> <fct> <int> <int> <dbl>
- 1 기타 high 3824 10069 38.0
- 2 기타 moderate 5916 10069 58.8
- 3 기타 low 329 10069 3.27
- 4 단독(1인) 가구 high 686 2904 23.6
- 5 단독(1인) 가구 moderate 1965 2904 67.7
- 6 단독(1인) 가구 low 253 2904 8.71
ggplot(hhold_happyg, aes(x=household, y=prop, fill=happyg)) +
geom_col(width=0.5) +
geom_text(aes(label=paste0(round(prop, 1), '%')),
position=position_stack(vjust=0.5),
color='black', size=4) +
theme(plot.title = element_text(face = "bold", hjust = 0.5, size = 20, color = "darkblue"),
panel.background = element_rect(fill = "white"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(color = "black")) +
labs(title = "1인 가구/기타 가구의 행복도: 응답 비율", x = "", y = "비율(%)", fill = "행복도(수준)")
먼저 1인 가구 중에서 누가 특히나 행복을 덜 느끼는지, 그 특성을 파악하기 위해 연령대 별 1인 가구의 행복도를 분석했다.
ageg_happy <- happy_one %>%
group_by(ageg, happyg) %>%
summarise(n=n()) %>%
mutate(total = sum(n)) %>%
mutate(prop = round(n/total*100, 2))
ageg_happy
- # A tibble: 9 × 5
- # Groups: ageg [3]
- ageg happyg n total prop
- <fct> <fct> <int> <int> <dbl>
- 1 young high 125 278 45.0
- 2 young moderate 145 278 52.2
- 3 young low 8 278 2.88
- 4 middle high 147 548 26.8
- 5 middle moderate 347 548 63.3
- 6 middle low 54 548 9.85
- 7 old high 414 2078 19.9
- 8 old moderate 1473 2078 70.9
- 9 old low 191 2078 9.19
ggplot(ageg_happy, aes(x=ageg, y=prop, fill=happyg)) +
geom_col(width=0.5) +
geom_text(aes(label=paste0(round(prop, 1), '%')),
position=position_stack(vjust=0.5),
color='black', size=4) +
theme(plot.title = element_text(face = "bold", hjust = 0.5, size = 20, color = "darkblue"),
panel.background = element_rect(fill = "white"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(color = "black")) +
labs(title = "1인 가구의 연령별 행복도", x = "", y = "비율(%)", fill = "행복도(수준)")
다음으로 1인 가구의 행복도에 따른 성별 분포를 확인해 봤다.
sex_happy <- happy_one %>%
group_by(sex, happyg) %>%
summarise(n=n()) %>%
mutate(total = sum(n)) %>%
mutate(prop = round(n/total*100, 2))
sex_happy
- # A tibble: 6 × 5
- # Groups: sex [2]
- sex happyg n total prop
- <chr> <fct> <int> <int> <dbl>
- 1 female high 491 2111 23.3
- 2 female moderate 1439 2111 68.2
- 3 female low 181 2111 8.57
- 4 male high 195 793 24.6
- 5 male moderate 526 793 66.3
- 6 male low 72 793 9.08
ggplot(sex_happy, aes(x=sex, y=prop, fill=happyg)) +
geom_col(width=0.5) +
geom_text(aes(label=paste0(round(prop, 1), '%')),
position=position_stack(vjust=0.5),
color='black', size=4) +
theme(plot.title = element_text(face = "bold", hjust = 0.5, size = 20, color = "darkblue"),
panel.background = element_rect(fill = "white"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(color = "black")) +
labs(title = "1인 가구의 성별 행복도", x = "", y = "비율(%)", fill = "행복도(수준)")
다음으로 상관계수를 활용하여 변인 간 연관성을 밝혀내려 했다. 행복도와 소득, 소득 대비 지출, 가족관계 만족도, 사회적 관계 만족도의 상관계수 행렬을 만들고, 히트맵을 활용하여 그 크기를 색으로 나타내 대략적인 상관관계를 확인했다. 같은 변인끼리는 제외하였다.
happy_cor <- cor(happy_one[, c("happy", "income", "cost_income", "sat_family", "sat_social")], use = "pairwise.complete.obs")
happy_cor
- happy income cost_income sat_family sat_social
- happy 1.0000000 0.22802627 -0.039584599 0.391642712 0.472088417
- income 0.2280263 1.00000000 -0.547669171 0.073459366 0.115472586
- cost_income -0.0395846 -0.54766917 1.000000000 0.003781927 0.005817687
- sat_family 0.3916427 0.07345937 0.003781927 1.000000000 0.405430281
- sat_social 0.4720884 0.11547259 0.005817687 0.405430281 1.000000000
corrplot(happy_cor, method = "color", diag = F)
먼제 경제적 요인 중 소득의 영향을 알아보기 위해서 월급과 행복도 점수 간의 관계를 산점도로 나타냈는데, 연령별 차이를 함께 확인하기 위해 plotly 패키지를 활용한 인터랙티브 그래프로 만들어 보았다.
happy_one %>% filter(!is.na(income) ) %>%
plot_ly(x = ~income, y = ~happy, color = ~ageg, type = 'scatter', mode = 'markers') %>%
layout(title = "연령별 소득과 행복도 점수",
xaxis = list(title = "월급(만원)"),
yaxis = list(title = "행복도(점)"))
다음으로 1인 가구의 생활비 부담에 대해 알아보기 위해 간단히 1인 가구와 기타 가구의 평균 생활비와 월급 대비 생활비를 살펴보았다.
cost_differ <- wel18 %>%
filter(household %in% c('단독(1인) 가구', '기타')) %>%
group_by(household) %>%
summarise(mean_cost = round(mean(cost, na.rm=T),2), mean_cost_income = round(mean(cost_income, na.rm=T),2))
cost_differ
- # A tibble: 2 × 3
- household mean_cost mean_cost_income
- <chr> <dbl> <dbl>
- 1 기타 478. 2.99
- 2 단독(1인) 가구 153. 2.21
1인 가구의 총생활비는 평균
153만원 정도로 기타 가구의 절반도 못 미치는 수준이지만,
월급 대비 생활비는 기타 가구와 0.7%p
정도밖에 차이나지 않는다. 이를 통해 생활비의 절대적 수치는 한참 낮지만 그 부담은 크게
떨어지진 않는다고 생각해 볼 수 있다.
living_meal <- wel18 %>%
group_by(household) %>%
filter(household %in% c('단독(1인) 가구','기타') & !is.na(cost) & !is.na(cost_living) & !is.na(cost_meal)) %>%
summarise(cost=mean(cost), living=mean(cost_living), meal=mean(cost_meal)) %>%
mutate(living_cost = round(living/cost*100, 2),
meal_cost = round(meal/cost*100, 2),
etc = round(100-living_cost-meal_cost, 2))
living_meal %>% select('가구 형태' = household,
'주거비 비율' = living_cost,
'식비 비율' = meal_cost,
'기타' = etc)
- # A tibble: 2 × 4
- `가구 형태` `주거비 비율` `식비 비율` 기타
- <chr> <dbl> <dbl> <dbl>
- 1 기타 5.29 22.2 72.5
- 2 단독(1인) 가구 12.7 28.8 58.5
이를 바탕으로 월급 대비 총생활비와 행복도 점수 간의 관계를 분석해 봤다.
happy_one %>% filter(!is.na(cost_income)) %>%
ggplot(aes(x=cost_income, y=happy)) +
geom_point(size=0.5) +
theme(plot.title = element_text(face = "bold", hjust = 0.5, size = 20, color = "darkblue"),
panel.background = element_rect(fill = "white"),
panel.grid.major = element_line(color = "lightgray"),
panel.grid.minor = element_blank(),
axis.line = element_line(color = "black")) +
labs(title = "생활비 부담과 행복도 점수", x = "월급 대비 생활비(만원)", y = "행복도(점)") +
scale_y_continuous(breaks = c(0,3,7,10))
다음으로 심리사회적 요인 중 가족과의 사이가 1인 가구 개인의 행복도에 미치는 영향을 살펴보기 위해, 가족관계 만족도에 따라 행복도 수준을 택한 비율이 어떻게 달랐는지 분석했다.
family_happy <- happy_one %>%
group_by(sat_fam_g, happyg) %>%
filter(!is.na(sat_fam_g)) %>%
summarise(n=n()) %>%
mutate(total = sum(n)) %>%
mutate(prop = round(n/total*100, 2))
family_happy
- # A tibble: 9 × 5
- # Groups: sat_fam_g [3]
- sat_fam_g happyg n total prop
- <fct> <fct> <int> <int> <dbl>
- 1 low high 13 179 7.26
- 2 low moderate 112 179 62.6
- 3 low low 54 179 30.2
- 4 moderate high 53 602 8.8
- 5 moderate moderate 430 602 71.4
- 6 moderate low 119 602 19.8
- 7 high high 620 2123 29.2
- 8 high moderate 1423 2123 67.0
- 9 high low 80 2123 3.77
ggplot(family_happy, aes(x = sat_fam_g, y = prop, fill = happyg)) +
geom_col(width=0.5) +
geom_text(aes(label=paste0(round(prop, 1), '%')),
position=position_stack(vjust=0.5),
color='black', size=4) +
theme(plot.title = element_text(face = "bold", hjust = 0.5, size = 20, color = "darkblue"),
panel.background = element_rect(fill = "white"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(color = "black")) +
labs(title = "1인 가구의 가족관계 만족도와 행복도 수준", x = "가족관계 만족도 수준", y = "비율(%)", fill = "행복도 수준")
social_happy <- happy_one %>%
group_by(sat_soc_g, happyg) %>%
filter(!is.na(sat_soc_g)) %>%
summarise(n=n()) %>%
mutate(total = sum(n)) %>%
mutate(prop = round(n/total*100, 2))
ggplot(social_happy, aes(x = sat_soc_g, y = prop, fill = happyg)) +
geom_col(width=0.5) +
geom_text(aes(label=paste0(round(prop, 1), '%')),
position=position_stack(vjust=0.5),
color='black', size=4) +
theme(plot.title = element_text(face = "bold", hjust = 0.5, size = 20, color = "darkblue"),
panel.background = element_rect(fill = "white"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(color = "black")) +
labs(title = "1인 가구의 사회적 관계 만족도와 행복도 수준", x = "사회적 관계 만족도 수준", y = "비율(%)", fill = "행복도 수준")
앞서 살펴본 상관분석에서 가족관계, 사회적 관계 만족의 두 요소가 서로 상관계수가 높았던 만큼 그래프에서도 비슷한 경향성을 보이지만, 사회적 관계의 영향은 가족관계 만족도보다 행복도 수준의 높고 낮음에서 더 뚜렷한 차이를 보인다. 이를 통해서 지금까지 살펴봤던 변인들 중, 사회적 관계 만족도 수준이 1인 가구의 행복에 가장 큰 영향을 미친다는 사실을 알 수 있었다.
이에 대한 노년층에서의 흥미로운 변화를 그래프를 통해 살펴보면,
social_happy_old <- happy_one %>%
group_by(sat_soc_g, happyg) %>%
filter(!is.na(sat_soc_g) & ageg == 'old') %>%
summarise(n=n()) %>%
mutate(total = sum(n)) %>%
mutate(prop = round(n/total*100, 2))
ggplot(social_happy_old, aes(x = sat_soc_g, y = prop, fill = happyg)) +
geom_col(width=0.5) +
geom_text(aes(label=paste0(round(prop, 1), '%')),
position=position_stack(vjust=0.5),
color='black', size=4) +
theme(plot.title = element_text(face = "bold", hjust = 0.5, size = 20, color = "darkblue"),
panel.background = element_rect(fill = "lightyellow"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(color = "black")) +
labs(title = "사회적 관계 만족도와 행복도 수준: 노년층", x = "사회적 관계 만족도 수준", y = "비율(%)", fill = "행복도 수준")
마지막으로 1인 가구가 정말 필요로 하는 실질적인 도움을 파악하기 위해, 일상생활 분야에 대한 지원 13가지 항목 각각의 필요 여부 응답을 분석해 봤다.
ggplot(needif, aes(x=reorder(value, count), y=count)) +
geom_col(width=0.5, fill="darkgreen") +
coord_flip() +
geom_text(aes(label=paste0(round(count/400*100, 1),'%')),
position=position_stack(vjust=0.5),
color='white') +
theme(plot.title = element_text(face = "bold", hjust = 0.5, size = 20, color = "darkblue"),
panel.background = element_rect(fill = "white"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(color = "black")) +
labs(title = "1인 가구가 필요로 하는 생활 지원", x = "생활 서비스 분야", y = "'필요하다'고 답한 응답자 수(명)")
1인 가구가 제도적인 필요성을 절실히 느끼고 있는 분야는 신체적 건강과 소득 보장이었다. 건강과 소득은 기본적인 삶의 질을 좌우하기 때문에 이러한 지원은 가히 필수적이라고 할 수 있겠다. 예상치 못한 사고와 마주했을 때, 질병이나 건강 악화로, 혹은 고용이 불안정해져서 생활이 불편해지면 1인 가구는 그 빈자리를 메우기 더욱 힘들기 때문에 필요도가 높다고 생각된다.
그 다음은 이동권과 주거 보장이 나란히 상위권을 차지하였다. 1인 가구에게도 보금자리와 이동의 자율성이 역시 중요하게 다가온다는 뜻이다.
문화/여가/체육 분야도 어느 정도 필요성을 나타내고 있다. 1인 가구의 생활비는 주거비와 식비에 집중되어 있는 만큼, 모자란 문화/여가생활에 대한 수요가 있어 보인다.
보육/교육 보장은 최하위를 기록했는데, 함께 사는 어린 자녀가 없는 1인 가구이니만큼 당연한 결과로 보인다.
의외로 정신 건강 부문에서는 필요의 목소리가 54%로 찬반이 나뉘는 편이다. 앞서 살펴봤듯 1인 가구의 행복도는 기타 가구에 비해 낮은 편이며, 행복감에 큰 영향을 주는 사회적 관계가 약할 가능성이 있어 외로움, 고독감으로 인해 우울한 마음이 들거나 여러 부담으로 인해 불안한 마음이 찾아오기 십상이다. 우리나라엔 아직 정신과에 대한 선입견이나 익숙지 않은 분위기가 존재하기에 필요도가 높지 않게 나타난 것으로 보인다. 그러나 몸이 아프면 병원에 가듯이 마음이 아플 때도 적절한 도움을 받아야 한다는 사실을 간과해선 안 될 것이다. 개인의 행복을 위해선 신체적 건강과 소득 보장도 물론 중요하지만, 정신건강 의료 지원도 그에 못지 않게 필요하다는 인식을 갖출 필요가 있겠다.분석 결과, 2013년부터 현재까지 모든 가구 유형 중 유일하게 그 비율이 증가하고 있는 1인 가구의 행복도는 전통적 가구로 여겨지는 기타 가구보다 0.7점 낮은 6.1점이다.
성별에 따른 행복도 수준의 차이는 찾아볼 수 없었고, 연령대에 따라서는 달라지는 양상을 보였다. 청년에 비해 중년과 노년의 1인 가구가 더 낮은 행복감을 보고했다. 청년층의 45%는 높은 행복감을, 2.9%는 낮은 행복감으로 대체로 불행하지 않다고 보고한 반면, 중년층과 노년층에서는 높은 행복감이 각각 26.8%, 19.9%로 적은 비율을 보였으며, 낮은 행복감은 거의 9%대에 이르렀다.
사회적 관계 만족도는 1인 가구의 행복도에 가장 큰 영향을 미쳤으며, 그보다는 약하지만 가족관계 만족도 역시 강한 상관을 나타냈다.
1인 가구는 기타 가구에 비해 총생활비는 현저히 적지만, 소득과 비교했을 때는 기타 가구와 약간의 차이만을 보였고, 이중 주거비와 식비의 비중이 높아 문화나 여가생활 측면에서 여유가 없을 거라 추측할 수 있었다. 그러나 생활비 부담에 따른 행복도 수준 차이는 크지 않았다. 소득에 따른 차이 역시 크지 않았는데, 소득이 250만원 이상인 경우 보통 이상의 행복감을 보고했으나, 그보다 낮은 경우에서는 눈에 띄는 경향성이 없었다.
생활 지원에서 중요도가 높게 나타난 것은
소득과 의료 보장처럼 기초적인
분야였고, 문화와 여가 생활에 대한 수요도 어느 정도
있었다. 정신건강 항목은 그 중요성에 비해 그리 높은
필요도를 보이지 않았다.
이러한 결과를 바탕으로, 소득 수준이 보통 수준까지의 행복에는 도움을 줄 수도 있지만, 소득이 낮고 연령이 높더라도 가족을 포함하여 사회적인 관계에 대한 만족도가 높다면 행복할 수 있다는 결론에 이르렀다. 기초적인 삶을 영위하는 데에 있어 소득과 의료 보장은 중요하다. 그러나 관계망이 취약할 수 있는 1인 가구에 대한 지원 제도를 마련할 때는 관계적 측면 역시 중요하게 고려할 필요가 있다. 또한, 이들에게 부족한 문화와 여가 생활을 채워 줄 수 있는 방안도 마련해야 한다.
본 연구에서는 양적 데이터를 통해 1인 가구의 행복을 살펴봤지만 숫자에는 드러나지 않는 개인마다 천차만별인 수많은 어려움이 있고, 그것을 해결하는 방법 또한 여러 가지이기 때문에 양적 연구와 더불어 질적 연구를 통해서 좀더 보편적이고 실용적인 지원책을 강구하는 노력이 필요하다. 1인 가구뿐 아니라 우리 주변의 취약 계층에 조금더 관심을 가지고 나아가다 보면 언젠가 사회는 바뀌어 있을 것이다. 우리의 힘으로 함께 살기 좋은 터전을 가꾸어 나가길 희망한다.