Introdução ao Stata: criação e Mudança de variáveis

esta é a parte seis da introdução ao Stata. Se é novo na Stata, recomendamos que comece desde o início.

Saltar para o conteúdo a seguir a este vídeo

Este artigo irá ensinar-lhe os princípios básicos de criar novas variáveis, modificar variáveis existentes e criar legendas.

gerar e substituir

os comandos primários para criar e mudar variáveis são gerar (geralmente abreviado gen) e substituir (que, como outros comandos que podem destruir informações, não tem abreviatura). gen cria novas variáveis; substitui as alterações dos valores das variáveis existentes. O seu núcleo de sintaxe é idêntica:

gen variável = expressão

ou

substituir variável = expressão

onde variável é o nome da variável que você deseja criar ou alterar, e a expressão é a expressão matemática cujo resultado você quer colocar nele. Expressões podem ser tão simples quanto um número único ou envolver todos os tipos de funções complicadas. Você pode explorar quais funções estão disponíveis digitando funções de Ajuda. Se a expressão depende de um valor em falta em qualquer ponto, o resultado está faltando. Normalmente isto é exactamente o que se espera e se quer.

é especialmente importante usar arquivos do quando você muda seus dados, então comece por criar um arquivo do que carrega o conjunto de Dados auto:

captura log fechar
log usando vars.log, replace
clear all
sysuse auto

The prices in the auto data set are in 1978 dollars, so it might be useful to convert them to 2020 dollars. Para isso, é necessário multiplicar os preços por um fator de conversão que é o Índice de preços no consumidor em 2020 dividido pelo Índice de preços no consumidor em 1978, ou cerca de 4. O código será:

gen price2020 = preço*4

Adicionar esta linha ao seu arquivo, execute-o, e examinar os resultados com:

procure fazer preço price2020

Os preços ainda são geralmente mais baixos do que você veria em uma concessionária de carros, mas isso é provavelmente porque os carros de hoje são muito mais agradável do que a de 1978 carros. Este é um bom exemplo de como verificar o seu trabalho: compare o que você tem com o que você esperava, e se eles não coincidem certifique-se de que você sabe por quê!

internamente, o Stata executou um ciclo: ele calculou preço*4 para a primeira observação e armazenado o resultado em price2020 para a primeira observação, em seguida, calculado o preço*4 para o segundo observação e armazenado o resultado em price2020 para a segunda observação, e assim por diante para todas as observações no conjunto de dados. Você vai aprender a esticar este paradigma de uma observação em um momento na disputa de dados no Stata, mas as tarefas que quebram (como calcular os meios) requerem uma abordagem diferente que falaremos em breve.suponha que quiséssemos ser um pouco mais precisos e usar 4.14 como fator de conversão. Você pode ser tentado a tentar adicionar código que “corrige” a variável price2020 (digamos, multiplicando-a por 4.14/4). Mas é mais simples e mais limpo corrigir o código que o criou em primeiro lugar. Alteração:

gen price2020 = preço*4

para:

gen price2020 = preço*4.14

e execute o arquivo novamente. Porque seu arquivo do do carrega os dados originais do disco toda vez que ele é executado, ele pode simplesmente criar a variável price2020 da maneira que ele deve ser.

ter tanto o preço como o preço 2020 permitiu-lhe comparar os seus valores e verificar o seu trabalho. Mas se você só quiser trabalhar com 2020 dólares e estiver confiante de que você tem a fórmula certa, você pode usar o comando Substituir para mudar a variável de preços existente em vez de criar uma nova:

substituir preço = preço*4.14

executar esta versão e você vai receber a mensagem (74 mudanças reais feitas). Dado que o conjunto de dados tem 74 observações, Isto diz-lhe que todas foram alteradas, como seria de esperar. Uma vez que você começa a incluir as condições if, quantas observações foram realmente alteradas pode ser informação muito útil.exercício: Fora dos Estados Unidos, a eficiência do combustível é frequentemente medida em litros por quilômetro (note que porque o combustível usado está no numerador, um número baixo é bom). Para converter milhas por galão em litros por quilômetro, multiplicar o recíproco de mpg (1 / mpg) por 2,35. Crie uma variável que armazena a eficiência de combustível de cada carro em litros por quilômetro.

criando variáveis com condições If

p > pular para o conteúdo após este vídeo

Se um comando gen tem uma condição if, a variável resultante irá (e deverá) ainda existir para todas as observações. No entanto, será atribuído um valor em falta para observações em que a condição de fi não é verdadeira. Se um comando de substituição tiver uma condição de se, as observações onde a condição de se não for verdadeira serão deixadas inalteradas. Isso permite que você defina variáveis a diferentes valores para diferentes observações.suponha que queria colapsar a escala de cinco pontos da variável rep78 numa escala de três pontos. Adicione o seguinte código ao seu ficheiro de fazer para o fazer:

gen rep3 = 1 se rep78<3
substituir rep3 = 2 se rep78==3
substituir rep3 = 3, se rep78>& rep78<.

A primeira linha cria a nova variável rep3, mas apenas a define como uma para os casos em que o rep78 é inferior a três. Os outros desaparecem. A segunda linha muda algumas dessas falhas para dois, e a terceira muda mais para três. Execute o arquivo do, observe o número de observações alteradas por cada linha, e compare isso com o número total de observações no conjunto de dados.

Qual será o valor do rep3 para as observações em que o rep78 está em falta? Desaparecido, como devia ser, porque nunca foi programado para mais nada. As cinco observações onde o rep78 está faltando foram implicitamente ou explicitamente excluídas de todos os três comandos, então eles começaram com um valor em falta para o rep3 e nunca foram alterados. (Se você se esqueceu de excluir os valores em falta do último comando, então rep3 seria três para carros onde rep78 está faltando, um erro muito comum. Lembrem-se, o desaparecimento é essencialmente infinito.exercício: Combinar os dois e os dois faz sentido porque há tão poucos deles, mas não havia nenhuma necessidade particular de combinar os quatros e cincos. Crie uma variável rep4 que combine os dois e os dois e renumere as outras categorias em conformidade (isto é, rep4 deve passar de um para quatro).

Recode

salta para o conteúdo a seguir a este vídeo

o comando recode dá-lhe uma forma alternativa de criar o rep3. Ele é projetado exclusivamente para recodificar tarefas e é muito menos flexível do que gen e substituir. Mas é muito fácil de usar. A sintaxe é:

recode var (regra 1) (Regra 2) (mais regras conforme necessário…), gen (newvar)

a opção gen no final não é necessária—se não estiver lá, então a variável original será alterada em vez de criar uma nova variável com os novos valores. Você também pode ter o trabalho de recode em uma lista de variáveis, recodificando-as todas da mesma forma.

O núcleo do comando recode é uma lista de regras, cada uma entre parênteses, que lhe dizem como uma variável deve ser recodificada. Eles tomam a forma (inputValue = outputValue). O inputValue pode ser um número único, uma lista de Números separados por espaços, ou um intervalo de números especificado com início/fim. O valor avançado será sempre um número único. Qualquer coisa não coberta por uma regra é deixada inalterada, então você pode usar recode para mudar apenas alguns valores de uma variável ou redefinir completamente ela como fazemos aqui. Aqui está uma versão recódica da conversão de rep78 para uma escala de três pontos:

recode rep78 (1 2 = 1) (3 = 2) (4 5 = 3), valores em falta Gen (rep3b)

não foi necessário tratamento especial: uma vez que a falta não foi listada nos valores de entrada de qualquer regra, as observações com valores em falta não são alteradas.

exercício: criar rep4b, combinando apenas os dois e os dois como acima, usando recode.

variáveis indicadoras

Saltar para o conteúdo a seguir a este vídeo

na criação de variáveis indicadoras, poderá tirar partido do facto de o Stata tratar o verdadeiro como um e o falso como zero, definindo a nova variável como uma condição. Considere:

gen lowMPG = (mpg<20)

(os parênteses são opcionais, mas facilitam a leitura.) Isto cria uma variável indicadora chamada lowMPG que é uma (true) para carros onde mpg é inferior a 20 e zero (false) onde mpg é maior ou igual a 20. Para ver os resultados executar o arquivo do e, em seguida, digite browse make mpg se lowMPG.

no car has a missing value for mpg, but if one did, the above code would assign it a zero for lowMPG as if it were known to have good gas mileage. A variável lowMPG deverá estar ausente nestes casos, o que poderá fazer com:

gen lowMPG = (mpg<20) se mpg<.exercício: Criar uma variável indicadora que identifique os automóveis com bons registos de reparação (definidos como rep78 superior a 3). Como o seu código mudaria se a variável indicador necessário para identificar carros que são conhecidos por ter bons registros de reparação?

String Variables

Skip to the content following this video

The gen and replace commands work with string variables too. As expressões do lado direito do sinal de igual não são matemáticas, mas seguem regras semelhantes. Os valores das cordas vão sempre entre aspas, por isso, se quisesse guardar a letra x numa variável chamada x, diria gen x = “x”. Stata não acharia isso confuso (embora você possa) porque x entre aspas (“x”) significa que a letra x e x sem aspas significa a variável X.

adição de strings é definida como colocar uma string após a outra, então” abc ” + ” def ” = “abcdef”. Mas a maioria do trabalho com strings é feito por funções de propósito especial que tomam strings como entrada (valores de string ou variáveis contendo strings) e retornam strings como saída.

a variável make realmente registra duas informações: o nome da empresa que produziu o carro, e o nome do modelo do carro. Você pode facilmente extrair o nome da empresa usando a função word ():

Gen company = word (make,1)

para ver os resultados, execute o arquivo do e digite browse make company. A primeira entrada, ou argumento, para a função palavra() é a string para agir (neste caso uma variável contendo strings). O segundo é um número que diz a palavra que você quer. A função quebra o texto de entrada em palavras com base nos espaços que contém, e devolve o que você pediu, neste caso o primeiro.

vamos dizer muito mais sobre as funções de string em dados de texto (próximo), mas se você está ansioso para começar você pode fazer um grande negócio com apenas as seguintes funções:

word() Extratos de uma palavra a partir de uma string
strpos() Indica se uma string contém uma outra seqüência de caracteres, e se assim for a sua posição
substr() Extratos de partes de uma string
subinstr() Substitui parte de uma seqüência de caracteres com outra coisa
length() Indica o tempo de uma seqüência de caracteres (como número de caracteres que ela contém)

Tipo de ajuda e, em seguida, o nome de uma função em janela principal Stata para aprender como funciona.

exercício: criar uma variável modelo contendo o nome do modelo do carro (ou seja, o resto da marca). Seu código deve ser capaz de lidar com nomes de modelos que são uma ou duas palavras de comprimento.

Converter variáveis de cadeia de caracteres para variáveis numéricas

Saltar para o conteúdo a seguir a este vídeo

às vezes uma variável que deve ser numérica entra no Stata como uma cadeia de caracteres. Você pode corrigir isso com o comando destring, que converte uma variável de string que contém números para uma variável numérica. A sintaxe é apenas destring variável, substituir, onde variável deve ser substituído pelo nome da variável (ou variáveis) a ser destringed. Se a variável string contém tudo menos números, você pode adicionar a opção força para dizer ao Stata para convertê-la de qualquer maneira, mas as observações com quaisquer caracteres não-numéricos irão obter um valor em falta. Note que “caracteres não-numéricos” incluem sinais em dólares e vírgulas!

em geral, se você tem que usar a opção força é porque Stata não tem certeza do que você está fazendo é uma boa idéia, e você deve pensar cuidadosamente antes de fazê-lo. Neste caso, você deve examinar os caracteres não-numéricos para ver se faria sentido removê-los primeiro (como aqueles sinais de dólar e vírgulas) ou se a variável não é realmente apenas números afinal.

Este conjunto de dados não tem quaisquer variáveis que precisem de ser destringidas, por isso vamos fazer uma:

gen x = “5”

Nota Como as citações em torno de “5” significam que x é uma variável de cadeia contendo o carácter 5, Não uma variável numérica contendo o valor 5. Apenas para tornar as coisas complicadas, vamos mudar alguns dos valores de x para texto real:

substituir x = “ausente”, se estrangeiro

Agora, tente destring x:

destring x, substitua

Stata vai recusar, porque alguns dos valores de x não pode ser convertido em números. Mas os valores que não podem ser convertidos são “em falta”, por isso é inteiramente apropriado convertê-los em valores em falta. Então tente novamente com a opção força:

destring x, substitua a força

Agora o Stata irá converter x para uma variável numérica, com alguns valores em falta.

Egen

Saltar para o conteúdo a seguir a este vídeo

o comando egen, abreviatura de “geração estendida”, dá-lhe acesso a outra biblioteca de funções. É um pouco um hodge-podge, mas as funções egen você vai usar as estatísticas de resumo mais calculadas:

Name Description
min() Minimum value
max() Maximum value
mean() Mean
median() Median
sd() Standard Deviation
total() Total

These are examples of aggregate functions: they take multiple numbers as input and return a single number as output. Eles também trabalham através de observações, e, portanto, não pode ser facilmente feito usando gen, uma vez que funciona uma observação de cada vez. A sintaxe é quase idêntico ao gen:

egen variável = function()

A grande diferença com egen é que você não está escrevendo sua própria expressão matemática; você está apenas usando uma função da biblioteca. Por exemplo, se você precisava definir uma variável para uma média dividida por dois, você não poderia dizer egen y = média(x)/2. Em vez disso, você primeiro executar egen y = mean (x) e, em seguida, substituir y = y/2.outra diferença importante é a forma como os valores em falta são tratados. Lembre-se que com a gen, se alguma parte da entrada estava faltando a saída estaria faltando. No entanto, egen simplesmente ignora os valores em falta e calcula o resultado usando os dados que estão disponíveis. Normalmente isto é o que você quer, mas você precisa estar ciente do que egen está fazendo e ter certeza de que faz sentido para sua tarefa particular.

as funções egen para calcular estatísticas resumidas são muito comumente combinadas com by para calcular estatísticas resumidas para grupos. Calcule o preço médio do carro para cada empresa e depois veja os resultados com:

bysort company: egen meanPrice = mean(price)
tab company, sum (meanPrice)

Recall that bysort company: first orders the data by company and then runs the following egen command separate for each company.

os zeros para o desvio padrão reflectem o facto de todos os automóveis produzidos pela mesma empresa terem o mesmo valor de preço médio. Isso é porque o meanPrice descreve a empresa, não o carro. De fato, esta é a definição de uma variável que descreve um grupo: cada unidade dentro do mesmo grupo deve ter o mesmo valor da variável.

Se tivéssemos querido apenas ver o valor médio do preço para cada empresa, poderíamos ter apenas executado:

tab company, sum(price)

mas tendo executado egen agora temos a média numa variável, disponível para uso.exercício: criar uma variável contendo o valor médio do rep78 para cada empresa. Em seguida, examine as frequências de rep78 dentro de cada empresa, criando uma tabela de duas vias com tab. Certifique-se de incluir valores em falta. Lincoln e Olds têm o mesmo significado; quão bem você acha que isso resume a distribuição de rep78 para as duas empresas? Em seguida, considere os valores em falta: suponha que o valor real de rep78 para os carros com vales desaparecidos foram revelados. O que teriam de ser para que estes meios não mudassem? Quão plausível é isso?

etiquetas

saltem para o conteúdo após este vídeo

boas etiquetas tornam os seus dados muito mais fáceis de entender e trabalhar. Embora a Stata tenha muitos tipos de etiquetas, vamos focar-nos nas mais comuns e mais úteis: etiquetas variáveis e etiquetas de valor.

etiquetas variáveis

etiquetas variáveis transmitem informações sobre uma variável, e podem ser um substituto para nomes de variáveis longas. Este conjunto de dados já tem um bom conjunto de etiquetas variáveis, como você pode ver na janela de variáveis. O único que é confuso é a etiqueta no foreign, então mude-a usando o comando da variável label. A sintaxe para definir um rótulo variável é:

label variável variableName “label”

so type:

label variável estrangeira “Car Origin”

Look at the Variables window again to see the results.

as etiquetas dos valores

as etiquetas dos valores são usadas com variáveis categóricas para lhe dizer o que as Categorias significam. Já vimos um em acção com a variável estrangeira.: foram os rótulos de valor que nos disseram que um 0 significa “doméstico” e um 1 significa “estrangeiro”.”

Let’s explore value labels by labeling the values of rep3, the new variable we recoded to collapse rep78 from a five point scale to a three point scale. Etiquetas de valor são um mapeamento de um conjunto de inteiros para um conjunto de descrições de texto, então o primeiro passo é definir o mapa. Para isso, use a legenda define comando:

legenda define mapName value 1 “label1” value 2 “label2″…assim:

rótulo define replabel 1 ” Mau ” 2 “média” 3 ” Bom ”

isto cria um mapeamento chamado replabel mas não o aplica a nada. Antes que ele faça alguma coisa útil você tem que dizer ao Stata para rotular os valores da variável rep usando o mapeamento de replabel que você acabou de definir. A sintaxe é:

os valores de rótulo variável map

E assim:

os valores de rótulo rep3 replabel

Para ver os resultados, execute:

lista de tornar rep3

uma Vez que um mapa é definido, você pode aplicá-lo para qualquer número de variáveis: apenas substitua a única variável no rótulo valores comando acima com uma lista de variáveis. Suponha que você está trabalhando com dados de pesquisa e suas variáveis incluem o gênero do respondente, o gênero do cônjuge do respondente, e os gêneros de todos os filhos do respondente. Você poderia definir apenas um mapa chamado gênero e, em seguida, usá-lo para rotular os valores de todas as variáveis de gênero.

três comandos para gerir as legendas dos valores: a legenda dir dá-lhe uma lista de todas as legendas definidas, e a lista de Legendas diz-lhe o que significam. O comando describe indica-lhe o nome das etiquetas de valor associadas a cada variável (entre muitas outras coisas úteis).exercício: Criar etiquetas de valor para rep4 e aplicá-las. Sinta-se à vontade para decidir como descrever os níveis.

etiquetas via Recode

quando você usa recode para criar uma nova variável, o Stata irá criar automaticamente uma legenda variável para ela (“RECODE of …”). Você também pode definir etiquetas de valor para ele, colocando a etiqueta desejada para cada valor no final da regra que a define. Crie ainda outra versão do rep3, desta vez com etiquetas logo a partir da sua criação, com:

recode rep78 (1 2 = 1″ mau”) (3 = 2″ Média”) (4 5 = 3 “Bom”), gen (rep3c)

exercício: Crie um rep4c usando recode, definindo etiquetas de valores para ele.

este ficheiro muda o conjunto de dados que usa, por isso deve gravar a nova versão. Lembre-se, nunca salve a sua saída sobre a sua entrada, por isso não salve os novos dados como auto. Se o tivesse feito, não poderia executar este ficheiro do de novo: iria estoirar quando tentou criar o price2020 porque essa variável já existiria no conjunto de dados modificado. Em vez disso, salvar os dados como autoV2, como em “versão 2 do conjunto de dados do automóvel.”

gravar o autoV2, substituir o

finalmente, fechar o registo:

log close

isto leva-nos ao fim da introdução ao Stata. Esperamos que tenha sido útil para si. Para saber mais, considere a leitura de dados Wrangling no Stata, ou o outro conteúdo da Base de Conhecimento de Computação Estatística do SSCC.Revista da última vez: 57/2020

Deixe uma resposta

O seu endereço de email não será publicado.