F-test는 F-통계량을 생성한다. p-value는 F-통계량과 관련돼있다.
=F.DIST.RT(x, degree_freedom1, degree_freedom2)
- x: F-통계량 값
- degree_freedom1: 분자 자유도
- degree_freedom2: 분모 자유도
F-통계량에서 p-value를 구해본다.
F-통계량 5.4, 분자 자유도 2, 분모 자유도 9이다.
p-value는 0.02878이다.
F-통계량은 회귀모델(regression model)에서 가장 흔히 쓰인다.
회귀모델(regression model)에서 p-value를 구해본다.
위의 데이터에 대해 데이터> 데이터 분석> 회귀분석을 실시한다.
X -공부시간, 시험
Y - 점수
F-통계량은 5.090515
분자의 자유도 2,
분모의 자유도 9,
회귀분석에서 자동으로 구해준 p-value는 0.033202이다.
=F.DIST.RT(x, degree_freedom1, degree_freedom2) 함수를 써서 구해본 값과 동일하다.
패키지 설치 및 로딩하기 통계학 꽃 중의 꽃! [ R : Regression Analysis 회귀분석 ]
Regression Analysis 회귀분석
- 언제 사용 하는가?
A. 어떤 양적 자료(들)이 다른 양적 자료에게 영향을 주는 지 통계적으로 분석하는 방법이다.
즉, 인과관계(원인과 결과의 관계)를 알려줌
ex. 주식(+시계열)
동일한 대상으로부터 다른 2개의 양적자료
원인과 결과의 관계(인과관계)는 아니다. 인과관계는 회귀분석에서 다룬다.
선형 회귀분석(Linear Regression Analysis)
단순선형 회귀분석(Simple Linear Regression Analysis)
종속변수 : 1개 : 양적 자료, y (확장되면 종속변수가 많아짐)
독립변수 : 1개 : 양적 자료, x
예제 데이터: cars (R에 내장된 데이터)
변수명: speed(속도), dist(제동거리 = 브레이크를 밟았을 때 얼마나 밀리는지)
회귀분석 결과의 해석
1단계. 회귀모형은 타당한가?
- 귀무가설: 회귀모형은 타당하지 않다
- 대립가설: 회귀모형은 타당하다 -> 우리가 원하는 결과
결론: 유의확률이 1.49e-12(=0.000)이므로 유의수준 0.05에서 회귀모형은 통계적으로 타당하다.
즉, 독립변수가 영향을 준다. (단순선형 회귀분석에서 적용)
2단계. 독립변수는 종속변수에게 영향을 주는가?
조건: 1단계의 결론이 대립가설이어야 함
만약 1단계가 귀무라면, 다른 변수를 찾아서 다시 회귀분석을 진행해야 함.
- 귀무가설: 독립변수는 종속변수에게 영향을 주지 않는다
- 대립가설: 독립변수는 종속변수에게 영향을 준다
결론: 유의확률이 0.000 이므로 유의수준 0.05에서 독립변수는 종속변수에게 통계적으로 유의한 영향을 주는 것으로 나타났다.
따라서, speed는 제동거리(distance)에 통계적으로 유의한 영향을 주는 것으로 나타났다(t = 9.464, p<0.001)
3단계. 독립변수는 종속변수에게 어떠한 영향을 주는가?
Estimate(추정치) speed 3.9324beta1에 대한 회귀계수(Coefficient of Regression) : 3.932
독립변수의 기본단위가 1 증가하면, 종속변수는 약 3.932 정도 증가시키는 영향을 준다
즉, speed가 1mph 증가하면 distance는 약 3.932 feet 정도 증가 시킨다
4단계. 독립변수가 종속변수의 다름을 어느 정도 설명하고 있는가?
(회귀모형의 설명력 = 독립변수의 설명력)
Multiple R-squared: 0.6511결정계수(Coefficient of Determination) : SSR(독립변수 때문에 생긴 다름) / SST(Y의 다름)
수학기호 : R-Square(R^2) = SSR/SST, 0 <= R^2 <= 1
단순선형회귀에서는
Adjsted R-squared를 고려할 필요 없다.
회귀모형의 설명력(독립변수의 설명력)은 약 65.1% 정도이다.
speed가 distance의 다름을 약 65.1% 정도 설명하고 있다.
speed가 아직 설명하지 못하는 distance의 다름은 35%가 있다.
그렇다면, 한발 더 나아가 나머지 65%의 다름은 어떤 걸까? 생각해보기
5단계. 예측(Prediction)
predict(model, newdata = data.frame(독립변수 = )) model = lm 진행한 모델 독립변수가 x일 때의 예측predict(cars.lm, newdata = data.frame(speed = 200))## 1 ## 768.9027결과: speed가 200일 때, dist는 769 feet이다(점추정). 실제로는 +-를 넣어서 구간추정 시행.
Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -17.5791 6.7584 -2.601 0.0123 * speed 3.9324 0.4155 9.464 1.49e-12 *y의 예측값은 beta0의 추정치(-17.5791) +
beta1의 추정치(3.9324 * speed)
따라서, speed가 200일 때의 dist의 계산은, -17.579 + 3.932*200 = 768.821
다수 값 예측을 원할 때
cars 데이터를 training, test data로 나눈 후 분석
cars.index <- caret::createDataPartition(cars$speed, p = 0.8) # cars에서 랜덤하게 80%를 데이터 추출 cars.train <- cars[unlist(cars.index), ] # unlist로 list를 벡터로 바꿈 cars.test <- cars[-unlist(cars.index), ] cars.train.lm <- lm(dist ~ speed, data = cars.train) # 회귀분석 시행 summary(cars.train.lm) # 회귀분석 결과 보기## ## Call: ## lm(formula = dist ~ speed, data = cars.train) ## ## Residuals: ## Min 1Q Median 3Q Max ## -30.443 -9.522 -0.825 7.872 40.478 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) -22.9510 6.9862 -3.285 0.00216 ** ## speed 4.2697 0.4273 9.992 2.61e-12 *** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 14.53 on 39 degrees of freedom ## Multiple R-squared: 0.7191, Adjusted R-squared: 0.7119 ## F-statistic: 99.85 on 1 and 39 DF, p-value: 2.615e-121단계. 회귀모형은 타당한가?
- 귀무가설: 회귀모형은 타당하지 않다
- 대립가설: 회귀모형은 타당하다
결론: 유의확률이 0.000이므로 유의수준 0.05에서 회귀모형은 통계적으로 타당하다.
2단계. 독립변수는 종속변수에게 영향을 주는가?
- 귀무가설: 독립변수는 종속변수에게 영향을 주지 않는다
- 대립가설: 독립변수는 종속변수에게 영향을 준다
결론: 유의확률이 0.000이므로, 유의수준 0.05에서 독립변수는 종속변수에게 통계적으로 유의한 영향을 주는 것으로 나타났다.
3단계. 독립변수는 종속변수에게 어떠한 영향을 주는가?
Estimate speed 4.1728beta1에 대한 회귀계수(Coefficient of Regression) : 4.173 = 회귀계수에 대한 추정치
독립변수의 기본단위가 1증가하면 종속변수는 약 4.173 증가하는 영향을 준다
즉, speed가 1mph 증가하면, dist는 약 4.173 feet 증가된다
4단계. 독립변수가 종속변수의 다름을 어느 정도 설명하고 있는가?
Multiple R-squared: 0.6972Multiple R-squared는 0 ~ 1 사이의 값을 가진다.
R-Suared * 100 : 0 ~ 100 사이의 값을 갖는다
따라서, 독립변수가 종속 변수의 다름을 약 69.7% 정도 설명하고 있다
5단계. 예측(Prediction)
cars.predict <- predict(cars.train.lm, newdata = cars.test) cars.predict## 4 9 10 23 25 32 33 ## 6.936904 19.746013 24.015716 36.824825 41.094528 53.903637 53.903637 ## 41 45 ## 62.443043 75.252152MSE 구하기
MSE(평균오차제곱합): 값들이 각각의 그룹의 평균에서 얼마나 떨어져 있는지 확인하는 값(=분산)
MSE가 낮을 수록 더 좋은 모형이라 해석할 수 있다.
- test의 실제값이랑 test의 예측값으로 MSE 구하기
R^2의 쓰임새: 모형평가
A model, B model, C model을 회귀분석하면 각각의 R^2가 나오는데, 가장 큰게 더 좋은 모형이라고 해석할 수 있음
2. 다중선형 회귀분석(Multiple Linear Regression Analysis)
종속변수 : 1개 : 양적 자료
독립변수 : 2개 이상 : 양적 자료
더미변수 : 양적인 자료로 보이게 해주는 변형된 변수
[다중선형] 예제 데이터 : attitude
- 종속변수: rating
- 독립변수: complaints, privileges, learning, raises, critical, advance
1단계. 회귀모형은 타당한가?
- 귀무가설: 회귀모형은 타당하지 않다
- 대립가설: 회귀모형은 타당하다
결론: 유의확률이 0.000이므로 유의수준 0.05에서 회귀모형은 타당하다.
2단계. 각각의 독립변수는 종속변수에게 영향을 주는가?
- 귀무가설: 각각의 독립변수는 종속변수에 영향을 주지 않는다
- 대립가설: 각각의 독립변수는 종속변수에게 영향을 준다
결론: complaints를 제외한 독립변수는 종속변수에 영향을 주지 않는다.
3단계. 각각의 독립변수는 종속변수에게 어떠한 영향을 주는가?
Estimate (회귀계수에 대한 추정치) complaints 0.61319 *** privileges -0.07305 learning 0.32033 raises 0.08173 critical 0.03838 advance -0.21706해석: 다른 독립변수가 고정되어 있을 때(다른 독립변수들은 변하지 않을 때), complaints의 기본 단위가 1증가하면, rating이라는 종속변수를 약
0.613 정도 증가시킨다.
나머지는 2단계에서 영향을 주지 않는 것으로 판단되어 3단계를 진행할 수 없다.
4단계. 회귀모형의 설명력 = 독립변수들의 설명력
Multiple R-squared: 0.7326 (6개의 독립변수가 종속변수를 얼마큼 설명하는가) Adjusted R-squared: 0.6628결정계수(R-Squre)의 문제점
- 종속변수에게 유의한 영향을 주지 않는 독립변수들이 모형에 포함되어도 결정계수는 증가하는 경향이 있음
- 회귀모형에 유의하지 않는 독립변수가 있다면, Adjusted R-Squred로 해석하는게 더 바람직하다.
수정된 결정계수(Adjusted R-Square)
- 회귀모형에 종속변수에게 영향을 주는 독립변수가 들어올 때는 결정계수가 증가하고, 종속변수에 영향을 주지 않는 독립변수가 들어올 때는 결정계수가 증가되지 못하도록 함
-
즉, 수정된 결정계수로 해석하면, 6개의 독립변수들이 종속변수의 다름을 약 66.3% 정도 설명하고 있다.
5단계. 예측(Prediction)
predict(attitude.lm, newdata = data.frame(complaints = 5, privileges = 5, learning = 5, raises = 5, critical = 5, advance = 5))## 1 ## 14.60471독립변수가 모두 5일 때 종속변수(rating)의 결과값: 14.605
다중선형 회귀분석에서 고려해야 할 사항
(1) 변수선택
최종 모형에 어떤 독립변수들로 구성할 것인가?
- 모든 독립변수를 최종 회귀모형에 포함시킴
- 통계적으로 유의한 독립변수만 최종 회귀모형에 포함시킴
전진선택방법(Forward Selection Method)
종속변수와 하나씩 회귀분석을 하고, 그 중 독립변수가 종속변수에 영향을 가장 많이 주는 것을 모형에 제일 먼저 포함; 한 번 들어오면 모형에서 빠지지 않음; 그 후 두번째로 유의한 것을 포함; 커트라인을 넘을 경우에만 포함
후진소거방법(Backward Elimination Method)
모든 독립변수가 먼저 모형에 들어옴, 들어온 독립변수 중에서 종속변수에게 가장 영향이 약한 것이 모형에서 빠져나감; 한 번 빠져나가면 모형에 다시 못들어옴; 컷트라인을 넘을 경우에만 빠져나감
단계선택방법(Stepwise Selection Method)
전진선택방법 + 후진소거방법; 처음에 유의한 변수가 들어오고, 다른 변수가 들어올 때의
유의함을 보면서 넣었다 뺐다를 반복하여 최적의 모형을 찾는다
결론: 결과가 같고, AIC가 가장 적은 Backward Elimination Method와 Stepwise Selection Method 선택.
결과 해석
- 회귀모형은 타당한가?
F-statistic: 32.74 on 2 and 27 DF, p-value: 6.058e-08 -> 타당하다 - 독립변수는 영향을 미치는가?
complaints는 유의한 영향을 주고, learning은 주지 않는다 -> 단, 모형이 자동적으로 제거하지 않아서, 전처리를 해야 함.
- 회귀모형 타당함. 독립변수 영향을 줌(rating 1 = complaints 0.754만큼)
- 회귀의 설명력 -> 약 68.1%
회귀모형 평가기준
AIC: 값이 작을 수록 모형이 좋다
BIC: Bayseian Information Criterion : 값이 작을 수록 모형이 좋다
R-Square(Adjusted R-Squred): 값이 클수록 모형이 좋다
MSE: 값이 작을수록 모형이 좋다
(2) 더미변수(Dummy Variable)
- 독립변수에 질적 자료를 넣는 것
- 질적 자료 -> 더미변수로 만들어야 함
- 더미변수를 회귀모형의 독립변수로 넣을 수 있음
- 더미변수는 0과 1로만 구성되어야 함
- 더미변수의 개수는 질적 자료가 가지는 값의 개수의 -1개
[더미변수] 예제 데이터 : iris
- 양적 자료: Sepal.Length, Sepal.Width, Petal.Length, Petal.Width
- 질적 자료: Species (3종류: “setosa”, “versicolor”, “virginica”)
- 종속변수 : Sepal.Length
- 독립변수 : Sepal.Width, Petal.Length, Petal.Width, Species
- 더미변수 : Species -> Species.versicolor, Species.virginica
iris.model 결과 해석해보기.
(3) 다중공선성(Multicollinearity)
- 독립변수들 간에 상관관계가 있는 것을 다중공선성이 있다라고 함
- 회귀분석의 가정: 다중공선성이 없어야 함
- VIF : Variance Inflation Factor : 분산팽창인자 = 분산팽창요인
- VIF 값이 10이상이면, 다중공선성이 존재한다고 판단
결과: 하나 빼고 다 10을 초과하기 때문에 이 모델은 회귀분석을 쓸 수 없음.
(4) 독립변수들의 영향력 크기의 비교
최종 모형에서 2개 이상의 독립변수가 종속변수에게 영향을 준다면, 어떤 독립변수가 가장 큰 영향을 줄까?
lm.beta::lm.beta(iris.model) # 표준화된 회귀계수의 절대값이 가장 큰 값이 가장 큰 영향을 줌## ## Call: ## lm(formula = Sepal.Length ~ ., data = iris2) ## ## Standardized Coefficients:: ## (Intercept) Sepal.Width Petal.Length ## 0.0000000 0.2610193 1.7678091 ## Petal.Width Species.versicolor Species.virginica ## -0.2901014 -0.4132919 -0.5846126결론: Petal.Length가 종속변수에 가장 큰 영향, 그 다음은 Species.virginica
에러(Error = 입실론)에 대한 가정
- 정규성 가정
- 등분산성 가정
- 선형성 가정
- 독립성 가정
잔차(residual)분석
1. 정규성 가정
- 귀무가설: 정규분포를 따른다
- 대립가설: 정규분포를 따르지 않는다
결론: 유의확률 0.025이므로 유의수준 0.05에서 정규성 가정이 깨짐
원래 정규성 가정이 깨진다면 쓸 수 없는 모델임.
2. 독립성 가정
- 귀무가설: 에러들은 각각 독립이다
- 대립가설: 에러들은 각각 독립이 아니다
D-W 통계량이 2에 가까우면 자기상관이 없음(각각 독립), 2에서 멀어지면(0 or 4) 자기상관이 있다(각각 독립이 아니다)
결론: 유의확률이 0.526이므로 유의수준 0.05에서 독립성
가정 만족 (댓글로 알려주신 '빛날희-'님 감사합니다)
3. 등분산성 검정
- 귀무가설: 등분산이다
- 대립가설: 이분산이다
결론: 유의확률이 0.397이므로 유의수준 0.05에서 등분산성 만족