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;

0 comentários em “Proc Means”

  1. Oi gente.
    por favor alguém conhece o comando para calcular a medida geométrica no SAS?
    tentei gmeans (número) mas ele não reconheceu este comando…
    abraços

      1. Boa Yukio! Vou tentar!! Estava trabalhando com a média aritmética, com a geométrica vai ficar bem melhor! abraços

      2. Yukio e caros colegas vou abusar de vcs mais uma vez…

        Testei o comando que o Yukio me passou. E o SAS retornou com a seguinte informação:

        “WARNING: The geomean function has been called with only one argument. However, it is not an SQL aggregate function, and this
        call will not cause SQL aggregation”

        o comando todo é:

        PROC SQL;
        CREATE TABLE CD4_1_200X_FINAL AS
        SELECT ID,GEOMEAN(RESULT_CD4) AS RESULT_CD4
        FROM CD4_1_200X
        GROUP BY 1;
        RUN;

        Só para você entender meu problema:
        O banco é formado por pacientes e resultados de exame de laboratório (CD4).
        O paciente pode ter mais de um exame com resultados diferentes.
        Preciso é um resultado único para cada paciente, por isto preciso calcular a média geométrica entre os resultados dele .

        Desde já agradeço..

        abraços

        1. Oi Cassia, a fórmula é para data step. No proc sql eu acho que tem que fazer na mão mesmo. Tenta exp(mean(log(result_cd4))) as geomean. Deve funcionar. Testei aqui e deu certo.

  2. Oi Yukio, agora deu certo! Com isto ganho ineditismo no meu trabalho!

    Sou epidemiologista e estou no doutorado trabalhando com HIV, se precisar de algo que eu possa te ajudar….

    abraços!

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *