여기에서는 R을 사용하여 선형 회귀분석을 실습해 본다. 아래 실습의 자료는 Machine Learning with R(2nd Ed. p.263)를 참고했으며, 상세한 설명을 보고 싶은 분은 원문을 참고하기를 추천한다. 저자가 제공하는 깃허브 사이트는 아래와 같다.
https://github.com/PacktPublishing/Machine-Learning-with-R-Second-Edition
[선형회귀를 이용한 의료비 예측]
1. 목적: 환자 데이터를 이용해 인구 세그먼트별로 평균 의료비를 추정하기
2. 사용대상: 보험회사가 각 인구대상별로 의료비를 추정하는데 사용
Working Directory 설정하기
setwd("D:/Rpractice") # / 대신 \\을 쓸 수 있음
# 한글명이 없을 수록 에러발생이 최소화됩니다.
# 데이터 파일을 해당 폴더 안에 넣으면 코드 실행에 편리합니다.
Working Directory 확인
getwd()
데이터
이 실습은 환자 데이터를 이용해서 인구 세그먼트별로 평균 의료비를 추정하며, 이를 위해 보험회사가 취합한 나이, 성, BMI, 흡연여부, 지역, 비용 데이터를 사용한다. 데이터는 아래에서 다운받을 수 있다.
데이터 로딩
insurance <- read.csv("insurance.csv", stringsAsFactors = TRUE)
- 데이터가 어떻게 구성되어 있는지 확인해보세요.
str(insurance)
- 회귀모형을 적용하기 전에 정규성(normality)를 확인해보세요.
summary(insurance$charges)
- 히스토그램을 그려보겠습니다.
hist(insurance$charges)
- 지역(region)변수를 살펴보겠습니다.
table(insurance$region)
- 어떻게 우리의 연구를 진행시킬 수 있을지 생각해보세요.
- 지역별 의료지출에 대해서 예측 등...
상관행렬
- 종속변수와 독립변수가 어떤 상관관계가 있는지 살펴보겠습니다.
cor(insurance[c("age", "bmi", "children", "charges")])
- 상관관계 행렬을 살펴보고 어떤 관계가 있는지 생각해 보세요.
- bmi-charges, bmi-age, bmi-charges, children-charges의 관계에 대해서 생각해보세요.
- 위에서 살펴본 상관관계를 그래프를 통해 확인해 보겠습니다.
pairs(insurance[c("age", "bmi", "children", "charges")])
- 눈에 띄는 패턴들을 말씀해 보세요.
- 좀 더 자세히 각 변수들간의 관계를 살펴보겠습니다.
library(psych)
pairs.panels(insurance[c("age", "bmi", "children", "charges")])
- 그래프를 보고 다시한번 각 변수간의 상관관계를 생각해보세요.
- age-children 관계-타원이 늘어질 수록 강한 상관관계
library(ggplot2)
ggplot(insurance, aes(x = bmi, y = charges)) + geom_point()
- 이제 본격적으로 데이터를 모델에 훈련시켜 보겠습니다.
- 단순 회귀분석
reg <- lm(charges~bmi, data=insurance)
summary(reg)
- 신뢰구간 계산
confint(reg, level = 0.95)
'R' 카테고리의 다른 글
[R] GPT-3.5가 답변한 회귀분석 과정 (0) | 2023.11.15 |
---|---|
[R] 데이터 처리 (1) | 2023.10.03 |
[R] 데이터 처리 - 변수 변환 (0) | 2023.09.22 |
[R] 기술 통계 및 그래프 기초 (0) | 2023.09.19 |
[R] 데이터 관리 (0) | 2023.09.18 |
댓글