단변수에 대한 회귀검정
회귀 모형에서 독립변수 각각의 효과를 검정합니다.
2 단계로 이루어 집니다.
1) 독립변수와 관찰치 사이의 상관을 계산
$$\frac{(x-\ba x)(y-\bar y)}{\sigma_x \sigma_y}$$
2) F score 즉, F 값과 대응되는 p value를 계산한다.
F 검정은 정규분포를 따르는 모집단에서 분류된 집단의 분산이 동일하고 각 집단의 평균이 같다고 가정한다.
H0: 각 그룹의 분산은 같다.
회귀계수의 검정에서 각 변수는 그 회귀계수가 0일 경우 즉, 반응변수의 평균과의 잔차에 대한 분포와 독립변수가 사용될 때 추정치와의 잔차의 분포를 비교합니다.
다음의 독립변수(ind)와 반응변수(de)에 대해 F 검정의 결과는 regression_f() 메소드를 적용합니다. 이 메소드는 sklearn.feature_selection클래스 메소드입니다.
>>> from sklearn import feature_selection
>>> ind
array([[ 17550., 17580., 17345.],
[ 17550., 17750., 17400.],
[ 17610., 17955., 17530.],
[ 17890., 17905., 17370.],
[ 17445., 17470., 17135.],
[ 17365., 17445., 17230.],
[ 17395., 17425., 17225.],
[ 17400., 17405., 17205.],
[ 17300., 17555., 17215.],
[ 17575., 18010., 17550.],
[ 17710., 17785., 17455.],
[ 17580., 17630., 17485.],
[ 17685., 17885., 17500.],
[ 17500., 17670., 17490.],
[ 17430., 17485., 16840.]])
>>> de
array([17750, 17875, 17370, 17265, 17335, 17380, 17250, 17500, 17610,
17520, 17585, 17585, 17520, 16840, 16985], dtype=int64)
>>> feature_selection.f_regression(ind, de)
(array([ 0.12716965, 0.36784891, 1.48167167]),
array([ 0.72710626, 0.55462331, 0.24514876]))
위 결과에서 위의 값들은 F value이고 아래 값들은 각 변수의 p value이다. 이 결과에 의하면 각 변수들이 반응변수과의 상관에서 생성되는 분포의 분산의 차이는 없다고 할 수 있습니다.
그러나 이 분포는 모집단이 정규분포를 따른다는 가정위에서 성립됩니다. 또한 위 데이터의 샘플수가 작기 때문에 모집단에서 일부를 추출하여 표분평균을 계산하는 과정으로 반복하여 샘플수를 증가시켜 보면 다음과 같습니다.
>>> da=np.c_[ind, de]
smp=np.random.choice(len(da), size=5)
nda=np.mean(da[smp,:], axis=0).reshape(1, 4)
for i in range(3001):
smp=np.random.choice(len(da), 5)
nda1=np.mean(da[smp, :], axis=0).reshape(1, 4)
nda=np.r_[nda, nda1]
nda
Out[140]:
array([[ 17603., 17748., 17362., 17409.],
[ 17544., 17640., 17410., 17558.],
[ 17514., 17762., 17400., 17504.],
...,
[ 17477., 17570., 17308., 17494.],
[ 17592., 17790., 17398., 17473.],
[ 17580., 17661., 17317., 17349.]])
>>> len(nda)
3003
>>> feature_selection.f_regression(nda[:,:3], nda[:,3])
(array([ 50.61216817, 109.83841674, 365.41579061]),
array([ 1.40143913e-12, 2.88718268e-25, 5.84373864e-77]))
위 결과는 각 변수는 다른 분산을 가지므로 변수 모두가 효과가 있음을 나타냅니다.
회귀 모형에서 독립변수 각각의 효과를 검정합니다.
2 단계로 이루어 집니다.
1) 독립변수와 관찰치 사이의 상관을 계산
$$\frac{(x-\ba x)(y-\bar y)}{\sigma_x \sigma_y}$$
2) F score 즉, F 값과 대응되는 p value를 계산한다.
F 검정은 정규분포를 따르는 모집단에서 분류된 집단의 분산이 동일하고 각 집단의 평균이 같다고 가정한다.
H0: 각 그룹의 분산은 같다.
회귀계수의 검정에서 각 변수는 그 회귀계수가 0일 경우 즉, 반응변수의 평균과의 잔차에 대한 분포와 독립변수가 사용될 때 추정치와의 잔차의 분포를 비교합니다.
다음의 독립변수(ind)와 반응변수(de)에 대해 F 검정의 결과는 regression_f() 메소드를 적용합니다. 이 메소드는 sklearn.feature_selection클래스 메소드입니다.
>>> from sklearn import feature_selection
>>> ind
array([[ 17550., 17580., 17345.],
[ 17550., 17750., 17400.],
[ 17610., 17955., 17530.],
[ 17890., 17905., 17370.],
[ 17445., 17470., 17135.],
[ 17365., 17445., 17230.],
[ 17395., 17425., 17225.],
[ 17400., 17405., 17205.],
[ 17300., 17555., 17215.],
[ 17575., 18010., 17550.],
[ 17710., 17785., 17455.],
[ 17580., 17630., 17485.],
[ 17685., 17885., 17500.],
[ 17500., 17670., 17490.],
[ 17430., 17485., 16840.]])
>>> de
array([17750, 17875, 17370, 17265, 17335, 17380, 17250, 17500, 17610,
17520, 17585, 17585, 17520, 16840, 16985], dtype=int64)
>>> feature_selection.f_regression(ind, de)
(array([ 0.12716965, 0.36784891, 1.48167167]),
array([ 0.72710626, 0.55462331, 0.24514876]))
위 결과에서 위의 값들은 F value이고 아래 값들은 각 변수의 p value이다. 이 결과에 의하면 각 변수들이 반응변수과의 상관에서 생성되는 분포의 분산의 차이는 없다고 할 수 있습니다.
그러나 이 분포는 모집단이 정규분포를 따른다는 가정위에서 성립됩니다. 또한 위 데이터의 샘플수가 작기 때문에 모집단에서 일부를 추출하여 표분평균을 계산하는 과정으로 반복하여 샘플수를 증가시켜 보면 다음과 같습니다.
>>> da=np.c_[ind, de]
smp=np.random.choice(len(da), size=5)
nda=np.mean(da[smp,:], axis=0).reshape(1, 4)
for i in range(3001):
smp=np.random.choice(len(da), 5)
nda1=np.mean(da[smp, :], axis=0).reshape(1, 4)
nda=np.r_[nda, nda1]
nda
Out[140]:
array([[ 17603., 17748., 17362., 17409.],
[ 17544., 17640., 17410., 17558.],
[ 17514., 17762., 17400., 17504.],
...,
[ 17477., 17570., 17308., 17494.],
[ 17592., 17790., 17398., 17473.],
[ 17580., 17661., 17317., 17349.]])
>>> len(nda)
3003
>>> feature_selection.f_regression(nda[:,:3], nda[:,3])
(array([ 50.61216817, 109.83841674, 365.41579061]),
array([ 1.40143913e-12, 2.88718268e-25, 5.84373864e-77]))
위 결과는 각 변수는 다른 분산을 가지므로 변수 모두가 효과가 있음을 나타냅니다.
댓글
댓글 쓰기