Tutorial: PROC MEANS no SAS

Como falei no post anterior sobre frequências (ver TUTORIAL: PROC FREQ NO SAS), é difícil entender bases grandes somente olhando para o analítico. Normalmente, vamos tentar obter algumas medidas que resumam o conteúdo em questão. Uma das formas de obter estas medidas, quando falamos de variáveis numéricas, é utilizando o proc means. Com o proc means você consegue encontrar a média, mediana, percentil, quartil  e várias outras estatísticas no SAS. Veja abaixo como utilizar este procedimento para entender seus dados.

SINTAXE: A forma mais simples de utilizar o proc means é chamando o procedimento e incluindo a variável que você deseja analisar acompanhada de var:

proc means data = nome_da_tabela;
var variavel_1 variavel_2 ... variavel_n;
run;

Agora, vamos criar um pequeno dataset para usar nos exemplos que serão dados. Abaixo, estão os dados fictícios de clientes de uma rede de supermercados, contendo um código de identificação do cliente, o estado no qual a compra foi feita, o sexo, a forma de pagamento da compra, o valor da compra e a idade do cliente:

DATA EXEMPLO;
    INPUT ID $ ESTADO $ SEXO $ FORMA_PAGTO $ VLR_COMPRA IDADE;

    CARDS;
AA123 SP M DINHEIRO 1000 22
BB001 MG F CREDITO 1500 32
AA010 BA M DEBITO 2000 35
AA003 BA F CREDITO 1500 25
AA004 SP F CREDITO 1000 30
AA006 . F DINHEIRO 1500 20
BB002 BA F CREDITO 900 29
CC333 BA F DEBITO 400 25
DD444 . M DINHEIRO 300 50
EE441 MG F CREDITO 150 30
EE332 SP F CREDITO . 22
EE114 . F DINHEIRO 500 33
. MG F CREDITO 400 60
. PE M CREDITO 1500 33
AA009 BA M CREDITO . 65
AA111 PE F DINHEIRO 50 19
PP154 GO F CREDITO 50 18
PP888 GO F CREDITO 500 29
DD009 BA M CREDITO 150 19
DD111 PE F DINHEIRO 150 18
EF154 GO F CREDITO . 17
DD888 GO F CREDITO 190 18
;
RUN;

PROC MEANS BÁSICO: Por padrão, o proc means apresenta algumas medidas que são: a quantidade de vezes que a variável aparece, a média, o desvio padrão, o máximo e o mínimo da variável em questão.

PROC MEANS DATA=EXEMPLO;
VAR VLR_COMPRA IDADE;
RUN;

Captura de Tela 2018-09-22 às 08.46.09

Note que a variável IDADE é missing para 3 casos. Por este motivo, o proc means trouxe um N igual a 19, ao invés de 22. Se você tem alguma dúvida a respeito destas medidas, veja o post Estatística Descritiva.

PROC MEANS ESTATÍSTICA DESCRITIVA: Como alguns devem imaginar, o proc means não possui somente as medidas apresentadas acima. É possível obter percentis, número de missings, soma e mediana. Veja abaixo um proc means um pouco mais completo:

PROC MEANS DATA=EXEMPLO N NMISS SUM MEDIAN Q1 Q3 P1 P95 P99  ;
VAR VLR_COMPRA IDADE;
RUN;

Captura de Tela 2018-09-22 às 08.54.48

A tabela acima contém a quantidade de valores não missing, a quantidade de valores missing, a soma de todos os valores, a mediana, o 1º quartil, o 3º quartil, o 1º percentil, o 95º percentil e o 99º percentil, respectivamente. As medidas de quartil e percentil ajudam a entender a concentração dos dados. Sabemos agora, por exemplo, que 25% dos valores para idade estão a esquerda de 19.

Novamente, se você tem dificuldades com estas medidas, é bom rever algumas lições já passadas neste blog, como Percentil – Conceito e Código SAS.

Quer mais medidas descritivas? É possível:

PROC MEANS DATA=EXEMPLO N NMISS SUM MEAN MEDIAN MIN MAX Q1 Q3 P1 P50 P95 P99  ;
VAR VLR_COMPRA IDADE;
RUN;

Captura de Tela 2018-09-22 às 09.04.02

AGRUPANDO A VARIÁVEL ANALISADA: É possível fazer as mesmas análises que foram feitas acima, porém, agrupando a variável de saída por alguma outra variável. Suponha que você queira saber as estatísticas para a idade, mas separando por estado. Isso pode ser feito indicando que você quer a idade separada pela classe estado:

PROC MEANS DATA=EXEMPLO;
CLASS ESTADO;
VAR IDADE;
RUN;

Captura de Tela 2018-09-22 às 09.09.17

Veja que esta análise nos permite identificar o perfil do cliente por estado.  Sabemos, por exemplo, que os clientes que compram na loja de GO são mais jovens que os da loja de MG.

Na tabela acima, você pode omitir o número de observações acrescentando o NOBS. E também é possível agrupar por mais de uma variável incluindo uma segunda variável na frente do ESTADO, separando somente com um espaço, sem vírgula.

Se você quiser ordenar  os estados de forma decrescente, acrescente uma barra invertida seguida por descending:

PROC MEANS DATA=EXEMPLO; 
CLASS ESTADO / DESCENDING; 
VAR IDADE; 
RUN;

Captura de Tela 2018-09-22 às 09.39.21

Você pode ainda separar o output em diferentes tabelas, porém, ao invés de usar CLASS, deve usar BY. E, antes de utilizar este argumento, é preciso ordenar a variável que será usada para o agrupamento:

PROC SORT DATA=EXEMPLO;
BY ESTADO;
RUN;

PROC MEANS DATA=EXEMPLO;
BY ESTADO;
VAR IDADE;
RUN;

Captura de Tela 2018-09-22 às 09.15.49

GERA O OUTPUT EM UMA TABELA SAS: Se você quiser salvar suas estatísticas em alguma tabela do SAS, seja para ter a análise salva em alguma libname ou para utilizar em batimentos futuros, você só precisa declarar a saída usando o argumento ‘OUTPUT OUT=’. No exemplo abaixo, salvamos uma tabela chamada TABELA_SAIDA:

PROC MEANS DATA=EXEMPLO;
VAR IDADE;
OUTPUT OUT=TABELA_SAIDA;
RUN;

Captura de Tela 2018-09-22 às 09.21.51

Você ainda pode trabalhar melhor esta tabela de saída, mantendo somente as variáveis de interesse. Isso pode ser feito tanto com o DROP, quanto com o KEEP:

PROC MEANS DATA=EXEMPLO;
VAR IDADE;
OUTPUT OUT=TABELA_SAIDA (DROP = _TYPE_ _FREQ_);
RUN;
Captura de Tela 2018-09-22 às 09.26.55
A mesma saída poderia ser obtida com o KEEP:
PROC MEANS DATA=EXEMPLO;
VAR IDADE;
OUTPUT OUT=TABELA_SAIDA (KEEP = _STAT_ IDADE);
RUN;
Podemos até renomear as colunas, deixando o output mais fácil de ser lido:
PROC MEANS DATA=EXEMPLO;
VAR IDADE;
OUTPUT OUT=TABELA_SAIDA (DROP = _TYPE_ _FREQ_ RENAME = _STAT_ = MEDIDA);
RUN;
Captura de Tela 2018-09-22 às 09.30.16

PROC MEANS PARA TODAS AS VARIÁVEIS: Se você só possui variáveis numéricas, você pode fazer um proc means geral declarando como variável analisada o _ALL_. Vamos selecionar somente as variáveis numéricas da base EXEMPLO e fazer um proc means sem precisar declarar as variáveis uma a uma:

DATA EXEMPLO_NUMERICO;
SET EXEMPLO (KEEP = VLR_COMPRA IDADE);
RUN;

PROC MEANS DATA=EXEMPLO_NUMERICO;
VAR _ALL_;
RUN;
Captura de Tela 2018-09-22 às 09.31.04

FILTRO DENTRO DO PROC MEANS: O WHERE pode ser utilizado quando chamamos o proc means. Imagine, por exemplo, que você queira trazer uma descritiva da variável idade, porém, excluindo da análise o estado SP. Para fazer isso, você deve incluir uma linha com o filtro a ser feito:

PROC MEANS DATA=EXEMPLO;
WHERE ESTADO NE "SP";
VAR _ALL_;
RUN;

Captura de Tela 2018-09-22 às 09.35.24

Anúncios

1 comentário

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s