Stata O que é o Stata O Stata é um programa estatístico potente, capaz de resolver tarefas simples como calcular média, desvio padrão, testes de hipótese para médias e proporções, intervalos de confiança, até estatísticas mais complexas como regressão linear múltipla, análise de variância, regressão logística, análise de sobrevivência, regressão de Cox etc. Tem recursos potentes de tabulação de variáveis e comandos para cálculo das medidas de associação usadas em epidemiologia, como razão de incidências (rate ratio), risco relativo (risk ratio), razão de chances (odds ratio) e risco atribuível. Possui recursos poderosos para manipulação de variáveis, porém as ferramentas para entrada de dados com verificação de erros de digitação são pobres. Usualmente, é melhor criar um programa para entrada de dados no EPIINFO, digitar os dados usando os recursos CHECK e VALIDATE, e depois exportar o arquivo para o STATA usando o STAT TRANSFER. Quando se carrega o programa na memória, aparece a sua tela, como na figura abaixo:
Observa-se a barra do programa (em azul, acima) e os botões do Windows (minimizar, maximizar e fechar). Logo abaixo está a barra de menu, com os recursos File, Edit, Prefs, Data, Graphics, Statistics, User, Windows e Help. No menu File, existe a opção Open, para abrir um arquivo STATA. Logo abaixo observa-se a barra de botões, com os botões Open, Save, Print Results, Begin Log, Start Viewer, Bring Results Window to front, Bring Graph Window to front, Do-file Editor, Data Editor, Data Browser, Clear more condition e Break. Na área de trabalho há 4 janelas ativas: acima à esquerda, a janela Review, onde vão surgindo os comandos já digitados. Acima à direita, a janela Results, onde vão aparecendo os resultados do processamento. Abaixo à esquerda, a janela Variables, onde ficam todas as variáveis do arquivo em uso e abaixo à direita a janela Stata Command, onde se digitam os comandos. Na penúltima linha da tela, aparece o drive ativo, isto é, onde estão sendo gravados os dados e a última linha é a barra do Windows, onde estão os botões Iniciar e os botões dos programas ativos no momento. Criando arquivos no Stata Vamos gerar um arquivo simples, contendo 4 campos. Para criar um arquivo no Stata basta clicar no botão Data Editor ou digitar na janela de comandos edit. Surge o editor, pronto para se digitar o primeiro registro da primeira variável (var1). Aqui você pode ir digitando nas colunas os conteúdos das variáveis que o Stata vai automaticamente criando as variáveis var1, var2, var3 etc. O programa a partir do que é digitado vai automaticamente criando variáveis numéricas ou categóricas, conforme o caso e determinando o tamanho de cada campo. Depois você pode mudar o nome de cada campo, por exemplo de var1 para idade. Quando a casela for deixada em branco o Stata coloca automaticamente o seu código para dado prejudicado (missing) que é o ponto2. Vamos começar, criando o arquivo abaixo. Digite inicialmente só os dados nas colunas e depois vamos aprender o comando para gerar o nome da variável. Digite 2350 e tecle ENTER para o cursor se mover para a casela de baixo e assim sucessivamente. Quando digitar o 5 o. dado da 1 a. coluna passe com as setas ou com o mouse para a 1 a. casela da 2 a. coluna e assim por diante. Quando terminar feche o editor clicando no botão X. Observe na janela Variables que surgem var1, var2, var3, var4 e var5 e na janela Review, edit. pesonasc tiparto idgest idmae sexo 2350 1 40 30 1 1500 2 33 22 1 3430 1 41 19 1 2920 1 38 33 2 3100 2 39 25 2 Pós-Graduação em Saúde Coletiva UFMA Métodos Estatísticos em Epidemiologia 2
No Stata os nomes de variáveis são minúsculos. Depois da digitação de dados, a primeira coisa que você deve fazer é salvar os dados. Vá até a janela de comandos e digite, sempre em minúsculas: save rn O Stata avisa e tecle [ENTER] file rn.dta saved (arquivo rn.dta salvo) Aqui você pode observar que o Stata usa.dta como terminação de arquivo. Utilize agora o comando describe para observar os tipos de variáveis criadas pelo Stata. describe e tecle [ENTER] Contains data from rn.dta obs: 5 vars: 5 size: 50 (100.0% of memory free) ------------------------------------------------------------------- 1. var1 int %8.0g 2. var2 byte %8.0g 3. var3 byte %8.0g 4. var4 byte %8.0g 5. var5 byte %8.0g ------------------------------------------------------------------- Sorted by: Todas as variáveis criadas são numéricas (int e byte) e todas de tamanho 8 (%8.0g). Depois vamos ver detalhadamente o que estes códigos significam. Vamos pedir agora uma listagem do arquivo. list var1 var2 var3 var4 var5 1. 2350 1 40 30 1 2. 1500 2 33 22 1 3. 3430 1 41 19 1 4. 2920 1 38 33 2 5. 3100 2 39 25 2 Pós-Graduação em Saúde Coletiva UFMA Métodos Estatísticos em Epidemiologia 3
Estatística descritiva E agora peça uma estatística descritiva destes campos. summarize Variable Obs Mean Std. Dev. Min Max ---------+----------------------------------------------------- var1 5 2660 757.5949 1500 3430 var2 5 1.4.5477226 1 2 var3 5 38.2 3.114482 33 41 var4 5 25.8 5.718391 19 33 var5 5 1.4.5477226 1 2 O Stata mostra o número de observações, a média (mean), o desvio padrão (Std. Dev.), o valor mínimo e o valor máximo. Note que no caso das variáveis tiparto e sexo, a média não tem valor algum, pois estas variáveis estão codificadas. No caso de tiparto (1=parto vaginal; 2=parto cesáreo) e no caso de sexo (1=masculino; 2=feminino). Nomeando variáveis O próximo passo é mudar os nomes das variáveis. O tamanho máximo de uma variável no Stata é 32. rename var1 pesonasc rename var2 tiparto rename var3 idgest rename var4 idmae rename var4 sexo Rotulando variáveis e valores Agora precisamos documentar o arquivo e torná-lo mais fácil de entendê-lo, utilizando rótulos (labels). Primeiro vamos documentar as variáveis. Não use acentos ou cedilha pois ficará ininteligível ( o programa não entende símbolos do português). label variable pesonasc Peso ao nascer no HU em 1998 label variable tiparto Tipo de parto label variable idgest Idade gestacional em semanas-dum label variable idmae Idade da mae em anos completos label variable sexo Sexo do recem-nascido Pós-Graduação em Saúde Coletiva UFMA Métodos Estatísticos em Epidemiologia 4
Use agora o comando describe para observar o resultado: describe Contains data from rn.dta obs: 5 vars: 5 size: 50 (99.9% of memory free) ------------------------------------------------------------------------------- 1. pesonasc int %8.0g Peso ao nascer no HU em 1998 2. tiparto byte %8.0g Tipo de parto 3. idgest byte %8.0g Idade gestacional semanas-dum 4. idmae byte %8.0g Idade da mae em anos completos 5. sexo byte %8.0g Sexo do recem-nascido ------------------------------------------------------------------------------- Sorted by: Note: data has changed since last save Para salvar as alterações feitas digite: save, replace (salva, grava por cima do arquivo antigo com o mesmo nome - rn) Vamos usar agora o recurso de rotular valores de variáveis numéricas. Por exemplo, vamos dizer que no caso da variável tiparto 1 significa parto vaginal e 2 parto cesáreo, usando os comandos label define e label values label define tipo 1 vaginal 2 cesareo label values tiparto tipo Distribuição de freqüências Peça agora a distribuição de freqüências da variável tiparto para observar o que ocorreu: tabulate tiparto Tipo de parto Freq. Percent Cum. vaginal 3 60.00 60.00 cesareo 2 40.00 100.00 Total 5 100.00 Salve novamente as alterações: save, replace Pós-Graduação em Saúde Coletiva UFMA Métodos Estatísticos em Epidemiologia 5
Outro recurso importante é ordenar o conteúdo de um campo com o comando sort: sort tiparto list Para fechar o arquivo digite: clear Para abrir o arquivo use o menu File e, em seguida, Open. Clique no arquivo rn e no botão abrir. Ou, alternativamente, digite: use rn Criação de novas variáveis e recodificação Vamos recodificar o peso ao nascer em baixo peso (aquelas crianças com menos de 2500 gramas ao nascer) e não baixo peso (2500 gramas e mais). O primeiro passo é criar uma nova variável através do comando generate. Toda variável criada no Stata tem que ser inicializada com um valor específico. No caso criaremos a variável peso=0 e recodificaremos pesonasc < 2500, criando peso=1 nestes casos. generate peso=0 replace peso=1 if pesonasc < 2500 tabulate peso peso Freq. Percent Cum. 0 3 60.00 60.00 1 2 40.00 100.00 Total 5 100.00 Da mesma forma vamos recodificar idade gestacional em prematuro (<37 semanas) e não prematuro (37 semanas e mais). generate premat=0 replace premat=1 if idgest < 37 Pós-Graduação em Saúde Coletiva UFMA Métodos Estatísticos em Epidemiologia 6
tabulate premat premat Freq. Percent Cum. 0 4 80.00 80.00 1 1 20.00 100.00 Total 5 100.00 Operadores de comparação (usados após o if) == igual a!= diferente de > maior do que < menor do que >= maior ou igual <= menor ou igual Tabelas 2 x 2 Peça agora uma tabela de peso com idade gestacional, com a opção row (para o cálculo dos percentuais das linhas) tabulate premat peso, row peso premat 0 1 Total 0 3 1 4 75.00 25.00 100.00 1 0 1 1 0.00 100.00 100.00 Total 3 2 5 60.00 40.00 100.00 Observe que a prevalência de baixo peso nesta população é de 40%. Dentre os baixo peso (1), 100% são prematuros e que dentre os não baixo peso (0), 25% são prematuros. Vamos pedir agora a tabela diferente, isto é, peso e prematuridade, com os percentuais das colunas, colocando a variável resposta (peso ao nascer) nas linhas e a exposição (idade gestacional) nas colunas. Pós-Graduação em Saúde Coletiva UFMA Métodos Estatísticos em Epidemiologia 7
tabulate peso premat, col premat peso 0 1 Total 0 3 0 3 75.00 0.00 60.00 1 1 1 2 25.00 100.00 40.00 Total 4 1 5 100.00 100.00 100.00 Operadores lógicos: & e ou! não Selecionando registros para processamento Às vezes se precisa limitar o processamento a determinados registros. Digamos que se queira processar apenas os registros do sexo masculino (1). Pode-se usar o comando keep, selecionado sexo=1 ou drop, desprezando-se sexo=2. keep if sexo==1 drop if sexo==2 Gravando o processamento em um arquivo Quando se processa grande quantidade de informação, a saída de dados vai rolando para cima na janela Results e você vai deixando de observar os resultados. Para isto grave a saída em um arquivo.log, usando o comando abaixo: log using rn.log Os resultados do processamento de dados serão gravados no arquivo rn.log. Quando você desejar ver a saída, clique com o mouse em cima do botão Begin Log e escolha a opção View Snapshot of Log file. Pós-Graduação em Saúde Coletiva UFMA Métodos Estatísticos em Epidemiologia 8
Gerando programas no Stata Geralmente quando vai processar muitos dados é conveniente, ao invés de ir processando e obtendo resultados de forma interativa, gravar os comandos Stata em um arquivo tipo texto com a extensão.do e depois executar este arquivo em lote. Vamos criar um pequeno programa para rodar no Stata. Para isto clique no botão Do-file e digite as seguintes linhas de comandos. Depois salve o arquivo com o nome rn.do use rn.dta log using rn.log describe list summarize rename var1 pesonasc rename var2 tiparto rename var3 idgest rename var4 idmae rename var4 sexo label variable pesonasc "Peso ao nascer no HU em 1998" label variable tiparto "Tipo de parto" label variable idgest "Idade gestacional em semanas-dum" label variable idmae "Idade da mae em anos completos" label variable sexo "Sexo do recem-nascido" label define tipo 1 vaginal 2 cesareo label values tiparto tipo tabulate tiparto generate peso=0 replace peso=1 if pesonasc < 2500 tabulate peso Agora execute o programa no Stata. Para isto clique em File, escolha a opção Do, clique em cima de rn.do e clique em Abrir. Ou digite na janela de comandos: do rn O Stata vai executar de uma só vez todos os comandos acima e gravar os resultados do processamento no arquivo rn.log Pós-Graduação em Saúde Coletiva UFMA Métodos Estatísticos em Epidemiologia 9
Usando o arquivo dcor.dta Vamos usar os comandos aprendidos acima, desta vez com um arquivo maior, o dcor.dta. Este arquivo armazena as variáveis do estudo FRAMINGHAM HEART STUDY, realizado nos Estados Unidos, onde se acompanhou durante 18 anos a população da pequena cidade de Framingham, para estudar os fatores de risco para doença coronariana, realizando exames periódicos de 2/2 anos. Abra o arquivo dcor.dta e peça describe, summarize e depois clique no botão Browse, para ver as variáveis do banco de dados. Compare com a descrição abaixo: sex 1=masculino 0=feminino chd diagnóstico de doença coronariana 0=não tem 1= doença coronariana presente ao primeiro exame (casos prevalentes) 2-10 = número do exame em que foi feito o diagnóstico (casos incidentes). age idade em anos ao exame inicial (45-62 anos) sbp pressão arterial sistólica em mmhg no primeiro exame (90-300 mmhg) sbp10 pressão arterial sistólica em mmhg no décimo exame (94-264 mmhg). Em 635 casos a informação está prejudicada. dbp pressão arterial diastólica em mmhg no primeiro exame (50-160 mmhg) chol colesterol sérico em mg/100 ml no primeiro exame (96-430 mg/100ml) frw peso relativo em percentual no primeiro exame (11 casos prejudicados 52-222). O peso relativo foi calculado a partir da razão entre o peso da pessoa em relação ao peso mediano para o seu grupo de sexo/altura. cig número de cigarros fumados por dia 0=não é fumante (1-60, 1 dado prejudicado) yrs_chd pessoas-ano de observação até ocorrer perda ou o primeiro evento de doença coronariana (43 pessoas já tinham doença coronariana ao primeiro exame e, portanto, não estavam mais sob risco, varia de 0 a 18 anos) yrs_dth pessoas-ano de observação para mortalidade (varia de 1 a 18 anos) death 0=vivo 2-10 = número do exame em que já estava morto cause causa do óbito (19 casos prejudicados) 0 vivo ao primeiro exame 1 doença coronariana (súbita) 2 doença coronariana (não súbita) 3 acidente vascular encefálico 4 outra doença cardiovascular 5 câncer 6 outro Pós-Graduação em Saúde Coletiva UFMA Métodos Estatísticos em Epidemiologia 10
Recodificação e tabulação Vamos recodificar o nível de colesterol sérico em 3 classes: < 220, 220 a 259 e 260 e mais. generate col=0 replace col=1 if chol >=220 & chol <=259 (&=e operador lógico) replace col=2 if chol >= 260 label variable col colesterol em mg/100ml label define colest 0 <220 1 220a259 2 260+ label values col colest tabulate col colesterol em mg/100ml Freq. Percent Cum. <220 531 37.77 37.77 220a259 478 34.00 71.76 260+ 397 28.24 100.00 Total 1406 100.00 Você também pode usar ao invés de replace o comando recode. Veja abaixo: generate col2=chol recode col2 96/220=0 220/259=1 260/430=2 label variable col2 colesterol em mg/100ml label values col2 colest tabulate col2 Vamos recodificar a pressão arterial sistólica em 0 (risco basal pa menor que 165 mmhg) e 1 (risco, pa igual ou maior que 165 mmhg). generate pas=. replace pas=1 if sbp>=165 replace pas=0 if sbp<165 label variable pas "pa sistolica - mmhg" label define pressao 0 "<165" 1 "165+" label values pas pressao tabulate pas Pós-Graduação em Saúde Coletiva UFMA Métodos Estatísticos em Epidemiologia 11
pa sistolica - mmhg Freq. Percent Cum. <165 313 22.26 22.26 165+ 1093 77.74 100.00 Total 1406 100.00 Vamos recodificar número de cigarros fumados em 0 (não fumante) e 1 (fumante), excluindo 1 caso prejudicado (cig=99): generate fumo=0 replace fumo=1 if cig!=0 replace fumo=. if cig==99 label define cigarro 0 "nao" 1 "sim" label values fumo cigarro tabulate fumo fumo Freq. Percent Cum. nao 772 54.95 54.95 sim 633 45.05 100.00 Total 1405 100.00 Qual o percentual de fumantes nesta população? Vamos agora recodificar chd, considerando 0 como não tendo doença coronariana e de 2 a 10 como casos de doença coronariana, excluindo 1 (casos prevalentes, isto é, pessoas que já tinham doença coronariana ao primeiro exame. Observe que transformamos 1 em. (missing prejudicado). Desta forma o programa não processará mais estes registros nas saídas posteriores. generate dc=chd recode dc 0=0 1=. 2/10=1 label variable dc doenca coronariana label define doenca 0 nao" 1 sim label values dc doenca tabulate dc doenca coronariana Freq. Percent Cum. nao 1095 80.34 80.34 sim 268 19.66 100.00 Total 1363 100.00 Pós-Graduação em Saúde Coletiva UFMA Métodos Estatísticos em Epidemiologia 12
Qual a incidência de doença coronariana nesta população? Vamos pedir agora uma tabulação de colesterol como fator de risco para doença coronariana, pedindo percentuais de linha e o cálculo do Qui-quadrado. tabulate col dc, row chi2 colesterol doenca coronariana em mg/100ml nao sim Total <220 423 96 519 81.50 18.50 100.00 220a259 377 81 458 82.31 17.69 100.00 260+ 295 91 386 76.42 23.58 100.00 Total 1095 268 1363 80.34 19.66 100.00 Pearson chi2(2) = 5.3202 Pr = 0.070 Observe a taxa de incidência de doença coronariana nos diversos níveis de colesterol sérico. O valor de p do Qui-quadrado foi de 0.070, portanto maior que o nível crítico de 0.05. Diz-se, então, baseado no teste de hipótese, que não há diferença estatisticamente significante entre ter colesterol elevado e sofrer de doença coronariana. Em outras palavras, as diferenças nas taxas de incidência, 18,5% naqueles com colesterol menor que 220 mg/100ml, 17,7% naqueles com colesterol sérico de 220 a 259 mg/100ml e de 23,6% naqueles com colesterol de 260 mg/100ml e mais, são provavelmente devidas ao acaso. O acaso é uma explicação provável para estas diferenças amostrais. Peça agora a tabulação da pressão sistólica e doença coronariana. tabulate pas dc, row chi2 pa doenca coronariana sistolica - mmhg nao sim Total <165 894 173 1067 83.79 16.21 100.00 165+ 201 95 296 67.91 32.09 100.00 Total 1095 268 1363 80.34 19.66 100.00 Pearson chi2(1) = 36.9959 Pr = 0.000 Pós-Graduação em Saúde Coletiva UFMA Métodos Estatísticos em Epidemiologia 13
Observe a diferença nas taxas de incidência de doença coronariana entre aqueles com pa sistólica abaixo de 165 mmhg (16,2%) comparados com aqueles com pa sistólica muito elevada (32,1%). O valor de p para o Qui-quadrado foi de 0.000, portanto considera-se a diferença amostral observada estatisticamente significante, ou seja, o acaso não é uma explicação provável para a diferença observada. Desse modo, a pa muito elevada é considerada um fator de risco para doença coronariana. tabulate fumo dc, row chi2 doenca coronariana fumo nao sim Total nao 614 134 748 82.09 17.91 100.00 sim 480 134 614 78.18 21.82 100.00 Total 1094 268 1362 80.32 19.68 100.00 Pearson chi2(1) = 3.2612 Pr = 0.071 Interprete os resultados da tabela acima. Baseado nestes resultados há associação entre fumo e doença coronariana? Cálculo das medidas de risco Outra forma de se interpretar os resultados de uma associação epidemiológica é através do cálculo de uma medida de risco, como, por exemplo, a razão de chances (odds ratio), que é uma razão entre 2 proporções (proporção de doentes expostos/proporção de não doentes expostos). O Stata vai calcular a estimativa pontual para esta medida de risco e seu intervalo de confiança de 95% pelo método de Cornfield (mais exato que o método de Woolf). Se o intervalo de confiança incluir o valor 1, considera-se que não há associação. O comando é cc (abreviatura de caso-controle) variável resposta (no caso dc) e exposição ou fator de risco (no exemplo fumo). Observe os resultado abaixo e interprete-os. Pós-Graduação em Saúde Coletiva UFMA Métodos Estatísticos em Epidemiologia 14
cc dc fumo fumo Proportion Exposed Unexposed Total Exposed -----------------+------------------------+---------------------- Cases 134 134 268 0.5000 Controls 480 614 1094 0.4388 -----------------+------------------------+---------------------- Total 614 748 1362 0.4508 Pt. Est. [95% Conf. Interval] ------------------------+---------------------- Odds ratio 1.279167.9792724 1.670906 (Cornfield) Attr. frac. ex..218241 -.0211663.4015223 (Cornfield) Attr. frac. pop.1091205 +----------------------------------------------- chi2(1) = 3.26 Pr>chi2 = 0.0709 cc dc pas pa sistolica - mmhg Proportion Exposed Unexposed Total Exposed -----------------+------------------------+---------------------- Cases 95 173 268 0.3545 Controls 201 894 1095 0.1836 -----------------+------------------------+---------------------- Total 296 1067 1363 0.2172 Pt. Est. [95% Conf. Interval] ------------------------+---------------------- Odds ratio 2.442412 1.822462 3.273429 (Cornfield) Attr. frac. ex..5905687.4512916.69451 (Cornfield) Attr. frac. pop.2093434 +----------------------------------------------- chi2(1) = 37.00 Pr>chi2 = 0.0000 Para se obter o risco relativo (risk ratio), utiliza-se o comando cs. No exemplo acima seria: cs cd pas sex Exposed Unexposed Total -----------------+------------------------+---------- Cases 164 104 268 Noncases 479 616 1095 -----------------+------------------------+---------- Total 643 720 1363 Risk.2550544.1444444.1966251 Pt. Est. [95% Conf. Interval] ------------------------+---------------------- Risk difference.11061.0682488.1529711 Risk ratio 1.765761 1.414969 2.203521 Attr. frac. ex..4336721.2932706.5461809 Attr. frac. pop.2653814 +----------------------------------------------- chi2(1) = 26.31 Pr>chi2 = 0.0000 Pós-Graduação em Saúde Coletiva UFMA Métodos Estatísticos em Epidemiologia 15