2014-04-08 2 views
1

저는 건강 상태의 사회 경제적 불평등을 분해 분석하고 있으며 일반적으로 세계 은행 절차에 따라 코드를 다운 시켰습니다. 여기 내 코드의 관련 부분이 있습니다.Stata의 비 회귀 식 추정 테이블 만들기

foreach x of global X { 
qui { 
    sca b_`x' = _b[`x'] 
    corr rank `x' [aw=newweight], c 
    sca cov_`x' = r(cov_12) 
    sum `x' [aw=newweight] 
    sca elas_`x' = (b_`x'*r(mean))/avg 
    sca CI_`x' = 2*cov_`x'/r(mean) 
    sca con_`x' = elas_`x'*CI_`x' 
    sca prcnt_`x' = con_`x'/c 
    } 
di "`x' elasticity:", elas_`x' 
di "`x' concentration index:", CI_`x' 
di "`x' contribution:", con_`x' 
di "`x' percentage contribution:", prcnt_`x' 
} 

지금, 제가 원하는 것은이 최종 사 추정치가 계수와 함께 추가 된 네 개의 회귀 테이블과 유사, X 내 변수 x를 모두 표시 할 수 있습니다. 나는 이러한 추정치를 적절히 "저장"하고 esttab, tabout, table 등으로 전화하는 방법을 찾기 위해 고심하고 있습니다. 원래 회귀 계수 만 표시합니다.

+0

'avg'는이 코드에서 정의되지 않았습니다. 또한, 어디에서 왔는지는 분명치 않다. – StasK

+0

초보자를위한 참고 사항 :이 코드는 완전하지 않으므로 실행되지 않습니다. –

답변

3
foreach x of global X { 
    qui { 
     sca b_`x' = _b[`x'] 
     corr rank `x' [aw=newweight], c 
     sca cov_`x' = r(cov_12) 
     sum `x' [aw=newweight], meanonly 
     sca elas_`x' = (b_`x'*r(mean))/avg 
     sca CI_`x' = 2*cov_`x'/r(mean) 
     sca con_`x' = elas_`x'*CI_`x' 
     sca prcnt_`x' = con_`x'/c 
    } 
    di "`x' elasticity:", elas_`x' 
    di "`x' concentration index:", CI_`x' 
    di "`x' contribution:", con_`x' 
    di "`x' percentage contribution:", prcnt_`x' 
    matrix results = nullmat(results) \ /// 
        (elas_`x', CI_`x', con_`x', prcnt_`x') 
} 
matrix rownames results = $X 
matrix colnames results = elasticity concentration_index /// 
          contribution percentage_contribution 

지금 당신은 당신이 사용하실 수 있습니다 STATA에서 어떤 출력 프로그램 매트릭스 results을 공급할 수 있습니다.

1

estout과 같은 추정 포맷 지정 명령을받을 수있는 적절한 e(b)e(V) 행렬을 생성 할 수있는 nlcom, post을 사용합니다. 내가 코멘트에서 언급 한 바와 같이 _b[x]이 어디에서 오는

gen rank_n = rank/_N 
gen rank_sq = rank_n * rank_n 
foreach x of global X { 
    gen cross_rank_`x' = rank_n * `x' 
    gen `x'_sq = `x' * `x' 

    svy : mean `x' `x'_sq rank_n rank_sq cross_rank_`x' 

    nlcom /// 
     (corr: (_b[cross_rank_`x']-_b[`x']*_b[rank_n]) /// 
      /sqrt((_b[`x'_sq]-_b[`x']*_b[`x'])*(_b[rank_sq]-_b[rank_n]*_b[rank_n])) /// 
     (concentration: 2*(_b[cross_rank_`x']-_b[`x']*_b[rank_n])/_b[`x']) 

    estout /*the way you like it*/ 
} 

의 라인을 따라 뭔가가 있기 때문에, 나는 meannlcom로 포장하는 방법을 잘 모르겠습니다, 말할 수 없습니다.

또한 the use of globals는 Stata의 가장 큰 것입니다 ... 최소한 SO에 대한 투표에 따르면 :).