/* Do file preparado para as monitorias de laboratório de Econometria II - pós graduação. As primeiras monitorias abordarão os seguintes temas: I) Princípios básicos do Stata; II) Dados (tipos, formatação, operações, etc); III) Bases de dados (abertura, formatação, etc); IV) Análise estatística; V) Análise econométrica. Cronograma: # 12/08 - temas I, II # 19/08 - temas III # 26/08 - temas IV # 02/09 - temas V Quaisquer dúvidas, enviem um e-mail para leandro.anazawa@usp.br */ ******************************************************** ********************** AULA I ********************** ******************************************************** * PRINCÍPIOS BÁSICOS DO STATA * O QUE É STATA? { /* Stata é uma ferramenta computacional estatística que é utilizada por acadêmicos para análise de grandes bancos de dados. Atualmente, o Stata é uma boa opção para realizar análises econométricas e manipular grandes quantidades de dados. Prós: # Linguagem mais intuitiva do que dos demais programas; # Grande diversidade de pacotes estatísticos e econométricos desenvolvidos pela comunidade; Contras: # Pago (bem pago); # Outros programas fazem um melhor trabalho em determinadas áreas. Ex: Parte gráfica -> R Séries temporais -> Eviews */ } * * EXTENSÕES DE ARQUIVOS { /* O Stata trabalha basicamente com três tipos de arquivos: .dta (base de dados) .do (script) .log (txt que salva os seus resultados) */ } * * INTERFACE * SEÇÃO DE DÚVIDAS { /* O Stata tem uma seção detalhada com informações detalhadas sobre os seus comandos. Vamos abrir! Para rodar linhas de comando do script, você pode selecionar a linha de comando inteira e apertar no botão "Execute (do)", que é o último ícone da lista na parte de cima do script. Ou você pode selecionar a linha de comando e apertar "CTRL + D". */ help help regress * Outra opção para tirar dúvidas é o Google! } * * ABRINDO UMA BASE DE DADOS E RODANDO MQO { /* Primeiro, vamos criar uma pasta no computador onde serão colocados os arquivos utilizados nesta aula. Agora, vamos direcionar o Stata para essa pasta! */ cd "C:\caminho da pasta" /* Abra a base de dados da Aula 01 disponibilizada no Moodle com o comando "use". A opção "clear" fecha qualquer outra base de dados que já esteja aberta no Stata. */ use "Aula 01 - base.dta", clear /* Abra um log file, que salvará tudo que você fizer no Stata. A opção "replace" irá substituir qualquer arquivo com o mesmo nome na pasta de destino. */ log using "log_aula01.log", replace * Vamos verificar a base de dados primeiro com o comando "bro" bro /* Observe que tem três cores predominantes de dados. Preto indica variáveis numéricas (byte, float, long, double). "Double" é um tipo de variável numérica importante, porque esse tipo é o que mantém o maior grau de precisão decimal. Importante para variáveis identificadoras ou de renda. Azul indica variáveis numéricas que receberam "labels". "Labels" são rótulos que podemos atribuir aos dados para facilitar a compreensão deles. Vermelho indica variáveis texto ("string"). Além disso, temos as variáveis sem informações ("missing"). "Missing" numérico é identificado por um ponto (.). "Missing" de texto é identificado por um espaço em branco ( ). */ bro if sal_hora == . /* Note que utilizamos "if" no comando acima! "if" é uma expressão de restrição. Nesse caso, pedimos para o Stata nos mostrar os dados ("bro") apenas para as observações que tinha "missing" na variável de salário hora Após a restrição "if" podemos atribuir operdores matemáticos */ bro if sal_hora < 5 bro if sal_hora >= 125 bro if sal_hora != . bro if sal_hora >= 10 | sal_hora <= 20 bro if sal_hora < 20 & uf == 35 * Vamos verificar o comando de regressão linear help reg * Pronto! Agora vamos rodar um MQO reg sal_hora mulher idade professor [fw = peso] /* Destaque importante: o salário hora está em valores nominais. Será que se deflacionarmos ele, os resultados mudarão? Podemos gerar uma nova variável com o comando "gen". Essa nova variável representará o salário hora em termos reais. No caso, utilizei o deflator disponibilizado pelo IPEADATA para os dados da PNAD. Os valores estão em termos de R$ de 2015. Nos comandos abaixo destaca-se: Uso do comando "replace", que substitui os valores da variável de acordo com a expressão definida depois desse comando. Por exemplo, substituiu-se os valores "missing" de salário hora real por valores determinados pela fórmula "(sal_hora / 0.3944)" apenas para as observações do ano de 2001. Note que o Stata utiliza o sistema decimal norte americano com o uso de ponto (.) para separar decimais. */ gen sal_hora_real = . replace sal_hora_real = (sal_hora / 0.3944) if ano == 2001 replace sal_hora_real = (sal_hora / 0.4335) if ano == 2002 replace sal_hora_real = (sal_hora / 0.5065) if ano == 2003 replace sal_hora_real = (sal_hora / 0.5797) if ano == 2006 replace sal_hora_real = (sal_hora / 0.6078) if ano == 2007 replace sal_hora_real = (sal_hora / 0.6793) if ano == 2009 replace sal_hora_real = (sal_hora / 0.7633) if ano == 2011 replace sal_hora_real = (sal_hora / 0.9081) if ano == 2014 replace sal_hora_real = sal_hora if ano == 2015 /* Verifique informações estatísticas da variável de salário hora antes e depois das alterações. Podemos utilizar o comando "sum" para isso. Se quisermos mais detalhes, podemos incluir a opção "d". Ou usar o comando "codebook". */ sum sal_hora sal_hora_real sum sal_hora sal_hora_real, d codebook sal_hora sal_hora_real /* Podemos utilizar também o comando "tab" para tabular informações da nossa base. A opção "sum(variável)" do comando "tab" permite complementar os resultados com as informações do comando "sum" O comando "tab" é amplamente utilizado para realizar tabulações descritivas dos dados da base. Existem as opções "row", "col" e "cell" que mostram as frequências e as porcentagems na linha, na coluna e em cada célula, respectivamente. */ tab sal_hora_real tab mulher, sum(sal_hora_real) tab mulher urbano tab mulher urbano, row tab mulher urbano, col tab mulher urbano, cell * Agora vamos verificar se os resultados se modificaram reg sal_hora mulher idade professor [fw = peso] reg sal_hora_real mulher idade professor [fw = peso] /* Podemos incluir variáveis binárias na regressão. Dois possíveis métodos são: I) Incluir diretamente na regressão, com o comando "xi"; II) Criar através do comando "tab". */ xi: reg sal_hora mulher idade professor i.cor [fw = peso] tab cor, gen(cor_) bro cor cor_* reg sal_hora mulher idade professor cor_2 cor_3 cor_4 cor_5 [fw = peso] /* Existem comando para mudar a ordenação das variáveis e das observações. Se quisermos mudar a ordenação das variáveis na base, podemos utilizar o comando "order". Se quisermos mudar a ordenação das observações, podemos utilizar os comandos "sort" e "gsort". */ order cor_1 cor_2 cor_3 cor_4 cor_5 ano uf mulher idade sort sal_hora_real bro sal_hora_real gsort -sal_hora_real bro sal_hora_real /* Suponha que estamos interessado em criar uma variável que indique a renda média de cada UF. Existe o comando "egen" e as suas diversas funções pré definidas de criação de variáveis. Podemos utilizar a função "mean" para o nosso propósito. O comando "by" faz com que o Stata rode a linha de comando para cada valor da variável uf. Mas para isso, precisamos ordenar de forma crescente essa variável uf com o comando "sort". Ou podemos usar o comando "bysort" para realizar essas duas operações ao mesmo tempo. */ help egen bysort uf: egen sal_hora_uf = mean(sal_hora_real) bro uf sal_hora_uf sal_hora_real /* Podemos modificar variáveis que já estão na base de dados. O comando "replace" substituiu valores da variável de acordo com alguma regra que a gente definir. O comando "recode" é uma versão mais compacta do comando anterior. Pode-se realizar vários replaces com um único "recode". O comando "rename" modifica o nome da variável. */ recode idade (1/18 = 1 "Jovens") (19/65 = 2 "Adultos") (66/150 = 3 "Idosos"), gen(grupo_idade) rename grupo_idade g_idade bro idade g_idade /* Não conseguimos realizar análises econométricas com variáveis texto. Então, temos que realizar modificações entre os tipos das variáveis. Para transformar uma variável texto em uma variável numérica, podemos utilizar o comando "encode". Para transformar uma variável numérica-texto (ou seja, números que estão no formato texto), podemos utilizar o comando "destring". Para transformar uma variável numérica para uma variável texto, podemos utilizar o comando "tostring". */ encode grupo_ativ, gen(g_ativ) destring professor_2, gen(prof) tostring ano, gen(ano_texto) /* Para facilitar o uso da base de dados e permitir que outros compreendam o significado das suas variáveis é recomendável sempre construir um dicionário explicando as variáveis contidas na base. Ou podemos incluir labels! O comando "label var" define o rótulo da variável O comando "label define" define um conjunto de rótulos que podem ser atribuídos a valores numéricos. O comando "label value" atribui o conjunto de rótulos gerados pelo comando anterior a uma determinada variável. */ label var idade "Idade da pessoa" label define uf 11 "RO" label value uf uf /* O último ponto da aula é sobre excluir variáveis ou observações da base dados. É altamente recomendável que vocês sempre mantenham a base original segura em algum lugar e trabalhar com uma cópia dela. Assim, se vocês excluirem variáveis por acidente, vocês terão uma cópia de segurança da base. Sejam conscientes sobre exclusão de variáveis ou observações. Sempre deixem bem explícitos nos seus scripts o motivo de tais exclusões. Tudo para manter a replicabilidade das nossas pesquisas. Os comandos "drop" e "keep" podem ser utilizados para tal finalidade. */ drop if sal_hora == . keep if uf == 35 drop sal_hora_real keep sal_hora /* Feche o log ao final da seção! Verifique na pasta de referência o seu log! */ log close } *