quarta-feira, 27 de maio de 2015

RESUMO – Ajustar um banco de dados – Comandos do Stata

Post dedicado aos mestrandos em Saúde Pública da Universidade Federal do Ceará, disciplina de Informática em Saúde I. Espero que seja útil, e que aproveitem com sabedoria!
Todos os agradecimentos ao nosso caríssimo professor Dr. Carlos Henrique Alencar!

Passo 1: Entrada de dados no Stata
# Após entrar no Stata, clique no botão Data Editor, ou acesse e menu Data e depois Data Editor.
COMANDO DIGITADO: edi

Passo 2: Salvar arquivo “.log”

 


*O asterisco pode ser usado no início de uma frase e serve como texto, para se fazer observações que podem ficar salvas no log.

Passo 3: Ver o banco de dados utilizando o Data Editor (Browse):



As variáveis aparecem em 3 cores:
Preto = número / Vermelho = texto / Azul = código ou label (etiqueta)

Passo 4: Alguns comandos úteis para ajustar o banco

# Mostrar o n do banco de dados:
COMANDO DIGITADO: count

# Ordenar as variáveis pela variável “variavel1”:
COMANDO DIGITADO: sort variavel1


As casas vazias (missing) são representadas por um ponto, e são ordenadas ao final, como se fossem os maiores valores.

# Trocar o nome da variável “variavel1” para o nome “variavel2”:
COMANDO DIGITADO: rename variavel1 variavel2

# Mudar de lugar a variável 4, para ficar acima da variável 2:
COMANDO DIGITADO: move variavel4 variavel2

# Apagar uma variável:
COMANDO DIGITADO: drop var

# Corrijir valores ou dados:
COMANDO DIGITADO: replace peso= 67 in 10
Neste exemplo, corrije a variável “peso” do indivíduo “10” para 67Kg
COMANDO DIGITADO: replace sexo=”F” if id==16
Neste exemplo, corrije a variável “sexo” do indivíduo 16 (identificado pela variável “id”), para F (que está entre aspas “F” por não ser um número)


Considerações importantes:
Os dados em formato de texto, ou não-numéricos, devem ser colocados entre aspas.
Após o if, sempre se usa 2 símbolos de igualdade (p.e. ==).

# Mudar uma variável de número para texto:
COMANDO DIGITADO: tostring varnum, replace
Neste exemplo, converte a variável “varnum”, que está no formato numérico, para o formato de texto (passará de preta para vermelha).
COMANDO DIGITADO: tostring *, replace
O asterisco usado após o tostring transforma todas as variáveis numéricas para texto.

# Mudar uma variável de texto para número:
COMANDO DIGITADO: destring vartexto, replace
Neste exemplo, converte a variável “vartexto” do formato de texto para numérico.
COMANDO DIGITADO: destring peso altura, replace dpcomma
Neste exemplo, as variáveis “peso” e “altura” foram alimentadas no banco como texto e com vírgula para as casas decimais. Esse comando transforma para o formato de número com ponto.


O Stata reconhece o formato americano, o qual usa o ponto para dividir as casas decimais, e não a vírgula.

# Criar uma variável nova:
COMANDO DIGITADO: gen data2= data1
Cria a variável “data2” a partir da variável “data1”.
COMANDO DIGITADO: gen imc= peso/ altura^2 ou gen imc = peso / (altura * altura)
Cria a variável “imc” a partir das variáveis “peso” e “altura”.
COMANDO DIGITADO: gen rcq = cintura/ quadril
Cria a variável “rcq” a partir das variáveis “cintura” e “quadril”.

# Criar uma variável nova categórica ordinal a partir de uma numérica discreta ou contínua:
Exemplo, a partir da variável numérica “idade”, criar variável categórica ordinal “faixa_etaria”, na seguinte ordem:
Faixa 1 – de 30 a 36 anos
Faixa 2 – de 36 a 42 anos
Faixa 3 – de 42 a 49 anos
Faixa 4 – de 49 a 55 anos
ORDEM DE COMANDOS DIGITADOS:
1. gen faixa_etaria=1 if idade>=30 & idade<36
2. replace faixa_etaria=2 if idade>=36 & idade<42
3. replace faixa_etaria=3 if idade>=42 & idade<49
4. replace faixa_etaria=4 if idade>=49 & idade<56

# Converter datas do formato de texto para formato de data:
ORDEM DE COMANDOS DIGITADOS:
1. gen datanasc = date( data_nasc, "DMY", 2020)
Cria a variável-data “datanasc” a partir da variável-texto “data_nasc”. DMY faz um somatório em dias. 2020 é um ano escolhido como base, extrapolando o ano atual de 2015.
2. format datanasc %td
Transforma a variável criada “datanasc” para o formato dd/mm/aaaa.
Outro exemplo:
1. gen dataobito = date( data_obito, "DMY", 2020)
2. format dataobito %td

# Criar nova variável numérica a partir das variáveis datas:
Usando como exemplo as variáveis criadas acima “dataobito” e “datanasc”
ORDEM DE COMANDOS DIGITADOS:
1. gen idade= dataobito- datanasc
Cria a variável “idade”, em total de dias.
2. replace idade= idade/365.25
Transforma os valores da variável “idade” para anos.

# Recodificar variáveis
Exemplo, recodificar a variável “caminhada” de texto para número, trocando “Y” por “1” e “N” por “0”.
ORDEM DE COMANDOS DIGITADOS:
1. replace  caminhada="1" if  caminhada=="Y"
2. replace  caminhada="0" if  caminhada=="N"
Lembrando que “1” e “0” estão entre aspas porque a variável está no formato de texto. Para muda-la de texto para número:
3. destring caminhada, replace

Se a variável estiver como número, não precisa usar as aspas. Pode ser usado o comando recode.
Exemplo, recodificar a variável “caminhada”, trocando 1 por 0 e 2 por 1.
ORDEM DE COMANDOS DIGITADOS:
1. recode caminhada 1= 0
2. recode caminhada 2= 1

# Adicionar os rótulos (etiquetas) de uma variável:
Exemplo, definir rótulo da variável “caminhada”: “Sim” para 1, e “Não” para 0.
ORDEM DE COMANDOS DIGITADOS:
1. label define CAMINHA 1 "Sim" 0 "Nao"
Primeiro cria a etiqueta “CAMINHA”
2. label values caminhada CAMINHA
Depois, inseri os rótulos da etiqueta “CAMINHA” na variável “caminhada”.
COMANDOS DO BROWSE (navegador):
Variables manager > seleciona a variável “sexo” > em Value label clica em Manage > Create label > Label name “SEXO” > Value “1” > Label “Feminino” > Add > Value “0” > Label “Masculino” > Add > OK > Close > à esquerda, seleciona “sexo”, e em Value label, à direita, seleciona “SEXO”

EXERCÍCIO 1:
A) Criar variável contínua “IMC”, a partir das variáveis “peso” e “altura”;
B) Criar variável categórica ordinal “IMC2” a partir da variável “IMC”, e depois definir seus respectivos rótulos, na seguinte ordem:
Classes
Intervalos
Rótulos
1
<18.5
Desnutrido
2
18.5-24.9
Normal
3
25-29.9
Sobrepeso
4
30-34.9
Obeso I
5
35-39.9
Obeso II
6
40 ou mais
Obeso grave
ORDEM DE COMANDOS DIGITADOS:
1. gen IMC= peso/ altura^2
2. gen IMC2=1 if IMC<18.5
3. replace IMC2=2 if IMC>=18.5 & IMC<25
4. replace IMC2=3 if IMC>=25 & IMC<30
5. replace IMC2=4 if IMC>=30 & IMC<35
6. replace IMC2=5 if IMC>=35 & IMC<40
7. replace IMC2=6 if IMC>=40 & IMC<60
Deve-se estimar o valor do último intervalo para não converter os missing (os pontos).
8. label define IMC2_cat 1 "Desnutrido" 2 "Normal" 3 "Sobrepeso" 4 "Obeso I" 5 "Obeso II" 6 "Obeso grave"
9. label values IMC2 IMC2_cat

EXERCÍCIO 2:
Crie a variável “RCQ” e depois estratifique na variável nova – “RCQ2”, de acordo com a variável “sexo”, na qual homem=0 e mulher=1:
Homens - ponto de corte é 0,9; igual ou acima é risco (1) e abaixo normal (0)
Mulheres - ponto de corte é 0,8; igual ou acima é risco (1) e abaixo normal (0)
Em seguida faça os rótulos das categorias criadas: risco (1) e normal (0)
1. gen RCQ= cintura/ quadril
2. gen RCQ2=1 if RCQ>=0.9 & sexo==0
3. replace RCQ2=0 if RCQ<0.9 & sexo==0
4. replace RCQ2=1 if RCQ>=0.8 & sexo==1
5. replace RCQ2=0 if RCQ<0.8 & sexo==1
6. label define rcq_cat 1 "risco" 0 "normal"
7. label values RCQ2 rcq_cat

___________________________________________________________________________
Próximo post será sobre análises uni e bivariadas!

Cordiais saudações! 


4 comentários:

  1. Em como converter uma variável texto para número, não entendi. Digito o comando mas nada acontece. Acho que falta a informação de onde inserir o nome da variável.

    ResponderExcluir
  2. Tenho uma dúvida, sobre como transformar uma variável que diz respeito a idade , mas está apresentada como string em códigos. tentei utilizar a seguinte função:
    gen idade=.
    replace idade= (P-1000)/8760 if P<=1999
    replace idade= (P-2000)/365 if P<=2999
    replace idade= (P-3000)/12 if P<=3999
    replace idade= (P-4000)/1 if P<=4000
    Onde 1-hora (1 ano=8760 horas)
    2-dia (1 ano=365 dias)
    3-mês (1 ano=12 meses)
    4-ano (1 ano)

    ResponderExcluir