상세 컨텐츠

본문 제목

회귀분석 Regression Analysis (2)

코딩일기장/통계학

by Grip! 2021. 9. 14. 11:50

본문

1.βiβi의 구간추정,

2-t실용기준/ 유의확률(p-value)/ 유의수준의 의미

3. 다중회귀분석에서 F-통계치가 어떻게 사용되는지

4. F통계치와 t통계치와의 관계

 

 

1. $$\beta_{i}$$ 의 구간 추정

현재, 최소자승법을 이용해

$$ \hat{Y_{i}} =b_{1} + b_{2}X_{2i} + b_{3}X_{3i} $$

의 값을 모두 구한 상태다.

지난 포스트에선 gretl과 excel을 이용해 회귀식과 정보들을 구했는데,

이번에는 python을 활용해 구해보도록 하자

(gretl에선 Analysis 탭 - Confidence interval for coefficient)

 

 

https://aegis4048.github.io/mutiple_linear_regression_and_visualization_in_python

 

Multiple Linear Regression and Visualization in Python | Pythonic Excursions

Strengthen your understanding of linear regression in multi-dimensional space through 3D visualization of linear models.

aegis4048.github.io

를 참고해서 3D모형으로 구현해봤다

 

 

from mpl_toolkits.mplot3d import Axes3D
from sklearn import linear_model
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import os
plt.rcParams['figure.figsize'] = (10, 6)

BASE_DIR = os.path.dirname(os.path.abspath(__file__))

df = pd.read_csv(BASE_DIR+'\pitcher.csv')

X = df[['WIN', 'SAVE']].values.reshape(-1, 2)
Y = df['MONEY']

x2 = X[:, 0]
x3 = X[:, 1]

x2_pred = np.linspace(0, 20, 60)
x3_pred = np.linspace(0, 50, 60)
xx2_pred, xx3_pred = np.meshgrid(x2_pred, x3_pred)
model_viz = np.array([xx2_pred.flatten(), xx3_pred.flatten()]).T

###############################

ols = linear_model.LinearRegression()
model = ols.fit(X, Y)
predicted = model.predict(model_viz)

R_Squared = model.score(X, Y)
################################

plt.style.use('default')
fig = plt.figure(figsize=(10, 6))
ax1 = fig.add_subplot(131, projection='3d')
ax2 = fig.add_subplot(132, projection='3d')
ax3 = fig.add_subplot(133, projection='3d')

axes = [ax1, ax2, ax3]


for ax in axes:
    ax.plot(x2, x3, Y, color='k', zorder=15,
            linestyle='none', marker='o', alpha=0.5)
    ax.scatter(xx2_pred.flatten(), xx3_pred.flatten(), predicted,
               facecolor=(0, 0, 0, 0), s=20, edgecolor='#70b3f0')
    ax.set_xlabel('WIN', fontsize=12)
    ax.set_ylabel('SAVE', fontsize=12)
    ax.set_zlabel('MONEY', fontsize=12)

ax1.view_init(elev=28, azim=120)
ax2.view_init(elev=4, azim=114)
ax3.view_init(elev=60, azim=165)

fig.tight_layout()
plt.show()

 

인데, 우리가 필요한 회귀식에 대한 정보는 sklearn 라이브러리와 pandas, numpy를 통해 아래와 같이 구할 수 있다

from sklearn import linear_model
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import os
plt.rcParams['figure.figsize'] = (10, 6)

BASE_DIR = os.path.dirname(os.path.abspath(__file__))

df = pd.read_csv(BASE_DIR+'\pitcher.csv')

X = df[['WIN', 'SAVE']].values.reshape(-1, 2)
Y = df['MONEY']
x2 = X[:, 0]
x3 = X[:, 1]

x2_pred = np.linspace(0, 20,  60)
x3_pred = np.linspace(0, 50, 60)
xx2_pred, xx3_pred = np.meshgrid(x2_pred, x3_pred)
model_viz = np.array([xx2_pred.flatten(), xx3_pred.flatten()]).T

############################### 회귀식 주요 정보 #####################

ols = linear_model.LinearRegression()
model = ols.fit(X, Y)  # nd array와 pandas series를 인자로 받아 선형회귀모형 model 만들기
predicted = model.predict(model_viz)  # model_viz는 평면이 meshgrid화 된 것의 ndarray
b1 = model.intercept_  # 상수
Bi = model.coef_  # coefficient
R_Squared = model.score(X, Y)  # R^2


################################

 

계수와 상수를 print로 찍어보면

print(b1) # 4419.562813357052
print(Bi) # [1329.50147216  412.52220464]

으로

 

$$ \hat{Y_{i}} =4419 + 1329X_{1i} + 412X_{2i} $$

 

를 구할 수 있는데

 

여기서 $$ \beta_{1i} $$ 을  95% 구간 추정을 해보자.

 

$$ P(b_{1i} - t_{0.05/2}s_{b_{1i}} \le \beta_{1i} \le b_{1i} + t_{0.05/2}s_{b_{1i}} ) = 1 - 0.05$$

 

인데,

이때 

$$ b_{1i} = 1329 $$

$$ t_{0.05/2} = t_{0.025} = 1.98 $$

를 구할 수 있는데,

$$ s_{b_{1i}} = \sqrt{V(b_{1i})} = \sqrt{ \sigma^2 \over{S_{11}(1-r_{12}^2)  } }  $$

 

정리하면

$$ [ 934.222   ,  1724.78] $$에 95%의 확률로 $$ B_{1i}$$ 가 존재한다

 

2. 2-t실용기준/ 유의확률(p-value)/ 유의수준의 의미

우리는 $$\beta_{i}$$가 실제로 유의한 설명변수의 계수인지, 즉 설명변수가 필요한지 필요없는지에 대한 가설 검정을 할때 2-t실용기준과 유의확률,유의수준의 개념이 사용된다는 것을 생각해야한다!!

어떤 계량 모형에서, 어떤 설명변수의 계수 값이 0이라는 귀무 가설을 세운다.

그리고 해당 가설을 검정한다

(해당 설명변수는 설명력이 없다 ! 라는 가설) 

 

그리고 해당 가설의 통계량 $$t$$는

$$b_{2} - \beta_{2}\over{s_{b_{2}}}$$이다.

근데, 우리의 가설은 해당 설명변수가 필요 없다! 임으로

간소화하면

$$t= {b_{2}\over{s_{b_{2}}}}`$$ 가 된다.

 

2-t 실용기준은 이 가설 검정의 임계치를 2로 실용적이게 정하자는 것이다 ! (95% 유의수준이기때문에)

그래서 이 통계량이 이 임계치를 넘어가면, 해당 설명변수의 계수는 0이라는 귀무가설이 기각됨으로

다시말해 설명변수는 중요한 변수라는 뜻이다.

 

 

유의확률 p - value = $$ 2* P( t(n-k) > | t-통계치|) $$

위에서 구한 t 통계치의 절댓값 범위 바깥에 있는 범위의 확률이다.

예를 들어 t 통계치가 아래 표에서 X라면, 노란색 범위가 유의 확률  p -value의 범위이다

2-t실용기준하에서는 대략적인 유의 수준은 0.05다

 

wikipedia

 

즉, t-통계치가 높을수록, 유의 확률이 낮을수록 해당 설명변수가 중요한 변수다.

 

3. 다중회귀분석의 F통계치(복합가설의 유의성 검정)

-모형 적합도에 대한 가설검정

귀무가설 $$ H_{0}  :  \beta_{2}=\beta_{3}=\beta_{4}=...\beta_{k}=0$$ 

대립가설 $$ H_{1} : (\beta_{1}을 제외하고) 적어도 하나의 \beta_{j} 는 0이 아니다$$

즉, 귀무가설은 다시쓰면

$$H_{0} : R^2 =0 $$이다

 

F통계치 : $$ F= $$ $$ { {R^2 \over { (k-1) }}  \over { (1- R^2)\over(n-k) }  }$$

로 k-1과 n-k의 자유도를 가지는 F분포를 다른다.

 

만약 F통계치가, 일정한 유의수준 $$ \alpha $$ 에서 k-1과 n-k의 자유도를 가지는

F-분포의 임계치 $$ F(k-1,n-k,\alpha) $$보다 크면

귀무가설을 기각한다

즉 모형이 적합하다는 것이다!

 

 

 

-회귀 계수 일부분에 대한 가설검정, 회귀 계수 간의 선형 결합에 대한 가설검정

예를들어

귀무가설

$$H_{0} : \beta_{k-1} = 0, \beta_{k}=0$$ 혹은 $$H_{0} : \beta_{k_1}=\beta_{k}$$

라고 하자

 

위 귀무가설을 제약 조건이라고 한다.

 

제약 조건이 적용된 모형, 제약조건이 적용되지 않은 원래의 모형 각각의

잔차의 제곱합 (Residual sum sqaured) $$  \sum_{i=1}^n e_{i}^2 $$과

결정계수 $$R_{U}^2$$ (첨자 U는 제약되지 않은 Unrestricted, R은 Restricted)

을 구한다.

 

F통계치는 다음과 같은 두가지 방법으로 구할 수 있다

 

$$F= { {(RSS_{R} - RSS_{U} ) \over{J}} \over { RSS_{U} \over{ n-k }  }    }$$

이고

위 식의 분자/분모를 $$ \sum(Y_{i} -\bar{Y})^2$$로 나누면

 

$$F= { {(R_{U}^2- R_{R}^2 ) \over{J}} \over { (1-R_{U}^2) \over{ n-k }  }    }$$

 

인데, $$ F(J,n-k) $$의 분포를 가진다

이때, 일정한 유의수준 $$ \alpha $$ 하에서의 J와 n-k의 자유도를 갖는 F 임계치를 구한다.

그리고 F통계치 > F임계치면 귀무가설을 기각한다

 

-->제약조건이 옳지 않음을 의미한다

 

 

 

회귀 계수 간의 선형 결합간의 가설검정은,

귀무 가설이

$$ H_{0} : \beta_{2} + \beta_{3} =1 $$

등으로 세워진다( 회귀 계수간의 선형관계가 있다)

 

 

reference: 계량경제학 이론과 활용 2판 ( 남준우, 허인)

'코딩일기장 > 통계학' 카테고리의 다른 글

Moment와 Moment generating function  (0) 2021.10.05
Jensen Inequality  (0) 2021.10.05
Markov Inequality, Chebyshev Inequality  (0) 2021.10.05
벡터 회귀분석 Vector Regression  (0) 2021.09.27
회귀분석 Regression Analysis (1)  (0) 2021.07.29

관련글 더보기

댓글 영역