Proc Means

Localizando Outliers Através do Intervalo Interquartil (+ Boxplot + Código SAS)

Recentemente, estava trabalhando com uma base de mais ou menos 500 mil linhas, onde a maior parte dos dados de uma determinada variável estava no intervalo de 0 a 1.000. Esta mesma variável, no entanto, possuía algumas linhas em que o valor dela era 5.000, 10.000 e até 15.000. Ou seja, haviam alguns outliers. Isto era um problema, principalmente, quando eu construía um gráfico de distribuição. Para lidar com isso, eu exclui os outliers com base no conceito do intervalo interquartil. (mais…)

Anúncios

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. (mais…)

Proc Means

No SAS, uma das melhores formas de se obter estatísticas descritivas é através do proc means. Além de ser possível obter média, mediana e moda, você consegue diferentes faixas de percentil, observações missing e até mesmo gerar estatísticas cruzando variáveis.

Veja algumas maneiras de se utilizar o proc means com a nossa conhecida base german_credit_2:

1.  Primeiro, vamos obter algumas informações para a variável DurationOfCreditMonth utilizando o proc means da maneira mais simples possível:

proc means data= german_credit_21;
    var DurationOfCreditMonth;
run;

 2. Em alguns momentos você pode precisar gerar as informações segregadas por diferentes grupos. Por exemplo, você pode precisar da mediana da dívida dos clientes por cada estado, ou a média das notas dos alunos por matéria. Em nosso exemplo, vamos observar como a variável DurationOfCreditMonth se diferencia entre clientes com Creditability = 1 e Creditability = 0:

proc means data=tmp.german_credit_21;
    class Creditability;
    var DurationOfCreditMonth;
run;

3. Média, mediana e desvio padrão são medidas interessantes e auxiliam na interpretação dos números. No entanto, você pode estar interessado em entender mais a respeito da distribuição desses números. Uma forma de entender isso, é através de algum percentil:

proc means n mean std p10 p25 p50 p75 data=tmp.german_credit_21;
    class Creditability;
    var DurationOfCreditMonth;
run;

4. Agora que você já possui alguns números para entender melhor a variável, pode ser uma boa ideia deixar o seu resultado mais limpo limitando a duas casas decimais com o maxdec:

proc means n mean std skew p10 p25 p50 p75 data=tmp.german_credit_21 maxdec=2;
    class Creditability;
    var DurationOfCreditMonth;
run;

5. Não é tão interessante quanto os primeiros itens, mas salvar seus resultados em uma tabela – que aqui chamamos de tabela_saida – pode ser útil, principalmente em processos mais automáticos:

proc means data=tmp.german_credit_21;
    class Creditability;
    var DurationOfCreditMonth;
    output out=tabela_saida sum=soma mean=media p50=mediana;
run;

6. Outra coisa que podemos fazer, semelhante ao que fizemos no item 2, é gerar essas medidas para mais variáveis dividindo todas pelo Creditability ou então, gerar as medidas da variável por outras classes:

proc means data=tmp.german_credit_21;
    class Creditability;
    var DurationOfCreditMonth Purpose;
    output out=tabela_saida sum=soma mean=media p50=mediana;
run;
proc means data=tmp.german_credit_21;
    class Creditability Purpose;
    var DurationOfCreditMonth;
    output out=tabela_saida sum=soma mean=media p50=mediana;
run;

BÔNUS:

Para incluir os dados missing e ainda contar o número de observações missing, acrescente missing e nmiss no proc means:

proc means  data= <nome da base> missing nmiss;
    class <classe - nao obrigatorio>;
    var <variavel>;
run;