Utilizando datas dentro do seu script no SAS

Já falei de como trabalhar com datas no SAS em posts antigos, como em Formatando Datas no SAS. No entanto, nem sempre queremos trabalhar só com as datas que já estão nos nossos dados. Vamos supor que a gente queira trabalhar apenas com os alunos nascidos a partir de 31/01/1999 dos dados no post Como calcular a diferença entre duas datas no SAS?

Se você quiser pegar as informações cuja data é maior que 31/01/1999, os exemplos abaixo não funcionarão:

  1. if dt_nasc < “1999-01-31”;
  2. if dt_nasc < “31/01/1999”;

O SAS não vai entender que o que está à direita é uma data, para ele é um texto qualquer. Para trabalhar com essa data você precisaria utilizar as iniciais do mês e um d após o fechamento das aspas. No nosso exemplo, o que funcionaria seria:

if dt_nasc > "31jan1999"d;

Lembre-se que você deve colocar as iniciais do mês em inglês. Ou seja, para setembro, use “31sep2015″d ao invés de “31set2015″d!

Técnicas de Clustering: K-Means

O que é clustering?

Imagine o dono de uma loja com todo o histórico do que seus clientes compraram. Esse histórico permite que o lojista procure o tipo de produto que o cliente pode se interessar. Porém, fazer isto para cada cliente individualmente não é muito eficiente. Seria mais prático ele separar os clientes por grupos de acordo com a semelhança entre as preferências desses clientes. Assim, ele terá que pensar na recomendação para cada grupo, sendo que o número de grupos seria muito menor que o número de indivíduos.
Sendo assim, o que o lojista precisaria fazer era pensar em como separar os indivíduos, pensando no número de grupos que quer formar e qual critério de separação. Isso pode ser feito através de técnicas de clustering. (traduzido e adaptado de: K-means Clustering Tutorial)

Clustering é o método separar seus dados em grupos (clusters) quando estamos minerando dados. Ou seja, nada mais é do que unir indivíduos de sua base de dados com base em suas semelhanças.

Um algoritmo bastante utilizado é o k-means (traduzido por alguns como k-médias). Este algoritmo serve para agrupar os dados em grupos com base nas distâncias à média.

Vejamos um exemplo para facilitar o entendimento:

Queremos aplicar o k-means nos indivíduos 1,2,3,4,5,6,7,8,9 e 10, que possuem determinados valores em duas variáveis quaisquer X e Y:


Para a utilizar o algoritmo precisamos escolher o número de grupos que queremos utilizar.

Para facilitar, no nosso exemplo iremos agrupar em dois grupos.

Iniciamos com um grupo contendo o elemento 1 e um outro grupo contendo o elemento 9.


Agora vamos alocar os elementos mais próximos de cada grupo de acordo com a distância entre os pontos. Por exemplo, note que a distância do indivíduo 4 é 6,7 para o Grupo 1, enquanto a distância ao Grupo 2 é 1,4. Logo, ele deve pertencer ao Grupo 2.

Fazemos a mesma comparação para os demais elementos e chegamos a essa divisão:


Note que as médias de cada grupo se alterou. Podemos então reagrupar os elementos, novamente através da distância às médias.

Por exemplo, a distância do indivíduo 4 em relação ao Grupo 1 agora é 3 e em relação ao Grupo 2 é de 3,7. Ou seja, ele agora está mais próximo do Grupo 1.

O mesmo deve ser feito para os demais elementos:


Esse processo é feito sucessivamente até que se encontre o melhor agrupamento, dado o critério de distância à média.

Dúvidas? Críticas? Deixe um comentário!

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.