콘텐츠로 이동

도입

Stata 연습

  • 본 강의는 Stata tutorial 방식으로 진행.
  • 저장소에서 zip 파일로 다운로드 받을 수 있음. 다운로드 받지 않아도 되지만 다운로드 받아 놓으면 간편할 것임

데이터 파일들을 특정 폴더에 모두 저장하시오.

(i) Stata를 시작한 후 종료하시오. (ii) Stata를 시작한 후 Command 창에 exit라고 타이핑하여 Stata를 종료하시오. (iii) Stata를 시작한 후 Command 창에 pwd라고 입력하여 현재 작업 디렉토리가 무엇인지 확인하시오. (iv) Command 창에 ls라고 입력하여 이 디렉토리에 무슨 파일들이 있는지 확인하시오.

  • Stata는 Command 창에 직접 입력하여 명령을 실행할 수도 있고 메뉴를 클릭함으로써 가능한 작업들도 있음
    • 간단한 작업은 Command 창에 직접 입력하는 것이 간편
    • 반복되는 작업은 Stata의 “do” 파일을 이용하여 일괄실행하는 것이 간편함

Stata에서 새로운 do 파일을 만들어서(doedit) 다음을 타이핑한 후 원하는 파일 이름으로 저장하고 일괄실행하시오(2행에 올바른 폴더명을 사용할 것).

Stata 코드
set more off
cd "c:/Documents/Data Folder"
*** Work here ***
set more on
  • 로그 파일을 만들 수도 있음. 시작 위치(set more off 직후)에

    log close _all
    log using mylog.smcl, replace
    

    라고 하고 종료 위치(set more on 직전)에

    log close
    

    라고 하면 그 사이는 mylog.smcl 파일로 저장됨.

  • 다음 명령으로 pdf 파일도 만들 수 있음

    translate mylog.smcl mylog.pdf
    

계량경제학의 기초

선형모형

  • 선형모형: \(y=\beta_0+\beta_1 x_1 + \beta_2 x_2 + \beta_3 x_3 + u\)처럼 모수(\(\beta_j\))에 대하여 선형인 모형

  • 해석이 중요

    • 예를 들어 \(\beta_2\) 계수는, \(x_1\)\(x_3\)을 통제한 후 \(x_2\)가 한 단위 증가할 때 \(y\)\(\beta_2\) 단위만큼 변화할 것으로 예측됨을 의미함
    • 여기서 여타 통제변수들(여기서는 \(x_1\)\(x_3\))이 통제됨(즉, 값이 고정됨)을 이해하고 언급하는 것이 중요
    • 이 부분을 무시하면 해석이 기괴해지는 경우가 많음

지역별 자료를 사용할 때, ‘\(\mathsf{사망률} = \beta_0 + \beta_1 \mathsf{흡연인구비율} + u\)’에서 \(\beta_1\)의 의미를 해석하라. 이 변수들의 단위는 ‘사망률’은 인구 1천명당 사망자 수, ‘흡연인구비율’은 흡연인구의 비율(%)이다. 💡흡연인구비율이 1%p 높은 지역의 인구 1천명당 사망자 수는 β1명 많은 것으로 추정됨

  • 선형모형의 가장 표준적인 추정 방법은 OLS. Stata에서 reg (regress의 줄임 표현)로 구현.

death1.dta 자료 중 2010년 자료를 이용하여 위 모형을 추정하고, smoke 변수의 계수 추정치를 해석하라. 이 변수는 통계적으로 유의한가? 이 결과는 흡연이 건강에 이로움을 나타내는가? 💡흡연인구비율이 1%p 높은 지역의 인구 1천명당 사망자 수는 0.3425명 적은 것으로 추정됨. 1% 수준에서도 통계적으로 유의함. 상관관계로서 흡연이 건강에 이로움을 나타내지 않음.

코드 보기

현재 폴더에 데이터가 있다는 가정하에

use death1, clear
reg deathrate smoke if year==2010

동일한 데이터를 이용하되, 이번에는 deathratesmokeaged에 대하여 회귀하고 계수 추정치들을 해석하라(aged는 고령인구 비율(%)이다). 앞 연습문제의 결과와 비교하라. 어떻게 된 일인가?

코드 보기
reg deathrate smoke aged if year==2010

이번에는 전체 데이터(2008, 2009, 2010년)를 이용하면서 연도 더미를 포함시키고 회귀하라. 계수 추정치들을 해석하라. 특히 연도 더미들이 포함되어 있음에 유의하여 해석하라.

코드 보기
reg deathrate smoke aged i.year, vce(cl region)

위에서 vce(cl region) 옵션을 사용한 이유는 무엇이겠는가?

로그

  • 로그 증가분의 크기가 작을 때 로그의 증가분은 증가율과 유사함(100을 곱하면 백분율 증가율)
  • 로그 변수의 변화를 증가율로 바꾸어 해석하면 대략적으로 맞음(로그 변화 크기가 작을 때)
  • 로그 변화 크기가 크면(0.2~0.3 이상) \(\exp(\Delta \log x)-1\)로 변화율을 정확히 구하는 것이 좋음
  • 로그를 취하지 않았으면 단위 + ‘포인트’를 붙이고 말을 자연스럽게 바꿈(예: %p)
  • 로그 변수는 퍼센트(100 곱하는 것에 유의). 로그가 없으면 단위 다음에 ‘포인트’를 붙인 후 적당히 보기 좋게(예: %p).

변수 통제와 해석

  • 어떤 변수들을 통제하느냐에 따라 해석과 추정값이 크게 달라질 수 있음

hprice1.dta 데이터를 이용하여 ① lpricebdrmscolonial에 대하여 OLS, ② lpricebdrms, colonial, lsqrft에 대하여 OLS 하고, 두 결과에서 bdrms 변수의 계수 추정치들은 서로 비슷한가 크게 다른지, 왜 차이가 나는지 설명하라.

코드 보기
use hprice1, clear
reg lprice bdrms colonial
reg lprice bdrms colonial lsqrft

면적(sqrft)을 방수(bdrms)로 나누어 로그를 취한 lbdrmsize 변수를 생성한 후 ③ lpricebdrms, colonial, lbdrmsize에 대하여 회귀하라. 이 회귀에서 bdrms 변수의 계수 추정치의 의미를 정확히 설명하라. ①, ②, ③ 중 어느 결과가 가장 마음에 드는가? 이유는?

코드 보기
gen lbdrmsize = ln(sqrft/bdrms)
reg lprice bdrms colonial lbdrmsize

mlb1.dta 데이터를 이용하여 로그 연봉(lsalary)을 메이저리그 경력(years), 연평균 경기 수(gamesyr), 최근 3년 평균 타율(bavg), 연간 홈런(hrunsyr), 연간 타점(rbisyr)에 대하여 회귀하라. 여타 조건이 동일할 때 bavg가 1할 높은 선수는 얼마나 높은 연봉을 받을 것으로 예상하는가? 이 숫자는 합리적인가? 이유는? 홈런을 10개 더 치는 선수는 얼마나 높은 연봉을 받을 것으로 예상하는가? 이 숫자는 합리적인가? ※ 참고로, su years gamesyr bavg hrunsyr rbisyr라고 하여 각 변수들의 평균, 표준편차, 최솟값, 최댓값 등을 알 수 있다.

코드 보기
use mlb1, clear
su years gamesyr bavg hrunsyr rbisyr
reg lsalary years gamesyr bavg hrunsyr rbisyr

내생성과 외생성

  • 설명변수와 오차항이 독립이면(“설명변수가 외생적”) OLS 추정량은 비편향이고 일치성(consistency)을 가짐
  • 반면 설명변수와 오차항이 상관되면(“설명변수가 내생적”) OLS 추정량은 편향되고 inconsistent
  • 내생성의 원인으로는 크게 (i) 변수누락(통제하고 싶으나 통제하지 않음)과 (ii) 동시성(좌변과 우변이 동시에 결정됨)이나 역의 인과관계(좌변이 우변을 결정함) 등이 있음
  • 시계열 자료의 경우 모형이 잘못 설정되는 경우(예를 들어 AR(1) 모형에서 시계열상관을 갖는 오차항)에도 내생성이 발생함

변수누락

wage2.dta 데이터를 이용하여 로그 임금(lwage)을 교육수준(educ, 연수), 경력(exper, 연수), 근속연수(tenure), 결혼여부(married), 흑인여부(black), 남부 거주 여부(south), 도시 거주 여부(urban)에 대하여 회귀하라. 추정된 교육수익률은 얼마인가?

코드 보기
use wage2, clear
reg lwage educ exper tenure married black south urban

위 모형의 우변에 IQ를 추가하라. 추정된 교육수익률은 얼마인가? IQ가 없는 모형의 경우와 비교하여 설명하라.

코드 보기
* continued
reg lwage educ exper tenure married black south urban IQ

동시성

wage2.dta 자료를 이용하여 hours (노동시간)를 lwage (로그 임금), age, married, black에 대하여 OLS 회귀하라. lwage의 계수는 어떻게 해석되는가? 이 해석이 상식에 부합하는가? 이러한 결과를 어떻게 설명하겠는가?

코드 보기
use wage2, clear
reg hours lwage age married black

내생성 문제의 해결책

  • 설명변수가 내생적일 경우 ①모형을 변형하여 설명변수가 외생적이 되도록 하든지, 아니면 ②도구변수(설명변수와 연관된 외생변수)를 별도로 찾아서 도구변수 추정을 해야 함
  • 도구변수는 ‘설명변수만을 경유하여 종속변수에 영향을 미치는 변수’여야 함
    • 설명변수와 강한 상관이 있어야(relevance)
    • 오차항과 상관이 없어야(exogenous)
  • 횡단면 분석에서 좋은 도구변수는 보통 찾기가 힘듦. 전통적인 임금 방정식(능력 변수 누락)의 경우 어머니의 교육수준, 수요곡선이라면 비용 관련 변수

앞의 임금과 노동시간 실습(wage2.dta를 사용하고 피설명변수가 hours인 회귀)에서, 추정할 것이 노동공급곡선이고 lwage가 내생적인 설명변수라면, 어떤 변수를 도구변수로 사용할 수 있겠는가?

패널 분석에서는 웬만하면(특별히 의도한 경우가 아니면) 연도더미를 포함시킨다. 왜 그럴까?

이분산과 이분산에 견고한 추론

  • ‘이분산’은 설명변수 값별로 오차 분산이 다른 경우를 지칭함

    • 예를 들어, 고학력군 내의 임금격차가 저학력군 내의 임금격차보다 큰 경우
  • ‘자기상관’은 비관측 요인들이 서로 상관되는 경우를 지칭함

    • 예를 들어, 동일한 가구로부터 추출된 개인들은 동일한 경험을 공유하므로 비관측 요인이 서로 상관될 수 있음
    • 시계열 모형에서 오차항은 시간에 걸쳐 상관될 수 있음
  • 이분산과 자기상관은 OLS 추정량의 비편향성과 일치성(consistency) 면에는 문제를 일으키지 않음(시계열 자료의 경우 주의할 것)

  • 통상적인 표준오차가 잘못되어 통상적인 표준오차를 사용하는 추론(검정)이 잘못됨

  • ‘견고한’(robust) 표준오차를 사용하여 타당한 추론(검정)을 할 수 있음

  • ‘견고한’ 추론을 할 때에는 무엇에 대하여 견고한지 알고 있어야 함

    • 이분산에 대하여 견고한지(HC)
    • 이분산과 자기상관에 대하여 견고한지(HAC)
    • 아니면 동일 클러스터 내에서는 임의의 상관을 허용하고 상이한 클러스터 간에는 독립인 경우에 견고한지(cluster-robust, 중요함)
  • 견고한 표준오차를 사용하기 위해서는 표본크기가 커야 하며, 특히 클러스터 표준오차를 사용하려면 클러스터의 개수가 많아야

  • 패널 분석에서는 오차항에 시간에 걸친 상관이 있기 쉬우므로 클러스터 표준오차를 사용하는 것이 권장됨

다음 세 명령의 차이는 무엇인가? 회귀 결과들에서 어디가 같고 어디가 다른가? 💡계수 추정값 칼럼은 모두 같고 표준오차 칼럼부터 다름

use death1, clear
reg deathrate drink smoke aged i.year
reg deathrate drink smoke aged i.year, vce(r)
reg deathrate drink smoke aged i.year, vce(cl region)

Stata에서 Data browser를 열어 데이터의 구조를 살펴보고 위 세 가지 vce 옵션 중 어느 것을 사용하겠는지 설명하라.

  • 또한, Het나 AC가 존재할 때 OLS가 BLUE가 아니며, 더 나은 LS 추정방법이 존재한다(GLS, FGLS, WLS, Prais-Winsten 등)는 점도 있음
    • 패널 분석에서는 나중에 RE 회귀할 때 등장함
    • 표본크기가 클 때에는 추정의 효율성을 높이는 데 신경을 덜 씀

패널 데이터

  • 복수의 개체를 복수의 시간에 걸쳐 추적하여 만든 데이터(‘종단데이터’라고도 함)
  • 2차원 구조를 가져 복잡하므로 하첨자(\(i\), \(t\))를 잘 사용할 것

    • \(i\)만 있으면 개체 간에는 상이할 수 있으나 시간에 걸쳐서는 동일
    • \(t\)만 있으면 시간에 따라 달라지지만 모든 개체에서 동일(시계열 데이터)
    • \(i\)\(t\)가 모두 있으면 개체 간에도 상이하고 시간에 걸쳐서도 변함

광역시도별 패널데이터(세종은 충남으로 간주)에 전국 변수(예를 들어 나라전체의 성장률)가 포함되어 있다고 하자. 이 전국 변수는 어떤 첨자를 갖도록 표현하는 것이 가장 적절한가? 지역별 패널데이터의 경우 지역과 서울시청의 최단 거리 변수는 어떤 첨자를 갖겠는가(행정구역 경계가 변하지 않았다고 가정)? 1960−2018년 광역시도별 패널데이터에서 KTX나 SRT 통과 여부를 나타내는 더미변수에는 어떤 첨자를 사용하겠는가? 그 이유는?

  • 패널데이터에서 모든 개체(‘패널’이라 함)들의 관측 시기가 동일하면 균형패널 데이터(balanced panel data), 동일하지 않으면 불균형패널 데이터(unbalanced panel data)

    • 불균형패널 데이터가 만들어지는 이유는 관측이 시작되는 시점이 다르거나 패널의 마모(표본이탈) 등으로 중간에 이탈하는 등 다양한 요인이 있을 수 있음
    • 불균형패널을 제대로 설명하는 것은 복잡한 면이 있(고 대부분은 별로 신경쓰지 않)
  • Stata에서 패널분석을 하려면 Stata에게 어느 변수가 \(i\) 변수이고 어느 변수가 \(t\) 변수인지 알려 주어야 함.

    • 이때 xtset 명령을 사용(예: xtset id year).
  • 패널모형은 패널데이터 내 변수들의 관계를 표현하는 모형

    • 예를 들어 \(y_{it} = \alpha + \mathbf{x}_{it}\beta + \mu_i + \varepsilon_{it}\) (즉, \(y_{it} = \alpha_i + \mathbf{x}_{it}\beta + \varepsilon_{it}\))는 선형패널모형
    • 첨자를 잘 활용하여 변수들이 어떻게 변하는지 가시적으로 표현해 주는 것이 좋음
  • Stata에서 패널데이터 분석을 하려면 “long form”으로 데이터를 저장하는 것이 좋음(long form이 아닌 것은 wide form)

  • Long form의 예

    use death1, clear
    xtset region year
    l region year deathrate smoke aged in 1/12, sep(3)
    

실제 분석 팁

  • ‘원본’ 데이터를 스프레드시트(예: 엑셀)로 관리
  • 스크립트를 만들어 ‘원본’ 데이터로부터 ‘분석용’ 데이터를 추출. 다른 사람이 데이터를 달라고 하(고 꼭 줘야 하)면 분석용 데이터만 준다.
  • 스크립트를 만들어 분석용 데이터를 읽어들이고 계량경제 분석을 한다