# 선형 회귀(Linear Regression)
# 종속 변수 하나와 독립(설명) 변수들 간의 관계를 수식으로 설명/예측하는 방법
# y = a + bx(a, b는 상수)
# x: 독립(설명) 변수, y: 종속 변수
# 데이터 준비
heights <- read.csv('mlwr/heights.csv')
head(heights)
# 아들의 키가 아버지의 키에 영향을 받는가? (유전)
# son: 종속 변수(y축), father: 독립 변수(x축)
# 아버지 키(father)의 분포
summary(heights)
hist(heights$father)
hist(heights$son)
boxplot(heights$father)
# 산점도 그래프(scatter plot)
plot(heights)
# 산점도 그래프(scatter plot)
plot(heights, col = rgb(0.7,0.2,0.7,0.9)) #rgb( red, green, blue, 불투명도)
abline(h = mean(heights$son)) ## abline(): 보조선, h : 수평(horizontal) 보조선, v : 수직(vertical) 보조선
abline(v = mean(heights$father),lty = 2)
#lty : 점선?, 그래프 위에 덮어쓰기가 안되므로 초기화 해주어야 함
#lm() 함수 : linear regression model(선형 회귀 모델)
>lm_heights <- lm(formula = son ~ father, data = heights) # formula = 종속변수 ~ 독립변수
> lm_heights
Call:
lm(formula = son ~ father, data = heights)
Coefficients:
(Intercept) father
86.1026 0.5139
y절편 기울기
> summary(lm_heights)
Call:
lm(formula = son ~ father, data = heights)
Residuals: # 오차/잔차
Min 1Q Median 3Q Max
-22.5957 -3.8614 0.0091 4.1230 22.7570
Coefficients: p-value
Estimate / Std. Error/t value/Pr(>|t|) - 우연히 맞을 확률 , 유의수준(p<0.001)일 때 통계적으로 유의하다
(Intercept) 86.10257 4.65558 18.49 <2e-16 ***
father 0.51391 0.02706 18.99 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 6.191 on 1076 degrees of freedom
Multiple R-squared: 0.2511, Adjusted R-squared: 0.2504 본 회귀식은1078개의 데이터 중 25% 정도만 설명한다,
1.0에 가까울수록 모델이 데이터를 더 완벽히 설명
F-statistic: 360.8 on 1 and 1076 DF, p-value: < 2.2e-16
# 선형 모델에서 찾은 coefficient(계수)들을 이용해서
# 선형 모델 그래프를 추가
abline(a = 86.10257, b = 0.51391)
# ggplot2를 이용한 그래프
library(ggplot2)
ggplot(data = heights, mapping = aes(x = father, y = son)) +
geom_point(color = rgb(0.7,0.2,0.5,0.5))+
geom_hline(yintercept = mean(heights$son),
linetype = 'dashed', color = 'darkblue')+
geom_vline(xintercept = mean(heights$father),
linetype = 'dashed', color = 'darkblue')+
stat_smooth(method = 'lm') # 흐린 부분들은 잔차들의 오차범위 // lm : 선형회귀모델을 사용해 직선 그래프를 그려줌
# 선형 회귀 모델식 : y = a + bx
# a = mean(y) - b * mean(x)
# 선형 회귀 모델식은 점 (x의평균,y의평균)을 지나가는 점이다.
# b = Cov(x,y) / Var(x)
m_x <- mean(heights$father) # 아버지 키의 평균
m_y <- mean(heights$son) # 아들 키의 평균
cov_xy <- cov(heights$father, heights$son) # x와 y의 공분산(covariance)
var_x <- var(heights$father) # 분산(variance)
b <- cov_xy/ var_x
a <- m_y-b*m_x
#Pearson's correlation Coefficient( 상관계수 )
cor(heights$father, heights$son)
# 피어슨 상관 계수의 절대값이 1에 가까울수록 상관관계가 높고,
# -1 <= Cor =<= 1,
0에 가까울수록 상관관계가 없다.
'R > R 머신러닝' 카테고리의 다른 글
R25_수치 데이터 예측 : : 회귀방법 3 - 미국 의료비 데이터 (0) | 2019.11.06 |
---|---|
R24_수치 데이터 예측: 회귀 방법2 - 챌린저호의 사고 조사 데이터 (0) | 2019.11.05 |
R22_버섯 분류 - 나이브 베이즈 방법 (0) | 2019.11.01 |
R21_규칙 기반 분류 (Classification Rules) (0) | 2019.10.31 |
R20_ 분할 정복 _ 의사결정 트리( Decision Tree ) (0) | 2019.10.30 |