연구 목적 및 배경 설명

본 보고서는 한국복지패널조사 19차 데이터를 기반으로 연령, 성별, 연령대에 따른 건강 만족도 차이를 분석하는 데 목적이 있습니다. 현대 사회에서 건강은 단순한 신체적 상태를 넘어 주관적 인식과 깊은 관련이 있습니다. 따라서 건강 만족도의 사회적 차이를 파악함으로써 정책적 대응과 사회복지 방향에 기여할 수 있습니다.

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

본 분석에 사용된 데이터는 한국보건사회연구원에서 매년 수집·공개하는 전국 대표 복지 조사인 한국복지패널조사 19차(KOWEPS 2024)의 koweps_h19_2024_beta1.sav 파일이다. 조사 대상은 전국 가구 및 가구원으로, 주요 변수로는 성별, 연령, 연령대, 그리고 주관적 건강 만족도가 포함되어 있습니다. 주요 변수 설명: gender: 성별 (남성, 여성) age: 실제 나이 (연속형 변수) ageg: 연령대 (청년층, 중년층, 노년층) health_sat: 건강 만족도 점수 (1~5점 척도

데이터 정제 및 가공 과정

연구 목적에 맞게 다음과 같은 방식으로 데이터를 정제하고 가공하였습니다. 건강 만족도 평균 계산: 성별, 연령, 연령대별로 평균 건강 만족도를 계산 연령별 추세 시각화: LOESS 방법을 사용하여 연령 증가에 따른 건강 만족도 변화 추세 시각화 범주형 변수 처리: 성별 및 연령대 변수를 factor 처리하고 시각화를 위한 정렬 작업 수행 시각화 작업: ggplot2 패키지를 활용하여 막대그래프 및 추세선을 제작하고, 제목, 색상, 글꼴 등을 통일하여 가독성 확보

raw_data <- read_sav("/Users/wangxiaofan/Desktop/koweps_hpc19_2024_beta1.sav")# 원본 데이터
selected_data <- raw_data[, c("h19_g3", "h19_g4", "p1903_5")]# 대상 열 선택
cleaned_data <- selected_data[complete.cases(selected_data),]# NA 항목의 행 제거

colnames(cleaned_data) <- c("gender", "birth", "heal_sat")# 열 이름 변경
summary(cleaned_data$heal_sat)# 건강 만족도 개요
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.000   3.000   3.000   3.241   4.000   5.000
cleaned_data$gender <- ifelse(cleaned_data$gender == 1, "남성", "여성")# 성별 할당
table(cleaned_data$gender)# 성별 분포
## 
## 남성 여성 
## 5472 7243
summary(cleaned_data$birth)# 출생연도 개요
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1922    1948    1961    1964    1979    2006
cleaned_data$age <- 2025 - cleaned_data$birth# 나이
cleaned_data <- cleaned_data %>%
  mutate(ageg = ifelse(age < 30, "청년층",
                       ifelse(age <= 59, "중년층", "노년층")))# 연령 파생 변수

cleaned_data <- cleaned_data %>%
  mutate(satg = ifelse(heal_sat == c("1", "2"), "청년층",
                       ifelse(heal_sat == "3", "중년층", "노년층")))# 건강 만족도 파생 변수
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `satg = ifelse(...)`.
## Caused by warning in `heal_sat == c("1", "2")`:
## ! longer object length is not a multiple of shorter object length

데이터 분석

1. 성별에 따른 건강 만족도

성별에 따른 건강 만족도를 분석했다.성별 건강 만족도 평균은 gender_sat 내에 할당되었습니다.

gender_sat <- cleaned_data %>%
  group_by(gender) %>%
  summarise(mean_sat_gender = round(mean(heal_sat), 2)) %>%
  arrange(desc(mean_sat_gender))
gender_sat
## # A tibble: 2 × 2
##   gender mean_sat_gender
##   <chr>            <dbl>
## 1 남성              3.36
## 2 여성              3.15

2.나이에 따른 건강 만족도.

나이에 따른 건강 만족도를 분석했다.연령별 건강 만족도 평균은 age_sat 내에 할당됐다.

age_sat <- cleaned_data %>%
  group_by(age) %>%
  summarise(mean_sat_age = mean(heal_sat))
age_sat
## # A tibble: 85 × 2
##      age mean_sat_age
##    <dbl>        <dbl>
##  1    19         4.33
##  2    20         4   
##  3    21         3.98
##  4    22         3.98
##  5    23         3.96
##  6    24         3.84
##  7    25         3.92
##  8    26         3.90
##  9    27         3.99
## 10    28         3.87
## # ℹ 75 more rows

3.연령대별 건강 만족도

연령대에 따른 건강 만족도를 분석했다.연령대별 건강 만족도 평균은 ageg_sat 내에 할당됐다.

ageg_sat <- cleaned_data %>%
  group_by(ageg) %>%
  summarise(mean_sat_ageg = round(mean(heal_sat), 2))
ageg_sat
## # A tibble: 3 × 2
##   ageg   mean_sat_ageg
##   <chr>          <dbl>
## 1 노년층          2.9 
## 2 중년층          3.63
## 3 청년층          3.91

4.전반적인 만족도

전반적인 만족도를 분석했습니다.

sat_pct <- cleaned_data %>%
  group_by(satg) %>%
  summarise(n = n()) %>%
  mutate(total = sum(n)) %>%
  mutate(pct_sat = round(n/total*100, 2))
sat_pct
## # A tibble: 3 × 4
##   satg       n total pct_sat
##   <chr>  <int> <int>   <dbl>
## 1 노년층  7485 12715    58.9
## 2 중년층  3752 12715    29.5
## 3 청년층  1478 12715    11.6

도면 작성

1.성별에 따른 건강 만족도

남성의 건강 만족도는 약 3.36, 여성의 건강 만족도는 약 3.15로 계산됐다.양자 차이는 약 0.21로 남성의 건강 만족도가 높다는 것을 알 수 있다.

ggplot(data = gender_sat, aes(x = reorder(gender, -mean_sat_gender), y = mean_sat_gender)) + 
  geom_col(stat = "identity", fill = c("#104680", "#6dadd1"), width = 0.4) + 
  geom_text(aes(label = mean_sat_gender), vjust = -1.5) + 
  scale_y_continuous(limits = c(0, 4)) + 
  ggtitle("성별별 건강 만족도") + 
  theme(plot.title = element_text(face = "bold", hjust = 0.5, size = 15, color = "darkblue")) + 
  labs(x = "성별", y = "건강 만족도")
## Warning in geom_col(stat = "identity", fill = c("#104680", "#6dadd1"), width =
## 0.4): Ignoring unknown parameters: `stat`

theme(text = element_text(family = "NanumGothic"))
## List of 1
##  $ text:List of 11
##   ..$ family       : chr "NanumGothic"
##   ..$ face         : NULL
##   ..$ colour       : NULL
##   ..$ size         : NULL
##   ..$ hjust        : NULL
##   ..$ vjust        : NULL
##   ..$ angle        : NULL
##   ..$ lineheight   : NULL
##   ..$ margin       : NULL
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi FALSE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  - attr(*, "class")= chr [1:2] "theme" "gg"
##  - attr(*, "complete")= logi FALSE
##  - attr(*, "validate")= logi TRUE

2. 연령에 따른 건강 만족도

이는 연령 증가에 따른 건강 만족도의 변화를 보여주는 그래프입니다.

초기에는 건강 만족도가 점차 하락하지만, 약 80세 이후 다시 상승하는 경향이 나타납니다.

ggplot(data = age_sat, aes(x = age, y = mean_sat_age)) + 
  geom_line() + 
  stat_smooth(color = "#FC4E07", method = "auto") + 
  ggtitle("연령에 따른 건강 만족도") + 
  theme(plot.title = element_text(face = "bold", hjust = 0.5, size = 15, color = "darkblue")) + 
  labs(x = "연령", y = "건강 만족도")
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

theme(text = element_text(family = "NanumGothic"))
## List of 1
##  $ text:List of 11
##   ..$ family       : chr "NanumGothic"
##   ..$ face         : NULL
##   ..$ colour       : NULL
##   ..$ size         : NULL
##   ..$ hjust        : NULL
##   ..$ vjust        : NULL
##   ..$ angle        : NULL
##   ..$ lineheight   : NULL
##   ..$ margin       : NULL
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi FALSE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  - attr(*, "class")= chr [1:2] "theme" "gg"
##  - attr(*, "complete")= logi FALSE
##  - attr(*, "validate")= logi TRUE

3. 연령대별 건강 만족도

아래와 같이, 청년층의 건강 만족도가 가장 높으며 약 3.91, 중년층은 약 3.63,

노년층은 가장 낮아 약 2.90입니다. 청년층과 노년층의 차이는 약 0.99입니다.

ggplot(data = ageg_sat, aes(x = reorder(ageg, -mean_sat_ageg), y = mean_sat_ageg)) + 
  geom_col(stat = "identity", fill = c("#6dadd1", "#f6b293", "#b72230"), width = 0.4) + 
  geom_text(aes(label = mean_sat_ageg), vjust = -1.5) + 
  scale_y_continuous(limits = c(0, 5)) + 
  ggtitle("연령대별 건강 만족도") + 
  theme(plot.title = element_text(face = "bold", hjust = 0.5, size = 15, color = "darkblue")) + 
  labs(x = "연령대", y = "건강 만족도")
## Warning in geom_col(stat = "identity", fill = c("#6dadd1", "#f6b293",
## "#b72230"), : Ignoring unknown parameters: `stat`

theme(text = element_text(family = "NanumGothic"))
## List of 1
##  $ text:List of 11
##   ..$ family       : chr "NanumGothic"
##   ..$ face         : NULL
##   ..$ colour       : NULL
##   ..$ size         : NULL
##   ..$ hjust        : NULL
##   ..$ vjust        : NULL
##   ..$ angle        : NULL
##   ..$ lineheight   : NULL
##   ..$ margin       : NULL
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi FALSE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  - attr(*, "class")= chr [1:2] "theme" "gg"
##  - attr(*, "complete")= logi FALSE
##  - attr(*, "validate")= logi TRUE

4. 전체 건강 만족도

전반적인 건강 만족도는 다음과 같다.

ggplot(data = sat_pct, aes(x = " ", y = pct_sat, fill = satg)) + 
  geom_bar(stat = "identity") + 
  theme_void() + 
  coord_polar("y", start = 0) + 
  geom_text(aes(label = paste0(round(pct_sat, 1), "%")), position = position_stack(vjust = 0.5), color = "black", size = 5) + 
  ggtitle("전체 건강 만족도") + 
  theme(plot.title = element_text(face = "bold", hjust = 0.5, size = 15, color = "darkblue"))

theme(text = element_text(family = "NanumGothic"))
## List of 1
##  $ text:List of 11
##   ..$ family       : chr "NanumGothic"
##   ..$ face         : NULL
##   ..$ colour       : NULL
##   ..$ size         : NULL
##   ..$ hjust        : NULL
##   ..$ vjust        : NULL
##   ..$ angle        : NULL
##   ..$ lineheight   : NULL
##   ..$ margin       : NULL
##   ..$ debug        : NULL
##   ..$ inherit.blank: logi FALSE
##   ..- attr(*, "class")= chr [1:2] "element_text" "element"
##  - attr(*, "class")= chr [1:2] "theme" "gg"
##  - attr(*, "complete")= logi FALSE
##  - attr(*, "validate")= logi TRUE

#결론

본 연구는 2024년 한국복지패널 데이터를 바탕으로 건강 만족도에 대한 성별, 연령, 연령대 차이를 분석하였습니다. 주요 결론은 다음과 같습니다. 1. 성별 차이: 남성의 건강 만족도(3.36)가 여성(3.15)보다 전반적으로 높게 나타났으며, 이는 남성이 자기 건강에 대해 더 긍정적으로 인식함을 시사합니다. 2. 연령별 추세: 연령이 증가할수록 건강 만족도는 전반적으로 감소하며, 특히 중장년층부터 큰 폭으로 하락하다가 80세 이후에는 다소 상승하는 경향이 나타났습니다. 3. 연령대별 비교: 청년층(3.91)의 건강 만족도가 가장 높고, 중년층(3.63), 노년층(2.90) 순으로 뚜렷한 차이를 보였습니다.

이와 같은 분석 결과는 성별과 연령(또는 연령대)이 건강 만족도에 영향을 미치는 중요한 요인임을 보여줍니다. 따라서 향후 건강 정책 및 사회적 지원 체계 수립 시, 노년층과 여성의 주관적 건강 인식을 고려하는 것이 전체 국민의 삶의 질 향상에 기여할 수 있습니다.