LIVRO GRATUITO: ESTATÍSTICA PARA CIÊNCIA DE DADOS COM LINGUAGEM R

Explorando o RStudio

 

É possível consultar os contribuidores do R, conforme exemplo abaixo.

> contributors()

R was initially written by Robert Gentleman and Ross Ihaka—also known as “R & R”

of the Statistics Department of the University of Auckland.

Since mid-1997 there has been a core group with write access to the R

source, currently consisting of

Douglas Bates

John Chambers

Peter Dalgaard

Robert Gentleman

Kurt Hornik

Ross Ihaka

Tomas Kalibera

Michael Lawrence

Friedrich Leisch

Uwe Ligges

Thomas Lumley

Martin Maechler

Martin Morgan

Paul Murrell

Martyn Plummer

Brian Ripley

Deepayan Sarkar

Duncan Temple Lang

Luke Tierney

Simon Urbanek

plus Heiner Schwarte up to October 1999, Guido Masarotto up to June 2003,

Stefano Iacus up to July 2014, Seth Falcon up to August 2015 and Duncan Murdoch

up to September 2017.

Current R-core members can be contacted via email to R-project.org

with name made up by replacing spaces by dots in the name listed above.

(The authors of code from other projects included in the R distribution

are listed in the COPYRIGHTS file.)

Verificando a lista de contribuidores do projeto acima, é fácil perceber porque a plataforma R é uma das melhores opções para desenvolver soluções para análise de dados. Há um grupo de mais de 20 pessoas comprometidas em aprimorar continuamente a plataforma, e isso faz toda a diferença na velocidade e qualidade com que a plataforma avança em relação aos recursos novos fornecidos e correção de bugs. Isso sem contar os pacotes desenvolvidos por terceiros, como já citado anteriormente.

 

Também é possível verificar os detalhes da licença do R com as funções a seguir.

>license()

>RShowDoc(“COPYING”)

>RShowDoc(“LGPL-3”)

A função license() exibe os detalhes da licença do R. Por ser um software livre, esta licença é a GNU General Public License, que permite utilizar o software sem custo, além de compartilhar o software com outras pessoas, desde que seguidas algumas regras. Mais detalhes sobre estas regras podem ser obtidos executando a função RShowDoc() para exibir os documentos que fornecem mais detalhes sobre a licença.

 

Uma das coisas mais importantes ao trabalhar com R é definir a pasta de trabalho, ou seja, o local onde serão salvos os resultados gerados pela execução do código, e também onde serão buscados arquivos e outros dados necessários para o processo de desenvolvimento de software, como a sessão com todas as informações que estavam em memória para permitir continuar o trabalho de onde parou.

 

A definição da pasta de trabalho é feita utilizando a função setwd(), e a função getwd() permite saber qual a pasta de trabalho atual. Isto também pode ser feito utilizando o menu do RStudio (opção Session – Set Working Directory), porém pode ser interessante incluir no seu código uma linha com a definição da pasta de trabalho de forma a garantir que os dados sejam localizados e salvos no local correto.

>setwd(‘C:/ProjetoR/’)

>getwd()

É possível obter informações sobre a sessão utilizando a função sessionInfo(), e assim verificar as configurações de idioma, sistema operacional, pacotes carregados e outras.

>sessionInfo()

Para imprimir uma informação na tela, a função print() deve ser usada.

>print(“R é muito legal!”)

 

Operadores

 

A linguagem R oferece um conjunto de operadores aritméticos, relacionais e lógicos que permite realizar operações comuns como cálculos, comparações e atribuições

com simplicidade.

 

Importante notar que os elementos envolvidos nas operações podem ser números, variáveis e outros tipos de objetos que veremos adiante. Isto é importante porque demonstra uma vantagem do R sobre linguagens que não têm a análise de dados como propósito, e por isso não trazem este tipo de facilidade, exigindo, por exemplo, a criação de uma função específica para lidar com certos tipos de dados mais complexos. Na linguagem R a regra é que os operadores podem ser usados para o maior número de situações possível.

 

Vamos começar pelo operador de soma, “+”:

>1 + 1

Vejamos o operador de subtração, “-”:

>2 – 1

O operador de multiplicação é o “*”:

>4 * 4

Para divisão, o operador usado é “/”:

>4 / 4

Temos ainda o operador de potênca, que permite elevar um número a outro, e pode ser utilizado de duas formas, “^” e “**”:

>4^2

>4**2

Temos também o operador de módulo (resto da divisão), “%%”:

>10 %% 3

O resultado da operação acima é 1, pois 10 dividido por 3 é igual a 3, com resto 1.

 

O operador de atribuição também tem duas formas, “=” e “←”:

>a = 1

>b <- 2

O resultado das operações acima é que as variáveis a e b receberão os valores 1 e 2, respectivamente. Tome nota desta informação.

 

Vamos agora os operadores relacionais, que permitem comparar variáveis, valores , objetos, enfim.

>a > 0

>a < 1

>a <= 2

>a >= 2

>a == 3

>a != 3

Os operadores relacionais são autoexplicativos (maior, menor, maior ou igual, menor ou igual, etc). Mas tenha atenção aos operadores de comparação de igualdade (“==”) e diferença (“!=”), que podem causar confusão com operadores de atribuição e lógicos, como veremos.

 

Os operadores relacionais retornam um resultado do tipo booleano, ou seja, verdadeiro ou falso. Sabendo o valor da variável “a”, quantas das operações acima resultam no valor verdadeiro?

 

Vejamos agora os operadores lógicos, que também resultam em valor booleano (verdadeiro ou falso) e são muito importantes, especialmente quando usados em conjunto com estruturas de controle que permitem verificar condições específicas e determinar o trecho de código a ser executado de acordo com tais condições.

 

O operador E (AND):

>(a==1) & (b==1)

>(a==1) & (b==2)

>(a<=2) & (b<=3)

Note que o operador E é representado pelo caracter “&”, e permite combinar expressões de comparação com operadores relacionais, de forma que o resultado será verdadeiro somente se todas as expressões combinadas forem verdadeiras.

 

Dessa forma, a expressão (a==1) & (b==1) será verdadeira se a expressão (a==1) for verdadeira (a tenha o valor zero) e a expressão (b==1) seja também verdadeira (b tenha valor 1). Como a variável “a” tem o valor 1, mas a variável “b” tem o valor 2, a expressão (b==1) é falsa, e portanto a combinação das expressões através do operador E também será falsa. Verifique as outras expressões e observe quais são verdadeiras e aquelas que resultam em valor falso.

 

O operador OU (OR):

>(a==1) | (b==1)

>(a<=2) | (b<=3)

Note que o operador OU é representado pelo caracter “|”, e permite combinar expressões de forma que o resultado será verdadeiro se pelo menos uma das expressões combinadas for verdadeira. Isso é muito importante: basta que uma das expressões seja verdadeira para que a combinação através do operador OU seja verdadeira.

 

O operador NÃO (NOT):

>idade >= 65

>!idade >= 65

Note que o operador NÃO é representado pelo caracter “!” (exclamação – não confundir com o operador OU), e permite negar expressões, de forma que o resultado será verdadeiro se a expressão afetada pelo operador for falsa, e vice-versa.

 

Ficou confuso? Não se preocupe. O operador NÃO é apenas uma forma de “inverter” o resultado de uma expressão, e é muito útil quando queremos verificar caso uma condição não seja verdadeira.

 

Observe as condições acima. Enquanto a primeira linha verifica se a pessoa é idosa (idade >= 65), a outra verifica se a pessoa não é idosa (!idade >= 65).

Variáveis e Tipos de Dados

 

Variáveis são objetos que recebem valores de algum tipo de dados. Variáveis que recebem dados numéricos, por exemplo, são do tipo numérico:

>x = 1

>y = -1

>z = 0.5

>class(x)

>class(y)

>class(z)

Observe acima que as variáveis x, y e z tiveram valores inteiros positivos, negativos e fracionários atribuídos. Ainda assim, o tipo identificado através da função class() é o mesmo para todas: “numeric”.

 

Caso seja necessário tratar os números com todas as suas especificidades, é possível utilizar as funções de verificação e conversão de tipos da linguagem R, como veremos a seguir.

>is.integer(z)

>w = as.integer(z)

>class(w)

>x1 = 3.14

>x1

>y1 = as.integer(3.14)

>y1

>class(x1)

>class(y1)

A função is.integer() permite verificar se uma variável é do tipo inteiro. Para variável z, o resultado da função é falso, pois a variável tem valor 0.5. Já a função as.integer() permite converter (ou tentar) um valor para inteiro. Neste caso, o resultado da conversão de 0.5 para um valor inteiro é zero, e este valor será atribuído à variável w. Como resultado disso, o tipo da variável w identificado pela função class() será “integer”. A partir destas informações, você deve ser capaz de verificar os tipos das variáveis x1 e y1, assim como seus valores.

 

Vejamos mais alguns exemplos.

>as.integer(4.7)

4

Como vimos, é possível converter um número real fracionário para inteiro, e o resultado será a parte inteira do número, desprezando a parte fracionária. Note que não ocorre arredondamento.

Vejamos mais alguns exemplos.

>as.integer(‘4.7’)

4

Neste outro exemplo, veja que o resultado se mantém. Isto demonstra a “inteligência” da linguagem R, pois embora o dado tenha sido fornecido em formato texto (note as aspas simples junto ao número), ainda assim o interpretador da linguagem foi capaz de perceber que dentro do texto havia um número, e tratar este número para chegar ao resultado desejado.

>as.integer(“Christian”)

>as.integer(‘Christian’)

Warning message in eval(expr, envir, enclos):

“NAs introduced by coercion”

<NA>

Warning message in eval(expr, envir, enclos):

“NAs introduced by coercion”

<NA>

Agora note como, neste outro caso, não é possível concluir a operação de conversão com sucesso. Isto porque, como você deve ter notado, o parâmetro passado para a função as.integer() é um nome, não sendo possível, portanto, converter este dado para um valor numérico. O resultado, neste caso, é NA (Not Available), que representa um valor ausente ou inválido.

>as.integer(“TRUE”)

Warning message in eval(expr, envir, enclos):

“NAs introduced by coercion”

<NA>

>as.integer(TRUE)

1

Neste outro exemplo, temos uma situação curiosa. Quando informamos o texto “TRUE”, a conversão não pode ser realizada, pela mesma razão do exemplo anterior, afinal um texto não pode ser transformado num valor inteiro. Porém ao informar o valor booleano TRUE, a situação muda. Isto porque, internamente, os valores booleanos TRUE (verdadeiro) e FALSE (falso) são representados pelos valores inteiros 1 e 0. É por isso que, neste caso, a operação é executada com sucesso o resultado da conversão é o valor inteiro 1.

 

Vejamos mais alguns exemplos de variáveis e seus tipos de dados.

>c1 = ‘Z’

>class(c1)

>c2 = “CASA”

>class(c2)

‘character’

‘character’

Note como as variáveis c1 e c2 são do mesmo tipo ‘character’. Isto porque, para a linguagem R, não há distinção entre caractere único e string, como em outras linguagens. Assim, não importa se o texto tem apenas um caractere ou vários, o tipo é o mesmo.

 

Vejamos agora como lidar com variáveis com valores do tipo lógico.

>x = 1; y = 2

>z = x > y

>z

>class(z)

FALSE

‘logical’

Note que a variável “z” recebe o resultado da expressão “x>y”, que é falsa, pois x não é maior que y (1 não é maior que 2). Assim, o valor da variável “z” é FALSE e seu tipo é ‘logical’.

>u = TRUE; v = FALSE

>class(u)

>u & v

>u | v   

>!u

Para verificar o entendimento, observe atentamente os exemplos acima. Qual o tipo da variável “u”? Qual o resultado das expressões “u & v”, “u | v” e “!u”?

>0/5

0

>5/0

Inf

>-5/0

-Inf

Agora observe as operações acima. Na primeira, uma operação normal de divisão, cujo resultado é zero, afinal zero dividido (ou multiplicado) por qualquer valor resulta zero. Porém, nas outras duas operações, temos a divisão por zero, com resultados diferentes (“Inf” e “-Inf”). Estes resultados representam infinito, e sinalizam que houve uma divisão por zero cujo resultado não pode ser calculado.

 

Vejamos mais alguns exemplos.

>x = 367

>x

367

>mode(x)

‘numeric’

>typeof(x)

‘double’

>y = as.integer(x)

>y

367

>mode(y)

‘numeric’

>typeof(y)

‘integer’

Temos agora duas funções interessantes: mode() e typeof(). A primeira é similar à função class() e permite verificar o tipo da variável, enquanto a segunda permite verificar o modo interno de armazenamento de uma variável em R.

 

Note como, apesar de receber um valor inteiro, a variável “x” tem um modo interno de armazenamento “double”. Para que uma variável seja armazenada internamente como inteiro (“integer”), é necessário fazer a conversão explícita do seu tipo, como no exemplo com a variável “y”. É possível também mudar o modo da variável, atribuindo um valor à função mode(), como no exemplo a seguir:

>x = 1

>x

1

>typeof(x)

‘double’

>mode(x) = “integer”

>typeof(x)

‘integer’

Percebeu como a variável “x” era armazenada como “double” e, após a operação de mudança de modo para “integer”, passou a ter este modo de armazenamento?

Tabela de Conteúdo

  • estatistica-para-ciencia-de-dados-com-linguagem-r
    • Apresentação
    • Dedicação
    • Autor
    • resumo
  • plataformas-análise-dados-estatísticas
    • Plataformas de análise estatística de dados
  • plataforma-linguagem-r
    • A plataforma R
    • Linha de comando
    • RStudio
    • Conseguindo ajuda
    • Explorando o
    • RStudio
    • Operadores
    • Variáveis e tipos de
    • Dados
    • Objetos
    • Vetor
    • Matrizes
    • Matrizes
    • Listas
    • Quadros de dados
    • Funções
    • Estruturas de controle
  • estatística para ciência de dados
    • Introdução à Estatística para Análise de Dados
    • Visualizando e descrevendo dados quantitativos
    • Estatística Descritiva x
    • Estatística Inferencial
  • medidas-dispersão-tendência-central
    • Visualização e
      Descrição de dados quantitativos
    • Definindo variáveis quantitativas discretas e contínuas
    • Medidas de tendência central – média
    • Medidas de Tendência Central – Mediana
    • Medidas de Tendência Central – Moda
    • Outras medidas de tendência central
    • Medidas de dispersão
    • Medidas de posição relativa – quartis e percentis
    • Gráficos para variáveis quantitativas
  • associações-correlação-causalidade
    • Análise bidimensional
      Associação entre
    • variáveis qualitativas
    • Medidas de associação entre variáveis qualitativas
    • Associação entre variáveis quantitativas
    • Medidas de associação entre variáveis quantitativas
    • Associação entre variáveis qualitativas e quantitativas
    • Analisando e interpretando gráficos de dispersão
      Atribuindo funções a variáveis de plotagem de dispersão
    • Noções básicas sobre correlação
    • Condições para análise de correlação
    • Correlação e Causalidade
  • probabilidade
    • Probabilidade conjunta
    • Probabilidade
    • Condicional e Independência
    • Tabelas de contingência
    • Árvores de probabilidade
  • regra-de-bayes-distribuições-probabilidade
    • Variáveis aleatórias e
    • Distribuições de probabilidade
    • Distribuição uniforme
    • Distribuição normal
    • Teorema do limite central
    • Distribuição Exponencial
    • Distribuição Qui-Quadrado
    • Distribuição t de student
    • Distribuição F
  • testes-hipótese-análise-variância-anova
    • Introdução à Inferência Estatística
    • Distribuições e proporções de amostragem
    • Testes de Hipóteses
    • Projeto de Experimentos e Análise de Variância (ANOVA)