Mencionei o comando proc freq do SAS no post Frequência no R utilizando o pacote Hmisc. Agora, vamos nos aprofundar um pouco e ver o que é possível fazer com este comando.
O proc freq traz a frequência das variáveis que você quer analisar ou fazer qualquer tipo de análise descritiva, ou seja, traz o número de vezes que determinado valor da variável aparece. A sintaxe mais simples do comando é:
proc freq data= base_de_dados; table variavel1 variavel2 ... variaveln; run;
Vamos utilizar os dados de crédito german_credit_2 como exemplo.
Assim como já fizemos no R, no post Árvore de Decisão no R, vamos discretizar as variáveis Creditability e CreditAmount, para só depois gerarmos as frequências.
No caso de Creditability, a discretização serve para visualizar melhor quem é bom e quem é mau pagador. No caso de CreditAmount, não conseguimos gerar uma frequência que seja útil, pois a variável é contínua. Pior ainda, se a base for muito grande, o comando muito provavelmente não irá funcionar. Afinal de contas, você estará trazendo o número de vezes que cada valor aparece. Separar em intervalos é o ideal nesse caso.
Note que no meu caso, a base foi importada para o SAS com o nome german_credit_21.
**** discretiza variaveis creditability e amount ****; data german_credit_21_v2; set german_credit_21; length d_creditability $4.; if creditability = 1 then d_creditability = 'good'; else d_creditability = 'bad'; length d_creditAmount $9.; if creditAmount <= 2500 then d_creditAmount = '0000-2500'; else if creditAmount > 2500 and creditAmount <= 5000 then d_creditAmount = '2500-5000'; else d_creditAmount = '+5000'; run; **** Frequencia de Creditability e Amount ****; proc freq data= german_credit_21_v2; table d_creditability d_creditAmount; run;
Na primeira tabela é possível ver a frequência e qual o percentual que representa do todo. Temos 300 clientes maus, sendo que isso representa 30% da nossa população. Além disso, temos também a frequência acumulada. Temos, na segunda tabela, 537 clientes que possuem dívida entre 0 e 2500, e 812 clientes que possuem entre 0 e 5000, sendo que esses clientes representam 81,20% da nossa população.
É possível também obter a frequência cruzada, ou seja, quantos clientes bons e ruins há em cada faixa de dívida:
**** Frequencia Cruzada de Creditability e Amount ****; proc freq data= german_credit_21_v2 ; table d_creditability*d_creditAmount; run;
E se você quiser deixar a tabela um pouco menos poluída, mantendo apenas a frequência, utilize o norow, nocol e/ou nopercent:
**** Nao traz frequencia por linha, coluna nem percentual ****; proc freq data= german_credit_21_v2; table d_creditability*d_creditAmount / norow nocol nopercent; run;
Também é possível salvar a tabela de frequência utilizando o out:
**** Cria uma tabela de output chamada tabela_frequencia ****; proc freq data= german_credit_21_v2; table d_creditability*d_creditAmount / out= tabela_frequencia norow nocol nopercent; run;
E se você quiser ordenar a tabela de frequência, basta acrescentar o order = Freq:
**** Sem ordenar ****; proc freq data= german_credit_21_v2 ; table Guarantors; run;
**** Ordena pela frequencia ****; proc freq data= german_credit_21_v2 order= freq; table Guarantors; run;
Assim como fizemos para o Creditability, nós poderíamos ter atribuído nomes ao invés de índices ao Guarantors. Porém, para não alterarmos nossa base original, poderíamos simplesmente aplicar uma formatação:
**** formata o nome ****; proc format; value formatacao 1 = 'none' 2 = 'co-applicant' 3 = 'guarantor'; run; **** gera frequencia e apresenta com nome formatado ****; proc freq data = german_credit_21; tables Guarantors; format Guarantors formatacao.; run;