R 회귀분석 (R regression test) Start.

BioinformaticsAndMe




# R을 이용한 단순 선형 회귀분석(simple linear regression test)을 시작해보자.


(회귀분석에 대한 개념정리는 아래의 'Statistic' 카테고리에 있으니, 먼저 선행하고 오면 좋을 듯하다..!)

http://bioinformaticsandme.tistory.com/70?category=808983





# 선형회귀모델 (Linear regression model) 제작

> age=18:29

> age

 [1] 18 19 20 21 22 23 24 25 26 27 28 29

> height= 70:81

 [1] 70 71 72 73 74 75 76 77 78 79 80 81


# 나이에 따른 키를 plot() 함수를 이용하여, 나이에 따른 키의 scatterplot

> plot(x=age, y=height)


# 선형회귀모델의 최적선 구하기
# 좋은 선형회귀 모델이란것은 예측값과 실제 값의 차이를 뜻하는 잔차(Residual error)가 작은 모델
# R에서 회귀분석은 선형모형(linear model)을 쓴다.
# lm(종속변수(결과) ~ 독립변수(원인),데이터)
> res=lm(height~age)
> abline(res)

> res

Call:

lm(formula = height ~ age)


Coefficients:

(Intercept)          age  

     64.928        0.635  


#lm() 함수로 나온 결과는 다음과 같이 해석

intercept (y 절편) : 64.928

age (독립변수의 기울기): 0.635

키 = 0.635 * 나이 + 64.928 

height = 0.635*age + 64.928





# Galton 데이터를 예제로 회귀분석을 해보자.
> install.packages("UsingR")
> library(UsingR)
> data(galton) ; str(galton)

# galton 데이터는 928개의 부모의 키와 아이의 키에 대한 자료이다.
# 이 자료에 포함되어 있는 부모의 키는 아빠의 키와 1.08*엄마의 키의 평균이다.
# 이 자료들의 분포를 살펴보기 위해 화면을 둘로 나누고 히스토그램을 그려본다.

> par(mfrow=c(1,2))
> hist(galton$child, col="blue")
> hist(galton$parent, col="blue")
> par(mfrow=c(1,1))

# 부모의 키와 자녀의 키 사이의 수학적 관계를 나타내는 공식은 회귀분석을 통하여 구할 수 있다.

> out=lm(child~parent, data=galton)
> summary(out)

Call:
lm(formula = child ~ parent, data = galton)

Residuals:
    Min      1Q  Median      3Q     Max 
-7.8050 -1.3661  0.0487  1.6339  5.9264 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 23.94153    2.81088   8.517   <2e-16 ***
parent       0.64629    0.04114  15.711   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.239 on 926 degrees of freedom
Multiple R-squared:  0.2105, Adjusted R-squared:  0.2096 
F-statistic: 246.8 on 1 and 926 DF,  p-value: < 2.2e-16

결과의 마지막 세 줄을 살펴보자. Residual standard error(2.239인치) 라는 것은 이 모형을 사용하여, 부모키로부터 자녀키를 예측했을 때 평균 2.239인치의 오차가 생긴다는 뜻이다. Multiple R-squared가 0.210이라는 것은 이 모형은 자녀키 분산의 21.0%를 설명해준다는 뜻이다. 

# 결과를 보면 y절편(Intercept)이 23.94이고, parent의 기울기는 0.65인 것으로 나타난다.
# 즉 y=0.65x+23.94이다.
# 이를 그래프로 그려보면 다음과 같다.
> plot(child~parent,data=galton)
> abline(out,col="red")


# 위 그림을 ggplot2를 사용해 다시 그려보자.

> library(ggplot2)
> ggplot(data=galton, aes(x=parent,y=child)) +
geom_count() +
geom_smooth(method="lm")






R 회귀분석 (R regression test) End.

BioinformaticsAndMe

'R' 카테고리의 다른 글

R, T-test (R, T검정)  (0) 2018.08.29
R plot (그래픽스)  (0) 2018.08.27
R apply 함수  (0) 2018.08.15
R 상관분석 (R correlation test)  (0) 2018.08.10
막대그래프 (Barplot)  (0) 2018.08.06

+ Recent posts