Frequência no R utilizando o pacote Hmisc

Como estou acostumado com o proc freq do SAS para validar algumas informações e ver se faz sentido o que estou fazendo, procurei algo semelhante no R. Encontrei o describe() do pacote Hmisc. Claro que deve existir outro pacote que faz isso, mas esse foi o primeiro que encontrei.

O proc freq do SAS, como o nome já indica, calcula a frequência de seus dados. Por exemplo, se você tem uma base que contém homem e mulher, você pode utilizar um código parecido com esse:

proc freq data = base_de_dados; table sexo; run;

Onde base_de_dados seria o nome da sua base e sexo o nome da coluna contendo o sexo das pessoas.Esse código retorna para você o número e a porcentagem de pessoas de cada sexo. Analogamente, você poderia fazer o seguinte código no R:

install.packages("Hmisc");
library("Hmisc");
describe(base_de_dados$sexo);

E o resultado seria o mesmo.

Para não ficar muito abstrato, segue um exemplo com a base de dados german_credit_21 já utilizada no post Árvore de Decisão no R. Eu tinha discretizado algumas variáveis naquela época, e estava refazendo isso hoje. Apenas para garantir que tinha feito da forma correta, utilizei o describe(). Veja que ele me retornou que 30% da minha base possui Creditability ‘bad’ e 70% ‘good’. Além disso, pude ver também como foi dividido o CreditAmount. Bem simples, uma função só e você já tem uma bela descrição para trabalhar:

install.packages("Hmisc");
library("Hmisc");
describe(dados);

 

Excluindo colunas no R

Uma dica rápida, mas que ajuda bastante.

Vamos supor que você tenha uma tabela com 7 colunas, e você queira excluir algumas colunas dela para sua análise. Como você faz?

Simples, utiliza o c() e coloca o sinal de negativo antes do número da coluna que você quer excluir. Como exemplo, temos a seguinte tabela com o preço médio dos combustíveis no Brasil, levantado pela ANP:

Veja que a primeira coluna é uma data e a última possui diversos NAs, o que atrapalha diversas operações.

Se você tentar utilizar a função log(), por exemplo, você vai ter um erro:

log(ANP_COMBUSTIVEIS[,c(-1,-7)])
PRECO_REV_ETANOL PRECO_REV_GASOLINA PRECO_REV_GLP PRECO_REV_GNV PRECO_REV_DIESEL
1 0.009257021 0.5196268 2.844613 -0.31471074 -0.18717331
2 0.014198719 0.5370780 2.873706 -0.29988962 -0.16251893
3 0.026154957 0.5411608 2.884778 -0.30042965 -0.15059036
4 0.038354954 0.5758828 2.930244 -0.26748737 -0.10725119
5 0.032079893 0.5767257 2.937520 -0.24910259 -0.09695153
6 0.028490270 0.5736314 2.928181 -0.24718013 -0.09673119
7 0.018821754 0.4621605 3.084173 -0.24654013 -0.12386399

Agora, se você utilizar c(-1,-7) na posição da coluna na matriz, você consegue seu resultado sem problema:

log(ANP_COMBUSTIVEIS[,c(-1,-7)])
 PRECO_REV_ETANOL PRECO_REV_GASOLINA PRECO_REV_GLP PRECO_REV_GNV PRECO_REV_DIESEL

1 0.009257021 0.5196268 2.844613 -0.31471074 -0.18717331
2 0.014198719 0.5370780 2.873706 -0.29988962 -0.16251893
3 0.026154957 0.5411608 2.884778 -0.30042965 -0.15059036
4 0.038354954 0.5758828 2.930244 -0.26748737 -0.10725119
5 0.032079893 0.5767257 2.937520 -0.24910259 -0.09695153
6 0.028490270 0.5736314 2.928181 -0.24718013 -0.09673119
7 0.018821754 0.4621605 3.084173 -0.24654013 -0.12386399

Veja o que acontece se você der um View(ANP_COMBUSTIVEIS[,c(-1,-7)]:

Se você quiser excluir da coluna 1 até a coluna 5, você pode simplesmente fazer ANP_COMBUSTIVEIS[,c(-1:-5)], afinal:

c(-1:-5)
[1] -1 -2 -3 -4 -5

Árvore de Decisão no R

Árvore de decisão é um modelo simples e extremamente útil para fazer predições. É fácil de explicar para as pessoas mais alheias ao mundo de ciência de dados e machine learning. Além disso, é simples de identificar o poder preditivo das variáveis, requer pouco pré-processamento, etc. Hoje, vou apresentar o código em R para uma árvore de decisão. Continuar a ler “Árvore de Decisão no R”

Evitando “NA” nos cálculos do R

É sempre um problema trabalhar com NAs no R. Veja o código abaixo, onde foi criada uma matriz 2×2 contendo um elemento NA:

matriz_teste = array(data=c(10,NA,5,2), dim=c(2,2));
matriz_teste;

Para calcular a média das colunas, deveríamos utilizar a função colMeans() do R, mas veja que a sintaxe abaixo retorna um erro:

colMeans(matriz_teste);

O R não consegue calcular a média por causa desse NA. Porém, o R é muito inteligente, e para calcular a média quando tiver um NA no caminho, você não precisa de muito esforço, basta acrescentar o  argumento na.rm = TRUE:

colMeans(matriz_teste, na.rm = TRUE);

Veja que ele simplesmente ignora o elemento NA. É como se houvesse apenas um elemento na coluna. Se a coluna tivesse quatro elementos, sendo que dois eram NAs, a média seria calculada como a soma dos dois elementos não NAs dividida por dois.

E isso funciona também para a função que calcula a soma da coluna:

colSums(matriz_teste, na.rm = TRUE)

Simples, não?

Com relação a função chamada array(), leia o conteúdo do Wikipedia sobre arranjo.

Carregando / Importando seus dados no R

A função read.table()  do R serve para importar arquivos de diversos formatos. O print abaixo apresenta a descrição do que a função é capaz de fazer e algumas variações dela, como o read.csv() – muito embora a própria read.table() seja capaz de ler arquivos csv.

Não tem muito segredo para ler arquivos. Vejamos um exemplo de como ler um arquivo utilizando as principais especificações da função e vamos nomear o arquivo dados_exemplo:

dados_exemplo = read.table("C:/Users/Public/Desktop/tabela_exemplo.txt",header=TRUE,sep="\t",dec=",");

Item a item temos:

  • diretório e nome do arquivo;
  • header = TRUE indicando que meu arquivo tem cabeçalho. Se não tivesse, utilizaria header=FALSE;
  • sep=”\t” para indicar separação por tabulações. Poderia ter utilizado sep=”;” ou sep=”,”;
  • dec=”,” foi utilizado para indicar que os dados numéricos são separados por vírgula e não por ponto;

Após os dados serem importados você pode fazer pequenas manutenções (algumas poderiam ser feitas inclusive na hora de importar):

NOMEAR AS COLUNAS
colnames(dados_exemplo) = c("NomeDaColuna 1";"NomeDaColuna 2";"NomeDaColuna 3";"NomeDaColuna 4",...)
VISUALIZAR SEUS DADOS
## Para abrir a tabela de dados
View(dados_exemplo)

## Para observar as primeiras linhas
head(dados_exemplo)

## Para visualizar da primeira a décima linha, e da primeira a quinta coluna: dados_exemplo[1:10,1:5]

## Para visualizar a primeira linha da coluna 3
dados[1,"NomeDaColuna"]
ORDENAR SEUS DADOS
dados_exemplo=dados_exemplo[order(dados_exemplo[,"NomeDaColuna"],decreasing = TRUE),];

ou

dados_exemplo$NomeDaColuna = sort(dados_exemplo$NomeDaColuna ,decreasing = TRUE)
E aí, curtiu o post?

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!

BONS ESTUDOS!

Funções no R

Uma das coisas mais legais no R é você conseguir criar suas próprias funções.

É bem simples, veja a estrutura como funciona:

NomeDaFuncao = function(Argumento1,Argumento2,...) {
<comandos>
return(objeto)
}

Veja um exemplo de uma função que o usuário utiliza como input um número e a saída  dela é a soma desse número com 1:

SomaUm = function(x) {
y = x+1
return(y)
}

Bastaria o usuário declarar essa função, executá-la no R e em seguida ele poderia utilizá-la para obter a soma de um número qualquer com 1. Vejamos como ficaria essa execução:

SomaUm(10)
[1] 11
SomaUm(20)
[1] 21

Simples assim! Com isso você não precisará escrever os mesmos comandos repetidamente. E mais do que isso, você poderá usar essa função em diferentes códigos utilizando a função source(). Para utilizar a função SomaUm em um outro código qualquer, basta você chamar o código que contém essa função digitando o endereço e nome da função entre aspas.

No meu exemplo, eu salvei a função SomaUm com o nome Funcoes.r em uma pasta no meu desktop. Feito isso, abri um novo código e digitei o seguinte comando:

source("C:/Users/Yukio/Desktop/R/Codes/Funcoes.r")

Pronto! A partir de agora eu já posso utilizar a função SomaUm() nesse novo código assim como utilizava no meu exemplo. É assim que surgem os pacotes do R.

Pense agora na quantidade de tempo que você vai economizar utilizando funções.

Qualquer dúvida, comente abaixo.

Regressão Linear Simples – Parte 3

Vamos interpretar de forma rápida e prática a saída de uma Regressão Linear Simples no R e como utilizar a informação:

  1. Residuals: São os resíduos da nossa equação. Você traçará um gráfico dos resíduos contra a variáve independente para verificar que eles são aleatoriamente distribuídos e aí seus resultados serão mais confiáveis.  Mas não confunda erro com resíduos! É confuso, mas farei um post só sobre isso futuramente!
  2. Coefficients: a coluna estimate nada mais é do que os valores que formarão nossa reta. O do intercept é o valor que representa a constante. Enquanto o valor que vem em seguida, logo abaixo, é o que acompanha nossa variável independente. Ou seja, no nosso caso, para se obter o valor da nota do testão você deve multiplicar a mesada do aluno por 1,66339 e somar a constante 5,39290. E as outras colunas? Por enquanto vamos apenas considerar que podemos usar os coeficientes caso o p-valor sera menor que 5%. Em outros posts entraremos mais a fundo no assunto.
  3. Multiple R-squared: O R quadrado é o quanto nossa variável independente é capaz de representar nossa variável dependente. Ou seja, 97,38% da nota do testão é explicada pela mesada (lembrem-se que esses dados são fictícios!).
  4. F-statistic: Será muito mais importante para quando falarmos de regressão múltipla.
  5. Adjusted R-squared: Também será mais relevante ao falarmos de regressão múltipla. Fiquem tranquilos por enquanto.

Leia também: Resíduos de uma Regressão Linear no R

Problemas com R? Que tal começar em Primeiros passos no R Studio!

Regressão Linear Simples – Parte 2

Vamos tentar entender a Regressão Linear Simples de forma visual (e já aproveitamos para aprender R!).

Em nosso exemplo, nós temos dados dos alunos do terceiro colegial da Escola X, suas mesadas em reais e as respectivas notas no Testão contendo todas as matérias.

Acreditamos que o desempenho do aluno melhore com uma mesada a mais, devido ao aumento do bem estar do aluno. Mas será que é verdade? Podemos fazer um modelo para a escola X e verificar isso.

Começamos apresentando os dados e um gráfico de dispersão nas figuras 1 e 2 respectivamente:

E como vamos saber exatamente quanto que um aumento na mesada impacta a nota dos alunos? Vamos rodar uma regressão no R da variável Mesada (variável independente) em Nota_Testão (nossa variável dependente) e verificar os resultados:

O que nos importa do resultado acima?

Com certeza tudo! O R não soltaria tanta coisa para nada.

Mas deixemos “tudo” de lado e hoje vamos apenas focar nos valores em estimate. Esses valores são os chamados BETAS da nossa regressão, e nada mais são do que os valores de a e b da nossa reta, mencionada no post anterior.

Ou seja, o que estamos querendo dizer aqui, é que a nota de um aluno no Testão será 5.39290 somado a 1.66339 multiplicado pela sua mesada. Ou seja, nossa equação da reta, onde y é a nota do Testão e x é a mesada, seria:

y = 5.39290 + 1.66339 * x

Ou seja, para cada 1 real adicionado na mesada, o aluno tira – em média – uma nota 1.66339 maior. Um aluno que ganha 10 reais a mais que seu colega, tira uma nota ~ 16 pontos a mais que seu colega.

E como é essa aproximação visualmente? É exatamente assim:

Agora, para os iniciantes em R, aí vai 5 linhas de código que gera esses gráficos e essa regressão (para executá-los não colocar os números na frente!):

dados <-read.table("C:/Users/Yukio/Desktop/dados_alunos.txt",header=T)

plot(dados$Mesada,dados$Nota_Testao)

regressao <- lm(dados$Mesada ~ dados$Nota_Testao)

abline(lm(dados$Nota_Testao ~ dados$Mesada),col="red")

summary(regressao)

Em breve coloco o que faz cada uma dessas linhas!

Continue seus estudos em: Regressão Linear Simples – Parte 3

Leia também: Resíduos de uma Regressão Linear no R

Problemas com R? Que tal começar em Primeiros passos no R Studio!

R

Se você é estatístico, muito provavelmente já ouviu falar do R. Se é matemático, economista, cientista de dados ou trabalha com modelagem, já deve ter ouvido também.

R é tanto uma linguagem de programação, um software de análise de dados e um software estatístico. É  uma ferramenta muito útil para quem trabalha minerando dados, criando modelos estatísticos, realizando análises em cima de um grande volume de dados, etc. Esse software estatístico é muito utilizado por ser gratuito e possuir diversos pacotes com funções que vão facilitar sua vida seja para montar algum gráfico para uma apresentação, seja para rodar uma regressão linear qualquer. É

Eu nunca achei a linguagem do R tão trivial. Para mim, o SAS acabou sendo muito mais intuitivo. Porém, não é nada assustador, além de existir várias vídeo aulas no youtube, posts no Stackoverflow e diversos sites por aí, irei auxiliá-los aqui o quanto for possível postando códigos que faço no dia a dia. E convenhamos, hoje em dia é só jogar a dúvida no google que você encontra.

Você pode baixá-lo nesse link: R-Project.

Esses são alguns exemplos do que pode ser feito em R: