상관과 회귀

카테고리 없음|2014. 6. 19. 12:34
상관과 회귀


R을 이용해서 확인하기


날씨에 따른 콘서트 관객수의 상관성 분석


해가 나는 시간에 따라 콘서트 관객 수가 늘어날 것인지 줄어들 것 인지를 알아보자.
날씨에 대한 데이터와 관객 수에 대한 데이터가 있다.

sun(시간) 1.9 2.5 3.2 3.8 4.7 5.5 5.9 7.2
관객 수(100명) 22 33 30 42 38 49 42 55

기존에 있는 통계는 일변량 데이터(univariate data)를 이용한 통계다.
그러나 날씨와 관객 수의 관련성을 분석하기 위해서는 다른 방식으로 접근을 해야한다.

일변량 데이터
단일 변수의 도수나 확률
대상이 하나 ex) 도박에서 확률 등
데이터 집합 사이에 존재하는 연결고리에 대해서는 설명할 수 없다.
     
다른 방식의 접근은
바로, 이변량 데이터(bivariate data)를 이용하는 것이다.
이변량 데이터를 이용하면 해가 나는 시간에 따른 관객 수의 변화에 대해 연관성을 찾을 수 있다.

이변량 데이터란?
각 관측에 대해 하나가 아닌 두 개의 변수 값을 말해 준다.
변수 중에서 하나가 어떤 식으로 통제되거나 다른 변수를 설명하는 데 사용되면, 
그것은 독립(independent)변수 or 설명(explanatory)변수.
다른 변수는 종속(dependent)변수 or 반응(response)

여기서
관객 수를 예측하기 위해 해가 나는 시간을 사용하려고 했으니
해볕시간은 독립변수이고 관객 수는 종속변수이다.

이변량 데이터를 시각화

 


 

시각화하는 방법은 그래프를 이용하는 것으로 

산포 다이어그램(scatter diagram) or 산점도(scatter plot) 을 이용한다.


 

 


시각화 방법
1. 수직축과 수평축을 그린다.
2. 각 변수를 x, y축에 대응시킨다.
   보통 x축은 독립변수, y축은 종속변수
3.각 관측에 따른 값들을 그려 넣는다.

그래프를 그리는 방법을 따라서 가지고 있는 데이터를 이용해 그리면
해가 날 시간이 독립변수니까 x축
관객 수가 종속변수이므로 y축이 된다.

R을 이용해서 산점도 구해보자.

> dfrm <- read.table("C:/Users/ok/Desktop/2.txt")

> print(dfrm)

   V1 V2

1 1.9 22

2 2.5 33

3 3.2 30

4 3.8 42

5 4.7 38

6 5.5 49

7 5.9 42

8 7.2 55

위에 텍스트파일에 있는 이변량 데이터를 불러 왔다.

> plot(dfrm)
plot() 을 이용해서 가지고 있는 데이터로 산점도를 만들었다.


위에 축의 이름 등을 수정해서 알기 쉽게 바꿨다.


> plot(dfrm$V1, dfrm$V2, xlab="햇볕",ylab="관객 수", main="야외콘서트와 햇볕")
x축, y축, x축이름,y축이름,그래프 명 식으로 나열하면 된다.



위와 같이 그래프가 나왔다.
그래프를 보면 데이터 점들이 직선 형태로 시간에 따라 관객 수가 증가 되는 형태처럼 보인다.
즉 날씨가 좋을수록 콘서트에 참석하는 관객 수가 많을 거라고 기대할 수 있다.

산점도의 특징
데이터의 실제 패턴을 보여준다.
두 변수 사이에 존재하는 연결고리를 좀 더 명확하게 시각화 한다.
짝을 이룬 값들 사이에 존재하는 상관을 보여준다.
상관 = 변수들 사이에 존재하는 수학적 관계.

상관은 여러 종류가 있는데, 그 중에서 위와 같이 직선으로 보여지면 선형(linear)라고 한다.

 

선형 상관의 종류
  1. 양수선형상관
    x축의 낮은 값들이 y축의 낮은 값들과 대응하고 x축의 높은 값들이 y축의 높은 값들과 대응하는 것.
    -> x가 커지면 y도 커지는 형태

  2. 음수성현상관
    x축의 낮은 값들이 y축의 높은 값들과 대응하고, x축의 높은 값들이 y축의 낮은 값들과 대응하는 것.
    -> x가 커지면 y는 작아지는 형태

  3. 상관없음
    x의 값과 y의 값이 무작위 패턴을 형성


지금까지 한 산점도로 우리는 날씨와 관객 수가 상관성이 있다고 보았다.
그럼 날씨를 이용해서 관객 수를 예측할 수 있을까?

회귀분석

 


 날씨를 이용해서 관객 수 예상하기


산점도에 있는 점들 사이를 관통하는 직성을 긋는 방법으로 추측할 수 있다.

(선형상관일 경우 직선)

아래는 그 선을 그은 것이다.

> a <- lm(dfrm$V2~dfrm$V1)

lm(aa~bb)

      aa는 예측값, bb는 독립변수

> abline(a,col='red')
abline()은 최략적합선 혹은 회귀선을 그래프에 그려준다.


그래프를 수정해 보았다.
> plot(dfrm$V1, dfrm$V2, xlab="햇볕",ylab="관객 수", main="야외콘서트와 햇볕",xlim=c(0,8),ylim=c(0,60))
축의 범위값들을 변경했다.
xlim=c(x,y)는 x축의 범위를 x부터 y로 정해준다. ylim의 경우는 y축의 범위를 정해준다.


선을 긋는 방식으로는 추측에 불과하다는 것이다.(단지 손으로 긋는 방식일 경우)
즉, 항상 맞는게 아니고 저 선에 맞지 않는 결과가 발생할 수 도 있다. 
그렇기 때문에 결과를 항상 의심해야 하는 상황이 발생한다.
(단 위에는 프로그램이기 때문에 어떠한 알고리즘으로 선을 그어서 신뢰가능)

선을 나타내는 방정식을 이용

y = a+bx라는 형태의 방정식을 사용한다.

x = 햇볕이 날 것으로 예상되는 시간
y = 그에 상응 하는 관객 수

각각의 데이터 값들이 선에 근접한 거리에 놓을 수 있도록 하는 방식이다.
 


그러나 문제가 있다.
모든 거리를 더하면 값들이 서로 상쇄해서 남는 것이 없게 된다는 것.

그래서 제곱오차의 합(sum of squared errors)을 사용한다.

분산과 같은 개념이다.
이러면 음수가 발생하지 않으므로 상쇄되지 않는다.

즉, SSE가 최소가 되는 y = a+bx를 구하는 것이 신뢰할 만한 선을 구하는 것이다.

최량적합선을 위한 방적식 찾기

기울기 b는 


식은 복잡해 보이지만 실상은 단순하다.

는  평균값을 의미 


위에서 구했던 최량적합선은 위 과정을 거친 결과였다. 그리고 이렇게 결과는 회귀선(regression line)이라고 부른다.
확인해보자.

lm(aa~bb)

      aa는 예측값, bb는 독립변수

lm으로 구했는데, aa부분에 종속변수, bb는 독립변수를 넣으면 된다.
a로 받았기 때문에 그것을 보면 

15.728은 y = a+bx에서 a
5.336은 y = a+bx에서 b(기울기)

좀 더 상세히 내용을 보고 싶다면 summary()를 이용하면 된다.

선을 그릴 때의 정보, 분위수, 그래프 방정식 정보 등을 볼 수 있다.

여기서 가장 중요한 것은 R-squared와 p-value를 알 수 있다는 것이다.

* 처음 결정계수는 전체에 대한 결정계수, 두번째 adjusted 결정계수는 일부 이상값 제외한 결정계수.

* p-value는 0.05보다 작으므로 통계적 의미가 있다.

상관 계수
위에 결과를 신뢰할 만한 결과인지를 판단할 기준이 필요하다.
그 기준이 상관 계수이다.
회귀선이 데이터에 얼마나 잘 들어맞는지를 측정하는 방법.

많이 위 부분에서 언급을 했었는데
음수선형상관, 양수선형상관, 무상관 에 대해서 말했었다.
그 기준이 점이 r(상관 계수)값이 음수, 양수, 0 인지를 가지고 판단한다.

 = 표본에서 x의 표준편차

 = y의 표준편차

b는 기울기

구하면 r = 0.91정도 나온다.

R을 이용해서 상관 계수를 구해보면

피어슨 상관 계수 r


여기서 t = 5.60, p값은 0.001이므로 두 변수 간에는 상관관계가 있다고 판단.
이때 상관 계수는 0.916으로 양의 상관관계(양수상관관계)를 띈다고 할 수 있다.

상관계수를 구하는 방식도 여러가지가 있다.

참고 : headfirst statistics
         R cookbook


댓글()