2016-07-15 29 views
0

我試圖計算95%二項式威爾遜置信區間爲完成年度治療的人羣的比例(數據集按行列出每個人)。在Stata中存儲二項式置信區間的結果使用前綴

我想將結果存儲到矩陣中,以便我可以使用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 

我曾嘗試下面的命令,這給不同估計二項式威爾遜選項:

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

您是否使用'help ci'而不是'bysort year:'建議的'statsby:'前綴進行了研究? – 2016-07-15 16:33:21

+0

是的,正如我提到的那樣做,但我的問題與statsby命令是它從Stata清除內存,這意味着我將不得不重新打開它,因爲我使用的數據集是相當大的,這不是很有幫助。我想在保留原始數據集的同時做到這一點,以便在我的ci命令後可以恢復它。 – Exodia16

+1

那麼使用'preserve'&'restore'呢? – radek

回答

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結果將顯示我們回到了我們開始的位置。

+0

我很抱歉,在我進入保存之前,我已經放棄了一些變量,所以當我嘗試statsby命令時,它不會工作,因爲它說'不;內存中的數據將會丟失'。 什麼,我要做的就是保存的原始數據,只是包括在CI中命令即 'statsby平均= R(平均值)lowerci =(100 *(R(磅)),. 1)upperci額外條件= r(ub),by(year):ci dscomplete_binary if dscohortgroup == 0&year> 2004&year <2015,binomial wilson level(95)' 它的工作!我可以然後恢復!謝謝! – Exodia16

+0

很好,你已經理解了小問題。接受更有用的答案會給你更多的聲譽。 –

2

我覺得postfile家族的命令將幫助你在這裏。這不會將您的數據保存到矩陣中,但會將ci命令的結果保存到一個新的數據集中,您的名稱和您設置的結構。分析完成後,您可以加載由postfile保存的數據,並按照您選擇的方式導出到Excel。

對於postfile,分析循環中的數據而不是使用bybysort

假設在你的數據運行在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導出命令。