39
Conhecendo o Stata 7 1 Conhecendo o Stata 7 o É um software estatístico o Veja site www.STATA.com o Já esta na versão 8 que é um pouquinho diferente que a 7. Atenção arquivos salvos em STATA 8 não abrem no 7. o Abra o STATA tem várias janelas 1 - Na linha de comando você conseguirá recuperar os comandos já executados clicando em Page Up ou Page Down 2 Na janela de variáveis: basta clicar na variável para que ela apareça na linha de comando 3 Na janela de “Review” basta clicar em um dos comandos para que eles apareçam na linha de comando podendo ser modificado e novamente executado 1 - Linha de comando 2 Variáveis 3 - Lista comandos já executados

Minicurso de Stata 7

Embed Size (px)

Citation preview

Page 1: Minicurso de Stata 7

Conhecendo o Stata 7

1

Conhecendo o Stata 7

o É um software estatístico

o Veja site www.STATA.com

o Já esta na versão 8 que é um pouquinho diferente que a 7.

Atenção arquivos salvos em STATA 8 não abrem no 7.

o Abra o STATA tem várias janelas

1 - Na linha de comando você conseguirá recuperar os comandos já

executados clicando em Page Up ou Page Down

2 – Na janela de variáveis: basta clicar na variável para que ela

apareça na linha de comando

3 – Na janela de “Review” basta clicar em um dos comandos para que

eles apareçam na linha de comando podendo ser modificado e

novamente executado

1 - Linha de comando

2 – Variáveis

3 - Lista comandos

já executados

Page 2: Minicurso de Stata 7

Conhecendo o Stata 7

2

Ainda temos as seguintes janelas:

Tipo de Arquivos

.dta : arquivo contendo os dados – pode apenas ser aberto no

STATA ou exportado para que possa ser aberto em outros softwares

.do: Arquivo contendo uma seqüência de comando que poderá ser

executado inúmera vezes (equivalente a um arquivo “.sas”)

.ado: arquivo que contem as macros/programas do STATA. Pode ser

criado usando a linguagem macro. Uma vantagem: muitos usuários

criam seus ado’s e disponibilizam na internet

.hlp: arquivo de ajuda para cada ado file – aberto na janela do

Help.

.gph: Ao gráficos feitos no STATA podem ser salvos em arquivos

terminados gph

.dct: Dicionário de dados do STATA para ler arquivos em formato

ASCII utilizando o comando -infile-

Disposição do arquivo dta

Colunas são as variáveis

E linhas são as observações.

Comandos necessários ao iniciar o STATA:

-clear- Limpa a memória do STATA, garante que um arquivo Dta em

branco está em uso; necessário antes do comando –use-

-set mem ???- aloca memória necessária para lidar com arquivos com

mais de 1 MB de tamanho (default do Intercooled). Antes de uma

linha como essa é necessário que o comando –clear- seja executado:

-set more on/off- muitas vezes quando a listagem dos resultados

será interrompida pela mensagem –more- sendo necessário clicar em

alguma tecla do teclado ou o botão “Go” para dar continuidade. -

set more off- evita essa mensagem

Help! Editor e Visualizador de

dados

Abre um editor para os

arquivos “Do”

Page 3: Minicurso de Stata 7

Conhecendo o Stata 7

3

!!! Atenção: Pode-se ter variáveis com letras maiúsculas, mas

maiúsculas serão sempre maiúsculas no STATA. Os comando são

escritos sempre em letras minúsculas!!!

Usando o editor de arquivos do

Tudo que for digitado na linha de comando poderá ser colado no

editor de arquivos do. Esse editor é muito útil quando precisamos

rodar uma análise diversas vezes. Não é necessário o uso de “;” no

final de cada comando como no SAS; e como no SAS não é necessário

“rodar” todo o programa de vez, basta selecionar a parte que se

quer rodar e clicar no botão que diz “Do current file”. Também é

possível rodar um arquivo do sem abri-lo no editor, basta na linha

de comando digitar “do arquivo.do” . Isso também é valido para o

editor Do, ou seja qualquer arquivo do poderá ser invocado e

executado dentro de outro arquivo do.

Entrando com Dados –use-

Para chamar um arquivo de dados em .DTA no Stata, utilize o

comando –use- ou utilize os menus: File>Open>*.dta

Exemplo:

use "C:\Stata\census.dta", clear

/* le todo o arquivo*/

use state region pop using "C:\Stata\census.dta", clear

/*le apenas variaveis state region pop do arquivo census.dta*/

use "C:\Stata\cancer.dta" if died==1, clear

/* le apenas as variaveis onde a variavel died recebe valor 1*/

/* Linhas de comentários podem ser escritas dessa maneira */

* ou com apenas um asteristico no seu inicio

/* linhas assim não serão executadas pelo STATA*/

/*!!! Não é preciso como no sas terminar a linha de comando com “;”

apenas quando na primeira linha do arquivo “.do” esteja o seguinte comando:

delimet (;);

ai sim, todas as linhas terão que terminar com “;”

*/

!!!! Uma outra maneira simples de entrar com os dados no STATA, se

tratando de arquivos de dados pequenos, é simplesmente copiar de

uma planilha em Excel e colar no Editor de dados. Para arquivos

mais complexos como no caso da PNAD é necessário o uso de um

dicionário de dados e isto será visto nas próximas aulas.!!!!

Salvando um arquivo de Dados –save-

Utilize o comando –save- para salvar arquivos .dta

Exemplo:

save "C:\Stata\aula.dta"

/* salva o arquivo no diretório STATA*/

Page 4: Minicurso de Stata 7

Conhecendo o Stata 7

4

save "C:\Stata\aula.dta", replace

/* salva substituindo o arquivo aula.dta*/

!!!Use a opção, replace apenas quando realmente quiser substituir

o arquivo já existente!!!

O comando -compress _all- irá reduzir o tamanho do seu arquivo

quando possível liberando sempre mais memória

. compress _all

. save "C:\Stata\census.dta", replace

Salvando resultados em arquivos log

O comando - log using- pode ser usado para gerar arquivo de saída

para os resultados gerados pelo STATA.

Para criar um log faça :

. log using "C:\Stata\aula.log", replace/append

!!! É necessário fechar o arquivo LOG sempre antes de sair do

STATA ; use o comando -log close-!!!

Ainda é possível utilizar as opções –log on/off- que abre ou fecha

um arquivo log criado sempre que necessário. Exemplo

log using "C:\Stata\aula.log", replace

log off

use aula.dta, clear

sum /*mostra o conteudo do arquivo com algumas estatisticas basicas */

log on

tab age drug

log off

log close

Nesse exemplo o arquivo log conterá apenas o resultado para o

comando tab. Isso ficará mais claro mais a frente.

!!! Os resultados gerados pelo STATA também podem ser copiados e

colados em qualquer planilha ou editor de texto !!!

Lista de comandos iniciais: Para testar os comando abra um arquivo

de dados, digite por exemplo:

use "C:\Stata\auto.dta", clear

!!! O help do STATA não é tão ruim. Consulte sempre que necessário

basta na linha de comando digitar “help –comando-”!!!

Comando –describe- ou –des- Lista as variáveis de um arquivo Dta

mostrando formatação e labels. Veja no help a opção “fullnames”.

Page 5: Minicurso de Stata 7

Conhecendo o Stata 7

5

Comando –ds- listas os nomes das variáveis em um arquivo dta.

Comando –summarize- ou –sum- Listas as variáveis em um arquivo dta

e algumas de suas estatísticas básicas: N, Media, DP, Min, Max;

Comando –keep- Comando usado para selecionar observações ou

variáveis, ex:

keep if chefe==1 /*seleciona, mantendo no arquivo, apenas os chefes*/

keep chefe idade educa /* seleciona mantendo no arquivo apenas essas três

variáveis*/

Comando –drop- Remove variáveis ou observações de um arquivo

drop if chefe~=1 /* remove do arquivo as pessoas que tem a variável chefe

DIFERENTE de 1*/

drop renda posic /* remove do arquivo as variaves renda e posic*/

Comando –display- Usado para fazer cálculos que não afetarão os

dados, ex:

display 2*3*7

Comando –generate- ou –gen- ou –g- deve ser usado toda vez que uma

nova variável for criada. Posse ser associado com –if-, ex:

gen A= B*C

g D= A*2 if C==1

!!!Olhe o help para “functions” para conhecer as funções que

podem ser usadas com o comando generate – por exemplo log() ln()

exp() int() round() max() min() etc!!!

Comando –egen- uma outra maneira de criar variável. Tem suas

próprias funções alguma delas podendo ser combinadas com o comando

–by-. Veja help egen

Comando –rename- dá novos nomes as variáveis de um arquivo dta

Rename A Nova_A

Comando –recode- re-codifica valores das variáveis. No Stata 8 ,

quando usado com a opção “,gen()” cria uma nova variável re-

codificada – um bom comando para criação de variáveis categóricas

a partir de variáveis contínuas, ex:

recode idade (min/14.999=1)(14.999/34.999=2)(34.999/54.999=3) ///

(54.999/max=4) , generate(gridade)

Essa opção não é válida no Stata 7.

/*No Stata 7 faça:*/

g gr_price=price

recode gr_price min/3895=1 3895/5006=2 5006/10000=3 10000/max=4

Page 6: Minicurso de Stata 7

Conhecendo o Stata 7

6

Uma outra maneira de criar uma var categórica sem o uso do –

recode-

g gr_price1=.

replace gr_price1=1 if (price<3895)

replace gr_price1=2 if (price>=3895 & price<5006)

replace gr_price1=3 if (price>=5006 & price<10000)

replace gr_price1=4 if (price>=10000)

replace gr_price1=. if price==.

Comando –replace- utilizado para modificar variáveis já existentes

em um arquivo de dados. Note que o STATA não permite re-criar uma

variável sem o uso do –replace-, outro ex:

gen A= B*C

replace A=B

replace A=C if B~=A

!!Atenção : No STATA “missing” é o maior valor de todos!!

Comando –encode- cria uma variável numérica de uma variável string

(texto), cria também labels de valores; o comando –decode- cria

uma variável string de uma variável numérica que fora criada pelo

comando –encode-. !!! Para criar uma variável string utilizando o

comando –gen- é necessário informar o seu formato, ex:

encode sexo , generate(genero)

drop sexo

decode genero, gen(sexo)

ou

gen str1 sexo=string(gênero)

replace sexo=”F” if genero==”1”

replace sexo=”M” if genero==”2”

Comando –destring- U ma outra maneira de criar uma variável

numérica de uma string

destring var_string , generate(var_numer)

!!!

O destring só pode ser usado quando você tem uma variável em

formato texto, mas que seus dígitos são números. Por exemplo, em

um banco existe o código de município em formato string e o

destring cria um novo código numérico – equivalente ao comando

INPUT () do sas.

O STATA também contem um comando equivalente ao SUBSTR no sas,

veja o help functions e

subinstr(s1,s2,s3,n) returns s1 where the first n occurrences

in s1 of s2 have been replaced with s3. If n is `.', all

occurrences are replaced.

!!!

Page 7: Minicurso de Stata 7

Conhecendo o Stata 7

7

Comando –renvars- Um comando muito útil para modificar nomes de

variáveis. É uma macro não disponível pelo STATA, precisa ser

baixada da Internet.

renvars _all, l /* coloca todas as variáveis com letras minúsculas*/

Syntax dos commandos

[prefixo:] commando [lista de var][if … ][in….][ponderação][,

opções]

Prefixo: Um exemplo de prefixo é o comando –by- que permite fazer

análises delimitando sub-universos

sort sexo

by sexo: sum

Lista de Variáveis: as variáveis incluídas na sua análise,

exemplos de lista de variáveis

_all todas as variáveis

sexo idade gravida três vars

gravida peso-altura var grávida e todas as variáveis

entre peso e altura

pro* todas as variáveis começam com pro

IF e IN: tambem delimitam sub universos

sum _all if sexo==1 /* produz um sumario dos dados para as obs com sexo

igual a 1*/

sum _all in 1/200 /*produz o sumario dos dados nas 200 primeiras

observações*/

Ponderação: Existem 4 opções de ponderação

fweights: pesos de freqüência (diz quantas vezes cada obs deve ser

repetida)

pweights: Indicam o peso amostral (inverso da probabilidade de

seleção)

aweights: Peso analítico (pesos inversamente proporcionais a

variância de uma obs – a soma desses pesos representaram o numero

total de obs na amostra)

iweights: sem definição estatística representa a importância de

cada obs

Segunda e Terceira Aulas

1. Base de dados a. Leitura -- Exemplo da PNAD 2002 e dicionário b. Extensão do comando --use-- delimitando variáveis e

universo

c. Dica: gl “...” (libname) d. Transferência de arquivos e. Sub-universos f. Combinando arquivos (--merge--, --append--)

Page 8: Minicurso de Stata 7

Conhecendo o Stata 7

8

g. Comparando arquivos (--cf3--) h. Documentação (label variable & value) i. Variáveis Dummy j. Algoritmos (--replace--) k. Sorteando e Transpondo (reshape, transpose)

Lista de Novos comandos

-infile- Le no STATA arquivos textos. É preciso usar um arquivo

formato DCT com o dicionário do arquivo texto:

/* o arquivo DCT tem essa cara:*/

dictionary {

_column(1) double V0101 %4f "ANO DE REFERÊNCIA"

_column(5) byte UF %2f "UNIDADE DA FEDERAÇÃO"

_column(5) double V0102 %8f "NÚMERO DE CONTROLE"

_column(13) byte V0103 %3f "NÚMERO DE SERIE"

}

/* deve ser salvo X.dct*/

/* Para chamar o arquivo DCT em um arquivo DO, escreva:*/

infile using "Arquivo em dct",using ("arquivo com os dados em ASCII")

-global- ou –gl- Linguagem macro. No nosso caso inicial vamos usar

este comando para formar uma espécie de Diretório (libname), ex:

gl NOME DO DIR "ENDEREÇO DO DIR"

gl in "C:\Documents and Settings\Alinne Veiga\Meus documentos\Alinne\Aulas"

/*Toda vez que eu escrever no meu arquivo do $in o STATA vai entender como

C:\Documents and Settings\Alinne Veiga\Meus documentos\Alinne\Aulas */

*outro exemplo:

gl tab "Titulo da Tabela"

display "$tab"

tab machine

/* o resultado será

. display "$tab"

Titulo da Tabela

. tab machine

five brands |

of machine | Freq. Percent Cum.

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

1 | 13 22.81 22.81

2 | 11 19.30 42.11

3 | 9 15.79 57.89

4 | 13 22.81 80.70

5 | 11 19.30 100.00

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

Total | 57 100.00

*/

Page 9: Minicurso de Stata 7

Conhecendo o Stata 7

9

-sort- Sorteia (ascendente) o arquivo de acordo com as variáveis

listadas. É necessário antes de alguns comandos tipo –merge- e –

by:-

sort urbano

by urbano: sum _all

/*uma maneira de ver as estatísticas básicas por condição Urbana e rural*/

/* veja –help sort- e veja –help gsort-*/

-merge- Comando usado para unir dois arquivos que tenha variáveis

comuns que sirvam com variáveis chave. Une as linhas comuns de

dois arquivos. Por exemplo, você conduz uma pesquisa com dois

períodos no tempo, as mesmas pessoas são entrevistadas e existe um

código para cada pessoa e essa variável se chama cód_pess.

Vc precisa unir os arquivos de dados dos dois períodos, garantindo

que as pessoas tenham a série para os dois períodos:

/*é necessario sortear os arquivos pela variavel chave*/

use periodo1, clear

sort cod_pes

use periodo2, clear

sort cod_pes

/* abre o arquivo do periodo1*/

use periodo1, clear

/* junta o arquivo 1 com o 2 pela variavel codpes*/

merge cod_pes using periodo2.dta

/* o merge cria uma variavel que indica como o merge funcionou, veja o help

essa variável se chama _merge e é sempre bom pedi um tab dela*/

tab _merge

/*_merge==3 significa apenas os registros comuns aos dois arquivos*/

keep if _merge==3

drop _merge

/*é bom jogar for a a var _merge pois toda vez que esse comando for executado

uma nova _merge será criada, dando erro se ela já existir no arquivo de dados.

Se vc não quiser apaga-la do arquivo pode renomeala tipo

*/

*rename _merge merge1 /*vc saberá que _merge1 corresponde ao primeiro merge e

assim por diante.*/

-append- Um outro comando para unir arquivos, mas dessa vez não é

preciso ter uma var chave. Na verdade o append coloca as novas

observações abaixo das do arquivo em uso, e o merge coloca as

novas observações ao lado. Por exemplo, você tem um arquivo para

Urbano e outro para Rural com as mesmas variáveis. Você precisa

fazer uma análise conjunta e tem que unir os dois arquivos, você

pode fazer o seguinte:

Page 10: Minicurso de Stata 7

Conhecendo o Stata 7

10

use arq_urbano, clear

append using arq_rural

sum /*vai fazer o sum de toda a amostra URB + RUR*/

-erase- Comando para apagar arquivo dta que não são mais

necessários:

erase temp.dta /*apaga o arquivo temp.dta. eh necessário escrever a extensão

.dta*/

-format- Especifica o formato em que a variável será apresentada.

Necessário quando pedimos para listar partes do arquivo dta ou

para garantir que o STATA não truncará uma variável longa.

format age %9.0g

format name %20s

-cf- e –cf3- Comando utilizado para comparar dois arquivos DTA

supostamente iguais. Não muito utilizado, mas vale a ressalva.

/* Sytax:

cf3 VARIAVEIS_A_SEREM_COMPARADAS using "ARQUIVO-Q-SE-QUER-COMPARAR",

id(IDENTIFICADOR) verbose

use "$in/pes_2002_URB", clear/*chama o arquivo pes_2002_URB*/

cf3 _all using "$in/pes_2002_URB_New", id(identn) verbose

/*compara todas as variaveis do arquivo pes_2002_URB com as variáveis do arquivo

pes_2002_URB_New, sendo que a variável chave se chama identn*/

-label- Comando para documentar arquivos, variáveis e valores de

variáveis

use "$in/pes_2002_URB", clear

label data "Pnad 2002 – Pessoas em Domicilios Urbanos"

label variable urb "Domicilio Urbano"

label var rur "Domic Rural"

label define laburb 0 rural 1 urbano

label values urbano laburb

label define labrur 0 urbano 1 rural

label values rural labrur

/* para dar label aos valores primeiro defina as categorias criando um nome para

esse label; depois fale para o STATA que o label de valores da var rural se

chama labrur (que pode ter qualquer outro nome)*/

/* se vc tiver várias variáveis que tem os mesmos labels de valores vc pode

definir um único label*/

label define simnao 0 não 1 sim

label values var1 simnao

label values var2 simnao

label values var3 simnao

...

Page 11: Minicurso de Stata 7

Conhecendo o Stata 7

11

-gen- Uma maneira de se criar uma dummy usando o arquivo gen em

uma linha, faça:

g urb=(V4728>=1 & V4728<=3)

-tab- Uma maneira de se criar uma dummy para cada categoria de uma

variável categórica. Por exemplo, vamos criar uma dummy para cada

UF. Não precisa escrever 27 linhas e sim uma só:

/* se aplicássemos o comando anterior para criar uma dummy para cada uf teríamos

que fazer:

g d_uf11==(UF==11)

g d_uf12==(UF==12)

...

g d_uf53==(UF==53)

ao invés faça isso com apenas uma linha:*/

tab UF, gen (d_Uf) /*verifique agora seu arquivo dta */

Listas de Comandos Usados nas aulas 4, 5 e 6

Lembrando:

-renvars- Re-nomeia as variáveis. Esse comando tem que ser baixado

da Internet

-keep- Mantem linhas e/ou colunas do seu arquivo

keep peso inat desocup ocup gridade branco mulher d_Uf4 d_Uf3 d_Uf2 d_Uf1/*

*/ urb chefe educa rendad rendaf rendat rendap uf v0102 v0103 v0301

-save- salva seu arquivo de dados depois de modificações feitas (

é preciso pedir para salvar)

save aula4, replace

-log using- Abre um arquivo externo onde o STATA salvará os

resultados (Pode ser ligado, desligado e finalizado).

log using aula4.log,replace

log off

log on

log close

-sort- Sorteia de forma ascendente o seu arquivo (veja gsort para

descendente)

Novos Comandos:

-aorder- Organiza as variáveis de um arquivo de dados em ordem

alfabética

Page 12: Minicurso de Stata 7

Conhecendo o Stata 7

12

-order- Leva as variáveis listadas para o começo do arquivo (não

sorteia!)

order v0102 v0103 v0301

-by … :- Pede resultados por alguma variável

sort cor

by cor: tab ocup sexo [freq = peso], nofreq row /* só mostra o %*/

-for- Outra forma de gerar resultados para por variáveis. Para

maiores detalhes veja o help.

for var renda*: sum X, detail

for num 1/4: tab d_UfX urb [freq = peso], row

*onde aparecer o X o STATA substitui pelo que foi definido antes de “:” "

-tab- ou –tabulate- Tabula variáveis; gera tabelas de 1 e duas

entradas. Se usado com o comando -by:- é capaz de fazer tabulações

de mais entradas. Produz números absolutos e %

-table- Tabula variáveis gerando médias/variâncias/etc de outras

variáveis quando pedido:

table educa [pw = peso ], c(mean rendap max rendad mean ocup mean branco) center

row

/* para cada ano de educação será gerada a média de renda o máximo da renda

domiciliar, % de ocupados e brancos*/

table educa gridade [pw = peso] if ocup==1 & chefe==1 , c(mean rendap) center

row

/*para cada ano de educacao e grupo de idade será gerado a media do salário de

chefes cocupados*/

-collapse- Esse comando reduz o banco de dados gerando as

estatísticas pedidas para as variáveis listadas. A redução será

determinada pela variável do by ():

collapse (mean) rendaf rendat rendap rendad [pw = peso] , by (uf)

/*As variáveis não incluidas no collapse serão eliminadas. O arquivo passa a ter

uma linha para cada UF e não mais uma linha para cada PESSOA!*/

- outsheet- e –insheet- Comandos usados para importar e exportar

dados em formato texto delimitado. Um arquivo delimitado por “,”

como um .csv é facilmente aberto no Excel.

outsheet using aula4.csv , noquote comma replace

insheet using aula4.csv, comma clear

Alguns testes estatísticos presentes no STATA.

-ttest- Faz o teste T para igualdade de medias

Page 13: Minicurso de Stata 7

Conhecendo o Stata 7

13

-sdtest- testa igualdade de variâncias

-prtest- testa igualdade de proporções para amostras grandes

-median- faz o teste não paramétrico de K-amostra para igualdade

de medianas

-kwallis- Testa a hipótese de que amostras diferentes são de uma

mesma população

-tab x y, chi2- Calcula e mostra o teste de Qui-quadrado de

Pearson para tabelas de duas entradas

-tab x y, exact- Faz o teste Exato de Fisher (para tabelas de n x

m entradas)

ttest rendap, by(mul)

sdtest rendap, by(mul)

prtest ocup, by(mul)

median rendad, by(ocup)

kwallis gridade, by(uf)

tab ocup mul, chi2

tab ocup mul, exact

Gráficos: o STATA 8 parece ter melhores gráficos que o STATA 7

-plot- Produz gráficos de dispersão

plot yvar1 [yvar2 [yvar3]] xvar [if exp] [in range] [, columns(#) encode

hlines(#) lines(#) vlines(#) ]

-graph- Comando que produz diferentes tipos de gráficos. Tem

muitas opções veja o help para maiores detalhes. Veja a syntax:

graph [varlist] [weight] [if exp] [in range] [, graph_type specific_options

common_options]

Exemplos:

stem rendaf, round(1000) /*ramo em folha*/

plot rendaf idade /* dispersao*/

graph rendaf idade, xlabel(0 10 to 100) ylab /* dispersao*/

graph idade, box /*box plot*/

Page 14: Minicurso de Stata 7

Conhecendo o Stata 7

14

graph rendaf , normal bin(50) /* histograma*/

graph educa rendaf uf, matrix /*matriz*/

/* outros tipos*/

kdensity ln_renda, normal ylabel xlabel

/*alternative to histograms is the kernel density plot, which approximates the

probability density of the variable*/

symplot resid1 , xlabel ylabel

/*A variable that is symmetric would have points that lie on the diagonal

line.*/

Modelos de Regressão: O STATA contem comandos simples para

executar análise de modelos de regressão. Veja abaixo a lista de

comandos e para maiores detalhes veja o help que contem exemplos

help anova analysis of variance and covariance

help cnreg censored-normal regression

help heckman Heckman selection model

help intreg interval regression

help ivreg instrumental variables (2SLS) regression

help newey regression with Newey-West standard errors

help prais Prais-Winsten, Cochrane-Orcutt, or Hildreth-Lu regression

help qreg quantile (including median) regression

help reg3 three-stage least squares regression

help rreg robust regression (NOT robust standard errors)

help sureg seemingly unrelated regression

help svyintreg interval regression with survey data

help svyivreg instrumental variables regression with survey data

help svyreg linear regression with survey data

help tobit tobit regression

help treatreg treatment effects model

help truncreg truncated regression

help xtabond Arellano-Bond linear, dynamic panel-data estimator

help xtintreg panel data interval regression models

help xtreg fixed- and random-effects linear models

help xtregar fixed- and random-effects linear models with an AR(1)

disturbance

help xttobit panel data tobit models

Depois de rodar um modelo de regressão é preciso executar o

comando –predict- para que o STATA crie variáveis como, por

exemplo, valores ajustados, resíduos, vetor X Veja abaixo alguns

exemplos:

regress ln_renda educa idade

predict yhat if e(sample)

predict resid if e(sample), resid

graph yhat resid

pnorm resid /*verifique os resíduos*/

É também possível realizar seleção de variáveis do modelo via

Stepwise com opções Foward e Backward, usando o comando –sw-

sw reg ln_renda urb ocup mulher branco idade educa d_Uf4 d_Uf3 d_Uf2 , pr(.01)

Page 15: Minicurso de Stata 7

Conhecendo o Stata 7

15

xi:sw logit ocup mulher branco urb d_Uf4 d_Uf3 d_Uf2 i.gridade , pr(.01)

-xi:- Trasnforma as cateorias de uma var categorica em dummies.

Esse comando é necessário para termos de interação

xi:logistic ocup mulher branco urb d_Uf4 d_Uf3 d_Uf2 i.gridade

xi:logit ocup i.mulher i.branco i.mulher*i.branco urb d_Uf4 d_Uf3 d_Uf2

i.gridade

O teste da máxima verossimilhança pode ser feito utilizando o

comando – lrtest-. Veja também –test- e -lincom-

xi:logistic ocup mulher branco urb d_Uf4 d_Uf3 d_Uf2 i.gridade

lrtest, saving(0)

xi:logistic ocup mulher urb d_Uf4 d_Uf3 d_Uf2 i.gridade

lrtest

Um site com muitos exemplos:

http://www.ats.ucla.edu/stat/STATA/examples/ara/default.htm

ou

http://www.ats.ucla.edu/stat/STATA/examples/

Análises de dados amostrais complexos: para rodar os comandos para

dados amostrais complexos no STATA é preciso ter as variaveis

usadas para o desenho do plano, por exemplo:

- estratos

- UPAs - unidae primaria de amostragem

- fpc - variavel que corrige para população finita (indica o

numero total de upas na amostra)

- pweight - peso amostral

Dependendo de quais variáveis forem declaradas o Stata entende

qual o plano amostral, exemplo:

- amostra aleatória simples sem reposição: define peso e FPC

(equivalente ao WOR do SUDDAN)

- conglomerado em 1 estagio: FPC pweight Upa

- estratificada: strata fpc pweight

No caso da PNAD o seu desenho é definido como amostra

probabilística de domicílios obtida em três estágios de seleção:

-unidades primárias - municípios;

-unidades secundárias - setores censitários;

-e unidades terciárias - unidades domiciliares

“Na seleção das unidades primárias e secundárias (municípios e

setores censitários) da PNAD da primeira década do século 21,

foram adotadas a divisão territorial e a malha setorial vigentes

em 1o de agosto de 2000 e utilizadas para a realização do Censo

Demográfico de 2000.”

Arquivo sobre a metodologia da PNAD

Usando os dados da PNAD, usamos as variáveis fornecidas:

Page 16: Minicurso de Stata 7

Conhecendo o Stata 7

16

UPA - Delimitação do município

STRAT - Identificação de estrato de município auto-representativo

e não auto-representativo

PSU - Unidade primária de amostragem

É preciso estabelecer qual o desenho com o comando –svyset-

svyset pweight peso

svyset strata strat

svyset psu upa

Veja o –help svy- para a lista de todos os commandos para Análise

de dados Amostrais Complexos no STATA:

Svydes

svymean rendaf, by(branco)

svytotal rendaf, by(mul)

svyreg ln_renda urb ocup mulher branco idade educa d_Uf4 d_Uf3 d_Uf2, deft

xi:svylogit ocup mulher branco urb d_Uf4 d_Uf3 d_Uf2 i.gridade

svylogit, deft

svylogit ,or

MACROS: A linguagem macro do STATA é um pouco complicada, mas

mesmo sem conhecer todas os comandos macro é possível construir

loopings simples como os listados abaixo. Esse tipo de looping

facilita quando é necessário repetir um bloco de comandos para

muitas variáveis como por exemplo ou, ler diferentes arquivos que

tenham o mesmo dicionário como no caso do CENSO 2000.

* Le arquivos do Censo substituindo o ``i'' pelos códigos das UFs

/* primeiro é preciso certificar que o programa já não existe*/

capture program drop cm

/* dai cria o programa entre chaves */

program define cm

local i 1

while "``i''"~="" {

display "UF ``i''"

infile using "$read\EDOM2000.dct" , using("$data\\``i''\Dom${N``i''}.txt")

save "$out/``i''DOM",replace

local i = `i' + 1

}

end

/* finalize o programa e chame para os parâmetros necessários*/

cm RO AC AM RR PA AP TO MA PI CE RN PB PE AL SE BA

/* vai ler o censo para essas ufs*/

/*Macro para dar Merge em diversos arquivos chamada mmerge

cap program drop mmerge

Page 17: Minicurso de Stata 7

Conhecendo o Stata 7

17

program define mmerge

args file1 file2 file_m

*file1 = arquivo 1

*file2 = arquivo 2

*file_m = arquivo resultante do merge

use "$dir/`file1'", clear

merge ident using "$dir/`file2'"

tab _m

drop _m

sort ident

save "$dir/`file_m'", replace

end

* para chamar a macro

mmerge Dom Pes DOMPES

/*macro que cria arquivos mensais da PME*/

cap program drop gmes

program define gmes

args file

local i=1

while `i'<13{

use "$dir\\`file'", clear

keep if mesp==`i'

sort ident

save "$dir\\`file'm`i'", replace

local i=`i' + 1

}

end

gmes /*para que a macro execute basta chama-la*/

/*a macro salvara 12 arquivos com o mesmo nome do arquivo inicial só que com

terminação m"mes"*/

Existem muitos outros comandos que não foram mencionados aqui.

Antes de criar alguma coisa nova procure no site do stata ou em

algum site de procura, por que muitos usuários do STATA deixam

suas macros disponíveis para “download”. Se não for ideal para o

que precisa, você pode tentar adaptá-las. Exemplos de macros

encontradas:inequal, lorenz, relsgini e glcurve7

Page 18: Minicurso de Stata 7

Conhecendo o Stata 7

18

/*******************************************************************/

/******************* AULA UM **********************************/

/*******************************************************************/

clear

set mem 10m

use "C:\Stata\auto.dta", clear /*chama arquivo*/

list /*lista o arquivo dta*/

set more off

list /*compare

/******************************************************************/

use "C:\Stata\census.dta", clear

use state region pop using "C:\Stata\census.dta", clear

/*le apenas variaveis state region pop do arquivo census.dta*/

use "C:\Stata\cancer.dta" if died==1, clear

/* le apenas as variaveis onde a variavel died recebe valor 1*/

* comentário como no sas

/* use "C:\Stata\cancer.dta" if died==1, clear */

save "C:\Stata\aula.dta"

/* salva o arquivo no diretório STATA*/

save "C:\Stata\aula.dta", replace

/* salva substituindo o arquivo aula.dta*/

compress _all /* ajuda a diminuir o tamanho do arquivo e liberar memoria*/

/******************************************************************/

use "C:\Stata\cancer.dta", clear

log using "C:\Stata\aula.log", replace

tab age drug

log close

log using "C:\Stata\aula.log", append

tab age died

log close

use "C:\Stata\cancer.dta", clear

log using "C:\Stata\aula1.log", replace

cap log off

cap log on

tab age drug

cap log off

cap log on

tab age died

cap log of

Page 19: Minicurso de Stata 7

Conhecendo o Stata 7

19

log close

/******************************************************************/

use "C:\Stata\auto.dta", clear

des /* como se fosse o proc contents do sas*/

/*compare*/

ds

sum /* estatisticas basicas*/

sum, detail/* que é equivalente ao proc univariate*/

/*toda vez que se abre um arquivo no sas ele informa o # de obs

no STATA é preciso perguntar para ele com o comando*/

count/*74*/

/*subuniversos*/

/* vc pode delimitar o universo no use ou usando o "keep if"*/

tab rep78

keep if rep78==3

/* para recuperar os que foram eliminados só chamando o arquivo de volta*/

sum price if rep78==3 /* o duplo = é necessário en toda condição!!!!!*/

/* é uma opção para delimitar universo quando executando comandos*/

keep make price mpg rep78 headroom weight length

use "C:\Stata\auto.dta", clear

drop if rep78~=3 /* ~= => diferente */

drop turn displacement gear_ratio gear_ratio

/******************************************************************/

use "C:\Stata\auto.dta", clear

drop if rep78==.

display 2*3*7

/* queremos o peso em kilos*/

gen peso_kilos = weight/2.2046

des pes*

/* queremos mudar o nome da variavel weight*/

rename weight peso_libras

/* usnado funcoes */

g ln_preco=ln(price)

/* criar o preco medio por rep78*/

/* no sas vc teria que fazer um proc means se quisesse a media de uma

var por uma outra que por exemplo fosse categorica

no STATA basta usar o comando -egen- da seguinte maneira*/

egen m_price=mean(price), by (rep78)

/* as variaceis do by devem sempre estar entre parenteses

o STATA vai criar a variavel no mesmo arquivo de dados

não sendo necessa´rio o merge como no sas*/

Page 20: Minicurso de Stata 7

Conhecendo o Stata 7

20

/* o comando egen tem muitas funcoes. Veja o seu help*/

/* Categorizando carros por preco*/

g gr_price=price

recode gr_price min/3895=1 3895/5006=2 5006/10000=3 10000/max=4

/* veja help para lista de numeros help numlist*/

tab price gr_pr /*verifica se o recode funciona*/

g gr_price1=.

replace gr_price1=1 if (price<3895)

replace gr_price1=2 if (price>=3895 & price<5006) /* repare diferença com o

sas*/

replace gr_price1=3 if (price>=5006 & price<10000)

replace gr_price1=4 if (price>=10000)

replace gr_price1=. if price==.

/* as duas serão iguais, confira*/

tab gr_price gr_price1

encode make , generate(model)

drop make

tab model, nolabel /* tabula mostrando os valores e não os labels*/

decode model, gen(make) /*recupera a var make*/

tab make, nolabel /*nada muda por que a variavel é string*/

renvars _all,u

des

Page 21: Minicurso de Stata 7

Conhecendo o Stata 7

21

/****************************************************************************/

/************************ AULA DOIS *************************************/

/****************************************************************************/

set more off

clear

set mem 32m

/* Leitura -- Exemplo da PNAD 2002 e dicionário */

/* para ler um arquivo tipo PNAD é preciso criar um dicionario de dados, um

arquivo .dct que será invocado em seu programa . Abra o arquivo aula2.dct*/

/* Abaixo só para ilustrar está o conteudo do arquivo dct

_column() - define em que coluna começa a variavel

double, byte ou str - define o formato da var

%?? - o tamanho da variavel

"" - label da variavel

Exemplo de dct que sera usado:

dictionary {

_column(1) double V0101 %4f "ANO DE REFERÊNCIA"

_column(5) byte UF %2f "UNIDADE DA FEDERAÇÃO"

_column(5) double V0102 %8f "NÚMERO DE CONTROLE"

_column(13) byte V0103 %3f "NÚMERO DE SERIE"

_column(16) byte V0301 %2f "NÚMERO DE ORDEM"

_column(18) byte V0302 %1f "SEXO"

_column(27) byte V8005 %3f "IDADE DO MORADOR"

_column(30) byte V0401 %1f "CONDIÇÃO NA UNIDADE DOMICILIAR"

_column(33) byte V0404 %1f "COR OU RACA"

_column(666) byte V4703 %2f "ANOS DE ESTUDO"

_column(668) byte V4704 %1f "COND ATIVIDADES NA SEMANA"

_column(669) byte V4705 %1f "COND OCUPAÇÃO NA SEMANA"

_column(688) double V4718 %12f "REND MENSAL TRABALHO PRINCIPAL"

_column(700) double V4719 %12f "REND MENSAL TODOS OS TRABALHOS"

_column(712) double V4720 %12f "REND MENSAL TODAS AS FONTES"

_column(724) double V4721 %12f "REND MENSAL DOMICILIAR, 10 OU+"

_column(766) byte V4727 %1f "CÓD. ÁREA CENSITÁRIA"

_column(767) byte V4728 %1f "CÓD. SITUAÇÃO CENSITARIA"

_column(768) double V4729 %5f "PESO DA PESSOA"

}

*/

/* para ler o arquivo da pnad: uso o comando infile*/

infile using "\\\MICRO-15\Aula\Aula2\Aula2.dct" if (UF>30 & UF<40),/* sudeste

*/ using ("\\\MICRO-15\Aula\Aula2\PES2002.txt")

/*** tenha paciencia que demora um pouco!!!****/

sum

des

compress _all

/*salvando o arquivo*/

save "\\\MICRO-15\Aula\Aula2/pes_2002_SE.dta", replace

Page 22: Minicurso de Stata 7

Conhecendo o Stata 7

22

/*******************************************************************************

/

/* uma maneira de criar uma espécie de libname como no sas é criando uma macro

*/

/* global da seguinte maneira

*/

/*******************************************************************************

/

gl in "\\\MICRO-15\Aula\Aula2"

*toda vez que aparecer no programa $in o STATA entendera como o diretorio

\\\MICRO-15\Aula\Aula2

/* Extensão do comando --use-- delimitando variáveis e universo e chamando dct

*/

/* agora utilizando a macro chame o arquivo pes_2002_SE_SE considerando apenas

pessoas em

domicilios urbanos */

use "$in/pes_2002_SE" if (V4728>=1 & V4728<=3), clear

*transformano maiusculas em minusculas

renvars _all, l

*copie os arquivos renvars* para o seu STATA antes de rodar esse comando

rename v4703 anos_estudo

rename v4704 atividade

rename v4705 ocupacao

rename v4727 codigo_area

rename v4728 codigo_situacao

/* TAREFA: Antes de salvar renomee as variaveis: v8005 v4703 v4704 v4705 v4727

v4728

para que elas façam sentido para vc. Dica: leia os labels destas variaveis

ou veja na documentação da pnad no diretorio da aula2*/

/* rename... ...*/

* sorteando o arquivo pelas variaveis que identificam cada pessoa na pnad

sort v0101 uf v0102 v0103 v0301

save "$in/pes_2002_SE_URB" , replace

** note que mudei o nome do arquivo

/**********************************************/

/************* Sub-universos ****************/

/**********************************************/

/* Criando arquivos só para mulheres e só para homens em domicilios urbanos*/

use "$in/pes_2002_SE_URB", clear

keep if v0302==2 /* só homens*/

gen str3 sexo = "hom"

rename v0302 sex

tab sex /* deve ter apenas valores iguais a 2*/

tab sexo

Page 23: Minicurso de Stata 7

Conhecendo o Stata 7

23

save "$in/pes_2002_SE_URB_HOM" , replace

/****/

use "$in/pes_2002_SE_URB", clear

keep if v0302==4 /* só mulheres*/

gen str3 sexo = "mul"

rename v0302 sex

tab sex /* deve ter apenas valores iguais a 4*/

tab sexo

save "$in/pes_2002_SE_URB_MUL" , replace

/*************************************/

/* criar um arquivo só com as rendas */

/*************************************/

use "$in/pes_2002_SE_URB", clear

keep v0101 uf v0102 v0103 v0301 v4718 v4719 v4720 v4721

/*TAREFA: antes de salvar: renome as variaveis de v4718 v4719 v4720 v4721 para

que elas indiquem

que tipo de renda que estamos lidando - dica: Veja o label dessas variaveis

originais*/

/* rename ... ...*/

rename v4718 ren_trab_p

rename v4719 ren_todos_trab

rename v4720 ren_todos_fontes

rename v4721 ren_dom

sort v0101 uf v0102 v0103 v0301

save "$in/pes_2002_SE_renda" , replace

/* Exportando os dados - Usando o STAT/TRANSFER - vá no link: \\Micro-

15\StatT6*/

/* transferindo dados do sas para o STATA */

/* transferindo dados do excel para o STATA*/

/* transferindo os dados do STATA para qualquer outro*/

/* Aproveite o tempo para "brincar" com os arquivos, use os comandos da aula

passada*/

/* Tente criar um novo arquivo dta lendo novas variaveis da PNAD*/

Page 24: Minicurso de Stata 7

Conhecendo o Stata 7

24

/****************************************************************************/

/************************ AULA TRES *************************************/

/****************************************************************************/

clear

set mem 32m

set more off

/* Antes de rodar os procedimentos para a aula 3, crie um diretorio

em seu computador e grave os arquivos *.dta que estão no diretório

aula2 neste novo direrório

crie tambem o caminho usando o comando gl ... veja no arquivo

aula2.do como usar o comando gl . Se criar um diretório com outro

nome diferente de "in" lembre-se de substituir $in por

$Seu diretorio

Para substituir qualquer coisa no seu arquivo do vá em

Search-> replace*/

/***** Combinando arquivos (--merge--, --append--) ******/

/* Primeiro uno os arquivos de homens e mulheres */

use "$in/pes_2002_SE_URB_MUL" , clear

append using "$in/pes_2002_SE_URB_HOM"

/* elimino variaveis velhas de renda*/

drop v4718 v4719 v4720 v4721

/* nós vamos agra dar juntar esse arquivo com o de rendas com as variaveis

renomeadas*/

sort v0101 uf v0102 v0103 v0301

save temp, replace

count /* checa o numero de obs do arquivo em uso*/

/* agora uno o arquivo temp com o arquivo de rendas */

use temp, clear

merge v0101 uf v0102 v0103 v0301 using "$in/pes_2002_SE_renda"

/* o merge cria uma variavel _m que permite checar como fora realizado */

/* para mais detalhes digite na linha de comando help merge */

tab _merge

/* foi um merge perfeito - recuperamos o arquivo original com domic urbano*/

drop _m

save "$in/pes_2002_SE_URB_New", replace

/* para apagar arquivos desnecessários */

erase temp.dta

*erase "$in/pes_2002_SE_renda.dta"

*erase "$in/pes_2002_SE_URB_HOM.dta"

*erase "$in/pes_2002_SE_URB_MUL.dta"

Page 25: Minicurso de Stata 7

Conhecendo o Stata 7

25

/*************************************************/

/** Comparando arquivos (--cf3--) ***/

/***********************************************/

/* o STATA fornece comandos que permite comparar dois arquivos dta

veja o help cf

Na web encontra-se disponivel uma versão mais atualizada do --cf--

que é o --cf3-- (help cf3)

para comparar os arquivos é preciso que se tenha um identificador comum

*/

clear

set mem 100m

use "$in/pes_2002_SE_URB_New", clear

*egen ident=concat(v0102 v0103 v0301), format(%30s)

/* essa função supostamente concatena as variaveis criando um identificador*/

gen double identn=v0102*1000+v0103*100+v0301

format identn %30.0g

sort v0101 uf v0102 v0103 v0301

save "$in/pes_2002_SE_URB_New", replace

/***/

use "$in/pes_2002_SE_URB", clear

*egen ident=concat(v0102 v0103 v0301)

/* essa função concatena as variaveis criando um identificador*/

gen double identn=v0102*1000+v0103*100+v0301

format identn %30.0g

sort v0101 uf v0102 v0103 v0301

save "$in/pes_2002_SE_URB", replace

/* comparando os dois arquivos */

use "$in/pes_2002_SE_URB", clear

cf3 _all using "$in/pes_2002_SE_URB_New", id(identn) verbose

/* veja o que aconteceu*/

/***************************************/

/** Variáveis derivadas **/

/*************************************/

use "$in/pes_2002_SE.dta" , clear

/* criando dummies*/

g urb=(V4728>=1 & V4728<=3) /* dummy para urbano*/

tab urb [freq=V4729]

g sexo=(V0302==2) /*dummy para homem*/

/* usando os comando tab e by: veja o que acontece*/

sort sexo

by sexo: tab UF urb , nofreq column /* só mostra o %*/

by sexo: tab UF urb /*só mostra a contagem*/

Page 26: Minicurso de Stata 7

Conhecendo o Stata 7

26

by sexo: tab UF urb, colum /*mostra a contagem e % mas muito comfuso*/

/* criando uma dummy para cada UF*/

/* se aplicássemos o comando anterior para criar uma dummy para cada uf

caso estivessemos com trabalhando com um arquivo a nivel Brasil

teríamos que fazer:

g d_uf11==(UF==11)

g d_uf12==(UF==12)

...

g d_uf53==(UF==53)

ao inves faça isso com apenas uma linha:*/

tab UF, gen (d_Uf) /*verifique agora seu arquivo dta */

/* se quiser, renome as dummies para MG ES RJ e SP */

/* Crie labels para as Dummies */

label var RJ "Dummy para o Estado do Rio de Janeiro"

label var MG "Dummy para o Estado de Minas Gerais"

* Crie os labels para ES e SP

/*************************************************************************/

/*********************** Algoritmos (--replace--) *********************/

/*************************************************************************/

/* Vc pode criar variaveis de outras variaveis */

/*Exemplos de algortimos para a PNAD*/

/* tratamento da renda da pnad*/

rename v4718 rendap

replace rendap=0 if rendap<=0 | rendap==.

replace rendap=. if rendap==999999999999

rename v4719 rendat

replace rendat=0 if rendat<=0 | rendat==.

replace rendat=0 if rendat==999999999999

rename v4720 rendaf

replace rendaf=0 if rendaf<=0 | rendaf==.

replace rendaf=0 if rendaf==999999999999

rename v4721 rendad

replace rendad=0 if rendad<=0 | rendad==.

replace rendad=0 if rendad==999999999999

/* genero

g mulher=1 if v0302==4

replace mulher=0 if v0302==2

label var mulher "Dummy para Mulheres"

drop v0302

tab mulher

Page 27: Minicurso de Stata 7

Conhecendo o Stata 7

27

*/

/*Branco e não branco:

g branco=.

replace branco=1 if v0404==2|v0404==6

replace branco=0 if v0404==4|v0404==8|v0404==0

replace branco=. if v0404==9

label var branco "Dummy para branco"

drop v0404

tab branco

*/

/* Grupo de idade:

g gridade=.

replace gridade=1 if (age>=10 & age<=20)

replace gridade=2 if (age>20 & age<=40)

replace gridade=3 if (age>40 & age~=.)

label var gridade "Grupos de Idades*/

/* Veja como cria label de valores*/

label define grid 1 "10 a 20" 2 "21 a 40" 3 "41 e mais"

label value gridade grid

tab grid

*/

/* Dummy para ocupado, desocupado e inativo:

g ocup=(v9001==1 | v9002==2 | v9003==1 | v9004==2)

g desocup=(v9001==3 & v9002==4 & v9003==3 & v9004==4 & v9115==1 & (v9119>=1 &

v9119<=8))

g inat=(v9001==3 & v9002==4 & v9003==3 & v9004==4 & v9115==3)

replace inat=1 if (v9001==3 & v9002==4 & v9003==3 & v9004==4 & v9115==1 &

(v9119==0))

replace inat=0 if (ocup==1 | desocup==1)

*/

/* Peso

g peso=v4729*/

/* Exercicio: Faça um arquivo DCT para ler as variaveis da PNAD necessárias para

criar esses

algoritmos acima.

Selecione qualquer outra variavel da sua escolha e tente criar um novo

algoritmo

Dica: tente delimitar ao máximo seu universo para ser mais rápido, expemplo

use regiao metropolitana do rio ou delimite um grupo de idade*/

Page 28: Minicurso de Stata 7

Conhecendo o Stata 7

28

/****************************************************************************/

/************************ AULA QUATRO*************************************/

/****************************************************************************/

/* Leia o arquivo do diretorio que vc salvou na aula passada*/

use "$in/pes_2002_SE.dta" , clear

/* preparando o arquivo*/

renvars _all, l

/* Educação pela variavel já construida pela PNAD - veja no dicionario */

g educa=v4703-1

replace educa=. if educa>=16

*o que vcs acham de considerar a ultima categoria como 16?

* replace educa=16 if educa==15

/*

v4703 categoria

1 Sem instrução e menos de 1 ano

2 1 ano

3 2 anos

4 3 anos

5 4 anos

6 5 anos

7 6 anos

8 7 anos

9 8 anos

10 9 anos

11 10 anos

12 11 anos

13 12 anos

14 13 anos

15 14 anos

16 15 anos ou mais

17 Não determinados e sem declaração

*/

/* Chefe do domicilio */

g chefe=(v0401==1)

/* criando dummies*/

g urb=(v4728>=1 & v4728<=3) /* dummy para urbano*/

tab uf, gen (d_Uf) /*verifique agora seu arquivo dta */

/* genero */

g mulher=1 if v0302==4

replace mulher=0 if v0302==2

label var mulher "Dummy para Mulheres"

drop v0302

tab mulher

/*Branco e não branco:*/

g branco=.

replace branco=1 if v0404==2|v0404==6

replace branco=0 if v0404==4|v0404==8|v0404==0

replace branco=. if v0404==9

Page 29: Minicurso de Stata 7

Conhecendo o Stata 7

29

label var branco "Dummy para branco"

drop v0404

tab branco

/* Grupo de idade:*/

g gridade=.

replace gridade=1 if (v8005>=10 & v8005<=20)

replace gridade=2 if (v8005>20 & v8005<=40)

replace gridade=3 if (v8005>40 & v8005~=.)

label var gridade "Grupos de Idades"

/* Veja como cria label de valores*/

label define grid 1 "10 a 20" 2 "21 a 40" 3 "41 e mais"

label value gridade grid

tab grid

/* Dummy para ocupado, desocupado e inativo:*/

g ocup=(v4705==1 & v4704==1)

g desocup=(v4705==2 & v4704==1)

g inat=(v4704==2)

/* Peso */

g peso=v4729

**tratamento de renda

rename v4718 rendap

replace rendap=0 if rendap<=0 | rendap==.

replace rendap=. if rendap==999999999999

rename v4719 rendat

replace rendat=0 if rendat<=0 | rendat==.

replace rendat=. if rendat==999999999999

rename v4720 rendaf

replace rendaf=0 if rendaf<=0 | rendaf==.

replace rendaf=. if rendaf==999999999999

rename v4721 rendad

replace rendad=0 if rendad<=0 | rendad==.

replace rendad=. if rendad==999999999999

/* vou selecionar só as variaveis construidas , veja a dica!*

keep peso inat desocup ocup gridade branco mulher d_Uf4 d_Uf3 d_Uf2 d_Uf1/*

*/ urb chefe educa rendad rendaf rendat rendap uf v0102 v0103 v0301

aorder /* organiza as variaveis em ordem alfabetica*/

order v0102 v0103 v0301 /* leva as variaveis listadas para o começo do arquivo*/

/*tente salvar este arquivo no diretorio q vc criou na aula 3*/

save aula4, replace

/********************************************************/

/*********** Analisando ********************************/

/********************************************************/

/* Antes de gerar qualquer resultado abra um log gravando em seu diretorio!*/

Page 30: Minicurso de Stata 7

Conhecendo o Stata 7

30

log using aula4.log,replace

cap log off

use aula4, clear

/* Como vimos aula passada*/

/**Usando o TAB**/

*sem expandir a amostra

tab urb

*expandindo a amostra

tab urb [freq=peso]

/* Two-way Tables*/

/* Contagens */

tab mul bran

cap log on

tab mul bran [freq = peso]

cap log off

/* % */

tab mul bran [freq = peso], nofreq column

tab mul bran [freq = peso], nofreq row

tab mul bran [freq = peso], nofreq col row

tab mul bran [freq = peso], nofreq col row /*Muito confuso!*/

/* Usando o by:*/

sort mul

cap log on

by mul: tab ocup branco [freq = peso], nofreq row /* só mostra o %*/

cap log off

/* Usando o comando for*/

/* o cmando diz: para cada variavel que comece com renda faça: sumário de cada

var!*/

for var renda*: sum X, detail

/* para cada var df de 1 a 4 faça tab dufxurb*/

for num 1/4: tab d_UfX urb [freq = peso], row

/*onde aparecer o X ele substitui por o que foi definido antes de : "

/**Usando o table */

/* o table permite várias estatísticas!!! Veja o help para saber quais são*/

cap log on

table educa [pw = peso ], c(mean rendap max rendad mean ocup mean branco) center

row

cap log off

/* na tabela da cima faco médias de renda, maximo de rendad, % de ocupados e %

brancos para

cada nível educadional . Note uso o PWeight, neste caso Fweight e Pweight

produzem os mesmos

resultados */

table educa [pw = peso ], c(mean rendap mean ocup) by (mul) center row

table educa gridade [pw = peso], c(mean rendap) center row

Page 31: Minicurso de Stata 7

Conhecendo o Stata 7

31

table educa gridade [pw = peso] if ocup==1 & chefe==1 , c(mean rendap) center

row

*** Tente outras tabulaçoes

for num 1/4: table educa gridade [pw = peso] if ocup==1 & chefe==1 & d_UfX==1,

c(mean rendap) center row

/*ou*/

sort uf

by uf:table educa gridade [pw = peso] if ocup==1 & chefe==1 , c(mean rendap)

center row

/**********Usando o collapse *************/

/* o collapse tambem faz médias e outras estatísticas mas

elimina o seu arquivo em uso reduzindo

Por exemplo vc quer ter um arquivo a nivel de UF com as médias

de todas as variáveis de seu arquivo - use o collapse

mas se vc precisa apenas gerar um resultado com médias by uf

use o table!*/

table uf [pw = peso] , c(mean rendaf mean rendat mean rendap mean rendad)

/*veja como está seu arquivo*/

collapse (mean) rendaf rendat rendap rendad [pw = peso] , by (uf)

cap log on

list

cap log off

/* agora OLHE o seu arquivo! Sim ele reduziu de tamanho!*/

/* caso vc realmente queira usar o collapse vc pode gerar um arquivo

para ser lido no excel usando o comando outsheet - crie em seu diretorio*/

outsheet using aula4.csv , noquote comma replace

/*cria um arquivo em csv que abre no excel! Tente*/

/* dica: vc pode ler esse arquivo de volta no STATA usando o

comando insheet*/

insheet using aula4.csv, comma clear

/* depois do collapse vc tem que chamar o seu arquivo Aula4.dta

para prosseguir!

*/

cap log close

/* olhe o seu log!*/

/****************************************/

/** testes estatisticos *****************/

/****************************************/

use aula4, clear

keep if ocup==1

* ttest performs one-sample, two-sample, and paired t tests on the equality of

means

ttest rendap, by(mul)

Page 32: Minicurso de Stata 7

Conhecendo o Stata 7

32

ttest rendap, by(branco)

**só permite por dois grupos

*sdtest performs tests on the equality of variances (standard deviations).

sdtest rendap, by(mul)

use aula4, clear

keep if chefe==1

*prtest performs tests on the equality of proportions using large-sample

statistics.

prtest ocup, by(mul)

prtest ocup, by(bra)

/*tire o filtro para chefes e rode os testes de novo, veja q a conclusao muda*/

*median performs a nonparametric K-sample test on the equality of medians.

median rendad, by(ocup)

/*???*/

*kwallis tests the hypothesis that several samples are from the same population.

kwallis gridade, by(uf)

/*???*/

**teste chi2

* chi2 calculates and displays Pearson's chi-squared for

the hypothesis that the rows and columns in a two-way

table are independent.

tabulate ocup mul, row col chi2

/*compare com*/

ttest ocup, by(mul)

/*exact displays the significance calculated by Fisher's exact test

and may be applied to r x c as well as 2 x 2 tables.

In the case of 2 x 2 tables, both one- and two-sided probabilities

are displayed.*/

tabulate ocup mul, all exact col

tabulate ocup gridade, exact col /*faz, mas demora muito!*/

tabulate ocup educa, exact col /*Nem roda!*/

Page 33: Minicurso de Stata 7

Conhecendo o Stata 7

33

clear

set mem 32m

/***************************************************************************/

/********************************* aula 5 ***********************************/

/***************************************************************************/

/*1. Outras Análises

a. Analises de dados amostrais complexos (usando desenho amostral)

b. Modelos de Regressão (simples, probit, logit) (robust & weight)

2. Gráficos

*/

/***************************************************************************/

/** Modelos de regressão **/

/* abra o qruivo: */

use "C:\Stata\aulas\aula4", clear

keep if (gridade>=1 & gridade<=3)

*keep if uf==33

keep if chefe==1

/* grafico de ramo e folha*/

stem rendaf, round(1000)

stem idade

plot rendaf idade

graph rendaf idade, xlabel(0 10 to 100) ylab

/* podemos ver se existem outliers*/

graph idade, box

sort uf

graph idade, box by (uf)

/* podemos eliminar esses valores extremos*/

sum rendaf, detail

drop if rendaf>10000 & rendaf~=.

graph rendaf, box by (uf)

graph rendaf , normal bin(50)

/*criando log da renda*/

g ln_renda=ln(rendaf)

graph ln_renda , normal bin(50)

*kdensity rendaf, xlabel(0 5000 to 18000) ylab/*demore um pouco*/

/* Mais gráficos */

graph ln_renda , box

graph idade educ , xlabel(0 2 to 16) ylabel(0 5 10 to 100)

graph educa rendaf uf, matrix

/* Modelo de regressao*/

regress ln_renda educa idade

predict yhat if e(sample)

predict resid if e(sample), resid

Page 34: Minicurso de Stata 7

Conhecendo o Stata 7

34

/* gráficos de diagnostico*/

graph yhat resid

g idade2=idade*idade

regress ln_renda educa idade idade2

graph yhat idade

graph resid educa

graph ln_renda yhat idade,connect(.l)

graph ln_renda yhat idade, connect(.l) symbol(Oi) sort

pnorm resid /*verifique os resíduos*/

/* regressao robusta e com peso*/

regress ln_renda educa idade idade2 , robust

regress ln_renda educa idade [pw=peso]

regress ln_renda educa idade

/* stepwise */

sw reg ln_renda urb ocup mulher branco idade educa d_Uf4 d_Uf3 d_Uf2 , pr(.01)

sw reg ln_renda urb ocup mulher branco idade educa d_Uf4 d_Uf3 d_Uf2 [pw=peso],

pr(.01)

reg ln_renda urb ocup mulher branco idade educa d_Uf4 d_Uf3[pw=peso]

predict yhat1 if e(sample)

predict resid1 if e(sample), resid

graph resid1 yhat1

pnorm resid /*verifique os resíduos*/

graph ln_renda yhat idade, connect(.l) symbol(Oi) sort /*a primeira serie vai

ser bolinha e a segunda invisivel*/

graph ln_renda, normal bin(20)

kdensity ln_renda, normal ylabel xlabel /*alternative to histograms is the

kernel density plot, which approximates the probability density of the

variable*/

symplot ln_renda, xlabel ylabel /*A variable that is symmetric would have points

that lie on the diagonal line.*/

symplot resid1 , xlabel ylabel /*A variable that is symmetric would have points

that lie on the diagonal line.*/

pnorm ln_renda /*pnorm is sensitive to deviations from normality nearer to the

center of the distribution*/

/*apesar da transformação a renda ainda parece não normal*/

/*****Regressao logistica*****/

xi:logistic ocup mulher branco urb d_Uf4 d_Uf3 d_Uf2 i.gridade

xi:logistic ocup mulher urb d_Uf4 d_Uf3 i.gridade

display -2*(-16997.331- (-16995.367))

xi:logistic ocup mulher branco urb d_Uf4 d_Uf3 d_Uf2 i.gridade [pw=peso]

Page 35: Minicurso de Stata 7

Conhecendo o Stata 7

35

/*mostra as razoes de vantagens = exp(betas)*/

xi:logit ocup mulher branco urb d_Uf4 d_Uf3 d_Uf2 i.gridade [pw=peso]

/* mostra os betas*/

/* Teste da máxima verossimilhanca*/

drop if branco==. /*tem que ter o mesmo numero de obs*/

xi:logit ocup mulher branco urb d_Uf4 d_Uf3 d_Uf2 i.gridade

lrtest, saving(0)

xi:logit ocup mulher urb d_Uf4 d_Uf3 i.gridade

lrtest

predict phat if e(sample)

predict r, resid

graph r phat, ylab (-6 -4 -2 0 +2 +4 +6)

/*probit*/

xi:probit ocup mulher branco urb d_Uf4 d_Uf3 d_Uf2 i.gridade [pw=peso]

/*coeficientes */

xi:dprobit ocup mulher branco urb d_Uf4 d_Uf3 d_Uf2 i.gridade [pw=peso]

/* efeitos marginais*/

/* Um site com muitos

exemplos:http://www.ats.ucla.edu/stat/STATA/examples/ara/default.htm

ou http://www.ats.ucla.edu/stat/STATA/examples/

*/

/* Analises de dados amostrais complexos*/

/* para rodar os comandos para dados amostrais complexos no STATA é preciso ter

variaveis

referentes aos:

- estratos

- UPA - unidae primaria de amostragem

- fpc - variavel que corrige para população finita (indica o numero total de

upas na amostra)

- pweight - peso amostral*/

* amostra aleatória simples sem reposição: define peso e FPC (equivalente ao WOR

do SUDDAN)

* conglomerado em 1 estagio: FPC pweight Upa

* estratificada: strata fpc pweight

/* o desenho da PNAD: amostra probabilística de domicílios obtida

em três estágios de seleção:

-unidades primárias - municípios;

-unidades secundárias - setores censitários;

-e unidades terciárias - unidades domiciliares

Na seleção das unidades primárias e secundárias (municípios e setores

censitários) da PNAD da primeira década do século 21, foram adotadas a

divisão territorial e a malha setorial vigentes em 1o de agosto de 2000

e utilizadas para a realização do Censo Demográfico de 2000

*/

/*abrindo um arquivo construído com as informacoes sobre o

plano amostral da PNAD 2002*/

use "$in/AuxInfo2002.dta",clear

sum

Page 36: Minicurso de Stata 7

Conhecendo o Stata 7

36

des

sort uf v0102 v0103

save "$in/AuxInfo2002.dta", replace

use aula4, clear

sort uf v0102 v0103

count

merge uf v0102 v0103 using "$in/AuxInfo2002.dta"

tab _merge

keep if _merge==3

/* No arquivo de documentação da PNAD diz:

UPA - Delimitação do município

STRAT - Identificação de estrato de município auto-representativo e não auto-

representativo

PSU - Unidade primária de amostragem

*/

* primeiro : diz qual o desenho

svyset pweight peso

svyset psu upa

svydes

svymean rendaf, by(branco)

svytotal rendaf, by(mul)

g ln_renda=ln(rendaf)

reg ln_renda urb ocup mulher branco idade educa d_Uf4 d_Uf3 d_Uf2 [pw=peso]

svyset pweight peso

svyset psu upa

svyreg ln_renda urb ocup mulher branco idade educa d_Uf4 d_Uf3 d_Uf2, deft

/* os betas devem ser os mesmos mas os SE não*/

/* o deft diz o quanto vc substima ou sobrestima se não leva em conta

o plano amostral (sempre comparando a uma amosta aleatoria simples)

Se igual a 1 não pode seguir sem levar em conta o plano amostral

Não vai existir vantagem em não considerar a amostra como aleatória simples*/

xi:logit ocup mulher branco urb d_Uf4 d_Uf3 d_Uf2 i.gridade [pw=peso]

svyset pweight peso

svyset psu upa

xi:svylogit ocup mulher branco urb d_Uf4 d_Uf3 d_Uf2 i.gridade

svylogit, deft

svylogit ,or

/*veja help svy para maiores detalhes*/

Page 37: Minicurso de Stata 7

Conhecendo o Stata 7

37

/***************************************************************************

Sexta aula (6/02)

3. Macros

4. Outras análises

a. Variáveis Instrumentais, Análise de sobrevivência

***************************************************************************/

/* Não vamos rodar nada por enquanto

Exemplos de Macros:

capture program drop cm

program define cm

local i 1

while "``i''"~="" {

display "UF ``i''"

infile using "$read\EDOM2000.dct" , using("$data\\``i''\Dom${N``i''}.txt")

save "$out/``i''DOM",replace

local i = `i' + 1

}

end

cm RO AC AM RR PA AP TO MA PI CE RN PB PE AL SE BA

* Le arquivos do Censo substituindo o ``i'' pelos códigos das UFs

*/

/* Outro exemplo:

capture program drop cm

program define cm

local i 1

while "``i''"~="" {

display "UF ``i''"

append using "$in/PropD``i''"

local i = `i' + 1

}

end

cm AC AM RR PA AP TO MA PI CE RN PB PE AL SE BA MG1 MG2 ES RJ SP1 SP2 SP3 PR SC

RS MS MT GO DF

* essa macro junta todas as UFs do Censo em um só arquivo

*/

/*Macro para dar Merge em diversos arquivos

cap program drop mmerge

program define mmerge

args file1 file2 file_m

*file1 = arquivo 1

*file2 = arquivo 2

*file_m = arquivo resultante do merge

use "$dir/`file1'", clear

merge ident using "$dir/`file2'"

tab _m

drop _m

sort ident

save "$dir/`file_m'", replace

end

* para chamar a macro

mmerge Dom Pes DOMPES

Page 38: Minicurso de Stata 7

Conhecendo o Stata 7

38

/*macro que cria arquivos mensais da PME

cap program drop gmes

program define gmes

args file

local i=1

while `i'<13{

use "$dir\\`file'", clear

keep if mesp==`i'

sort ident

save "$dir\\`file'm`i'", replace

local i=`i' + 1

}

end

* a macro salvara 12 arquivos com o mesmo nome do arquivo icinial só que com

terminação m"mes"

*/

/* Tente aplicar essa ultima macro ao arquivo de dados que estamos trabalhando

nas ultimas aulas tente criar arquivos para diferentes Ufs ou outra

caracteristica*/

/* Para poder rodar esses comando é preciso copiar os diretório ADO no micro 15

para dentro de seu computador (ou baixe da Internet)*/

inequal rendad [fw=peso]

lorenz rendad [fw=peso]

relsgini rendad [fw=peso]

glcurve7 rendad, gl(gl1) p(p1)

graph gl1 p1, xlab ylab s(i) c(l)

glcurve7 rendad [fw=peso] , gl(gl4) p(p4) by(uf) split

/***********************************************/

/**** outras análises - *******************/

/***********************************************/

/* variáveis intrumentais:

ivreg y1 (y2 = z1 z2 z3) x1 x2 x3

Y2 é uma variavel endogena

Zs são os instrumento ou variaveis exogenas

X sõa tambem exogenas*/

/* Assim como a analise de dados amostrais complexos, existe um conjunto de

comandos

para serem usados apenas para analise de sobrevivencia

veja help st.

Como no svy antes de rodar qualquer análise é preciso definir algumas variáveis

stset ftime, failure(dpt1) /*variável que diz o tempo em que ocorre o evento

(falha)*/

sts graph , xlab(0,90,180,270) failure by(ba) b2(Idade que recebeu a primeira

dose de DPT, em dias) l2(Porcentagem de vacinados) lstyle ([#] [-])

Page 39: Minicurso de Stata 7

Conhecendo o Stata 7

39

/* o comando acima produz o grafico da função de sobrevivencia de Kaplan-Meier

ou a função Hazard*/

ltable ftime dpt1 if aged<274, by(ba) test

/* realiza testes para igualdade de funções de Sobrevivencia por grupo*/

/* nesse caso examina se o tempo ocorrido até a primeira dose de DPT

é o mesmo entre os grupos de beneficiarios e não beneficiarios*/

stsum if ba~=1

stsum if ba==1

/* Dá algumas estatísticas para os dados de Analise de Sobrevivencia*/