놀고 싶어요

[R Programming] 회귀분석 - 독립변수가 1개인 회귀분석 본문

R

[R Programming] 회귀분석 - 독립변수가 1개인 회귀분석

챌린지 2021. 5. 19. 16:49

상관분석을하고 의미있는 관계를 찾았다고 해도 해당 관계는 인과관계가 의미하진 않는다.

회귀분석은 인과관계를 설명하는 방법 중 하나이다.

 

 

 

 

회귀분석의 목적

1. 데이터의 관계에 대해서 설명 - 통계적 관점

2. 예측에 활용 - 머신러닝 관점

 

 

 

 

회귀분석

독립변수 x와 종속변수 y의 관계를 설명하는 선형식을 찾는 것 ex) y= ax+b 같은 식

x와 y는 수치형 데이터

(독립변수는 하나 이상의 값이 될 수 있다.)

 

 

 

 

 

 

 


예제) 자전거 대여 건수(Count)는 기온(Temp)와 상관이 있는지 확인

 

 

 

 

1. 키 결합하기 전에 두 데이터 시간 간격이 동일한지 확인해 본다.

 

 

 

weather dataframe 데이터를 시간 단위로 대여건수 평균값을 요약한다.

weather2 <- aggregate(cbind(temp, cum_precipitation, humidity, insolation, sunshine, wind, wind_direction, sea_lvl_pressure, pressure) ~ date+time, data = weather, mean)

str(weather2)

 

aggregate()함수

tilde(~) 기호: ~ 뒤에 있는 컬럼들 기준으로 ~ 앞에 있는 값들을 마지막에 있는 mean (평균) 함수로 집계

집계할 때 사용하는 함수는 마지막 인자인 mean이다.

cbind: 컬럼 방향으로 결합시키는 함수. 데이터 내의 컬럼중 출력값에 포함시키고자 하는 컬럼을 cbind로 묶어줌

 

 

 

 

bike_data2 dataframe 데이터를 일자와 시간대 별로 대여건수를 요약한다.

bike_data3 <- aggregate(Distance ~ Date_out + Time_out, data = bike_data2, length)

str(bike_data3)

 

72 obs: 3일간 24시간, 총 72개 구간에 대해서 데이터가 나타난 건 수, 즉 총 대여 건이 집계된다.

 

 

 

2. 2개의 dataframe 결합

 

 

bike_weather <- inner_join(bike_data3, weather2, by=c('Date_out'='date', 'Time_out'='time'))

Error: Can't join on `x$Date_out` x `y$Date_out` because of incompatible types. ℹ `x$Date_out` is of type <date>>. ℹ `y$Date_out` is of type <character>>.

Date_out은 date type으로 되어있는 오브젝트이고, date는 character라서 오류 발생

-> 같은 성격이 아니므로 비교할 수 없음 

 

 bike_data3$Date <- as.character(bike_data3$Date_out)

Character 성격의 새로운 컬럼 생성해서 입력해준 다음 다시 join을 해줍니다.

 

bike_weather <- inner_join(bike_data3, weather2, by=c('Date'='date', 'Time_out'='time'))

str(bike_weather)

 

 

 

3. 회귀식 구하기

lm(Count ~ temp, data = bike_weather)

lm: linear model

lm(종속변수 y ~ 독립변수, data = 변수)

 

Coefficients:
(Intercept)         temp  
    -320.15        38.79 

기울기 38.79, 절편은 -320.15 -> 선형회귀식 구성하는 값

선형회귀식: Count = temp x 38.79 - 320.15

 

 

 

 

t value  Pr(>|t|)  
-1.540  0.128252
3.993   0.000165
  • t-value와 t-value에 해당하는 확률값 p-value

독립변수 temp에 대한 p-value 0.000165

유의수준 0.05와 비교해보면 독립변수 temp가 종속변수 Count에 대해서 통계적으로 유의하게 영향이 있다.

그 크기는 temp 값의 1 단위 변화에 대해서 회귀계수로 산출된 38.794 정도의 영향력이 있다.

 

 

R-squared:  0.1922, Adjusted R-squared:  0.1801
  • R제곱, Adjusted R제곱

결정계수: 0.1922, 조정된 값: 0.1801

 

Adjusted R-squared: 설명력과 복잡성 간의 트레이드 오프 관계를 감안하여 조정된 값이다.

이 값은 회귀식이 실제 관찰된 값을 얼마나 잘 설명하는 가를 말한다.

데이터 세트에 있는 x값을 회귀식에 넣었을 때 계산된 y값이 실제 데이터에 존재하는 y값 대비해서 얼마나 잘 설명하는지를 말한다. 그래서 흔히들 설명력이라고 말한다.

0~1 사이 값으로 1에 가까울수록 설명력이 높아서 좋은 회귀식으로 평가될 수 있다.

Adjusted R-squared:  0.1801  -> 설명력이 높지는 않다.

 

 

 

 

F-statistic: 15.94 on 1 and 67 DF,  p-value: 0.0001647
  • F 검정통계량 추정치, F-검정의 p-value

이 값은 회귀식 전체에 대한 통계적 유의성을 검정하는 값이다.

앞서 본 독립변수 t에 대한 p-value는 개별 독립변수의 통계적 유의성을 얘기하지만 F에 대한 p-value는 식 전체에 대한 통계적 유의성을 얘기한다.

사전에 설정되어 있는 유의수준과 비교하여 유의수준과 같거나 큰 값이 나오면 통계적 유의성이 없어 회귀관계가 존재하지 않는다 판정. (P-value >= 유의수준)

유의수준보다 작은 값이 나오면 통계적 유의성이 있어 회귀관계가 존재한다고 해석한다.

p-value: 0.0001647 - > 독립변수와 종속변수 간의 회귀관계가 존재한다는 판정을 할 수 있다.

 

 

 

회귀분석 시 기억할 사항

  • 독립변수와 종속변수의 관계를 설명하는 직선을 찾는다

(종속변수 y = 독립변수 x * 기울기 + 절편 의 관계를 찾는다.)

수치형 데이터 x, y로 부터 관계를 분석하여 적절한 기울기와 절편 값을 찾는 것이 회귀분석의 결과이다.

 

  • 회귀분석이 가치있는지 알려주는 지표

1. F값의 p-value: 회귀식이 존재하는가에 대한 확인

2. t값의 p-value: 독립변수에 대한 기울기 값에 대한 지표로 독립변수가 종속변수의 변화에 영향을 주는지 p-value가 통계적 유의성을 확인을 할 수 있게 해준다. 독립변수가 종속변수의 변화에 얼마나 영향을 주는지 알 수 있는 지는 기울기 값 coef(계수값)으로 알수 있다.

 

독립변수가 하나 사용된 경우에는 t값의 p-value와 F값에 대한 p-value가 거의 같은 값이 나오고 해석의 관점에서도 거의 동일한 의미를 가지게 된다.

독립변수가 여러 개 사용된 경우에는 F값의 p-value를 확인하여 통계적으로 유의한가 판정한 뒤에 t값에 대한 p-value들을 살펴보고 통계적으로 유의한 독립변수와 그렇지 못한 독립변수를 파악할 수 있다.

 

 

 

 

R제곱값은 결정계수로서 회귀식의 설명력이 얼마나 되는가를 말한다.

회귀분석에서 회귀식의 통계적 유의성을 확인하려면 F 검정통계량 추정치의 p-value를 확인해야 한다.

t p-value 독립변수의 통계적 유의성, R제곱과 수정된 R제곱은 설명력을 확인할 있다.