Mostrando postagens com marcador linguagem-r. Mostrar todas as postagens
Mostrando postagens com marcador linguagem-r. Mostrar todas as postagens

terça-feira, dezembro 20, 2016

Trabalhando com distribuição normal em R

O R possui 2 principais funções para trabalharmos com distribuição normal: pnorm e qnorm.

Se consultarmos o help do R, ambas as funções fazem parte do grupo "normal distribution" com pnorm, qnorm, rnorm e dnorm. Apresentarão vários parâmetros e são muito completas em seus objetivos. Porém, para um uso básico, vamos ver como podem nos ajudar.

pnorm - função de distribuição e probabilidade: você passa o valor de análise de probabilidade, a média e o desvio padrão; ela retorna a probabilidade de um evento ocorrer até o valor analisado.

pnorm(50, mean=45, sd=3.2)
[1] 0.9409149


qnorm - função de quantile: você passa a probabilidade percentual da análise, a média e o desvio padrão; ela retorna o valor.

qnorm(0.20, 77, 5)
[1] 72.79189

segunda-feira, junho 09, 2014

Funções principais para programação em R

Antes de falar das funções principais, aquelas funções que a gente sempre vai usar, vou passar a tradução de "Por que usar R?" do site Quick-R - Stat Methods:

Se você atualmente usa outro pacote estatístico, pro que usar R?
  • É gratuito! Se você é professor ou estudante, os benefícios são óbvios.
  • Roda em uma variedade de plataformas incluindo Windows, Unix e MacOS.
  • Provê uma plataforma sem paralelo para programação de novos métodos estatísticos de uma maneira fácil e direta... honesta.
  • Contém rotinas estatísticas avançadas ainda não disponível em outros pacotes.
  • Tem capacidades gráficas no estado-da-arte.
Bom... vamos ao objetivo principal do post: as funções interessantes, funções principais de trabalho e para se usar no ambiente R. A maioria delas tem mais parâmetros possíveis e só estão aqui as que trabalham com o ambiente e com os objetos (vetores, listas, matrizes etc), do post anterior. Há muitas outras funções com finalidade matemática, geração de gráficos entre outras, mas vamos ver um pouco de cada vez...

Geral:
help(nome_da_funcao) # abre no navegador a definição/ajuda da função; no RStudio a página é aberta em uma janela lateral.
?função # idem ao help.
getwd() # mostra o diretório (caminho) configurado para o workspace atual.
setwd("caminho/para/diretorio") # configura o diretório para o workspace; qualquer referência de arquivos, por exemplo, serão feitas a partir do "work directory".
library(biblioteca) # carrega a biblioteca para uso de suas funções.
source("script.R") # carrega o script/fonte para uso das funções.
dir() # exibe os arquivos e pastas do diretório do workspace; similar ao "dir" do prompt do DOS/Windows ou o 'ls" dos Unix like.
ls() # lista os objetos existentes no ambiente; no Linux usa-se "ls" para listar o conteúdo do diretório e no R para listar o conteúdo corrente carregado no ambiente.
objects() # igual ao ls().
rm(objeto) # remove um objeto do ambiente; deleta.
julian(data_dia_juliano,origin=data_base) # retorna o dia juliano (o dia a partir da data passada ou 1/1/1970 se omitido).
Sys.getenv(variável_x) # obtém o valor da variável de ambiente "variável_x".
Sys.putenv(variável_x) # atribui o valor da variável de ambiente "variável_x".
Sys.time() # retorna a data e hora do sistema, respeitando o fuso do sistema ("t" minúsculo)
Sys.Date() # retorna a data do sistema ("D" maiúsculo; respeitando o fuso do sistema, sem exibir a hora, claro).
system("cmd") # executa o comando "cmd" do sistema operacional (Windows).

Para objetos:
length(objeto) # retorna o número de elementos ou componentes de um objeto; seu tamanho.
cat(objeto) # imprime os elementos/argumentos do objeto.
str(objeto) # imprime a estrutura de um objeto (structure).
class(objeto) # imprime a classe ou tipo de um objeto.
identical(objeto1, objeto2) # testa se 2 objetos são idênticos (TRUE/FALSE).
vector(tamanho) # retorna um vetor com determinado tamanho.
matrix(linhas,colunas) # retorna uma matriz com as dimensões passadas.
mat.or.vec(linhas,colunas) # retorna uma matriz se o segundo parâmetro for maior que 1 ou um vetor para o segundo parâmetro igual a 1.
subset(objeto, condição, select=colunas) # retorna um subconjunto do objeto com elementos/linhas que obedeçam à condição e, se informado e o objeto se tratar de um dataframe, um vetor com as colunas para esse subset.

Para strings:
toupper(objeto) # retorna o conteúdo do "objeto" passado para letras maiúsculas.
tolower(objeto) # retorna o conteúdo do "objeto" passado para letras minúsculas.
grep(padrão, objeto) # busca o padrão no objeto.
regexpr(padrão, objeto) # busca o padrão no objeto.
sub(padrão, novo_valor, objeto) # substitui o padrão encontrado pelo novo_valor no objeto.
formatC(objeto, ...) # formata números usando a especificação no estilo C.

Para vetores:
c(objeto1,objeto2,...) # combina objetos em um vetor.
sequence(valor) # retorna um vetor com a sequencia de 1 até o "valor" passado; se "valor" for um vetor de valores, cria sequencias de 1 até cada valor de forma concatenada.
seq(inicio,limite,quantidade) # cria uma sequência de valores respeitando a quantidade de itens e o limite.
rep(objeto, quantidade) # repete o objeto tantas vezes a quantidade indicar; pode ser um número ou um vetor que será repetido de forma sequencial.
rev(objeto) # retorna de "objeto" em ordem um a um de trás para frente.
range(objeto) # retorna o valor mínimo e o valor máximo do "objeto".
paste(objeto) # concatena de forma sequencial o objeto (vetor) convertendo esse resultado em caracteres; gera uma string unindo os elementos.
append(objeto1, objeto2, after=posição) # adiciona elementos "objeto2" (pode ser de um vetor) a um vetor "objeto1", podendo indicar a posição de inserção dos elementos que por padrão é no final.
sort(objeto) # retorna os elementos de "objeto" de forma ordenada.
order(objeto) # retorna os elementos de "objeto" de forma ordenada.
unique(objeto) # retorna o vetor "objeto" sem elementos repetidos, que são removidos.
rnorm(quantidade) # retorna um vetor com valores aleatórios

Para dataframe:
names(objeto) # nomes das colunas do objeto/dataframe.
cbind(objeto1, objeto2, ...) # combina objetos como colunas; anexa o objeto2 ao objeto1.
rbind(objeto1, objeto2, ...) # combina objetos como linhas; anexa o objeto2 ao objeto1.

Funções matemáticas simples:
sign(objeto) # retorna um objeto do mesmo tamanho de "objeto", porém com conteúdo representando o sinal do valor em "objeto", podendo ser "-1" se o valor daquela posição em "objeto" for negativa, 0 se for 0 e 1 se for positiva.
abs(objeto) # retorna o valor absoluto dos elementos do objeto.
floor(objeto) # retorna o arredondamento do valor ou dos elementos do objeto para baixo.
ceiling(objeto) # retorna o arredondamento do valor ou dos elementos do objeto para cima.
round(objeto, digitos) # retorna o arredondamento do valor ou dos elementos contendo a quantidade de dígitos informada.
signif(objeto, digitos) # retorna o arredondamento do valor ou dos elementos contendo a considerando a quantidade de dígitos informada e retornando um a menso.
trunc(objeto) #trunca o valor do objeto ou dos elementos.

Foi difícil, mas acho que a organização ficou coerente, não?
Lembre-se que o R foi feito para trabalhar com conjunto de dados e sua análise.

quinta-feira, maio 29, 2014

Linguagem R - Objetos e Tipos de Dados

No R temos, segundo o próprio site do R-Project (http://cran.r-project.org/doc/manuals/r-release/R-lang.html#Basic-types), os objetos são divididos em tipos, modos e modos de armazenamento. Isto significa, por exemplo, que um objeto do tipo (type) inteiro é armazenado (storage mode) como tal, mas é tratado simplesmente como numérico (mode). Há diversos tipos de objetos como inteiro, lógico, função, expressão linguagem, listas, complexos etc. É bem completo! Porém no uso do R com conjunto de dados e análise estatística, utiliza-se os tipos básicos para trabalho com vetores. Depois veremos funções para nos auxiliar com "tipos" e "objetos".

Objetos primitivos - tipos atômicos

Pode-se dizer que o R foi feito para trabalhar com estruturas de dados, que são compostas, de forma geral, por objetos primitivos. Por exemplo, o vetor é o objeto mais simples no R: uma lista ordenada de um tipo atômico básico.
O R possui 6 tipos atômicos:

  • lógico,
  • inteiro,
  • real,
  • complex,
  • string (or character), e
  • raw (bruto/primitivo).

Estruturas de Dados

Esse é o foco dessa linguagem: o agrupamento de objetos para análise dos dados.
Temos:

  • vetor
  • fator
  • matriz
  • array
  • lista
  • dataframe

Como já dito, o mais simples tipo de estrutura de dados é o vetor (vector) que é uma lista ordenada de um objeto primitivo. Parecido com o vetor, temos o fator (factor) que é um vetor de categorias, valores que não se repetem. Matriz (matrix) é um vetor de 2 dimensões e cada elemento é localizado por referência de linha e coluna e Array é uma matriz com mais de 2 dimensões aqui no R.
Todos estes possuem objetos do mesmo tipo, mas o R possui estruturas mais interessantes que permitem a mescla de tipos.
Lista (list) é um vetor que permite que suas células tenham objetos de tipos diferentes... um vetor misto que pode ser acessado pela sua posição ou por seu nome como variável. Dataframe é como uma matriz (2 dimensões) que permite tipos diferentes por coluna; são listas de vetores do mesmo tamanho.

Nos próximos posts vamos falar de algumas funções e ver cada estrutura de dados de forma mais detalhada com exemplos.

sábado, maio 17, 2014

O que é R?

R é um ambiente de programação derivado da linguagem S (comercial) e possui um grande número de pacotes para trabalhar com dados. Por esse motivo vem numa crescente de utilização e é bastante difundido principalmente na área científica (estatística e bioinformática), o que não impede o uso em outras frentes como jornais e revistas, por exemplo, para estudos mais profundos com geração de gráficos para o site e material impresso.

Segunda a wikipedia: "R é uma linguagem e um ambiente de desenvolvimento integrado, para cálculos estatísticos e gráficos."

Página oficial: http://www.r-project.org/

No ambiente R, temos sua linguagem fácil de se trabalhar e um grande conjunto de pacotes que a torna muito poderosa para análise de dados. Você pode criar seu pacote e enviar para o CRAN (rede de arquivamento de tudo do ambiente, IDE, linguagem etc).
A conheci pelo curso de especialização de Ciência de Dados no Coursera pela Universidade Johns Hopkins. Eles usam para todos os módulos esse ambiente. É muito interessante.

Os outros:

Vamos lá?

Planilha rápida de comandos: http://cran.r-project.org/doc/contrib/Short-refcard.pdf

Muita gente utiliza também o Python que, agregando algumas bibliotecas como Pandas, NumPy, SciPy etc, faz um trabalho semelhante. Muitos acabam preferindo o Python por já conhecer melhor a linguagem, a forma de trabalho, IDEs ou terem uma plataforma montada com outras aplicações. Cada um escolhe o que agrega mais independente do motivo.

Não vou entrar em detalhes em como instalar, pois isso muda conforme as versões... mas seguem os links:

Como trabalhar?

Ao abrir um terminal e executar o R ou abrir o IDE RStudio, é criado no ambiente uma área de trabalho em sessão, o que possibilita que você crie objetos e trabalhe com ele de duas formas:
  • Comandos livres: assim como no terminal do sistema operacional ou de outras linguagens, você pode executar os comandos que ele vai interpretando e armazenando, se necessário, na sua área de trabalho.
  • Scripts: você cria scripts que são carregados no ambiente e este executa o que está dentro do arquivo de forma sequencial. Normalmente são criadas funções que são executas ao serem acionadas após a carga do script para a área/sessão.
Independente da forma, você pode criar objetos, funções, filtros etc, que podem ser acionados a qualquer momento na sessão que você estiver (pois estão carregados na sua área de trabalho).

Uma das principais coisas que você precisa saber é como carregar dados de arquivos (como CSV, TXT e XLS), acessar bancos de dados e utilizar serviços na web, pois normalmente é assim que você obterá os dados para trabalhar. Depois das análises, é importante a forma de apresentação do resultado: tabela ou gráficos, ambos em tela ou exportados.

terça-feira, maio 13, 2014

Curso interativo de Linguagem R

Curso básico e interativo de linguagem R, evoluindo de lição em lição... comando a comando seguindo uma uma sequência direcionada de aprendizagem: http://tryr.codeschool.com/
O CodeSchool tem vários cursos, alguns pagos e outros gratuitos, seguindo o mesmo esquema. O interessante é você se cadastrar e fazer os demais livres.
Coim relação ao R, estes são os tópicos abordados:
  1. R Syntax: A gentle introduction to R expressions, variables, and functions
  2. Vectors: Grouping values into vectors, then doing arithmetic and graphs with them
  3. Matrices: Creating and graphing two-dimensional data sets
  4. Summary Statistics: Calculating and plotting some basic statistics: mean, median, and standard deviation
  5. Factors: Creating and plotting categorized data
  6. Data Frames: Organizing values into data frames, loading frames from files and merging them
  7. Working With Real-World Data: Testing for correlation between data sets, linear models and installing additional packages
Vale a pena para conhecer ou praticar no início da aprendizagem.