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

Я попытался следующие команды, которые дают разные оценки в биномиальной опции Wilson:

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

Вы изучали использование префикса 'statsby:', как предложено 'help ci', а не' bysort year: '? –

+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, это не сработало бы, поскольку он сказал «нет»; данные в памяти будут потеряны ». Что я должен был сделать сохранить исходные данные и просто включать в себя дополнительные условия в команде či т.е. 'statsby среднее = г (средняя) lowerci = (100 * (г (фунт)) ,. 1) upperci = r (ub), by (year): ci dscomplete_binary, если dscohortgroup == 0 & year> 2004 & year <2015, биномиальный уровень Wilson (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 данные в памяти, вы можете применить любой экспортирующей команду Excel вам нравится.