0

我正在尝试计算按年完成治疗的人的比例的 95% 二项式威尔逊置信区间(数据集是每个人的行列)。

我想将结果存储到一个矩阵中,以便我可以使用该putexcel命令将结果导出到现有的 Excel 电子表格,而无需更改工作表的格式。我创建了一个二进制变量dscomplete_binary,如果治疗未完成,则为 0,如果治疗已完成,则为 1。

我尝试了以下方法:

bysort year: ci dscomplete_binary, binomial wilson level(95)

这给出了具有 95% 置信区间的每年的输出。以前我曾经statsby折叠数据集以将结果存储在变量中,但这会从内存中清除数据集,因此我必须不断地重新打开它。

有没有办法运行命令并以表格格式存储结果,以便数据以与此类似的方式存储:

    year     mean        LowerCI     UpperCI
r1  2005    .7031588    .69229454   .71379805
r2  2006    .75532377   .74504232   .7653212
r3  2007    .78125924   .77125096   .79094833
r4  2008    .80014324   .79059798   .80935836
r5  2009    .81860977   .80955398   .82732689
r6  2010    .82641232   .81723672   .83522016
r7  2011    .81854123   .80955547   .82719356
r8  2012    .83497983   .82621944   .8433823
r9  2013    .85411799   .84527379   .86253893
r10 2014    .84461939   .83499599   .85377985

我尝试了以下命令,它们对二项式 Wilson 选项给出了不同的估计:

svyset id2
bysort year: eststo: ci dscomplete_binary, binomial wilson level(95)
4

2 回答 2

2

我认为postfile命令系列会在这里为您提供帮助。这不会将您的数据保存到矩阵中,但会将ci命令的结果保存到您命名并设置其结构的新数据集中。分析完成后,您可以postfile按照自己选择的方式加载保存的数据并导出到Excel。

对于postfile,您在循环中分析数据,而不是使用byor bysort

假设您的数据运行年份为 2005-2014,这里是示例代码:

/*make sure no postfile is open, in case a previous run did not close the file*/
cap postclose ci_results

/*create the postfile that will store results*/
postfile ci_results year mean lowerCI upperCI using ci_results.dta, replace

/*loop through years*/
forval y = 2004/2014 {
    ci dscomplete_binary if year==`y', binomial wilson level(95)
        /*store saved results from ci to postfile.  Make sure the post statement contains results in the same order stated in postfile command.*/
    post (`y') (r(mean)) (r(lb)) (r(ub))
}

/*close the postfile once you've looped through all the cases of interest*/
postclose ci_results
use ci_results.dta, clear

将 ci_results.dta 数据加载到内存后,您可以应用任何您喜欢的 Excel 导出命令。

于 2016-07-19T18:25:28.503 回答
1

这是已经提出的使用建议的发展statsby。对它的反对非常令人费解,因为很容易回到原始数据集。重新加载数据集需要一些机器时间,但是在寻找替代方案上花费了多少个人时间?

由于没有我们可以使用的数据集,我提供了一个可重现的示例。

如果您希望重复执行此操作,您将编写一个更精细的程序来执行此操作,这就是本论坛的全部内容。

我将如何将结果导出到 Excel 留给那些有这种倾向的人:无论如何都没有提供所需内容的详细信息。

. sysuse auto, clear 
(1978 Automobile Data)

. preserve 

. statsby mean=r(mean) ub=r(ub) lb=r(lb), by(rep78) : ci foreign, binomial wilson level(95)  
(running ci on estimation sample)

      command:  ci foreign, binomial wilson
         mean:  r(mean)
           ub:  r(ub)
           lb:  r(lb)
           by:  rep78

Statsby groups
----+--- 1 ---+--- 2 ---+--- 3 ---+--- 4 ---+--- 5 
.....

. list 

     +----------------------------------------+
     | rep78       mean         ub         lb |
     |----------------------------------------|
  1. |     1          0   .6576198          0 |
  2. |     2          0   .3244076          0 |
  3. |     3         .1   .2562108   .0345999 |
  4. |     4         .5   .7096898   .2903102 |
  5. |     5   .8181818   .9486323   .5230194 |
     +----------------------------------------+

. restore 

. describe 

结果describe将表明我们回到了起点。

于 2016-07-19T19:16:31.893 回答