2014년 2월 26일 수요일

How to use Stata 8. Regression Analysis [회귀분석]: Specification analysis part 4 [estat ovtest; estat hettest; estat szroeter; estat imtest; estat vif]

이번에는 Regression estimation (OLS)의 여러 가정(assumption)들이 위배되는지 아는지에 대한 테스트를 체크해보자. 여기에서 설명된 모든 명령어들은 regression이 추정된 후에 사용하여야 한다.
우선, 앞에서 사용된 회귀식을 다시 추정해보자.



1. Ramsey's test for omitted variables [estat ovtest]

Ramsey의 omitted variable test는 estat 명령어를 실행시키면 된다.








2. Heteroscedasticity test [estat hettest; estat szroeter; estat imtest]































3. Variance inflation factors [estat vif]

Regression estimation에서 중요한 이슈중의 하나가 다중공선성(multi-collinearity)이다. 이를 테스트하는 하나의 방법은 Variance Inflation Factors이다. VIF를  estat vif 명령어를 실행하여 얻을 수 있다.











How to use Stata 7. Regression Analysis [회귀분석]: Specification analysis part 3 [Leverage; Leverage-versus-residual-squared plot; Standardized and Studentized residual; DFITS; Cook's Distance; Welsch Distance]

1. Leverage

회귀식을 추정한 후에, Outlier를 체크하는 것은 매우 중요한 과정이다. Outlier를 체크하여 어떤 관측치가 추정된 회귀식에 가장 벗어나 있는지를 파악하여, 이것의 원인이 무엇인지 파악하여야 한다. 아마도, 그것은 데이터 입력과정에서의 실수 때문일 수도 있다. 이러한 통계치들의 대표적인 것이 leverage (diagonal element of the projection matrix)이다. Leverage 값은 Stata에서 predict 명령어와 hat 옵션을 사용하면 계산할 수 있다.


















이 중, 상위 5% 는 0.10이상의 leverage값을 갖고 있다. 이렇게 높은 leverage값을 갖고 있는 관측치를 확인해보자.









2. Leverage-versus-residual-squared plot

이 그래프는 정규화된 잔차의 제곱 값과 앞에서 계산된 leverage을 2차원 그래프로 보여준다.



























이 그래프에서 우리는 높은 leverage값과 높은 잔차(residual)값을 갖는 관측치를 찾아낼 수 있다. 좀 더 자세히 파악하기 위해, mlabel 옵션을 사용하여 다시 그려보자.



























그래프에서 보는 것처럼, VW Diesel이 문제를 일으킬 수 있다는 것을 보여준다. 실제로 VW Diesel은 데이터에서 유일한 디젤(Diesel)차량이기도 하다.



3. Standardized and Studentized residual

이 두개의 잔차는 잔차의 표준 오차에 대해서 조정된 값이다. Stata에서는 다음과 같이 계산할 수 있다.









4. DFITS, Cook's Distance, and Welsch Distance

DFITS, Cook's Distance, and Welsch Distance는 leverage versus residual-squared plot을 하나의 통계치로 보여주는 값이다. Outlier를 판단하기 위한 cut-off 값은 다음과 같다.


  • DFITS: higher values greater than 2 square root of k/n (Belsley, Kuh, and Welsch 1980, p.28)
  • Cook's distance: greater than 4/n (Bollen and Jackman 1990, p.265-66)
  • Welsch distance: 3 sqaure root of k (Chatterjee & Hadi 1988, p.124) [n: number of observations | k: number of independent variables (including the constant)]

DFITS의 계산은 predict 명령어에 dfits 옵션을 사용하면 된다. 







위의 표는 DFITS 컷오프(cut-off) 값 이상을 갖고 있는 관측치의 리스트이다.

다음은 Cook's Distance를 계산하고 cut-off값 이상을 갖고 있는 관측치의 리스트를  보여준다.













마지막으로, Welsch distance 값을 계산하고 cut-off 값 이상을 갖고 있는 관측치의 리스트를 살펴보자.











References


  • Belsley, D. A., E. Kuh, and R. E. Welsch (1980) Regression Diagnostics: Identifying Influential Data and Sources of Collinearity, New York: Wiley
  • Bollen, K. A., and R. W. Jackman (1990) Regression diagnostics: An expository of outliers and influential cases. In Modern Methods of Data Analysis, ed. J. Fox and J. S. Long, 257-291. Newbury Park, CA: Sage
  • Chatterjee, S. and A. S. Hadi (1988) Sensitivity Analysis in Linear Regression. New York: Wiley

How to use Stata 6. Regression Analysis [회귀분석]: Specification analysis part 2 [Component-plus-residual plots; Residual-versus-predictor plots]

1. Component-plus-residual plots (CPR)

앞서 언급했던 added-variable plot은 outliers을 확인하는데는 유용하지만, 함수 형태를 확인하는데는 사용될 수 없다. 이때 사용할 수 있는 것은 component-plus-residual plot이다. Added-variable plot은 outlier를 확인할 수 있지만, component-plus-residual plot은 그렇지 않다. 그러나, component-plus-residual plot은 함수형태의 가정(assumption)에 대한 테스트 할 수 있다. 또한 Component-plus-residual plot과 Added-variable plot 모두 그래프에 그려지는 회귀선(regression line)의 추정된 회귀 모델의 계수와 같다는 특징을 갖고 있다. 


이제 CPR plot을 그려보자. 

우선, 회귀식을 추정해보자. 


















위의 회귀식은 mpg 변수가 종속변수와 Non-linear한 관계를 보여준다. 그러나 우리가 이러한 관계에 대해 알지 못하고 단지 선형적(linear)인 관계만 있다고 가정해서 아래와 같은 회귀식을 추정했다고 해보자. 




그러나, 다른 연구자가 mpg가 종속변수와 Non-linear한 관계가 있을 것 같은 생각이 든다면, 우리는 CPR plot을 그려서 판단해 볼 수 있다. 






























mpg변수의 Non-linearity를 판단하기 위해, median spline 곡선을 함께 그렸다. 

또한, 우리는 Augmented component-plus-residual plot을 그려서 Nonlinearity를 판단할 수 있다. 





























2. Residual-versus-predictor (RVP) plots

Residual-versus-predictor plot도 회귀분석의 기본적인 가정들이 위배되는지 아닌지를 판단하는 매우 간단한 방법중의 하나이다. 만약 기본적인 가정들이 다 충족된다면 그래프에서 어떠한 패턴도 발견되어서는 안된다. 위의 추정된 식에서 mpg변수와 종속변수에 대한 RVP plot을 그려보자. 
































How to use Stata 5. Regression Analysis [회귀분석]: Specification analysis part 1 [residual-versus-fitted plot; added-variable plot]

Regression model 추정 후에는, 추정된 모델이 OLS (Ordinary Least Squares)의 가정들에 위배되는지 아닌지를 체크하여야 한다.

1. RVF(Residual-versus-fitted) plot

이 그래프는 Regression estimation에 의해 추정된 예측치와 잔차(Residuals)간의 관계를 보여준다.

[data: auto.dta (use http://www.stata-press.com/data/r12/auto) | Stata version 12.1]

우선, Regression model을 추정해보자.


















다음은, RVF plot을 그려보자. [그리는 방법: regression model 추정후, rvfplot 명령어를 사용한다. 여기에서 yline(0)는 y축 값이 0인 지점에서 reference line을 그리라는 의미임.]






















이 그래프에서 어떠한 패턴이 나타난다면, 동분산(Homoscedasticity) 가정(assumption)에 위배된다고 볼 수 있다. 다시 말해, 잘 추정된 모델에서는 어떠한 패턴도 나타나지 않는다고 말할 수 있다.


2. Added-variable plots (or partial-regression leverage plot)

보통 regression은 2개 이상의 독립변수를 갖고 있다. 만약 독립변수가 1개라면, 우리는 쉽게 독립변수와 종속변수사이의 관계를 그릴 수 있다. 그러나 대부분의 경우는 그렇지 않다. 따라서, 우리는 added-variable plot을 그려야 한다. 예를 들어, 위의 Regression에서, mpg 변수에 대해 added-variable plot을 그려보자. avplot 명령어를 사용하면 added-variable plots을 그릴 수 있다.





















위의 그래프에서 왼쪽 상단의 2개의 포인트와 오른쪽 상단의 1개의 포인트, 즉 다시 말해 outlier을 발견할 수 있다. 이 3개의 포인트는 mpg와 price의 관계에 무관한 포인트라고 말할 수 있다. 이에 대해 added-variable plot을 다시 그려보자. 이번에는 mlabel(make)옵션을 사용해보자.
























다시 말해, 3개의 자동차 maker(Linc. Versailles; Cad. Eldorado; Cad. Seville)의 차량은 mileage가 자동차 가격의 영향을 미치지 않는다는 의미이다. (물론, 위에서 추정된 Regression에 근거하여) Added-variable plots을 사용하여, 우리는 outlier를 발견할 수 있다.

또한, 모든 독립변수에 대한 added-variable plots을 그리고 싶다면 avplots 명령어만 입력하면 된다.































2014년 2월 25일 화요일

How to use Stata 4. Regression analysis [회귀분석] 출력문을 조금 보기 좋은 표로 만들어보자. [estimates table, esttab 명령문]

Stata에서 출력문은 다음과 같이 출력된다.




















Stata를 사용하시는 분들에게는 비교적 이해하기 쉬운 출력문이기는 하지만, 보고하기에는 조금 부족하다. 그래서, 이를 개선시키기 위해 우리는 estimates store 와 estimates table 명령문을 사용하면 된다.






















Regression estimation을 실행한 후, estimates store 명령문을 실행시켜 결과치를 저장한후, estimates table 명령문을 통해 표를 디스플레이 하면 된다. 앞서 출력문보다는 조금 개선된 것처럼 보인다.

위에서 설명한 estimates table 명령문보다 esttab 명령문을 사용하면 더 개선시킬수 있다.
[esttab 명령문은 user-written program이기 때문에, 별로도 설치해야 한다. 만약 설치되어 있지 않다면, 명령문 창에 findit을 입력하고 esttab을 입력하면 검색할 수 있으며, 단지 클릭해서 쉽게 설치할 수 있다]

























2014년 2월 23일 일요일

How to use Stata 3. Multiple Regression (OLS) [regress 명령어] 1. 회귀분석을 실행하자...

Regression(회귀분석)은 가장 기본적인 분석 방법중의 하나이다. 가장 빈번히 사용되는 방법으로 그중 OLS (Ordinary Least Square)는 가장 기본적인 방식이다.

Stata에서 OLS는 regress 명령어로 실행할 수 있다.

[data: auto.dta (http://www.stata-press.com/data/r12/auto) | Stata 12.1 version]

여기에서는 다음과 같은 모델을 추정하려고 한다.























위의 출력문은 regress 명령문에 대한 결과를 보여준다.
우선, OLS 추정결과는 모델에 74개의 관측치가 사용되었고, 결정계수(R-squared)는 0.6913, adj. R-squared는 0.6781이라는 것을 보여준다. 또한, 사용된 3개의 변수는 모두 5% 수준에서 모든 통계적으로 유의미하다는 것으로 보여주고 있다.

여기에서 고려해야 할 한가지 사항은 회귀분석에서 추정된 계수(coefficient)에 대해 변수간의 비교가 불가능하다는 것이다. 이는 변수간의 단위가 다르다는 것에서 비롯된 것이다. 따라서, 추정된 계수를 정규화(Normalization)하면, 비교가 가능하다.[정규화된 계수를 흔히 beta 계수라고 한다.]

추정된 계수를 정규화하기 위해서는 beta 옵션을 사용하면 된다.




















beta 옵션을 사용하여, 우리는 각 변수의 정규화된(Normalized) 계수(coefficient)를 얻을 수 있다. 이 추정된 모델에서 weight 변수의 정규화된 계수값이 가장 크다는 것을 알 수 있다.

다시, 앞에서 추정한 식으로 돌아가보자. 일반적으로, 모델 추정치로 표시되는 결과치 외에도, 다른 부가적인 결과치를 출력하는 명령어가 있다.




































Stata에서 모든 명령어 앞에 quietly를 붙이게 되면, Stata에서 명령문을 실행한 후에, 어떠한 결과치도 출력하지 않는다. 그리고, ereturn list를 실행하면, 모든 결과치를 출력하게 된다. 아래의 리스트는 regress 명령어의 의해 출력되는 통계 값들을 보여준다.



































Regression을 실행한 후에는 Stata에서 몇가지의 가설 검정을 할 수 있다. test 명령어를 사용하면, 추정된 계수 값과 VCE를 이용하는 Wald test를 실행할 수 있다.

Wald test 를 실행하기 위해 새로운 regression을 실행해보자.























여기에서 length = 0이라는 가설을 검정해보자.










출력문은 'length = 0'이라는 가설이 5% 레벨에서 가설이 reject되지 않는다. (p-value: 0.0966)

만약 'length=1'이라는 가설을 검정해보자.









출력문은 'length = 1'이라는 가설은 reject된다는 것을 보여준다. (p-value: 0.0000)

또한, 2개의 변수의 계수(coefficient)를 비교하는 검정도 가능하다.










출력문은 'length = turn'이라는 가설이 reject되지 않는다. (p-value: 0.8932)

또한 joint test도 가능하다.









How to use Stata 2. 변수의 분포를 시각적으로 살펴보자 [histogram 명령어]

이제는 시각적으로 변수의 분포를 살펴보자. Stata에서 histogram 명령어를 사용하면 쉽게 살펴볼 수 있다.

히스토그램(Histogram)은 확률 분포 함수를 시각적으로 보여주는 하나의 방법이다.

[여기에서 사용되는 데이터(data)는 auto.dta (http://www.stata-press.com/data/r12/auto)이다]

우선 마일리지(mileage) 변수에 대한 히스토그램을 그려보자.




히스토그램에서 모든 바(bar)의 면적으로 합하게 되면 1이 된다.
histogram 명령문 내의 다른 옵션(default: density)을 사용하면 다른 단위로 표시가능하다 - 단위: density(default); fraction; frequency; percent

또한 히스토그램과 정규분포(Normal density) 곡선과 커널 분포(Kernel density) 곡선을 겹쳐 그릴 수 있다.

  • 정규분포 곡선: histogram 명령문 뒤에, normal 옵션을 사용한다.




















  • 커널 분포 곡선: histogram 명령문 뒤에, kdensity 옵션을 사용한다. 




















2014년 2월 22일 토요일

How to use Stata 1. 데이터를 살펴보자. [codebook, describe, summarize 명령어]

데이터 분석에서 가장 기본적인 것은 데이터를 자세하게 살펴보는 것이다. 데이터에 포함된 변수들이 어떠한 특성을 갖고 있는지? 미싱(missing)은 없는지? 변수가 어떻게 코딩이 되어 있는지? 

Stata에서 우리는 몇몇 명령어를 통해 이러한 일들을 손쉽게 수행할 수 있다. 

예제1. 데이터 살펴보기 [codebook 명령어]

codebook 명령어는 데이터 내의 변수 이름, 라벨(labels)을 체크하고, 코드북(codebook)을 생성해주는 역할을 한다. 
여기서 사용할 데이터는 educ3.dta이다 (http://www.stata-press.com/data/r12/educ3). 

우선, fips와 division 변수에 대해 codebook을 실행해보자. 
이 codebook 명령어는 두 변수에 대한 기본적인 특성들을 표시해준다. 예를 들면 fips변수의 경우, missing이 존재하지 않으며, 평균이 256495, 표준편차가 156998라는 것을 알 수 있다. 

만약, 모든 변수에 대한 개략적인 설명을 보고 싶으면, compact 옵션을 사용하면 된다. 

또한 데이터내의 어떠한 문제가 있는지 살펴보고 싶다면, problems 옵션을 실행시켜 살펴보자.
결과는 데이터내의 dc라는 변수가 상대적으로 많은 미싱(missing)을 갖고 있다는 것을 설명해주고 있다. 

예제 2. 데이터에 대한 간단한 요약(summary) 보여주기 [describe 명령어]

describe 명령어는 데이터에 대한 간략한 설명을 보여준다. 

예제 3. 기술 통계 보여주기 [summarize 명령어]

summarize 명령어를 사용하면, 손쉽게 기술통계(descriptive statistics)를 보여줄 수 있다. 
여기에서는 auto.dta 데이터(http://www.stata-press.com/data/r12/auto)를 사용한다. 
summarize 명령어를 통해 mpg라는 변수의 관측치(observation), 평균(mean), 표준편차(Std. Dev.), 최소값(Min)과 최대값(Max)을 알 수 있다. 

만약 더 자세한 통계치를 보고 싶다면, detail 옵션을 사용하면 된다.

codebook, describe, summarize 명령어를 통해 우리는 데이터와 데이터내의 변수들의 기본적인 특성들을 손쉽게 파악할 수 있다.