2016-07-15 7 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

'bysort year:'ではなく 'help ci'によって提案された' statsby: '接頭辞を使ってみましたか? –

+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

私はpreserveで入力する前にいくつかの変数を落としてしまったので、statsbyコマンドを試してみると 'no'と言っても機能しませんでした。メモリ内のデータは失われます。私がしなければならなかった何 は、生データを保存しただけのCIコマンドすなわち '意味statsby = R(平均)lowerci =(100 *(R(ポンド)),. 1)upperciに余分な条件を含みますdscohortgroup == 0&year> 2004&year <2015、binomial wilson level(95) ' これはうまくいきました。私はその後復元することができます!ありがとう! – Exodia16

+0

あなたは小さな問題を理解して良かったです。どちらの回答を受け入れることがより助けになると、あなたにはもう一層の評判が与えられます。 –

2

私は、コマンドのpostfile家族はここであなたを助けると思います。これはあなたのデータをマトリックスに保存しませんが、ciコマンドの結果を新しいデータセットに保存します。新しいデータセットには名前を付け、構造を設定します。分析が完了したら、postfileで保存したデータを読み込んで、Excelにエクスポートすることができます。

postfileの場合、byまたは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データをロードしたら、あなたが好きなエクセルエクスポートするコマンドを適用することができます。

関連する問題