이번에는 종교가 있는 사람들이 종교가 없는 사람들보다 이혼을 덜 하는지 분석해 보겠습니다. 먼저 종교, 혼인 상태 두 변수를 검토하고 전처리한 후 변수 간 관계를 분석하겠습니다.
분석 절차
1. 변수 검토 및 전처리
-종교, 혼인상태
2. 변수 간 관계 분석
-종교 유무에 따른 이혼율 표 만들기, 그래프 만들기
종교 변수 검토 및 전처리하기
1. 변수 검토하기
class(welfare$religion)
[1] "numeric"
table(welfare$religion)
1 2
8047 8617
2. 전처리
코드북의 종교 변수에 대한 정보를 바탕으로 전처리를 하겠습니다. 앞의 출력 결과를 보면 1과 2외에 다른 값이 존재하지 않습니다. 이상치를 결측 처리하는 작업은 생략하고 값의 의미를 이해할 수 있도록 종교 유무에 따라 문자를 부여하겠습니다. 출력 결과를 보면 종교가 있는 사람이 8047명, 종교가 없는 사람이 8617명이라는 것을 알 수 있습니다.
# 종교 유무 이름 부여
welfare$religion <- ifelse(welfare$religion == 1, "yes", "no")
table(welfare$religion)
no yes
8617 8047
qplot(welfare$religion)
혼인 상태 변수 검토 및 전처리하기
1. 변수 검토하기
class(welfare$marriage)
[1] "numeric"
table(welfare$marriage)
0 1 2 3 4 5 6
2861 8431 2117 712 84 2433 26
2. 파생변수 만들기 - 이혼 여부
코드북의 혼인 상태 변수에 대한 정보를 보면 배우자가 있을 경우1, 이혼했을 경우 3으로 코딩되어 있습니다. 이 값을 이용해 이혼 여부를 나타내는 변수를 만들겠습니다.
# 이혼 여부 변수 만들기
welfare$group_marriage <- ifelse(welfare$marriage == 1, "marriage",
ifelse(welfare$marriage == 3, "divorce", NA))
table(welfare$group_marriage)
divorce marriage
712 8431
table(is.na(welfare$group_marriage))
FALSE TRUE
9143 7521
qplot(welfare$group_marriage)
출력 결과를 보면 결혼 상태인 사람은 8431명, 이혼한 사람은 712명이라는 것을 알 수 있습니다. 둘 중 어디에도 속하지 않아 결측치로 분류된 경우가 7521명 있습니다. 이들은 이후 분석에서 제외하겠습니다.
종교 유무에 따른 이혼율 분석하기
1. 종교 유무에 따른 이혼율 표 만들기
종교 유무에 따른 이혼율 표를 만들겠습니다. 먼저 종교 유무 및 결혼상태별로 나눠 빈도를 구한 뒤 각 종교 유무 집단의 전체 빈도로 나눠 비율을 구합니다. 비율은 round()를 이용해 소수점 첫째 자리까지 표현되도록 합니다.
religion_marriage <- welfare %>%
filter(!is.na(group_marriage)) %>%
group_by(religion, group_marriage) %>%
summarise(n = n()) %>%
mutate(tot_group = sum(n)) %>%
mutate(pct = round(n/tot_group*100, 1))
religion_marriage
# A tibble: 4 x 5
# Groups: religion [2]
religion group_marriage n top_group pct
<chr> <chr> <int> <int> <dbl>
1 no divorce 384 4602 8.3
2 no marriage 4218 4602 91.7
3 yes divorce 328 4541 7.2
4 yes marriage 4213 4541 92.8
dplyr()의 count()는 집단별 빈도를 구하는 함수입니다. count()를 이용하고, 비율을 구하는 mutate()를 하나로 합쳐서 아래와 같은 방식으로도 비율표를 만들 수 있습니다.
religion_marriage <- welfare %>%
filter(!is.na(group_marriage)) %>%
count(religion, group_marriage) %>%
group_by(religion) %>%
mutate(pct = round(n/sum(n)*100, 1))
religion_marriage
# A tibble: 4 x 4
# Groups: religion [2]
religion group_marriage n pct
<chr> <chr> <int> <dbl>
1 no divorce 384 8.3
2 no marriage 4218 91.7
3 yes divorce 328 7.2
4 yes marriage 4213 92.8
2. 앞에서 만든 표에서 이혼에 해당하는 값만 추출해 이혼율 표를 만들겠습니다.
# 이혼 추출
divorce <- religion_marriage %>%
filter(group_marriage == "divorce") %>%
select(religion, pct)
divorce
# A tibble: 2 x 2
# Groups: religion [2]
religion pct
<chr> <dbl>
1 no 8.3
2 yes 7.2
3. 그래프 만들기
이혼율 표를 이용해 그래프를 만들겠습니다.
ggplot(data = divorce, aes(x = religion, y = pct)) + geom_col()
이혼율은 종교가 있는 경우 7.2%, 종교가 없는 경우 8.3%로 나타났습니다. 따라서 종교가 있는 사람들이 이혼을 덜 한다고 볼 수 있습니다.
연령대 및 종교 유무에 따른 이혼율 분석하기
앞에서는 전체를 대상으로 종교 유무에 따른 이혼율을 분석했습니다. 이번에는 종교 유무에 따른 이혼율이 연령대별로 다른지 알아보겠습니다.
1. 연령대별 이혼율 표 만들기
우선 이혼율이 연령대에 따라 다른지 알아보겠습니다. 연령대 및 결혼 상태별 비율표를 만든 다음, 이혼한 경우를 추출해 이혼율 표를 만들겠습니다.
ageg_marriage <- welfare %>%
filter(!is.na(group_marriage)) %>%
group_by(ageg, group_marriage) %>%
summarise(n = n()) %>%
mutate(tot_group = sum(n)) %>%
mutate(pct = round(n/tot_group*100,1))
ageg_marriage
# A tibble: 6 x 5
# Groups: ageg [3]
ageg group_marriage n tot_group pct
<chr> <chr> <int> <int> <dbl>
1 middle divorce 437 4918 8.9
2 middle marriage 4481 4918 91.1
3 old divorce 273 4165 6.6
4 old marriage 3892 4165 93.4
5 young divorce 2 60 3.3
6 young marriage 58 60 96.7
count()를 이용하고, 비율을 구하는 mutate()를 하나로 합쳐서 아래와 같은 방식으로도 비율표를 만들 수 있습니다.
ageg_marriage <- welfare %>%
filter(!is.na(group_marriage)) %>%
count(ageg, group_marriage) %>%
group_by(ageg) %>%
mutate(pct = round(n/sum(n)*100, 1))
ageg_marriage
# A tibble: 6 x 4
# Groups: ageg [3]
ageg group_marriage n pct
<chr> <chr> <int> <dbl>
1 middle divorce 437 8.9
2 middle marriage 4481 91.1
3 old divorce 273 6.6
4 old marriage 3892 93.4
5 young divorce 2 3.3
6 young marriage 58 96.7
출력 결과를 보면 이혼율이 연령대별로 다르다는 것을 알 수 있습니다. 또한 초년의 경우 결혼하거나 이혼한 사례가 적다는 것을 알 수 있습니다. 초년은 사례가 부족해 다른 연령대와 비교하기에 적합하지 않으므로 이후 분석 잡업에서 제외하겠습니다.
2. 연령대별 이혼율 그래프 만들기
앞에서 만든 표에서 초년을 제외하고, 이혼을 나타내는 값만 추출해 그래프를 만들겠습니다. 출력된 그래프를 보면 노년보다 중년의 이혼율이 더 높다는 것을 알 수 있습니다.
# 초년 제외, 이혼 추출
ageg_divorce <- ageg_marriage %>%
filter(ageg !="young" & group_marriage == "divorce") %>%
select(ageg,pct)
ageg_divorce
# A tibble: 2 x 2
# Groups: ageg [2]
ageg pct
<chr> <dbl>
1 middle 8.9
2 old 6.6
#그래프 만들기
ggplot(data = ageg_divorce, aes(x = ageg, y = pct)) + geom_col()
3. 연령대 및 종교 유무에 따른 이혼율 표 만들기
종교 유무에 따른 이혼율 차이가 연령대별로 다른지 알아보겠습니다. 먼저 연령대, 종교 유무, 결혼 상태별로 집단을 나눠 빈도를 구한 뒤, 각 집단 전체 빈도로 나눠 비율을 구합니다. 그런 다음, 이혼에 해당하는 값만 추출해 연령대 및 종교 유무별 이혼율 표를 만들겠습니다.
# 연령대, 종교 유무, 결혼 상태별 비율표 만들기
ageg_religion_marriage <- welfare %>%
filter(!is.na(group_marriage)& ageg != "young") %>%
group_by(ageg, religion, group_marriage) %>%
summarise(n = n()) %>%
mutate(tot_group = sum(n)) %>%
mutate(pct = round(n/tot_group*100,1))
ageg_religion_marriage
# A tibble: 8 x 6
# Groups: ageg, religion [4]
ageg religion group_marriage n tot_group pct
<chr> <chr> <chr> <int> <int> <dbl>
1 middle no divorce 260 2681 9.7
2 middle no marriage 2421 2681 90.3
3 middle yes divorce 177 2237 7.9
4 middle yes marriage 2060 2237 92.1
5 old no divorce 123 1884 6.5
6 old no marriage 1761 1884 93.5
7 old yes divorce 150 2281 6.6
8 old yes marriage 2131 2281 93.4
count()를 이용하고, 비율을 구하는 mutate()를 하나로 합쳐서 아래와 같은 방식으로도 비율표를 만들 수 있습니다.
ageg_religion_marriage <- welfare %>%
filter(!is.na(group_marriage) & ageg != "young") %>%
count(ageg, religion, group_marriage) %>%
group_by(ageg, religion) %>%
mutate(pct = round(n/sum(n)*100, 1))
ageg_religion_marriage
# A tibble: 8 x 5
# Groups: ageg, religion [4]
ageg religion group_marriage n pct
<chr> <chr> <chr> <int> <dbl>
1 middle no divorce 260 9.7
2 middle no marriage 2421 90.3
3 middle yes divorce 177 7.9
4 middle yes marriage 2060 92.1
5 old no divorce 123 6.5
6 old no marriage 1761 93.5
7 old yes divorce 150 6.6
8 old yes marriage 2131 93.4
# 연령대 및 종교 유무별 이혼율 표 만들기
df_divorce <- ageg_religion_marriage %>%
filter(group_marriage == "divorce") %>%
select(ageg, religion, pct)
df_divorce
# A tibble: 4 x 3
# Groups: ageg, religion [4]
ageg religion pct
<chr> <chr> <dbl>
1 middle no 9.7
2 middle yes 7.9
3 old no 6.5
4 old yes 6.6
4. 연령대 및 종교 유무에 따른 이혼율 그래프 만들기
앞에서 만든 이혼율 표를 이용해 그래프를 만들겠습니다. 종교 유무에 따라 막대 색깔을 다르게 표현하기 위해 fill 파라미터에 religion을 지정합니다,. geom_col()의 position 파라미터를 "dodge"로 설정해 막대를 분리합니다.
ggplot(data = df_divorce, aes(x = ageg, y = pct, fill = religion)) +
geom_col(position = "dodge")
출력된 표와 그래프를 보면 노년은 종교 유무에 따른 이혼율 차이가 0.1%로 작고, 오히려 종교가 있는 사람들의 이혼율이 더 높다는 것을 알 수 있습니다. 반면, 중년은 종교가 없는 사람들의 이혼율이 1.8% 더 높다는 것을 알 수 있습니다.
'R > 쉽게 배우는 R 데이터분석' 카테고리의 다른 글
힙합 가사 텍스트 마이닝 (0) | 2020.03.10 |
---|---|
한국인의 삶을 파악하라! -09 (0) | 2020.03.05 |
한국인의 삶을 파악하라! -07 (0) | 2020.03.04 |
한국인의 삶을 파악하라! -06 (0) | 2020.03.04 |
한국인의 삶을 파악하라! -05 (0) | 2020.03.04 |