내가 하는 통계 분석/R

[내가 하는 통계 분석] 회귀분석(1). 회귀분석(Regression) in R

산격동 너구리 2021. 4. 3. 10:05

안녕하세요, 산격동 너구리입니다.

 

 

이번 포스팅은,

 

R을 이용한 "회귀분석"입니다.

 

회귀분석은 너무 유명해서 이미 참고할만한 도서, 블로그 등 좋은 자료가 충분하다고 생각합니다.

 

이론은 충분하니까 저는 최대한 풀어서 쓰도록 하겠습니다.


개요

 

회귀분석이란?

 

독립 변수와 종속 변수 간의 관계를 가장 잘 나타내는 함수를 만드는 것입니다.

 

회귀분석을 통해 적절한 함수를 만들 수 있다면,

 

    1) 독립 변수만으로도 종속변수를 예측할 수 있고,

 

    2) 독립 변수가 종속 변수에 어떤 영향을 끼치는지 설명할 수 있습니다.

 

 

가정

 

회귀분석의 가정은 총 4가지가 있습니다.

 

    1) 선형성 : 독립 변수와 종속 변수는 선형 관계를 가진다.

 

    2) 등분산성 : 잔차의 분산이 동일하다.

 

    3) 정규성 : 잔차는 정규성을 가진다.

 

    4) 독립성 : 잔차는 독립적이다.

 

* 잔차 : $ y $ - $ \hat{y} $

 

$ y $ : 실제 관측값

 

$ \hat{y} $ : 회귀분석에서 얻은 함수식에 독립 변수를 대입해서 얻은 결과

 

 

 가설

 

회귀분석은 2가지 검정이 포함되어 있습니다.

 

F 검정과 T 검정인데요, 각각의 검정은 비슷하면서도 조금 다릅니다.

 

회귀분석 결과를 얻으면, F검정을 먼저 확인합니다.

 

F검정은 회귀모형 전체에 대한 검정입니다. 가설은, 

 

$H_0$ : $ \beta_1 = \beta_2 = \cdots = \beta_k = 0 $

 

$H_1$ : 적어도 하나의 $\beta$는 0이 아니다.

 

 

T검정은 독립변수 각각에 대한 검정입니다. 가설은, 

 

$H_0$ : $ \beta_k = 0 $

 

$H_1$ : $ \beta_k \neq 0 $

 


예제

 

14. [산격동 너구리] 회귀 분석 예제.csv
0.00MB

R의 datarium이라는 라이브러리에서 Marketing이라는 데이터셋입니다.

 

총 변수는 4개입니다.

 

1) youtube : 유튜브 광고 투자금액

 

2) facebook : 페이스북 광고 투자금액

 

3) newspaper : 뉴스 광고 투자금액

 

4) sales : 매출액

 

 

간단하게 생각하면, 광고 투자 금액과 매출액의 관계라고 생각하시면 될 것 같네요.

 

데이터 불러오기
## 데이터 불러오기
data = read.csv("F:/잡동사니/산격동 너구리/[수정]/예제 파일/14. [산격동 너구리] 회귀 분석 예제.csv", header = T)

 

가정

 

가정을 확인하고, 분석을 시행하는게 정상적인 순서겠지만...

 

회귀분석의 가정은 잔차가 필요하기 때문에 분석을 먼저 해야 가정을 확인할 수 있습니다.

 

 

하지만 현실에서는 "회귀분석을 위한 데이터"라는건 없습니다.

 

데이터를 보고 어떤 분석을 해야할지 고민해봐야겠죠.

 

그 중 한가지 방법으로 산점도가 있습니다.

pairs(data)

 

저는 주로 종속변수와 독립변수의 관계를 확인합니다. 

 

맨 아랫줄 왼쪽부터 하나씩 보면,

 

1) Youtube 광고 투자금액이 많아질수록 매출액이 늘어나는 형태입니다.

 

2) facebook 광고 투자금액이 많아질수록 매출액이 늘어나는 형태입니다.

 

3) newpaper 광고 투자금액은 확실한 관계가 보이지 않네요.

 

그리고 facebook과 youtube를 비교했을 때, youtube와 sales의 퍼짐 정도가 적네요.

 

따라서, Youtube가 가장 중요한 변수가 될 것이고, newspaper가 가장 의미없는 변수가 될 것 같네요.

 

그리고 Youtube는 약간 곡선 형태인 것 같습니다.

 

이렇게 산점도를 그려보고 빠르게 분석 방향을 생각해볼 수 있습니다.

 

 

회귀분석 결과를 보고, 나머지 가정과 가설에 대해 해석해보겠습니다.

 

회귀분석
## 회귀분석
model1 = lm(sales ~ ., data = data)

실제로 분석 코드는 거의 한줄로 끝이 납니다.

 

 

회귀분석 가정을 확인하는 방법으로는,

 

검정을 통한 가정 확인도 있고, 그래프를 이용해서 간단하게 확인하는 방법도 있습니다.

 

이번 포스팅에서는 그래프를 이용한 가정확인법을 말씀드리겠습니다.

 

## 잔차 그래프 그래기
par(mfrow = c(2,2)) # 2행, 2열로 그래프 표현
                    # 한번에 그래프 4개를 볼 수 있음
plot(model1)

 

첫 번째 그래프는, 기본적인 잔차 그래프입니다.

 

    1) 잔차가 커브 형태네요. 선형성 가정이 의심스럽습니다.

 

    2) 잔차의 퍼짐정도도 조금씩 바뀌는 것 같네요. 등분산성도 조금 의심스럽습니다.

 

두 번째 그래프는, Nomal Q-Q plot, 정규성 확인을 위한 그래프입니다.

 

    점들이 점선에서 벗어난 경우도 좀 있네요. 정규성도 의심스럽습니다.

 

세 번째 그래프는, 잔차 그래프에서 조금 변형한 형태로, 등분산성 확인을 위한 그래프입니다.

 

    분산이 조금씩 변하고 있네요. 마찬가지로 등분산성은 만족되지 않을 것 같네요.

 

네 번째 그래프는, 이상치를 확인하기 위한 그래프입니다.

 

    그래프에 적혀있는 숫자는 이상치로 의심되는 관측치라고 보시면 됩니다.

 

    Cook's distance를 벗어난 점은 없지만, 이상치로 의심되는 점이 조금 있네요.

 

전체적으로, 가정에서 문제가 있어보입니다.

 

이 회귀분석 결과를 그대로 확인하기에는....결과가 약간 의심스럽죠.

 

그래도 상황에 따라 가정을 조금 무시할 때도 있으니, 결과까지 확인해보겠습니다.

 

## 회귀분석 결과
summary(model1)

맨 아래 F 검정 결과, 유의하다고 나왔고.

 

각각의 변수에서도 youtube, facebook에서 유의한 결과가 나왔네요.

 

따라서,

 

    1) 유튜브에 광고를 많이 할수록 매출이 늘어난다.

 

    2) 페이스북에 광고를 많이 할수록 매출이 늘어난다.

 

라는 결과를 얻을 수 있겠네요.

 

설명력을 의미하는 $ R^2$는 0.8972, 수정된 $ R^2$는 0.8956입니다.

 

 

다시 말씀드리지만, 가정에서 문제가 있어보이기 때문에....

 

이 결과를 보는 것은 이론적으로는 의미가 없습니다.

 

아무리 유의하다고 한들, 가정이 충족되지 않았기 때문에 분석 자체가 의미가 없기 때문이죠.

 

 

하지만, 의학계나 사회과학분야처럼 사람과 관련된 데이터는 깔끔하지 않기 때문에

 

그런 분야에서는 가정을 어느정도 무시하는 경향이 있습니다.


회귀분석은 내용이 너무 많네요...

 

분석이 진짜 어려운 점은 정답이 없기 때문이 아닐까...싶습니다.

 

이것으로 이번 포스팅을 마무리하도록 하고,

 

회귀분석은 이어서 계속 해보도록 하겠습니다.

 

이상, 산격동 너구리였습니다.

 

감사합니다.

 

 

 

* 잘못된 정보 및 오타가 포함되어 있을 수 있습니다.

  그대로 받아들이시기보다는 다른 사람의 의견도 참고하셔서 분석하시길 바랍니다.

 

* 포스팅 내용 및 통계 분석 관련 질문은 언제나 환영입니다.

  가능한 선에서 최대한 답변하도록 하겠습니다.