Ferramentas • • • • Introdução ao STATA® (PDF) Como Utilizar os Comandos infile e infix do STATA® (PDF) Como Utilizar os Comandos merge e reshape do STATA® (PDF) STATA® Corporation Web Site 17.871 2º Trimestre de 2002 1 Introdução ao Stata 1. Introdução Stata é um pacote moderno e geral, acionado por comandos, para se fazer análise estatística, gerenciamento de dados e gráficos. As versões estão disponíveis para PC/DOS/Windows, Mac e Unix. Este documento revisa brevemente alguns elementos-chave do programa, reproduz uma sessão de amostra e termina com uma tabela descrevendo alguns dos comandos mais importantes do Stata. Este documento foi produzido para ajudar a introduzir o Stata no ambiente operacional Athena; assim, o sistema operacional que estou assumindo é Unix. 1. Iniciando o Stata Em uma janela xterm, digite o seguinte: Isso acionará a interface gráfica do Stata. Se em vez de digitar xstata for digitado stata, você obterá uma puramente uma interface de linha de comando. ADVERTÊNCIA: No ano passado, quando a interface gráfica foi adicionada ao Unix, vários problemas foram descobertos quando o Athena fez o upgrade. Particularmente, o xstata às vezes fará com que as máquinas Athena apresentem falha, requerendo uma partida a frio. Esse problema parece estar associado com gerenciadores de janelas não-padrão. Os três pontos a seguir ajudam a contornar o problema: (1) Salve seu trabalho com freqüência. (2) Se o Athena trava para quando você usa o Stata, tente usar o padrão do gerenciamento de janela Athena. (3) Para se ter absoluta certeza de que você não vai ter esses problemas, use a versão da linha de comando de Stata. 1.1 Inserindo e editando comandos Os comando são inseridos e editados pelo teclado. Os comandos anteriores são salvos em um buffer e podem ser recuperados para edição. Além disso, a interface do usuário contém uma janela marcada como "review", que grava os comandos recentes inseridos por você. Depois de ter inserido um comando, você pode ir até a Janela Review e clicar duas vezes sobre qualquer 1 Este documento foi profundamente inspirado em outro documento semelhante criado por Jeroen Wessie, Departamento de Sociologia, Utrech University. comando para executá-lo novamente. Um clique único leva o comando para a Janela Command para edição e execução. O quadro abaixo mostra os comando de edição mais úteis para a Janela Command, usando o Unix. Para revisar os 10 comandos anteriores, digite #review 10. 1.2 Sair do Stata Para sair do Stata, execute o comando exit. Caso esteja trabalhando em um conjunto de dados, você provavelmente fez alterações nos dados, como ter criado novas variáveis. Se você não tiver primeiro salvado seus dados, o Stata irá recusar sua saída. Esse método visa a protegê-lo de seu próprio erro. Para sair do Stata sem salvar os dados, digite exit, clear. 1.3 Ajuda A tecla F1 é reservada pelo Stata para ajuda. Usando o comando help, você obtém informações detalhadas sobre a maioria dos aspectos dos programas e sobre os comandos. Por exemplo, ao digitar help regress, você obtém informações detalhadas sobre a execução de regressões lineares usando o comando regress. 1.4 Busca O comando search topic permite que você procure pelo comando Stata para análises com referência ao topic (tópico). Por exemplo, search regression dá uma pesquisa completa dos comandos pertinentes à análise da regressão. Observação: no final da seção de ajuda dos comandos, você também encontrará uma lista dos comandos relacionados. 1.5 Stata na Internet O site do Stata na internet é www.stata.com, e ele pode ser acessado a partir do próprio Stata por meio do menu Help. No site, você encontrará uma página extensa de perguntas freqüentes, além de outros brindes . 1.6 Identificadores Um identificador (“nome”), como o nome de um comando ou variável, é formado por no máximo 32 caracteres (caixas alta e baixa, dígitos e underscores), no qual o primeiro caractere deve ser preferencialmente uma letra (observe que o limite de 32 caracteres é novo para a versão 7. As versões anteriores impunham um limite de 8 caracteres. Em função de problemas de compatibilidade, eu continuarei a considerar o limite de 8 caracteres e pedirei que façam o mesmo). O Stata faz distinção entre letras maiúsculas e minúsculas. Quase todos os comandos do Stata estão em caixa baixa. 1.7 Abreviações Uma regra geral no Stata é que você pode abreviar os comandos e nomes de variáveis desde que o Stata não se confunda com o que você deseja fazer. Por exemplo, se você tiver as variáveis income1 e inkvar2 em seu conjunto de dados, o Stata entenderá que inc é a variável income1, mas não seria capaz de decidir se in significa income1 ou inkvar1. Se você realmente quiser especificar todas as variáveis que começam com “in,” é possível usar uma expressão com curinga (in*). 1.8 Arquivos de log O comando log using filename especifica que todos os comandos que são inseridos a partir do teclado, mais a maioria dos resultados produzidos, são salvos em um arquivo de nome filename.scml. Dessa maneira, você pode salvar o resultado e revisá-lo. Infelizmente (a meu ver), o Stata v. 7 produz como padrão um arquivo de log que é uma versão não convencional de html. Portanto, para traduzir um arquivo de log em algo que possa ser lido com mais facilidade, você precisará executar o comando translate. É possível pular esta etapa ao digitar log using filename, text. 1.9 Comandos de shell Você pode inserir comando Unix ao colocar nele o prefixo “!”. Por exemplo, !ls relacionará a list de arquivos que estão no diretório atual. 1.10 Arquivos em lote Você pode construir um arquivo de comandos do Stata para ser executado em lote. Isso é muito útil para replicar suas análises, e você precisará escrever esses arquivos para documentar seu trabalho em alguns problemas e em seu projeto final. Para construir e testar um arquivo de comandos do Stata, é possível usar tanto um editor de ASCII (como emacs) quanto o Editor de Arquivos "Do" na interface gráfica. 1.11 Uma sessão de amostra A seguir é apresentada uma sessão introdutória em Stata, usando o conjunto de dados dos Governistas Negros Eleitos (beo_example.dta) em /mit/17.801/Examples. Os comentários são precedidos por *. 2. A sintaxe do Stata O Stata possui uma sintaxe poderosa e consistente. Com algumas exceções, a forma básica é: [by varlist1:] command [varlist2] [weight] [if expr2] [in range] [,options] Exemplos de comandos do Stata: summarize age regress income educ tabulate sex edu if tabulate sex edu,no by cohort: tabulate exp sex age>25 freq cell chi2 sex edu Observações sobre a sintaxe do Stata: • • • No diagrama de sintaxe exibido acima, as partes opcionais estão dentro de colchetes [ ]. by varlist1: requisita uma análise separada para cada valor de varlist1: As partes opcionais [if expr2] [in range] restringem o conjunto de observações sobre o qual o comando opera. Eles podem ser colocados em qualquer ordem. • • • • • • • • • • Um conjunto de observações é referido na forma de # ou #/#; # representa um número ou l (ou seja, a letra L), significando a última observação. Por exemplo, in 1/10 significa “apenas para as dez primeiras observações;” in l significa apenas a última observação; -5/l significa as últimas 5 observações. Não discutimos pesos aqui. Observe que uma vírgula é obrigatória antes das opções. Na maioria dos casos pode haver no máximo uma vírgula (algumas funções separam argumentos usando vírgulas, mas elas são raras). A linha que começar com * é ignorada. Em um arquivo ".do", qualquer texto entre /* e */ é considerado um comentário. Eles precisam estar na mesma linha: /* */ pode ser usado para fazer uma nova linha invisível no Stata. Como padrão, as linhas de comando terminam com ENTER (retorno do carro). Em um arquivo ".do" (e somente em um arquivo ".do"), você pode alterar o separador de comandos para “;” por #delimit ; , enquanto o comando #delimit cr leva-o de volta para o retorno do carro. Nenhum outro caractere é permitido como delimitador. A sintaxe faz diferenciação de letras MAIÚSCULAS e minúsculas: a é diferente de A! Todos os nomes do Stata estão em minúsculas. Os nomes podem ser formados por 1 a 32 letras, dígitos e/ou underscores, começando com uma letra. Para facilitar a compatibilidade com versões anteriores do Stata, é uma boa idéia manter os nomes com 8 ou menos caracteres. Um nome de variável pode conter o caractere curinga *. As listas de variáveis são indicadas por “–“ . Em uma lista de nomes, v1 - v100 significa v1, v2, . . . v100. O Stata suporta diferentes tipos de variáveis: inteiros (bye, int, long) números reais aproximados (float, double), datas e strings alfa-numéricas. O padrão é float. Muitos nomes de sistema começam com _. Por exemplo: _n _N _all _b _se • • número da observação corrente número total de observações todas as variáveis vetor dos coeficientes de regressão vetor dos erros-padrão dos coeficientes de regressão Ao ser combinado com by, _N e _n, refere-se ao número de observações dentro do grupo atual. Para expressões, veja abaixo ou help exp. Em expressões lógicas, use == para igualdade. O Stata permite indexar ou subscrever variáveis no comando generate, usando [ ], _n, _N, etc. Por exemplo, gen dx = x - x[_n-1] significa gerar uma nova variável (dx) que subtraia o valor de x da observação anterior do valor de x da observação corrente. Aspas são usadas apenas para strings. Use aspas duplas. 3. Expressões e transformação de dados 3.1 As expressões lógicas podem conter os seguintes operadores: Aqui, & é E, | é OU e ~ é NÃO. Observe o uso de sinal de igual duplo (==) para a igualdade booleana. No Stata, um único = é usado exclusivamente para tarefas, enquanto o duplo == é usado para o operador booleano de igualdade. 3.2 As expressões aritméticas podem conter os seguintes operadores: Observações: • x^y representa xy . Observe que -2^2 resulta em –4, enquanto (-2)^2 resulta em 4. • [ ] são usados para subscrever ou para a geração de variáveis defasadas: x[3] é o valor de x para a observação 3; x[_n-1] é o valor de x para a observação anterior. • _n é o número da observação corrente e _N é o número total de observações. • . (ponto final) representa o valor ausente no sistema quando se refere a variáveis numéricas (valores ausentes para variáveis de string são representados por strings nulas). Internamente, os valores ausentes são representados pelo maior valor possível do tipo de dado. Isso pode requerer alguns cuidados. Por exemplo: 0 <= x é verdadeiro se x estiver ausente. As funções matemáticas mais importantes são: abs() exp() int() round(x,y) log() min(varlist) max(varlist) mod(x,y) sqrt() sign() sum() uniform() valor absoluto a função exponencial, e0 o inteiro obtido pelo truncamento, ou seja, pela eliminação das casas decimais : int(1.1) resulta em 1 arredonda x em unidades de y. round(x,1) arredonda para o inteiro mais próximo. logaritmo natural o mínimo de varlist. Para obter o mínimo na linha, possivelmente dentro de subgrupos de observações, veja a sub-função rmin() de egen. o máximo de varlist. Para obter o máximo na linha, possivelmente dentro de subgrupos de observações, veja a sub-função rmax() de egen. x modulo y = o resto quando x é dividido pelo y inteiro; resto da divisão de x por y. raiz quadrada sign(x) resulta em +1, -1 ou 0 para x > 0, x < 0 ou x == 0, respectivamente. A soma de todos os valores da expressão () para todas as observações anteriores e a observação corrente (ou seja, uma soma contínua ou acumulada) Isso gera um número aleatório uniformemente distribuído entre 0 e 1. Nenhum argumento é necessário, mas o () não deve ser omitido. A semente pode ser alterada com set seed. Como padrão, o Stata estabelece uma única semente , sempre gerando a mesma seqüência de números aleatórios. Além disso, autocode, group e recode são funções muito úteis para se fazer a recodificação dentro de um conjunto discreto de valores. O comando tabulate pode ser usado para gerar variáveis dummy, que são discutidas no próximo parágrafo. Além disso, há várias funções para as strings, e entre strings e números, funções de distribuição: da distribuição normal, a 2 distribuição χ (chiprob(df,x)), a distribuição F, a distribuição T-Student e o inverso da distribuição normal. A última função pode ser usada para gerar números aleatórios normalmente distribuídos: invnorm(uniform()). Para obter mais detalhes, veja o manual ou digite help functions. 3.3 Transformações de dados O Stata possui recursos muito bons de transformação de dados. • Ao contrário da maioria dos pacotes estatísticos, há diferentes comandos para definir novas variáveis (gene rate) e para modificar as variáveis existentes (replace ). • tabulate pode ser usado para fazer variáveis dummy, chamadas de variáveis indicadoras pelo Stata. • As expressões Stata são bastante poderosas: há um bom conjunto de funções e a possibilidade de mistura de expressões lógicas e numéricas, como está explicado abaixo. Para alterar os valores de uma variável discreta, você pode também usar o comando recode. Eis um exemplo: recode xyz 1=2 2=1 *=3 Para a variável xyz, este comando substitui 1 por 2, 2 por 1 e tudo por 3. Veja três exemplos de generate: gen laginc = inc[_n-1] gen loginc = log(inc) gen hiinc = inc > 100000 O primeiro exemplo mostra como fazer uma variável defasada. O terceiro exemplo cria uma variável dummy hiinc, que é igual a 1 para as observações maiores do que 100.000 e para valores ausentes, 0. Qualquer expressão lógica pode ser usada como uma expressão aritmética ou parte dela. “Verdadeiro” é interpretado como 1; “falso” é 0. De modo contrário, toda expressão aritmética pode ser interpretada como expressão lógica. Qualquer expressão com resultado 0 é tomada como “falsa”; qualquer expressão com outro número ou um valor ausente como resultado é tomada como “verdadeira”. Considere que temos a variável age (em anos) e que desejamos recodificá-la em quatro categorias com pontos de quebra em 20, 40 e 60 anos. A expressão lógica (age>20) é 1 (ou seja, “verdadeira”) para todas as pessoas com mais de 20 anos. Assim, podemos escrever: gerando uma nova variável, age4, que terá valores 1, 2, 3 ou 4. O resultado será 1 para todos os pesquisados com idade igual ou inferior a 20 anos e 4 para todos com mais de 60 anos. Se quisermos transformar uma variável contínua como age em discreta usando os limites superiores das faixas de idade como novos valores podemos usar a função recode: Se oldvar <= x1, newvar = x1; caso contrário se x1 < oldvar < x2, então newvar = x2, etc. Para transformar a idade nas mesmas quatro categorias acima, poderíamos digitar: gen age4a = recode(age,20,40,60,80) Agora, age4a é apenas 20*age4 do exemplo anterior. Uma versão automática de recode é autocode. gen newvar = autocode(oldvar, ng, xmin, xmax) Agora, o intervalo (xmin, xmax) é “automaticamente” dividido em ng subintervalos de extensão igual e o novo valor de newvar é o limite superior do intervalo ao qual oldvar pertence. Observe que acima, a idade foi dividida em intervalos de extensão igual. Se não tivermos interrogados acima de 80 anos de idade, age4a também pode ser criada assim: gen age4a = autocode(age,4,0,80) Uma única variável dummy indicando todas as observações que têm o valor 3 na variável x pode ser criado da seguinte maneira: gen x3 = (x==3) onde os parênteses são opcionais. A expressão lógica (x == 3) é usada aqui em um contexto numérico, de modo que ela retorna o valor 1 se for verdadeira e 0 se for falsa. Se x for discreto e for desejada uma variável dummy para cada valor possível, o método acima é trabalhoso. Uma alternativa melhor é usar a opção generate de tabulate, da seguinte forma: Algumas manipulações poderosas de dados são possíveis com a opção by. Por exemplo, digamos que você tenha um conjunto de dados que possua informações sobre pessoas em diferentes lares; cada um possui vários entrevistados. Se a variável hhold identificar o lar em que um indivíduo está e age registrar a idade de cada pessoa, então o exemplo a seguir descobrirá a idade média das pessoas mais velhas em todos os lares: sort hhold age by hhold : gen oldest = _n == _N summ age if oldest O comando a seguir encontraria a idade média dos outros membros do lar: summ age if~oldest. Como outro exemplo, vamos supor que você tenha dados sobre as rendas das pessoas dentro dos lares. Você quer descobrir a renda total do lar, fazendo a soma de todos em cada casa. É possível fazer isso com o seguinte conjunto de comandos: sort hhold by hhold : gen hhinc = sum(inc) by hhold : replace hhinc = hhinc[_N] Esta última operação é realizada de modo mais fácil usando uma das funções egen: egen hhinc = sum(inc), by(hhold) 4 Resumo dos comandos do Stata Nesta seção, há uma breve explicação para os comandos mais importantes do Stata. Indicamos abreviações permitidas ao sublinhá-las. Não use abreviações em excesso nos arquivos ".do", pois isso dificulta a compreensão. 4.1 Ajuda Stata help help help topic search string lookfor string Descrição Ajuda interativa sobre como usar o sistema de ajuda. Ajuda interativa sobre o topic (comandos do Stata), como por exemplo help regress. Lista as descrições dos comandos do Stata relacionadas com o termo string, como por exemplo search regression. O resultado também inclui tópicos que apareceram no Boletim Técnico do Stata e os programas disponíveis em arquivos antigos dos programas do Stata. Relaciona as variáveis que contêm string no nome da variável ou no rótulo da variável, como por exemplo lookfor age. 4.2 Lendo e gravando arquivos de dados Stata use save filename merge commonvar using filename append filename compress edit input varlist infile varlist infix varlist insheet using filename outfile using filename outsheet using filename Descrição Carrega um arquivo do sistema do Stata para processamento. Salva como arquivo do sistema do Stata; não se esqueça de substituir caso deseje sobrescrever um arquivo de disco existente. Adiciona variáveis de outro arquivo de sistema para o arquivo atual. Os dois arquivos devem ter uma variável em comum, commonvar, que identifique os casos a serem combinados. Os dois arquivos devem ser classificados por commonvar. Adiciona casos de outro sistema de arquivo. Compacta o arquivo de dados ao converter, por exemplo, números reais de 4 bytes em inteiros, se isso for possível, sem causar perda da informação. Esse comando pode economizar muito espaço em disco e memória interna. Insere os dados diretamente no editor de dados ou altera o valor das variáveis existentes (isso não está disponível na versão de linha de comando do Stata). Insere os dados de forma interativa. Digite end para encerrar a inserção. Lê os dados ASCII em formato livre ou fixo. Lê os dados ASCII em formato fixo. Lê os dados ASCII em formato delimitado por tabulações ou vírgula. Escreve um arquivo de dados ASCII de formato livre (opcionalmente, com um dicionário) Escreve um arquivo de dados ASCII em formato delimitado por tabulações ou vírgula. 4.3 Modificando os dados de forma interativa Stata generate newvar = expr replace oldvar = expr edit / browse varlist for egen recode varname reshape collapse Descrição Cria uma nova variável newvar usando uma expressão expr. Altera os valores de uma variável existente. Insere dados diretamente no editor de dados ou altera o valor das variáveis existentes usando uma interface semelhante a uma planilha (isso não está disponível na versão de linha de comando do Stata). Repete um comando para uma lista de variáveis, uma lista numérica ou uma lista de strings arbitrários. Várias extensões úteis para o comando generate, incluindo geração de médias de variáveis na mesma linha, etc. Recodifica a variável varname. Altera a organização de um conjunto de dados entre os formatos “largura” e “altura”. Isso é muito útil para administrar conjuntos de dados que possuam uma organização individual (pessoa, lugar, coisa) por unidades de tempo. Agrega variáveis. Por exemplo, se você possuir um conjunto de dados em nível municipal, é possível agregar até o nível estadual usando o comando collapse. Advertência: o comando collapse sobrescreve os valores existentes das variáveis. 4.4 Procedimentos descritivos Stata describe ds Summarize summarize, detail by varname : tab varname, Tabulate tab varname, by varname : Table inspect correlate pwcorr summ summ() plot tab Descrição Lista de nomes, rótulos e nº de observações de variáveis, entre outros Lista compacta de nomes de variáveis. Estatísticas resumidas básicas sobre as observações válidas. Estatísticas resumidas detalhadas, incluindo quanta, assimetria, curtose. Estatística para subgrupos. Resumo para subgrupos. Tabelas de uma e duas entradas. Histogramas. Tabelas de várias entradas. Tabelas de várias entradas, com formatação avançada. Outros resumos univariados para inspeção de dados. Matriz de correlação ou covariância das variáveis. Matriz de correlação com exclusão de pares de casos ausentes. pcorr spearman count if exp list display expr Correlações parciais. Correlação não-paramétrica de Spearman. Para quantas observações a expressão exp é verdadeira. Lista de observações. Calculadora rudimentar. Calculadora simples. 4.5 Gráficos Stata graph, graph, graph, graph, graph, box hist oneway matrix twoway Avplot Descrição Plotagem do tipo Box plot. Histogramas (padrão, se for dada apenas uma variável). Plotagens de freqüência em diagrama de barras. Plotagem de matriz de dispersão de duas variáveis. Diagrama de dispersão (padrão se forem dadas duas variáveis). Plotagens de variável agregada depois da regressão. 4.6 Procedimentos estatísticos Stata regress Ttest Descrição Regressão. t-teste. Teste T-Student 4.7 Procedimentos variados Stata sort order rename drop if expr drop varlist drop all clear sample keep label do filename run filename Descrição Classifica as observações com base em uma ou mais variáveis. Reorganiza as variáveis na matriz de dados. Altera o nome de uma variável. Abandona observações quando expr é verdadeira. Abandona as variáveis em varlist. Abandona todas as variáveis. Abandona todas as variáveis.Necessário antes que um novo conjunto de dados possa ser lido. Amostra aleatória de observações de dados. O oposto de drop. Rotula variáveis e valores de variáveis. Executa um arquivo ASCII de comandos do Stata. Assume que a extensão do arquivo é .do, a menos que seja determinada outra extensão. Mesmo que do, apenas executa o arquivo sem apresentar resultados. exit exit, clear log using filename Sai do Stata (isso não é permitido quando os dados foram alterados mas não foram salvos). Sai do Stata mesmo se os dados alterados não foram salvos. Gera arquivo de log com o nome filename.