Gerar amostras aleatórias simples no SAS

Em diversos estudos estatísticos, seja para fazer uma pesquisa de mercado ou um modelo estatístico, é necessário gerar uma amostra aleatória. No SAS, isso é bem simples:

/*Substitua os nomes: tabela_entrada, amostra_gerada *\
/*          e tamanho_da_amostra                     *\
proc surveyselect 
    data= tabela_entrada
    out= amostra_gerada
    n = tamanho_da_amostra method=SRS;
run;

Ps.: As amostras são sem reposição!

Empilhando bases no SQL

Mais um post rápido, em que o título fala por si só.

Primeiro, uma query que vai unir as duas tabelas, removendo duplicidades:

select * from table1 
union select * from table2

Query que vai unir as duas tabelas, sem remover duplicidades. Ou seja, se tivermos todas as colunas idênticas, a tabela final terá linhas idênticas:

select * from table1
union all
select * from table2

Lembrando que o SQL pode ser utilizado no SAS, contanto que você inicie com um proc sql!

Regressão Diff-In-Diff com Efeitos Fixos no R

O conteúdo desse post demanda um certo tempo para explicar e detalhar, mas para não segurar informação, segue um código para rodar um modelo de diferenças em diferenças com efeito fixo em R:

## dummy de periodo: o experimento ocorreu no mes 6
dados_modelo$time = ifelse(dados_modelo$mes > 6, 1, 0);

## dummy de tratamento: grupo tratado tem campo tratamento = 1
dados_modelo$treated = ifelse(dados_modelo$tratamento == 1, 1, 0 );

## dummy tratamento * periodo ~ efeito do experimento
dados_modelo$did = dados_modelo$time * dados_modelo$treated;

## regressao diff-in-diff cujo tratamento eh ter ou nao tratamento
## com efeito fixo por paciente
regressao = lm(variavel_resposta ~ treated + time + did +
factor(paciente_id),data = dados_modelo);
summary(regressao);

Acredito que o leitor não terá muito problemas para entender que se for necessário focar em diff-in-diff, ele deve se atentar para a dummy did e para o efeito fixo a sintaxe factor().

Para quem está com o inglês já no nível próximo ao avançado, enquanto não posto nada a respeito desse tema, sugiro os links abaixo:

DID101R

An intuitive introduction to Difference-in-Differences

Fixed Effects estimators: an introduction

Filtros no R

Já falei várias vezes sobre como filtrar os dados no R (Excluindo linhas de uma tabela no R tem algo parecido), segue mais um exemplo:

## Filtrando apenas as linhas com a coluna mes igual a 3
## na tabela dados_modelo
dados_modelo[(dados_modelo$mes == 3),];

## Filtrando apenas as linhas com a coluna mes igual a 3, 4 ou 5
## na tabela dados_modelo
dados_modelo[dados_modelo$mes %in% c(3,4,5,6,7,8,9,10,11),];

## Filtrando apenas as linhas com a coluna mes igual a 3, 4, 5, ..., 10
dados_modelo[dados_modelo$mes %in% c(3:10),];

## Filtrando apenas as linhas com a coluna estado igual a SP
dados_modelo[dados_modelo$estado == "SP"),]

E aí? Gostou do conteúdo? Se inscreva para receber todas as novidades. Deixe seu e-mail em INSCREVA-SE na barra à direita, logo abaixo de pesquisar. E, por favor, não deixe de comentar, dar seu feedback e, principalmente, compartilhar com seus amigos. De verdade, isso faz toda a diferença. Além disso, você também pode acompanhar mais do meu trabalho seguindo a conta de Twitter @UniDosDados, no Instagram @universidadedosdados ou por alguma das redes que você encontra em Sobre o Estatsite / Contato, como meu canal de Youtube Canal Universidade dos Dados.

Aproveite e adquira sua camiseta de data science na LOJA DA UNIVERSIDADE DOS DADOS. Vai ficar estiloso e me ajudar neste projeto!

Como exportar tabelas no R

Mais um post rápido…

Assim como a gente consegue importar tabelas no R utilizando o read.table(), é possível exportar as tabelas, porém, ao invés de ler, você vai escrever. Logo, como todas as funções do R, essa é mais uma bem intuitiva: write.table(). Continuar a ler “Como exportar tabelas no R”

Conversão de Número para Texto no SAS

Como eu sempre digo, lidar com datas é bem chatinho em qualquer linguagem. No SAS, não é diferente. Como já falei sobre como lidar com datas no SAS no post Formatando Datas no SAS e Como calcular a diferença entre duas datas no SAS?, resolvi agora fazer uma conversão menos comum, mas que ocorre também. Agora, é hora de aprender como lidar com os formatos número e texto.

Continuar a ler “Conversão de Número para Texto no SAS”

Comparando graficamente dois grupos em R

Recentemente tive que demonstrar graficamente algumas informações de dois grupos em um estudo. Isso é comum, principalmente porque normalmente analisamos os grupos de controle e tratamento.

No R, o pacote sm permite que façamos um gráfico com as densidades de dois grupos distintos para uma mesma variável de uma forma bem simples.

Para esta análise, o conjunto de dados sleep que temos no R será muito útil. Para quem não o conhece, basta acessar o R e escrever View(sleep). Este conjunto de dados contém informações de estudantes que receberam dois remédios distintos para dormir. Estes dois grupos são separados pela variável group. A coluna extra contém o número de horas a mais que o estudante dormiu após a ingestão da droga. Ou seja, se quisermos observar a distribuição do número de horas dormidas, pelos dois grupos em um mesmo gráfico, podemos utilizar exatamente o pacote sm e o gráfico de densidade separando estes dois grupos. Vamos construir este gráfico:

## instala e carrega pacote
install.packages("sm");
library("sm");

## carrega os dados de 'sleep'
attach(sleep);

## plota as densidades por cada grupo, com cores padrao 1 e 2
sm.density.compare(extra, group, xlab="Horas adicionadas ao sono",
col=c(1:2));

# adiciona titulo
title(main="Distribuicao da Idade por flag de Banco Cadastra");

## adiciona legenda no canto superior direito (topright)
legend("topright", levels(sleep$group),fill=c(1:2),
legend=c("Grupo 1","Grupo 2"))

Podemos fazer a mesma coisa para grupos maiores (3, 4, 5 ou até mais). Vejamos outro exemplo, dessa vez com os dados de mtcars, outro conjunto de dados que já está no R por default. Dessa vez, os dados são de diferentes automóveis e temos as informações de milhas por galão (mpg) e número de cilindros (cyl). Abaixo, veja como construímos os gráficos de densidade de mpg comparando os carros com 4, 6 e 8 cilindros:

## carrega os dados de 'mtcars'
attach(mtcars);

## plota as densidades por cada grupo
sm.density.compare(mpg, cyl, xlab="Milhas por galao",col=c(1:3));

# adiciona um titulo ao grafico
title(main="Distribuicao do consumo por n de cilindros");

## adiciona legenda para os dois grupos
legend("topright", levels(sleep$group),fill=c(1:3),
legend=c("4 cilindros","6 cilindros", "8 cilindros"));