Linguagem sequencial R de Programação de Computadores 2ª Parte
Recursos estatísticosEditar
A R disponibiliza uma ampla variedade de técnicas estatísticas e gráficas, incluindo modelação linear e não linear, testes estatísticos clássicos, análise de séries temporais (time-series analysis), classificação, agrupamento e outras. A R é facilmente extensível através de funções e extensões, e a comunidade R é reconhecida pelos seus contributos ativos em termos de pacotes. Existem diferenças importantes, mas muito código escrito para S corre inalterado. Muitas das funções padrão do R são escritas no próprio R, o que torna fácil para os usuários seguir as escolhas algorítmicas feitas. Para tarefas computacionais intensivas, os códigos C, C++, e Fortran podem ser ligados e chamados durante a execução. Usuários experientes podem escrever código C ou Java[14] para manipular diretamente objetos R.
O R é fortemente extensível através do uso de pacotes enviados pelo utilizador para funções específicas ou áreas específicas de estudo. Devido à sua herança do S, o R possui fortes recursos de programação orientada por objetos, mais que a maioria das linguagens de computação estatística. Ampliar o R também é facilitado pelas suas regras de contexto lexical.[15]
Outra força do R são os gráficos estáticos, que podem produzir imagens com qualidade para publicação, incluindo símbolos matemáticos. Gráficos dinâmicos e interativos estão disponíveis através de pacotes adicionais.[16]
O R tem a sua própria documentação em formato LaTeX, a qual é usada para fornecer documentação de fácil compreensão, simultaneamente on-line em diversos formatos e em papel.
Recursos de programaçãoEditar
A R é uma linguagem interpretada tipicamente utilizada através de um Interpretador de comandos. Se um usuário escreve "2+2" no comando de inserção e pressiona enter, o computador responde com "4", conforme se mostra abaixo:
> 2+2
[1] 4
Como muitas outras linguagens, a R suporta matrizes aritméticas. A estrutura de dados da R inclui escalares, vetores, matrizes, quadros de dados (similares a tabelas numa base de dados relacional) e listas.[17] O sistema de objetos da R é extensível e inclui objectos para, entre outros, modelos de regressão, séries temporais e coordenadas geoespaciais.
A R suporta programação processual com funções e, para algumas funções, programação orientada a objetos com funções genéricas. Uma função genérica atua de forma diferente dependendo do tipo de argumentos que é passado. Por outras palavras a função genérica determina (dispatches) a função (método) específica para aquele tipo de objeto. Por exemplo, a R tem uma função genérica print() que pode imprimir quase qualquer tipo de objeto em R com uma simples sintaxe "print(nomedoobjeto)".
Enquanto a R é maioritariamente usada por estatísticos e outros utilizadores que requerem um ambiente para computação estatística e desenvolvimento de software, pode ser igualmente usada como uma caixa de ferramentas para cálculo matricial geral com benchmarks de desempenho comparáveis ao GNU Octave ou ao MATLAB.[18]
ExemplosEditar
Exemplo 1Editar
Os seguintes exemplos ilustram a sintaxe básica da língua e o uso do interface de linha de comando.
Na R, o largamente preferido[19][20][21][22] operador de atribuição é uma seta formada por dois caracteres "←", embora "=" possa ser usado em sua vez.[23]
> x ← c(1,2,3,4,5,6) # Create ordered collection (vector)
> y ← x^2 # Square the elements of x
> print(y) # print (vector) y
[1] 1 4 9 16 25 36
> mean(y) # Calculate average (arithmetic mean) of (vector) y; result is scalar
[1] 15.16667
> var(y) # Calculate sample variance
[1] 178.9667
> lm_1 ← lm(y ~ x) # Fit a linear regression model "y = f(x)" or "y = B0 + (B1 * x)"
# store the results as lm_1
> print(lm_1) # Print the model from the (linear model object) lm_1
Call:
lm(formula = y ~ x)
Coefficients:
(Intercept) x
-9.333 7.000
> summary(lm_1) # Compute and print statistics for the fit
# of the (linear model object) lm_1
Call:
lm(formula = y ~ x)
Residuals:
1 2 3 4 5 6
3.3333 -0.6667 -2.6667 -2.6667 -0.6667 3.3333
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -9.3333 2.8441 -3.282 0.030453 *
x 7.0000 0.7303 9.585 0.000662 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 3.055 on 4 degrees of freedom
Multiple R-squared: 0.9583, Adjusted R-squared: 0.9478
F-statistic: 91.88 on 1 and 4 DF, p-value: 0.000662
> par(mfrow=c(2, 2)) # Request 2x2 plot layout
> plot(lm_1) # Diagnostic plot of regression model
Exemplo 2Editar
Código R curto calcula o conjunto de Mandelbrot através das primeiras 20 iterações da equação z = z² + c mapeados para diferentes constantes complexas c. Este exemplo demonstra:
- O uso de bibliotecas externas (chamadas pacotes) desenvolvidas pela comunidade, neste caso, o pacote caTools
- Manipulação de número complexo.
- Matrizes multidimensionais de números usados como tipos de dados básicos, ver variáveis C, Z e X.
library(caTools) # external package providing write.gif function
jet.colors ← colorRampPalette(c("#00007F", "blue", "#007FFF", "cyan", "#7FFF7F", "yellow", "#FF7F00", "red", "#7F0000"))
m ← 1200 # define size
C ← complex( real=rep(seq(-1.8,0.6, length.out=m), each=m ),
imag=rep(seq(-1.2,1.2, length.out=m), m ) )
C ← matrix(C,m,m) # reshape as square matrix of complex numbers
Z ← 0 # initialize Z to zero
X ← array(0, c(m,m,50)) # initialize output 3D array
for (k in 1:50) { # loop with 50 iterations
Z ← Z^2+C # the central difference equation
X[,,k] ← exp(-abs(Z)) # capture results
}
write.gif(X, "Mandelbrot.gif", col=jet.colors, delay=100)
Exemplo 3Editar
## Leitura do conjunto de dados. Também pode-se usar read.csv() quando os dados estiverem em arquivos .csv
dados <- read.table("escreva a localização do arquivo...", header=TRUE)
## Preparação de dados
dados.vetor <- c(dados$trat1, dados$trat2, dados$trat3, dados$trat4) %pode ser com qualquer quantidade de tratamentos.
N <- gl(trat, repeticoes) %escreva o número de tratamentos e o tratamento com maior número de repetições.
dados.vert <- data.frame(N, dados.vetor)
fator <- factor(Loc) % fatores são variáveis tratadas como variáveis categóricas no R.
## Cáculo da tabela ANOVA
pre_anova <- aov(dados.vetor~fator)
ANOVA <- summary(pre_anova)
## Fazendo teste de Tukey, teremos:
TukeyHSD(pre_anova, ordered=TRUE)
plot(TukeyHSD(bruto.aov, ordered=TRUE))
sk5 <- SK(x=dados, y=dados.vert$dados.vetor, model="y~fator", which="fator",sig.level=0.05)
summary(sk5)
PacotesEditar
As capacidades da R são estendidas através de pacotes criados pelo usuário, que permitem técnicas estatísticas especializadas, dispositivos gráficos, capacidades de importação/exportação, ferramentas de relatórios, etc. Estes pacotes são primeiro desenvolvidos em R, e por vezes em Java, C e Fortran. Um conjunto básico de pacotes são incluídos com a instalação do R, com 5300 pacotes adicionais (a partir de abril 2012) disponíveis em Comprehensive R Archive Network (CRAN), Bioconductor, e outros repositórios.[24]
A página "Task Views" (lista de assuntos) no website da CRAN lista a vasta gama de aplicações (Finança, genética, aprendizagem de máquinas, imagiologia médica, ciências sociais e estatísticas espaciais) nos quais R tem sido aplicada e para que pacotes está disponível.
Outros recursos do pacote R incluem Crantastic, um site comunitário para avaliação e revisão de todos os pacotes CRAN, e também R-Forge, uma plataforma central para o desenvolvimento colaborativo de pacotes R, software relacionado com R, e projetos. Tem muitos documentos não publicados, pacotes beta e versões de desenvolvimento de pacotes CRAN.
O projeto Bioconductor disponibiliza pacotes R para a análise de dados genómicos, tais como Affymetrix e cDNA de análise e manipulação de dados orientadas a objetos, e começou disponibilizar ferramentas para a análise de dados da próxima geração de métodos de alto rendimento de sequenciação.
A pesquisa reprodutível e geração automática de relatórios pode ser realizada com pacotes que suportam a execução de código R incorporado em LaTeX, OpenDocument format e outros marcadores (markups).[25]