내용
회귀분석(Regression)
회귀분석과 방법
여러 면에서 회귀 분석은 통계의 핵심입니다. 하나 이상의 예측 변수(독립 변수 또는 설명 변수라고도 함)에서 반응 변수(종속 변수, 기준 변수 또는 결과 변수라고도 함)를 예측하는 데 사용되는 방법론 집합에 대한 광범위한 용어입니다. 일반적으로 회귀분석은 반응변수와 관련된 설명변수를 식별하고, 관련된 관계의 형태를 설명하고, 설명변수로부터 반응변수를 예측하기 위한 방정식을 제공하는 데 사용할 수 있습니다. 예를 들어, 운동 생리학자는 회귀 분석을 사용하여 러닝머신에서 운동하는 동안 사람이 태울 예상 칼로리 수를 예측하는 방정식을 개발할 수 있습니다. 반응 변수는 소모된 칼로리 수(소비된 산소량에서 계산)이며 예측 변수에는 운동 시간(분), 목표 심박수에서 보낸 시간 비율, 평균 속도(mph), 나이( 년), 성별 및 체질량 지수(BMI)가 될 수 있습니다.
이론적인 관점에서 분석은 다음과 같은 질문에 답하는 데 도움이 됩니다.
- 운동 시간과 소모된 칼로리 사이의 관계는 무엇입니까? 선형입니까 곡선입니까? 예를 들어, 운동은 특정 시점 이후에 소모된 칼로리 수에 덜 영향을 줍니까?
- 노력(목표 심박수에서 시간의 백분율, 평균 보행 속도)은 어떻게 고려됩니까?
- 이 관계는 젊은이와 노인, 남성과 여성, 무거움과 날씬함의 동일합니까?
실용적인 관점에서 분석은 다음과 같은 질문에 답하는 데 도움이 됩니다.
- BMI가 28.7인 30세 남성이 평균 속도 4로 45분 동안 걸을 때 소모할 수 있는 칼로리는 얼마입니까?
- 시간당 마일을 유지하고 목표 심박수를 80% 이내로 유지합니까?
- 사람이 걸을 때 소모할 칼로리를 정확하게 예측하기 위해 수집해야 하는 최소 변수 수는 얼마입니까?
- 당신의 예측은 얼마나 정확한 경향이 있습니까?
이 장에서는 회귀 모델을 피팅하고 해석하는 방법을 살펴보겠습니다. 다음으로 이러한 모델의 잠재적인 문제를 식별하는 일련의 기술과 이를 처리하는 방법을 검토합니다. 셋째, 변수 선택 문제를 살펴보겠습니다. 사용 가능한 모든 잠재적 예측 변수 중에서 최종 모델에 포함할 변수를 어떻게 결정합니까? 넷째, 일반화 가능성의 문제를 다룰 것입니다. 실제 세계에 적용할 때 모델이 얼마나 잘 작동합니까? 마지막으로 상대적 중요성의 문제를 살펴보겠습니다. 모델의 모든 예측 변수 중에서 가장 중요한 것은 무엇이며, 두 번째로 중요하고, 가장 덜 중요한 것은 무엇입니까?
유형 | 설명 |
---|---|
단순회귀(Simple linear) | 하나의 정량적 설명변수로부터 하나의 정량적 반응변수 예측 |
다항식(Polynomial) | 관계가 n차 다항식으로 모델링되는 하나의 양적 설명 변수에서 하나의 양적 반응 변수 예측 |
다중 선형(Multiple linear) | 둘 이상의 설명 변수에서 양적 반응 변수 예측 |
다변량(Multivariate) | 하나 이상의 설명 변수에서 하나 이상의 반응 변수 예측 |
로지스틱(Logistic)) | 하나 이상의 설명 변수에서 한개의 범주형 응답 변수예측 |
포아송 (poisson) | 하나 이상의 설명 변수에서 카운트를 나타내는 응답 변수 예측 |
Cox 비례 위험 (proportional hazard) | 하나 이상의 설명 변수에서 이벤트(사망, 실패, 재발)까지의 시간 예측 |
시계열(Time-series) | 상관성이 있는 오류를 가진 시계열 모델링 |
비선형 (Nonlinear) | 모형의 형태가 비선형인 하나 이상의 설명 변수에서 한개의 정량적 반응 변수 예측 |
비모수적(Nonparametic) | 사전에 지정되지 않은 모델의 형태가 데이터로 부터 유도됩니다. 그 모델에 의해 하나이상의 설명변수에서 한개의 정량 반응변수를 예측 |
강건(Robust) | 영향력 있는 관찰값들의 영향에 저항하는 접근 방식을 사용하여 하나 이상의 설명 변수로부터 한개의 정량적 반응 변수 예측 |
Ordinary Least Square(OLS) 회귀에서 정량적 종속 변수(반응변수)는 예측 변수(설명변수, predictor)의 가중 합계에서 예측되며, 여기서 가중치는 데이터에서 추정된 매개변수입니다.
OLS 회귀
- i : 1 … n으로 샘플의 크기
- Ŷi: i번째 예측된 반응변수
- Xik: 변수 k, i번째 설명변수
- b̂0: 절편(intercept)
- b̂i: 변수 i의 설명변수에 대한 회귀계수([Δ Y]/[Δ Xj])
회귀모델의 궁극적인 목적은 에측치롸 실측치의 차이 즉, 잔차(에러)를 최소화시키는 것입니다. 특히 모델 매개변수는 잔차곱(sum of squared residuals)을 최소화하도록 결정하는 것입니다.
$$\sum^n_{i=1} \left(Y_i-\hat{Y}_i\right)^2=\sum^n_{i=1}\epsilon^2$$위 모델의 계수를 적절하게 해석하기 위해서는 다음의 통계적 가정이 필요합니다.
- 정규성(Normality): 반응변수는 정규분포를 따릅니다.
- 독립성(Independence): 반응변수들은 각각은 독립적이어야 합니다.
- 선형성(Linearity): 반응변수는 설명변수와 선형적으로 관계됩니다.
- 동분산성(Homoscedasticity): 반응 변수의 분산은 설명 변수의 수준에 따라 달라지지 않습니다.
위 가정들이 충족되지 않는다면 통계적인 p-값과 신뢰구간의 정확도는 감소됩니다.
R에서 선형 모형은 lm()
함수를 사용하여 작성합니다.
기호 | 설명 |
---|---|
~ | 왼쪽의 응답 변수를 오른쪽의 설명 변수와 분리합니다. 예를 들어, x, z, w에서 y를 예측하면 "y ~ x + z + w"로 코딩됩니다. |
+ | 설명 변수를 분리합니다. |
: | 설명 변수 간의 상호 작용을 나타냅니다. x, z 및 x와 z 사이의 상호 작용에서 y의 예측은 "y ~ x + z + x:z"로 코딩됩니다. |
* | 변수들 사이에 가능한 모든 상호 작용의 조합을 나타냅니다. 코드 "y ~ x * z * w"는 "y ~ x + z + w + x:z + x:w + z:w + x:z:w"로 확장됩니다. |
^ | "^숫자"네서 숫자는 관계된 변수의 수를 나타내며 그 지정된 변수의 수까지의 가능한 모든 상호 작용을 나타냅니다. 코드 "y ~ (x + z + w)^2"는 "y ~ x + z + w + x:z + x:w + z:w"로 확장됩니다. |
. | 반응 변수를 제외한 데이터 프레임의 다른 모든 변수에 대한 자리 표시자입니다. 예를 들어 데이터 프레임에 변수 x, y, z 및 w가 포함된 경우 코드 "y ~ ."는 "y ~ x + z + w"로 확장됩니다. |
- | 식에서 변수를 제거합니다. 예를 들어, "y ~ (x + z + w)^2 - x:w"는 y ~ x + z + w + x:z + z:w로 확장됩니다. |
-1 | 절편(intercept)를 억제합니다. 예를 들어, 공식 "y ~ x - 1"은 x에 대한 y 회귀에 적합하고 x=0에서 원점을 통과하는 선을 강제 실행합니다. |
I() | 괄호 안의 요소는 산술적으로 해석됩니다. 예를 들어, ""y ~ x + (z + w)^2"는 "y ~ x + z + w + z:w"로 확장됩니다. 대조적으로, 코드 "y ~ x + I((z + w)^2)"는 "y ~ x + h"로 확장됩니다. 여기서 h는 변수 z와 변수 w의 합을 제곱하여 생성된 새로운 변수입니다. |
function | 수학 함수는 공식에 사용할 수 있습니다. 예를 들어, "log(y) ~ x + z + w"는 x, z 및 w에서 log(y)를 예측합니다. |
lm()
외에도 다음 표에는 단순 또는 다중 회귀 분석을 생성할 때 유용한 몇 가지 함수가 나열되어 있습니다. 이러한 각 함수는 피팅된 모델을 기반으로 추가 정보를 생성하기 위해 lm()에 의해 반환된 객체에 적용됩니다.
함수 | 설명 | |
---|---|---|
summary() | 생성된 모델의 자세한 결과를 나타냄 | |
coefficients() | 절편과 기울기등의 모델의 매개변수들 반환 | |
confint() | 모델 매개변수(계수)들의 신뢰구간을 반환(기본값 95%) | |
fitted() | 모델에 의한 설명변수들에 대한 예측값들을 반환 | |
residuals() | 잔차 반환 | |
anova() | 모델의 매개변수에 대한 ANOVA 반환 | |
vcov() | 모델 매개변수들의 공분산행렬을 반환 | |
AIC() | Akaike’s Information Criterion 반환 | |
plot() | 모델의 적합성을 평가하기 위한 진단플롯들을 생성 | |
predict() | 모델로 부터 새로운 설명변수에 대한 반응변수를 예측 |
단순회귀
dataset "women" 30~39세의 여성 15명의 신장과 체중에 대한 자료입니다. 이 자료에서 신장을 설명변수로 하여 체중을 예측합니다.
head(women, 3)
height weight 1 58 115 2 59 117 3 60 120
fit<-lm(weight~height, data=women);fit
Call: lm(formula = weight ~ height, data = women) Coefficients: (Intercept) height -87.52 3.45
summary(fit)
Call: lm(formula = weight ~ height, data = women) Residuals: Min 1Q Median 3Q Max -1.7333 -1.1333 -0.3833 0.7417 3.1167 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -87.51667 5.93694 -14.74 1.71e-09 *** height 3.45000 0.09114 37.85 1.09e-14 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 1.525 on 13 degrees of freedom Multiple R-squared: 0.991, Adjusted R-squared: 0.9903 F-statistic: 1433 on 1 and 13 DF, p-value: 1.091e-14
result<-data.frame(obs=women$weight, pre=round(fitted(fit), 1), residual=round(residuals(fit), 2)) head(result, 3)
obs pre residual 1 115 112.6 2.42 2 117 116.0 0.97 3 120 119.5 0.52
plot(women$height, women$weight, xlab="Height", ylab="Weight") abline(fit)
위 분석에 의한 회귀모델은 다음과 같습니다.
회귀계수의 t-검정
위 결과 중 "coefficient"의 분석은 각 회귀계수에 대한 유의성을 나타냅니다. 다중 회귀 즉, 회귀계수가 두 개 이상일 경우는 분산분석을 실시하지만 하나일 경우는 t-검정의 결과를 보고합니다.
위 결과의 t-검정은 특정한 회귀계수에 대한 것으로 "회귀계수 = 0"인 귀무가설에 대한 검정입니다. 일반적으로 모델에서 절편은 다른 계수들에 의존적이므로 그 통계적 유의는 모델에 영향을 줄 수 없습니다. 변수 "신장"에 대한 계수의 경우 p-value<0.01이므로 통계적으로 유의합니다. 즉, 그 계수에 의해 예측된 반응변수들이 통계적으로 차이를 보입니다.
다음 식에서 나타낸 것과 같이 회귀계수 b1은 잔차와 독립변수의 편차 제곱합 사이의 비로 계산됩니다.
$$\begin{aligned}&\text{error}=y-b_1x\\&b_1=\frac{y-\text{error}}{x}\end{aligned}$$그러므로 회귀계수의 표준편차는 오차와 독립변수의 표준편차의 비로 계산할 수 있습니다.
$$s_{b1}=\sqrt{\frac{s_{error}}{\sum(x-\mu_x)^2}}=\sqrt{\frac{MSE}{\frac{\sum(x-\mu_x)^2}{df_{error}}}}$$res<-resid(fit) df_e<-13
잔차의 분산은 다음과 같이 계산되며 잔차제곱합 평균(MSE)이 됩니다. 또한 독립변수의 평균제곱합을 계산하여 잔차의 자유도를 고려하여 회귀계수의 표준오차를 계산할 수 있습니다.
mse_e<-sum(res^2)/df_e X<-women$height s_x<-sum((X-mean(X))^2)/df_e mse_b1<-mse_e/(s_x) se_b<-sqrt(mse_b1/df_e);se_b
[1] 0.0911365
결과적으로 평균이 0이고 표준편차 대신 표준오차가 0.091를 모수로 하는 t분포에서 계산된 회귀계수의 유의성을 평가합니다. 표준 t 분포에 적용하기 위한 t-검정량과 유의확률은 다음과 같습니다.
t_b<-coef(fit)[2]/se_b; t_b
height 37.85531
1-pt(t_b, df_e)
height 5.440093e-15
매우 작은 유의확률은 귀무가설 b1 = 0을 기각할 수 있습니다.
회귀식의 평가
생성된 회귀식은 실측치와 예측치를 최소화시키는 방향으로 생성됩니다. 이렇게 생성된 오차는 랜덤하게 생성되는 것으로 그 수준을 조절할 수 없습니다. 반면에 반응변수들의 불편추정량과 예측값들과 차이는 불편추정량의 선택에 의해 조절할 수 있습니다. 이 오차들의 제곱합을 각각 SSR, SSE라고 합니다. 이 오차의 합은 SST가 됩니다. 다음 그림은 이들의 관계를 나타낸 것입니다.
다음은 위 그림 작성 코드입니다.
x<-seq(0, 3, 0.01) y<-x+3 plot(rep(1.5, 3), c(3.5, 1.5+3, 5), col=c('red', 'black', 'blue'), cex=2, pch=20, xlab="x", ylab="y") abline(x, y, lw=2) abline(h=5, lty=2) arrows(1.5, 4.5, 1.5, 3.5, col="red", lwd=2, angle=30, length=0.1) arrows(1.5, 4.5, 1.5, 5, col="blue", lwd=2, angle=30, length=0.1) arrows(1.4, 3.5, 1.4, 5, col="black", lty=2, lwd=2, angle=0, length=0) legend(0.9, 4.8, legend=c('observed', 'predicted', 'mean'), fill=c('red','black','blue'), border='white', box.lty=0) text(1.55, 4.0, "SSE", col="red", font=2) text(1.44, 4.7, "SSR", col="blue", font=2) text(1.35, 4.3, "SST", col="black", font=2)
전체오차합중에서 조절할 수 있는 오차 즉, SSR을 측정하는 것으로 회귀선의 정확도를 나타낼수 있습니다. SSR이 증가한다는 것은 SSE가 감소하는 것으로 회귀선의 신뢰도가 증가한다고 할 수 있습니다. 이렇게 결정된 값을 결정계수라고 합니다.
결정계수는 관측치와 예측치의 상관성을 나타내는 것으로 두 자료의 상관계수의 제곱과 같습니다. 그러므로 결정계수는 [0, 1] 사이의 값이며 높은 값일수록 두 자료의 일치성은 증가하는 것으로 회귀모델의 정확도가 증가한다고 할 수 있습니다.
y<-women$weight SST<-sum((y-mean(y))^2) SSE<-sum(res^2) SSR<-SST-SSE c(SST, SSR, SSE)
[1] 3362.93333 3332.70000 30.23333
SSR/SST
[1] 0.9910098
r<-cor(y, pre);r^2
[1] 0.9910098
F-검정은 $χ^2$분포를 따르는 두 분포의 비에 대한 검정입니다. 회귀식을 기반으로 관측치를 대표할 수 있는 특정한 통계량과의 차이와 관측치에 대한 차이의 비가 일반적으로 발생할 수 있는 상태면 생성된 회귀식의 정당성은 잃게 됩니다. 즉, 이 분포는 "회귀식은 통계적으로 유의하지 않다."는 귀무가설에서 다음의 F값에 대해 검정합니다.
$$F=\frac{\frac{SSR}{df_{ssr}}}{\frac{SSE}{df_{sse}}}=\frac{MSR}{MSE}$$F<-(SSR/1)/(SSE/df_e);F
[1] 1433.024
Fp<-1-pf(F, 1, df_e);Fp
[1] 1.088019e-14
단순회귀인 경우 회귀계수가 하나이므로 t-검정의 결과와 같습니다.
댓글
댓글 쓰기