2

を使用して Stata で双方向要約統計表を作成する場合、他の 2 つの列のtableである別の列を追加できますか?

3 つの変数 ( a, b, c) があるとします。で五分位を生成しa、次に各五分位-五分位交点bの平均の双方向テーブルを生成します。の各五分位の の上と下の五分位のc平均の差である 6 番目の列を生成したいと思います。cba

c五分位点と五分位点の交点ごとに平均の表を生成できますが、差の列がわかりません。

* generate data
clear
set obs 2000
generate a = rnormal()
generate b = rnormal()
generate c = rnormal()

* generate quantiles for for a and b
xtile a_q = a, nquantiles(5)
xtile b_q = b, nquantiles(5)

* calculate the means of each quintile intersection
table a_q b_q, c(mean c)

* if I want the top and bottom b quantiles
table a_q b_q if b_q == 1 | b_q == 5, c(mean c)

更新:これは私がやりたいことの例です。ここに画像の説明を入力

4

1 に答える 1

2

コマンドを使用collapseすると、考えているようなカスタマイズされたテーブルを作成できます。

preserve
collapse (mean) c, by(a_q b_q)
keep if inlist(b_q, 1, 5)
reshape wide c, i(a_q) j(b_q)
gen c5_c1 = c5 - c1
set obs `=_N + 1'
replace c1 = c1[`=_N - 1'] - c1[1] if mi(a_q)
replace c5 = c5[`=_N - 1'] - c5[1] if mi(a_q)
replace c5_c1 = c5_c1[`=_N - 1'] - c5_c1[1] if mi(a_q)
list, sep(0) noobs
restore

次に、出力で次のようなものを取得する必要があります。

  +-----------------------------------------+
  | a_q          c1          c5       c5_c1 |
  |-----------------------------------------|
  |   1    .2092651    .1837719   -.0254932 |
  |   2    .0256483   -.0118134   -.0374617 |
  |   3     .022957    .0586441    .0356871 |
  |   4    .0431809    .0876745    .0444935 |
  |   5   -.0859874    .0199202    .1059076 |
  |   .   -.2952525   -.1638517    .1314008 |
  +-----------------------------------------+

Stata にあまり詳しくない場合は、次のヘルプ ページがコードを理解するのに役立ちます。

help _variables
help subscripting
于 2011-09-21T06:48:34.707 に答える