Translate

2018년 10월 9일 화요일

다중선형회귀 분석 (3)



 앞서 간단하게 다중선형회귀 분석에 대해서 알아봤습니다. 하지만 가상의 예제로는 제대로 분석을 하기 어려울 것입니다. 실제 사례를 분석해보면서 좀 더 구체적으로 알아보겠습니다. 패키지 MASS에는 보스턴 지역의 집값과 다양한 변수들의 관계를 연구한 Boston 데이터가 존재합니다. MASS에서 아래와 같이 불러내 확인해 봅니다. 


library(MASS)

data("Boston", package = "MASS")
data<-boston span="">
summary(data)


> library(MASS)
> data("Boston", package = "MASS")
> data<-boston span="">
> summary(data)
      crim                zn             indus            chas              nox               rm             age              dis              rad        
 Min.   : 0.00632   Min.   :  0.00   Min.   : 0.46   Min.   :0.00000   Min.   :0.3850   Min.   :3.561   Min.   :  2.90   Min.   : 1.130   Min.   : 1.000  
 1st Qu.: 0.08204   1st Qu.:  0.00   1st Qu.: 5.19   1st Qu.:0.00000   1st Qu.:0.4490   1st Qu.:5.886   1st Qu.: 45.02   1st Qu.: 2.100   1st Qu.: 4.000  
 Median : 0.25651   Median :  0.00   Median : 9.69   Median :0.00000   Median :0.5380   Median :6.208   Median : 77.50   Median : 3.207   Median : 5.000  
 Mean   : 3.61352   Mean   : 11.36   Mean   :11.14   Mean   :0.06917   Mean   :0.5547   Mean   :6.285   Mean   : 68.57   Mean   : 3.795   Mean   : 9.549  
 3rd Qu.: 3.67708   3rd Qu.: 12.50   3rd Qu.:18.10   3rd Qu.:0.00000   3rd Qu.:0.6240   3rd Qu.:6.623   3rd Qu.: 94.08   3rd Qu.: 5.188   3rd Qu.:24.000  
 Max.   :88.97620   Max.   :100.00   Max.   :27.74   Max.   :1.00000   Max.   :0.8710   Max.   :8.780   Max.   :100.00   Max.   :12.127   Max.   :24.000  
      tax           ptratio          black            lstat            medv      
 Min.   :187.0   Min.   :12.60   Min.   :  0.32   Min.   : 1.73   Min.   : 5.00  
 1st Qu.:279.0   1st Qu.:17.40   1st Qu.:375.38   1st Qu.: 6.95   1st Qu.:17.02  
 Median :330.0   Median :19.05   Median :391.44   Median :11.36   Median :21.20  
 Mean   :408.2   Mean   :18.46   Mean   :356.67   Mean   :12.65   Mean   :22.53  
 3rd Qu.:666.0   3rd Qu.:20.20   3rd Qu.:396.23   3rd Qu.:16.95   3rd Qu.:25.00  
 Max.   :711.0   Max.   :22.00   Max.   :396.90   Max.   :37.97   Max.   :50.00  


 데이터에는 결측값이 없으며 506개의 관측값과 14개의 변수가 있습니다. 각각의 변수에 대해서 보는 방법은 ?데이터 이름입니다. 

?Boston

 crim
per capita crime rate by town.

zn
proportion of residential land zoned for lots over 25,000 sq.ft.

indus
proportion of non-retail business acres per town.

chas
Charles River dummy variable (= 1 if tract bounds river; 0 otherwise).

nox
nitrogen oxides concentration (parts per 10 million).

rm
average number of rooms per dwelling.

age
proportion of owner-occupied units built prior to 1940.

dis
weighted mean of distances to five Boston employment centres.

rad
index of accessibility to radial highways.

tax
full-value property-tax rate per \$10,000.

ptratio
pupil-teacher ratio by town.

black
1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town.

lstat
lower status of the population (percent).

medv
median value of owner-occupied homes in \$1000s.

Source

Harrison, D. and Rubinfeld, D.L. (1978) Hedonic prices and the demand for clean air. J. Environ. Economics and Management 5, 81–102.

Belsley D.A., Kuh, E. and Welsch, R.E. (1980) Regression Diagnostics. Identifying Influential Data and Sources of Collinearity. New York: Wiley.


 각각의 변수가 의미하는 것은 범죄율, 산화질소 농도 (대기 오염 지표), 세율, 교사대 학생 비율, 저소득층 비율, 흑인 인구 비율, 보스턴 구직 센터와의 거리, 그리고 타운 별 집값의 중위값 등입니다. 40년전 발표된 데이터라 집값이 싸다는 걸 알 수 있습니다. 집값에 큰 영향을 미치는 요소는 여러 가지겠지만, 아마도 대기 질이 나쁠 수록 집값이 쌀 것으로 예상됩니다. 하지만 대기 질이 좋다는 이야기는 도로가 멀고 주변에 인구 밀도가 낮아 접근성이 떨어지는 지역일수도 있습니다. 어떤 관계를 가지는 알기 위해 plot을 이용해서 살펴보겠습니다. 


plot(data)



  plot(데이터 이름)을 통해서 서로간의 상관 관계를 쉽게 한눈에 파악할 수 있습니다. 하지만 변수가 너무 많으면 눈에 잘 들어오지 않기 때문에 관심 있는 일부 변수만 뽑아서 확인할 때도 있습니다. 여기서는 일단 집값 (중위값)과 대기 오염의 상관성을 보기로 했다고 가정합니다. 보스턴 데이터는 변수가 모두 연속형이기 때문에 분포를 확률밀도 그래프로 살펴보고 다시 둘 사이의 그래프도 그려 봅니다. 

d=density(data$nox,na.rm=TRUE)
plot(d)
rug(data$nox)

d=density(data$medv,na.rm=TRUE)
plot(d)
rug(data$medv)

plot(data$nox,data$medv)







 대략적으로 대기 질이 나빠질수록 집값이 떨어지는 것으로 파악됩니다. 아마도 보스턴 근교는 접근성 보다 녹지 비율 등이 더 큰 영향을 미치는지도 모르겠습니다. 두 데이터 모두 분포는 크게 한쪽으로 치우친 것 같지는 않지만, 산화질소 농도는 약간 왼쪽으로 치우친 분포입니다. 아무튼 우선 선형회귀 분석을 해보겠습니다. 


model1=lm(medv~nox, data=data)
summary(model1)

par(mfrow=c(2,2))
plot(model1)



> model1=lm(medv~nox, data=data)
> summary(model1)

Call:
lm(formula = medv ~ nox, data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-13.691  -5.121  -2.161   2.959  31.310 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   41.346      1.811   22.83   <2e-16 span="">
nox          -33.916      3.196  -10.61   <2e-16 span="">
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 8.323 on 504 degrees of freedom
Multiple R-squared:  0.1826, Adjusted R-squared:  0.181 
F-statistic: 112.6 on 1 and 504 DF,  p-value: < 2.2e-16



 값은 유의하게 나왔지만, 잔차도는 썩 좋지 않게 나왔습니다. 그 이유는 분포도에서도 확인할 수 있는데, 대기 오염 수준과 관계없이 집값 중위값이 높은 지역이 꽤 있기 때문입니다. 여기에는 집값에 영향을 미치는 다른 여러 가지 요소들이 영향을 미쳤을 것입니다. 대기 오염이 좀 있더라도 다른 조건이 좋다면 집값이 비싸질 이유가 있는 것이죠. 이를 검증하기 위해 다음 시간에 다른 여러 변수를 넣은 새로운 모델을 만들어 보겠습니다. 



댓글 없음:

댓글 쓰기