분할 선형회귀 분석

자극과 반응 실험을 했다고 하자.
데이터는 다음과 같다.

R> response.var = c(44,66,100,150,265,370,455,605)
R> treat.var = c(1,7,14,21,28,35,42,49)
R> data2=data.frame(treat.var,response.var)
R> plot(data2)


선형 회귀분석을 하려니... 좀 문제가 있어 보인다.
대략 15정도를 기점으로 age <15이하에서 회귀식이 하나, 15이상에서 회귀식이 하나 더 있어 보인다. 회귀식이 직선인 두 개로 쪼개져 보이는 것을 분할 회귀식(Broken Regression)이라고 한다. 15이하의 데이터와 이상의 데이터를 조사해보니, 기울기가 각각 5와 15정도가 나왔다. 그리고 15이하의 회귀식에서 y절편이 대략 30 근처였다. 이상의 정보로 분할 회귀식을 fitting하자.

easyreg 다운로드

zip파일로 된 것을 설치하자. RStudio가 있으면 간편하게 설치할 수 있다.

R> library(easyreg)
R> regplot(data2, model=5, start=c(25,5,15,20))
model=5는 분할 회귀식이다. data2의 첫 번째 열은 '처리' 두 번째 열은 '반응'이다. start는 시뮬레이션의 초기 파라미터다. y=a+bx에서 a와 b에 해당되는 값이 차례대로 들어가고, 세번 째 것은 분할된 지점 이후의 선형 회귀식의 기울기이다. 마지막 것은 분할 지점을 나타낸다. 결과를 보면,

19를 기점으로 회귀식이 분리된다는 시뮬레이션 결과가 제시되었다. 전체적인 fitting을 보니 R^2=0.99이다.
보다 더 구체적인 결과를 보려면 bl함수를 사용한다. Broken Linear Model의 약자다.

R> bl(data2, digits=2)

댓글

이 블로그의 인기 게시물

R에서 csv 파일 읽는 법

xlwings tutorial - 데이터 계산하여 붙여 넣기