调查中的Stata输出文件(比例)

时间:2013-11-11 20:33:39

标签: stata

我需要修改我在某些CPS数据上使用的代码以获取保险范围。我需要输出一个人口普查区域覆盖百分比的文件(有四个)。看起来应该是这样的:

region n     percent
1      xxx   xx
2      xxx   xx
3      xxx   xx
4      xxx   xx

如果有必要的话,我可以用两行来定义所涵盖的百分比,而不是在每个区域覆盖,但我真的只需要覆盖的百分比。

这是我正在使用的代码:

svyset [iw=hinswt], sdrweight(repwt1-repwt160) vce(sdr)

tempname memhold
postfile `memhold' region_rec n prop using Insurance, replace
levelsof region_rec, local(lf)

foreach x of local lf{
svy, subpop(if region_rec==`x' & age>=3  & age<=17): proportion hcovany
scalar forx = `x'
scalar prop = _b[hcovany]

matrix  b =  e(_N_subp)
matrix c = e(_N)
scalar n = el(c,1,1)
post `memhold' (forx) (n) (prop) 
}

postclose `memhold'
use Insurance, clear
list

这就是它产生的:

Survey: Proportion estimation    Number of obs    =     210648
                                 Population size  =  291166198
                                 Subpop. no. obs  =      10829
                                 Subpop. size     = 10965424.5
                                 Replications     =        160

  _prop_1: hcovany = Not covered

--------------------------------------------------------------
             |                 SDR
             | Proportion   Std. Err.     [95% Conf. Interval]
-------------+------------------------------------------------
hcovany      |
     _prop_1 |   .0693129   .0046163      .0602651    .0783607
     Covered |   .9306871   .0046163      .9216393    .9397349
--------------------------------------------------------------
[hcovany] not found
r(111);

我无法弄清楚如何绕过底部的错误消息并将其保存以保存结果。我认为SE和CV也是一个理想的功能,但我不确定如何在矩阵框架内处理它。

编辑:附加输出

     +----------------------------------+
     | region~c       n       prop   se |
     |----------------------------------|
     |        1    9640   .9360977    2 |
     |        2   12515   .9352329    2 |
     |        3   14445   .8769684    2 |
     |        4   13241   .8846368    2 |
     +----------------------------------+

1 个答案:

答案 0 :(得分:1)

尝试更改_b[hcovany]的{​​{1}}。需要说明的是,以下非感性示例与您的代码类似,但不使用_b[some-value-label],而_b[sex]是变量,而是使用sex,其中_b[Male]Male的值标签。子群体大小和标准误差 也保存了。

sex

如果我们使用clear all set more off webuse nhanes2f svyset [pweight=finalwgt] tempname memhold tempfile results postfile `memhold' region nsubpop maleprop stderr using `results', replace levelsof region, local(lf) foreach x of local lf{ svy, subpop(if region == `x' & inrange(age, 20, 40)): proportion sex post `memhold' (`x') (e(N_subpop)) (_b[Male]) (_se[Male]) } postclose `memhold' use `results', clear list 代替_b[sex],我们会收到与原始帖子相同的_b[Male]错误。

对于此示例,让我们看看包含估算比例的矩阵r(111)是什么样的:

e(b)

因此,如果我们想要提取女性的比例 对于男性,我们可以使用. matrix list e(b) e(b)[1,2] sex: sex: Male Female y1 .48821487 .51178513

另一种选择是将估算结果保存在矩阵中并使用数字下标:

_b[Female]

还有其他细微的变化,例如使用<snip> matrix b = e(b) post `memhold' (`x') (b[1,2]) <snip> 并直接使用inrange返回的估算结果。

此外,您可能需要查看post及其链接:

  

[U] 13.5访问系数和标准误差。