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
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”
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*/
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”.
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
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.
!!!
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--)
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
*/
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:
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
...
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
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
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*/
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)
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:
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
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
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
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*/
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
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
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
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*/
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"
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*/
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
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*/
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
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!*/
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
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)
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!*/
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
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]
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
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*/
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
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 ([#] [-])
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*/
Top Related