단순회귀분석 - 이변량 자료 분석에서 컴퓨터에 의한 회귀 곡선의 추정

작성자cardiomoon|작성시간12.01.29|조회수4,416 목록 댓글 1

안선생님 책의 제 10장 단순회귀분석을 보면 cars데이타에서 자동차의 속도와 거리의 모델이 나온다.


> cars=read.csv("cars.csv")

> tail(cars)

   speed dist

45    23   54

46    24   70

47    24   92

48    24   93

49    24  120

50    25   85

> out=lm(dist~speed,data=cars)

> plot(dist~speed,data=cars,col="blue")

> abline(out,lty="dotted",col="blue")



안선생님께서는 이 그래프에서 speed와 dist가 2차식의 패턴을 보이고 speed가 증가하면 dist의 퍼진 정도가 점점 커지므로 sqrt변환 또는 로그변환을 해서 다시 회귀분석을 했었다.


나처럼 통계에 문외한인 사람도 조금 더 확실하게 두 변수 사이의 관계를 파악하도록 컴퓨터가 회귀곡선을 추정하도록 하는 방법은 없을까? 분석자가 직선모형, sqrt변환, 로그변환 등 회귀모형을 설정하지 않더라도 컴퓨터가 적절한 회귀 함수를 찾아주는 방법은 없을까?


이 문제에 대해 허명회교수님의 "탐색적자료분석"에 있는 LOWESS가 그 중 한 방법으로 되어있다.

LOWESS(Locally Weighted Scatterplot Smoother)는 이변량 자료를 작은 윈도우로 나누어 각각의 구간에서 가중선형회귀(weighted linear regression)를 하여 곡선을 구한다. 

R의 함수는 lowess() 이며 사용방법은 

lowess(y~x,f) 이다. 여기서 f의 디폴트 값은 2/3이다. 평활기너비 f가 크면 회귀함수가 직선에 가까운 밋밋한 곡선이 되고(과소적합, under-fitting) f를 작게하면 회귀함수가 휜 정도가 큰 곡선이 된다(과다적합,over-fitting).


cars자료에 LOWESS를 적용하여 그래프를 그려보면 다음과 같다.


> library(MASS)

> s1=lowess(cars$dist~cars$speed)

> plot(dist~speed,data=cars,col="blue")

> lines(s1,col="red")

> abline(out,lty="dotted",col="blue")



이중 파란 점선은 기존의 linear regression라인이고 빨간선인 lowess에 의한 회귀곡선이다. 

이러한 방법을 통해 통계 전문가가 아닌 일반인에게도 비교적 정확하고 객관적으로 비모수적 회귀곡선을 얻게 해준다.

두개의 회귀선을 비교해보니 역시 dist ~speed의 관게는 이차식인것이 저명해진다.


안선생님 책의 정답인 y-0.39675^2*x^2 곡선과 상당히 유사하다.


> s1=lowess(cars$dist~cars$speed)

> plot(dist~speed,data=cars,col="blue")

> lines(s1,col="red")

> curve(0.39675^2*x^2,lty="dotted",col="blue",add=T)






Lowess에 대한 자세한 이론적 근거 및 공식 등은 생략했읍니다. 

 


  



 

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 작성자안재형 | 작성시간 12.01.29 nonparametric regression까지 영역을 넓히셨군요^^
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼