2016-07-15 19 views
0

Ich versuche das 95% Binomial-Wilson-Konfidenzintervall für den Anteil der Personen zu berechnen, die die Behandlung pro Jahr abschließen (der Datensatz ist für jede Person in einer Liste aufgeführt).Speichern der Ergebnisse des Binomialkonfidenzintervalls in Stata unter Verwendung des Präfixes

Ich möchte die Ergebnisse in einer Matrix speichern, so dass ich den Befehl putexcel verwenden kann, um die Ergebnisse in eine vorhandene Excel-Tabelle zu exportieren, ohne die Formatierung des Blattes zu ändern. Ich habe eine binäre Variable dscomplete_binary erstellt, die 0 für eine Person ist, wenn die Behandlung nicht abgeschlossen wurde, und 1, wenn die Behandlung abgeschlossen wurde.

Ich habe versucht, die folgende:

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

Dies gibt Ausgang jedes Jahr mit dem 95% Konfidenzintervall. Zuvor habe ich statsby verwendet, um das Dataset zu komprimieren, um die Ergebnisse in Variablen zu speichern, aber dies löscht das Dataset aus dem Speicher und muss daher ständig neu geöffnet werden.

Gibt es eine Möglichkeit, den Befehl und die Ergebnisse in tabellarischer Form zu laufen, so dass die Daten in ähnlicher Weise wie diese gespeichert ist:

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 

Ich habe die folgenden Befehle versucht, die verschiedenen geben Schätzungen der binomischen Option Wilson:

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

Haben Sie das Präfix 'statsby:' wie von 'help ci' vorgeschlagen und nicht' bysort year: '? –

+0

Ja, wie gesagt tat ich das, aber mein Problem mit dem Statsby-Befehl ist, dass es den Speicher von Stata löscht, was bedeutet, dass ich es wieder öffnen müsste und da der Dataset, den ich verwende, ziemlich groß ist, ist das nicht sehr hilfreich. Ich möchte dies tun, während ich meinen ursprünglichen Datensatz beibehalte, damit ich ihn nach meinem ci-Befehl wiederherstellen kann. – Exodia16

+1

Wie wäre es mit 'preserve' &' restore' dann? – radek

Antwort

1

Dies ist eine Entwicklung des Vorschlags bereits gemacht zu verwenden statsby. Die Einwände dagegen sind ziemlich rätselhaft, da es leicht ist, zum ursprünglichen Datensatz zurückzukehren. Es gibt eine gewisse Zeit beim erneuten Laden eines Datensatzes, aber wie viel persönliche Zeit wurde für die Suche nach einer Alternative aufgewendet?

Ohne einen Datensatz, den wir verwenden können, habe ich ein reproduzierbares Beispiel zur Verfügung gestellt.

Wenn Sie dies wiederholt tun möchten, schreiben Sie ein ausführlicheres Programm, worum es in diesem Forum geht.

Ich lasse, wie man Ergebnisse nach Excel exportiert, als eine Sache für diejenigen, die so geneigt sind: keine Details dessen, was gewünscht wird, werden in jedem Fall zur Verfügung gestellt.

. 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 

Die describe Ergebnisse werden zeigen, dass wir zurück sind, wo wir angefangen haben.

+0

Ich entschuldige mich, ich hatte einige Variablen fallengelassen, bevor ich in die Erhaltung eingetreten bin, und als ich den statsby Befehl ausprobierte, würde es nicht funktionieren, weil es 'nein' sagte; Daten im Speicher wären verloren. Was ich tun musste, war die Rohdaten zu erhalten und sind nur zusätzliche Bedingungen in der ci Befehl dh 'statsby mean = r (Mittelwert) lowerci = (100 * (r (lb)) ,. 1) upperci = r (ub), nach (Jahr): ci dscomplete_binary wenn dscohortgroup == 0 & Jahr> 2004 & Jahr <2015, Binomial Wilson Level (95) ' Und es hat funktioniert! Ich könnte dann wiederherstellen! Vielen Dank! – Exodia16

+0

Gut, dass Sie die kleinen Probleme verstanden haben. Akzeptieren Sie, welche Antwort hilfreicher ist, würde Ihnen auch mehr Ansehen verschaffen. –

2

ich denke, die postfile Familie von Befehlen Sie hier helfen. Dadurch werden Ihre Daten nicht in einer Matrix gespeichert, sondern die Ergebnisse des Befehls ci werden in einem neuen Datensatz gespeichert, den Sie benennen und dessen Struktur Sie festlegen. Nachdem die Analyse abgeschlossen ist, können Sie die von postfile gespeicherten Daten laden und nach Ihren Wünschen in Excel exportieren.

Für postfile analysieren Sie die Daten in einer Schleife anstelle von by oder bysort.

die Jahre in Ihrem Datenlauf 2005-2014, hier Unter der Annahme, Beispielcode:

/*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 

Sobald Sie die ci_results.dta Daten in den Speicher laden, Sie alle Excel-Export-Befehl anwenden können, die Sie mögen.