Você está na página 1de 15

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:

para o STATA usando o STAT TRANSFER. Quando se carrega o programa na memória, aparece a

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

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

Estatística descritiva

E agora peça uma estatística descritiva destes campos.

summarize

Max

---------+-----------------------------------------------------

Variable |

Obs

Mean

Std. Dev.

Min

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”

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

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

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

Total

-----------+----------------------+----------

premat |

0

1

|

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.

tabulate peso premat, col

| premat

Total

-----------+----------------------+----------

peso |

0

1

|

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.

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

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

age

presente ao primeiro exame (casos prevalentes) 2-10 = número do exame em que foi feito o diagnóstico (casos incidentes). 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

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

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

(&=e operador lógico)

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

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

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|

-----------+----------------------+----------

Total

nao

sim |

<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

sistolica -|

Total

-----------+----------------------+----------

mmHg

| doenca coronariana

|

nao

sim |

<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

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

Total

-----------+----------------------+----------

fumo |

nao

sim |

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.

cc dc fumo

fumo

Proportion

Exposed

-----------------+------------------------+----------------------

|

Exposed

Unexposed |

Total

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

|

+-----------------------------------------------

3.26 Pr>chi2 = 0.0709

chi2(1) =

cc dc pas

pA sistolica - mmHg

Proportion

Exposed

-----------------+------------------------+----------------------

|

Exposed

Unexposed |

Total

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

|

+-----------------------------------------------

37.00 Pr>chi2 = 0.0000

chi2(1) =

Para se obter o risco relativo (risk ratio), utiliza-se o comando cs. No exemplo acima seria:

cs cd pas

sex

Total

-----------------+------------------------+----------

|

Exposed

Unexposed |

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

|

+-----------------------------------------------

26.31 Pr>chi2 = 0.0000

chi2(1) =