O objetivo deste estudo é revisar os conceitos básicos e fundamentais de uma programação orientado ao estudo e análise de dados. Busca-se apresentar uma visão contextualizada dos conceitos, além de propor novas diretrizes para sua aplicação com a utilização e aplicação do software R.
Diante de um novo desafio a raça humana sempre inovou, criou, empreendeu em busca de mais conforto e bem estar. Cada invenção que se seguiu teve a finalidade de solucionar algum problema específico, e aprimorando nossa maior arma no processo evolutivo como mamíferos: a nossa capacidade de transmitir conhecimentos e criar uma história evolutiva e contínua.
Neste trabalho iremos entender a evolução dos números que remontam às antigas civilizações que ainda existiam em cavernas, até os grandes bancos de dados que hoje são armazenados em dispositivos digitais e que são considerados como o novo petróleo.
A metodologia abordada para a construção deste trabalho resume-se aos estudos de livros, vídeos e artigos científicos que nos permitem estabelecer um estado da arte seguro para aprofundarmos nosso conhecimento nos primórdios da matemática.
Este estudo também irá trazer uma contemplação dos principais conceitos aplicados à ciência da computação, utilizando os estilos numéricos para a determinação de tipos de variáveis numéricas, onde poderemos compreender que existem várias maneiras de se escrever um número e a complexidade de sua utilização.
Como ferramenta tecnológica, iremos apresentar uma abordagem com o uso no Software R1, utilizando como IDE2 o RStúdio3, que será o principal instrumento para contextualização e aplicação dos conceitos matemáticos dentro do curso em questão. Nesta formação iremos usar o ambiente online disponibilizado pela posit que é o endereço https://posit.cloud
Com a finalidade de melhor entendermos seu funcionamento, esta seção dedica-se a revisar sua história, mostrar sua instalação e o RStudio, fazer comandos básicos e entender os operadores matemáticos dentro deste ambiente. Construir variáveis e vetores, operar com eles e fazer seus primeiros gráficos com linguagem de programação. Assim, convido-os para aprender uma nova linguagem, a linguagem estruturada do R para programação matemática.
Disponível para diversos sistemas operacionais, Unix/Linux, Windows e MAC, o R é hoje considerado a melhor plataforma para análise de dados , manipulação, entendimento e visualização gráfica. Criado originalmente por Robert Gentleman e Ross Ihaka na Universidade de Auckland, Nova Zelândia, por isso seu nome começou sendo R & R devido às iniciais de seus autores, que posteriormente ficaram apenas como R. Hoje é desenvolvido por várias comunidades e pessoas em todo o mundo. São estas, as principais características que podemos apresentar do R que podemos apontar para vocês:
Veja como instalar o Software R e o RStudio no seu computador https://youtu.be/56oyF7wkSi4. Neste vídeo você aprenderá como fazer a instalação dos dois softwares que utilizamos em nosso curso. Contudo neste curso iremos utilizar a versão online como antes mencionada.
Para compreendermos o funcionamento do R primeiramente usaremos os conceitos de calculadora, ou seja, operações matemáticas básicas feitas com algorítmos.
Primeiramente para evitarmos a explosão do computador, necessitamos cumprir uma rotina obrigatória para o primeiro algorítmo de qualquer pessoa. Assim, vamos solicitar que o computador nos cumprimente com o famoso Hello World!.
Assim, digite o código abaixo descrito para evitar a autodestruição de seu computador:
print("Hello World!")
## [1] "Hello World!"
A adição em um algorítmo é feita exatamente como fazemos no caderno ou numa calculadora. Veja:
Na matemática:
\(2+3\)
No R:
2+3
## [1] 5
A subtração também segue o mesmo padrão estabelecido anteriormente. Veja como podemos fazer a mesma operação:
Na matemática:
\(2-3\)
No R:
2-3
## [1] -1
Na multiplicação já existe uma modificação, normalmente uma multiplicação entre dois número é separada por um ponto. Na computação o ponto é o separador entre unidades inteiras e decimais. Para corrigir, utiliamos o asterisco * para a multiplicação.
Assim vejamos o exemplo:
Na matemática:
\(2+3 \cdot 5\)
No R:
2+3*5
## [1] 17
A divisão é um caso a parte, existem três tipos de divisões dentro da programação. Vamos entender cada uma delas.
A divisão real é a que estamos acostumados em fazer, onde a operação encerra quando chegamos ao resto zero, dizíma períodica ou quantidade de dígitos necessários. Vejam o exemplo
Na matemática:
\(\dfrac{13}{4}\)
No R:
13/4
## [1] 3.25
Neste caso temos interesse apenas no quociente inteiro da divisão, despresando a parte decimal resultado da divisão não exata. Veja o exemplo:
Na matemática
\(\dfrac{13}{4}\)
No R:
13%/%4
## [1] 3
Também podemos obter apenas o resto da divisão entre dois números. O mesmo caso dos exemplos anteriores ficaria assim:
Na matemática
\(\dfrac{13}{4}\)
No R:
13%%4
## [1] 1
A potência também possui duas formas de se trabalhar, e pode ser considerada como uma multiplicação dupla ou a exponencial tradicional utilizada pelo símbolo ^. Vajamos o exemplo
Na matemática:
\(2^3\)
No R: Método 01
2^3
## [1] 8
Método 02
2**3
## [1] 8
A radiciação é uma das formas mais limitadas devido existir um comando universal que resolve apenas raizes quadradas. Assim, sempre é orientado utilizar o conceito matemática de potência racioanal para resolução da raiz qualquer de um número. Vejamos:
Na matemática
Exemplo 01:
\(\sqrt{16}\)
No R:
sqrt(16)
## [1] 4
Outra forma de fazer uma raiz quadrada de um número é utiizar o conceito matemático abaixo:
\(\sqrt{16} \Rightarrow \sqrt[2]{16^1} \Rightarrow 16^{\frac{1}{2}}\)
Assim, como calcular potência é fácil para o computador, utilizamos esse conceito para radiciação:
16^(1/2)
## [1] 4
Desta forma podemos calcular por exemplo a raiz cúbica \(\sqrt[3]{16}\) e raiz quarta \(\sqrt[4]{16}\) de 16.
Raíz cública
16**(1/3)
## [1] 2.519842
Raíz quarta
16**(1/4)
## [1] 2
Uma das maravilhas da programação é o armazenamento de informações. Neste sentido iremos entender como podemos usar uma string, letra ou nome, para guardar uma informação que sempre poderá ser reutilizada para alguma operação necessária.
Os vetores podem armazenar um único valor, veja o exemplo:
x = 5
x
## [1] 5
Ao fazer isso você percebe que o valor x é acrescentado na memória do computador e agora pode ser utilizado como um número para operações. Veja os casos:
\(2 + x \quad 2\cdot x \quad \sqrt{x}\)
No R:
2+x
## [1] 7
2*x
## [1] 10
x**(1/2)
## [1] 2.236068
Agora vamos armazenar mais de uma informação em um vetor. Cada vetor no r pode armazenar inúmeras informações, contudo todas devem ter a mesma tipagem.
Quando são sequenciais devemos indicar o limite inferior e o superior da sequência. Observe:
y = -1:10
y
## [1] -1 0 1 2 3 4 5 6 7 8 9 10
Veja neste caso que ele colocou todos os numeros inteiros entre os dois intervalos, incluindo o intervalo. Isso permite que posssamos fazer qualquer operação com esses valores. Veja o exemplo abaixo:
2*y
## [1] -2 0 2 4 6 8 10 12 14 16 18 20
y**2
## [1] 1 0 1 4 9 16 25 36 49 64 81 100
y**(1/2)
## [1] NaN 0.000000 1.000000 1.414214 1.732051 2.000000 2.236068 2.449490
## [9] 2.645751 2.828427 3.000000 3.162278
Agora desejamos uma sequencia aleatória de valores, neste caso devemos fazer a combinação dos valores, veja o exemplo:
z = c(1, 5, 7, 15, 22)
z
## [1] 1 5 7 15 22
As mesmas operações também podem ser feitas, como no caso de y.
Os vetores também podem armazenar palavras, frases ou textos inteiros. Veja os exemplos abaixo:
nome = "Gleison Guardia"
nome
## [1] "Gleison Guardia"
saudacao = "Sejam bem vindos!"
saudacao
## [1] "Sejam bem vindos!"
mensagem = "Estamos muito felizes por participar deste momento com vocês!"
mensagem
## [1] "Estamos muito felizes por participar deste momento com vocês!"
Também podemos juntas vetores de strings com a seguinte da seguinte forma:
sprintf("%s %s %s", nome, saudacao, mensagem)
## [1] "Gleison Guardia Sejam bem vindos! Estamos muito felizes por participar deste momento com vocês!"
Utilizando o mesmo recurso, podemos juntar strings e vetores numéricos para formatar respostas e resultados de consultas.
sprintf("%s. O valor do vetor x é %s !", saudacao, x)
## [1] "Sejam bem vindos!. O valor do vetor x é 5 !"
A utilidade mais usual de um vetor é o acesso de seus valores e suas suas manipulações. Vejamos agora como podemos acessar um determinado valor de um vetor.
Vejamos novamente o vetor orignal z.
z
## [1] 1 5 7 15 22
Vejam, o primeiro número da sequência do vetor é o valor 1. Dizemos que ele é o valor amarzenado no índice 1 do vetor. Para acessá-lo devemos dizer ao R que queros o primeiro indice do vetor, fazendo da seguinte forma:
z[1]
## [1] 1
Da mesma forma, se eu quiser ver o valor que está armazenado no 5ª índice do vertor basta fazer:
z[5]
## [1] 22
Posso fazer operações com valores exclusivos de um vetor. Veja a operação abaixo:
z[3]*5
## [1] 35
Vetores bidimensionais são vetores que armazenam dados em duas dimensoes. Também são conhecidos como matrizes ou os famosos datasets. Vamos abaixo construir um.
Nome = c("Maria", "Jéssica", "Pedro", "Gustavo")
Idade = c(25, 34, 42, 55)
Altura = c(1.75, 1.47, 1.65, 1.78)
Sexo = c("F", "F", "M", "M")
dados = data.frame(Nome, Sexo, Idade, Altura)
dados
## Nome Sexo Idade Altura
## 1 Maria F 25 1.75
## 2 Jéssica F 34 1.47
## 3 Pedro M 42 1.65
## 4 Gustavo M 55 1.78
Veja que agora temos colunas e linhas. Essas informações são mapeadas seguindo o direcionamento de uma planilha ou matriz. Assim, na linha 1 e coluna 1 temos o nome de Maria, e na linha 3 coluna 4 temos a altura de Pedro que é 1.65. Veja como essas consultas são feitas:
dados[1,1]
## [1] "Maria"
dados[3,4]
## [1] 1.65
Sempre que consultamos um dataset, devemos ter em mente que as infoamções são armazenadas no formato nome[linhas, coluna] . Outra forma é selecionar uma linha inteira ou uma coluna inteira. Veja como fazemos:
Selecionando todos os dados de Pedro:
dados[3,]
## Nome Sexo Idade Altura
## 3 Pedro M 42 1.65
Selecionando todos os dados relativos a idade:
dados[,3]
## [1] 25 34 42 55
Nos datasets temos uma maneira mais utilizada para selecionar colunas, que chamamos em programação de atributos. o mesmo exemplo acima poderia ser feito assim.
dados$Idade
## [1] 25 34 42 55
Esse formato permite que não precisarmos contar os números das colunas e apenas navergar pelos seus nomes.
Podemos também acessar dados com condições dentro de um dataset. Digamos que eu queira as informações de pessoas do sexo feminino. A cosulta poderia ser assim.
dados[dados$Sexo == "F",]
## Nome Sexo Idade Altura
## 1 Maria F 25 1.75
## 2 Jéssica F 34 1.47
Se quisermos pessoas que tenham idade superior a 30 anos, usaríamos o seguinte comando:
dados[dados$Idade > 30, ]
## Nome Sexo Idade Altura
## 2 Jéssica F 34 1.47
## 3 Pedro M 42 1.65
## 4 Gustavo M 55 1.78
Para podermos fazer estas consultas é interessante conhecermos os conectivos lógicos da linguagem de programação. Veja a tabela abaixo que apresenta cada uma delas:
| conectivo | Significado | |
|---|---|---|
| == | igualdade | |
| != | diferente | |
| > | maior | |
| >= | maior igual | |
| < | menor | |
| <= | menor igual |
As medidas de centralidade permitem entender os dados que se agrupam no entorno da concentração que eles exercem. Entre elas destacamos:
A média é dada pela seguinte equação:
\[ \overline{x} = \dfrac{\Sigma_{i=1}^n x_i}{n-1} \]
Ou seja, a soma de todos os termos, dividido pela quantidade de termos menos 1. Essa é a média aritmética amostral.
No software R temos um comando expecífico para fazer esse calculo, que chama-se mean(), e permite rapidamente encontrarmos esse valor. Veja no caso de nosso dataset dados.
mean(dados$Altura)
## [1] 1.6625
Assim, podemos melhorarmos a nossa apresentação da seguinte forma:
sprintf("A média aritimética do atributo Altura no vetor dados é %s .", mean(dados$Altura))
## [1] "A média aritimética do atributo Altura no vetor dados é 1.6625 ."
A mediana refere-se ao valor central de uma distribuição após a ordenação dos dados. Ela tem duas fórmulas que permitem sua análise.
Para obtermos a mediana de uma conjunto de dados devemos proceder da seguinte maneira:
Quando \(n\) for ímpar, a posição do elemento mediano será obtida da seguinte forma:
\[Elemento_{Md} = \frac{n+1}2\]
Quando \(n\) for par, a posição do elemento mediano será obtida da seguinte forma:
\[Elemento_{Md} = \frac{n}{2}\]
Quando \(n\) for par:
\[Md = \frac{X_{Elemento_{Md}} + X_{Elemento_{Md}+1}}2\]
No R temos uma função específica que encontra a mediana de uma distribuição. Esta função é a median() e ele mesmo utiliza a formula correta para n par ou impar. Vejamos com nosso dataset
median(dados$Idade)
## [1] 38
As distribuições de uma sequencia também podem ser fracionadas em partes. Assim, surgem os centis, que representam a centésima parte do banco analisado, os decis que são a décima parte e os quartis que tratase de uma divisão em 4 partes.
Neste contexto, 25 centis = 2,5 decis = 1 quartil
Vejamos como encontar esses valores no R
quantile(dados$Altura, 0.25)
## 25%
## 1.605
Pode-se definir a moda como sendo o valor mais frequente de um conjunto de dados. A moda é bastante utilizada para dados qualitativos.
Vamos começar visualizando no dataframe dados:
dados
## Nome Sexo Idade Altura
## 1 Maria F 25 1.75
## 2 Jéssica F 34 1.47
## 3 Pedro M 42 1.65
## 4 Gustavo M 55 1.78
Vamos criar um vetor exemplo:
exemplo_moda <- c(1, 2, 2, 3, 4, 4, 5, 6, 7, 7)
exemplo_moda
## [1] 1 2 2 3 4 4 5 6 7 7
Agora vamos criar uma tabela de frequência:
freq <- table(exemplo_moda)
freq
## exemplo_moda
## 1 2 3 4 5 6 7
## 1 2 1 2 1 1 2
Agora vamos encontrar as maiores frequências:
freq[freq == max(freq)]
## exemplo_moda
## 2 4 7
## 2 2 2
Neste momento, iremos encontrar os nomes das maiores frequências:
names(freq)[freq == max(freq)]
## [1] "2" "4" "7"
Agora iremos criar uma função que automatize toda essa nossa aplicação:
Moda <- function(x) {
freq <- table(x)
return(names(freq)[freq == max(freq)])
}
Moda(exemplo_moda)
## [1] "2" "4" "7"
Vamos ver se temos uma moda no nosso dataset dados:
Moda(dados)
## NULL
Uma forma de sumarizar todos estes dados é o comando summary, veja como ficam os indicadores de nosso dataset com o essa função.
summary(dados)
## Nome Sexo Idade Altura
## Length:4 Length:4 Min. :25.00 Min. :1.470
## Class :character Class :character 1st Qu.:31.75 1st Qu.:1.605
## Mode :character Mode :character Median :38.00 Median :1.700
## Mean :39.00 Mean :1.663
## 3rd Qu.:45.25 3rd Qu.:1.758
## Max. :55.00 Max. :1.780
Neste caso temos um grande resumo dos dados que nos permite entender o dataset.
As medidas de dispersão permitem entender a variação dos dados e como eles se distanciam da centralidade.
A Variância é uma medida que reprensenta a área envolvida na dispersão dos dados. Ela traz uma visão de como os dados estão distribuídos. Pode ser calculada por:
\[S^2 = \frac 1{n-1}\sum_{i=1}^{n}(X_i-\bar{X})^2\]
No R esse cálculo é facilitado com o uso da função var(). Para encontrarmos a variância do datasete dados na categoria idade faremos:
var(dados$Idade)
## [1] 162
 Variância do vetor exemplo_moda é:
var(exemplo_moda)
## [1] 4.544444
O desvio padrão representa uma forma de padronização da variância. Pode ser representado pela equação:
\[S = \sqrt{\frac 1{n-1}\sum_{i=1}^{n}(X_i-\bar{X})^2}\] Para facilitar, vamos utilizar a função sd() que representa este desvio:
sd(dados$Idade)
## [1] 12.72792
Veja que eo valor já reduziu, mas ainda não temos uma perspectiva de se esse valor é bom ou ruim. Assim, vamos apresentar uma valor que posssa representar essa dispersão em valores percentuais.
Conhecido como medida de dispersão relativa, esse indicador permite que possamos avaliar o quanto os dados estão dispersos em percentual. Considera-se que dados com mais de 40% de dispersão como dados ruins para a análise que se propoem. Sua fórmula é dada por:
\(CVP = \dfrac{S}{\overline{x}}\)
Assim, precisamos construir uma função que possa calcular esse coeficiente. Como fizemos no cálculo da Moda, faremos:
CVP = function(x){
c = (sd(x)/mean(x))
return(c)
}
Agora vamos ver a dispersão relativas de nossos dados:
CVP(dados$Idade)
## [1] 0.326357
Neste caso, a variação é de 32,64%. Podemos melhorar a fórmula para termos esse valor já em percentual inteiro.
CVP = function(x){
c = round(((sd(x)/mean(x)))*100,2)
return(c)
}
Agora é apenas refazer o cálculo:
CVP(dados$Idade)
## [1] 32.64
Para desenharmos graficos no R, podemos utilizar pacotes prontos ou importar pacotes. Ele já tem módulos prontos e pacotes de alta performance como o ggplot2. Contudo para nosso curso vamos utilizar um pacote que facilita a construção do gráfico de forma visual, que é mais intuitivo para quem está aprendendo o r.
Devemos instalar o pacote esquisse para tal, basta fazer o comando:
#install.packages("esquisse")
library(esquisse)
Feito a instalação e o carregamento, basta digitar o comando esquisser() colocando dentro o banco de dados a ser visualizado.
Este é um modelo que podemos gerar com ele:
library(ggplot2)
ggplot(dados) +
aes(x = Idade, y = Altura, fill = Sexo, colour = Sexo) +
geom_point(shape = "square open",
size = 1.5) +
scale_fill_hue(direction = 1) +
scale_color_hue(direction = 1) +
labs(x = "Idade",
y = "Altura", title = "Relação da Idade pela Altura",
subtitle = "Dataset dados", fill = "Sexo") +
theme_minimal() +
theme(plot.title = element_text(size = 16L, face = "bold"),
plot.subtitle = element_text(size = 14L,
face = "italic"), axis.title.y = element_text(size = 14L),
axis.title.x = element_text(size = 14L))
Vamos agora importar um dataset para exemplos prátios em nosso curso.
Acesso o dataset no link https://www.picostat.com/dataset/r-dataset-package-datasets-iris#:~:text=The%20iris%20data%20set%20is%20found%20in%20the,load%20the%20data%20into%20a%20variable%20called%20iris. e baixe ele no seu computador. Apos isso, importe ele aqui nos arquivos do projeto, conforme a figura abaixo:
dados <- read.csv("dataset-27524.csv")
head(dados)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
O dataset acima traz informações sobre uma planta chamada iris, onde foram feitas 150 medidas, de largura e comprimento de pétala e sépala, sendo 50 de cada uma das 3 espécies existentes. Abaixo temos uma imagem dessa flor.
Outra maneira de conhecemos o Dataset e fazermos um resumo de suas estatísticas:
summary(dados)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
## 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
## Median :5.800 Median :3.000 Median :4.350 Median :1.300
## Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
## 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
## Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
## Species
## Length:150
## Class :character
## Mode :character
##
##
##
Veja que são 150 amostras, 50 de cada espécie e temos exatamente 4 medidas de cada uma delas. Comprimento e largura da Sepala e Comprimento e lagruga da pêtala.
Agora vamos por exemplo fazer uma simples consulta. Quero criar um subconjutno do cojunto dados que tenha apenas as plantas da espécie setosa. Veja como é feito:
dados_setosa <- dados[dados$Species == "setosa",]
head(dados_setosa)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
Podemos também querer apenas plantas que tenham comprimento de sêpala “Sepal.Length” maiores que 5.8. Então fazemos:
dados[dados$Sepal.Length > 5.8,]
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 51 7.0 3.2 4.7 1.4 versicolor
## 52 6.4 3.2 4.5 1.5 versicolor
## 53 6.9 3.1 4.9 1.5 versicolor
## 55 6.5 2.8 4.6 1.5 versicolor
## 57 6.3 3.3 4.7 1.6 versicolor
## 59 6.6 2.9 4.6 1.3 versicolor
## 62 5.9 3.0 4.2 1.5 versicolor
## 63 6.0 2.2 4.0 1.0 versicolor
## 64 6.1 2.9 4.7 1.4 versicolor
## 66 6.7 3.1 4.4 1.4 versicolor
## 69 6.2 2.2 4.5 1.5 versicolor
## 71 5.9 3.2 4.8 1.8 versicolor
## 72 6.1 2.8 4.0 1.3 versicolor
## 73 6.3 2.5 4.9 1.5 versicolor
## 74 6.1 2.8 4.7 1.2 versicolor
## 75 6.4 2.9 4.3 1.3 versicolor
## 76 6.6 3.0 4.4 1.4 versicolor
## 77 6.8 2.8 4.8 1.4 versicolor
## 78 6.7 3.0 5.0 1.7 versicolor
## 79 6.0 2.9 4.5 1.5 versicolor
## 84 6.0 2.7 5.1 1.6 versicolor
## 86 6.0 3.4 4.5 1.6 versicolor
## 87 6.7 3.1 4.7 1.5 versicolor
## 88 6.3 2.3 4.4 1.3 versicolor
## 92 6.1 3.0 4.6 1.4 versicolor
## 98 6.2 2.9 4.3 1.3 versicolor
## 101 6.3 3.3 6.0 2.5 virginica
## 103 7.1 3.0 5.9 2.1 virginica
## 104 6.3 2.9 5.6 1.8 virginica
## 105 6.5 3.0 5.8 2.2 virginica
## 106 7.6 3.0 6.6 2.1 virginica
## 108 7.3 2.9 6.3 1.8 virginica
## 109 6.7 2.5 5.8 1.8 virginica
## 110 7.2 3.6 6.1 2.5 virginica
## 111 6.5 3.2 5.1 2.0 virginica
## 112 6.4 2.7 5.3 1.9 virginica
## 113 6.8 3.0 5.5 2.1 virginica
## 116 6.4 3.2 5.3 2.3 virginica
## 117 6.5 3.0 5.5 1.8 virginica
## 118 7.7 3.8 6.7 2.2 virginica
## 119 7.7 2.6 6.9 2.3 virginica
## 120 6.0 2.2 5.0 1.5 virginica
## 121 6.9 3.2 5.7 2.3 virginica
## 123 7.7 2.8 6.7 2.0 virginica
## 124 6.3 2.7 4.9 1.8 virginica
## 125 6.7 3.3 5.7 2.1 virginica
## 126 7.2 3.2 6.0 1.8 virginica
## 127 6.2 2.8 4.8 1.8 virginica
## 128 6.1 3.0 4.9 1.8 virginica
## 129 6.4 2.8 5.6 2.1 virginica
## 130 7.2 3.0 5.8 1.6 virginica
## 131 7.4 2.8 6.1 1.9 virginica
## 132 7.9 3.8 6.4 2.0 virginica
## 133 6.4 2.8 5.6 2.2 virginica
## 134 6.3 2.8 5.1 1.5 virginica
## 135 6.1 2.6 5.6 1.4 virginica
## 136 7.7 3.0 6.1 2.3 virginica
## 137 6.3 3.4 5.6 2.4 virginica
## 138 6.4 3.1 5.5 1.8 virginica
## 139 6.0 3.0 4.8 1.8 virginica
## 140 6.9 3.1 5.4 2.1 virginica
## 141 6.7 3.1 5.6 2.4 virginica
## 142 6.9 3.1 5.1 2.3 virginica
## 144 6.8 3.2 5.9 2.3 virginica
## 145 6.7 3.3 5.7 2.5 virginica
## 146 6.7 3.0 5.2 2.3 virginica
## 147 6.3 2.5 5.0 1.9 virginica
## 148 6.5 3.0 5.2 2.0 virginica
## 149 6.2 3.4 5.4 2.3 virginica
## 150 5.9 3.0 5.1 1.8 virginica
1 Em cada caso, faça uma consulta que possa retornar as seguintes informações:
vamos agora utilizar o pacote esquisse para gerar gráficos e melhorar nossas análises.
# esquisser(dados)
# Possível Gráfico
library(ggplot2)
ggplot(dados) +
aes(x = Sepal.Length, y = Petal.Length, colour = Species) +
geom_point(shape = "circle", size = 1.5) +
scale_color_hue(direction = 1) +
labs(
x = "Comprimeto da Sépala",
y = "Comprimento da Pétala",
title = "Comprimento da Sépala Vs Comprimento da Sépalada S",
subtitle = "DataSet Iris"
) +
theme_minimal() +
theme(
plot.title = element_text(size = 16L,
face = "bold"),
plot.subtitle = element_text(size = 14L),
axis.title.y = element_text(size = 14L,
face = "bold"),
axis.title.x = element_text(size = 14L,
face = "bold")
)
Existe uma maneira de deixar o gráfico totalmente interativo. Para tal utilizamos o pacote ploty, para tal, vamos instalar o pacote e depois carregálo. Abaixo temos esses códigos comentados, para que vc possa aplicar no seu script. Contudo deve retirar o # para que o R possa executá-lo.
#install.packages("plotly")
#library(plotly)
# Armazendo o gráfico num vetor:
grafico = ggplot(dados) +
aes(x = Sepal.Length, y = Petal.Length, colour = Species) +
geom_point(shape = "circle", size = 1.5) +
scale_color_hue(direction = 1) +
labs(
x = "Comprimeto da Sépala",
y = "Comprimento da Pétala",
title = "Comprimento da Sépala Vs Comprimento da Sépalada S",
subtitle = "DataSet Iris"
) +
theme_minimal() +
theme(
plot.title = element_text(size = 16L,
face = "bold"),
plot.subtitle = element_text(size = 14L),
axis.title.y = element_text(size = 14L,
face = "bold"),
axis.title.x = element_text(size = 14L,
face = "bold")
)
# Construindo a aplicação interativa:
# desmarque o # abaixo par apoderem executar a contrução do gráfico
# ggplotly(grafico)
Veja que agora vc tem um grádico que lhe traz infomrações conforme o cursos percorre seus campus, além de podemos filtrar pelas categorias de Espécies.
Para criarmos um dashboard no R iremos primeiramente instalar o pacote flexdashboard. Para prosseguir não esqueça de executar o comando install.packages(“flexdashboard”)
install.packages("flexdashboard")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.2'
## (as 'lib' is unspecified)
Uma vez instalado, não irá precisar mais executar esta função. Agora vamos começar a criar o novo aquivo com essa informação. V
No menu superior siga o caminho:
Salve o arquivo nomenado, exemplo “Meu dashboard” e clice no comando knit que faz a geração da página html. Veja na imagem abaixo para se localizar:
Possivelmente irá aparecer uma visualização padrão igual a da figura abaixo:
Agora vamos mudar alguns itens para podermos deixar o painel nas configurações que queremos para esse projeto. Ele será um dashboard no formato de story board. Assim preciamos mudar algumas vairáveis no cabeçalho e no corpo do texto… Veja abaixo o código de como deve ficar:
Na parte superior, este será o cabeçalho, mude para seu nome, fiz uma escolha também apra cores e fontes, fique a vontade para mudar se quiser.
---
title: "Capacitação MEC"
author: "Gleison Guardia"
output:
flexdashboard::flex_dashboard:
storyboard: true
---
Apos essa configuração , vamos na #chuchk# abaixo colocar os pacotes necessários para a excecução do sistema, bem como o dataset.
#```{r setup, include=FALSE}
#knitr::opts_chunk$set(echo = TRUE)
# Aqui vc coloca todas os pacotes necessários.
library(flexdashboard)
# Install thematic and un-comment for themed static plots (i.e., ggplot2)
# thematic::thematic_rmd()
dados <- read.csv("dataset-27524.csv")
library(ggplot2)
library(plotly)
#```
Não esqueça de retirar o # da primeira e última linha
Agora vamso consitruir a barra lateral de informações. Veja como é fácil:
Inputs {.sidebar}
---
Instituto Federal de Educação, Ciência e Tecnologia de Rondônia - **IFRO**
*campus* Ji-Paraná
gleison.guardia@ifro.edu.br
Vamos construir o primeiro storyboard. Nele vamos apenas adicionar uma informação qualquer
### O que é Ciência "(...) a ciência pode ser considerada um conjunto de conhecimen-tos viabilizado por meio da utilização adequada de métodos rigorosos, capazes de controlar os fenômenos e fatos estudados. A partir disso, o conhecimento pode ser fixado a objetos empíricos, por meio da utilização da observação e da experimentação. Isso tem permitido aos seres humanos controlar seus ambientes desde a sua origem, na pré-história, quando descobriram como tra-balhar metais e agricultura. (...) "(LOZADA, 2019, pg. 14) "(...) De maneira geral, a ciência pode ser definida com base em duas ideias centrais e, de certa forma, antagônicas: uma baseada no contexto e nas condições em que a ciência ocorre e se desenvolve (prática); e outra baseada na parte conceitual e metodológica da ciência (teoria)". (LOZADA, 2019, pg. 14)
No segundo iremos fazer um gráfico geral do dataset e criar um painel explicativo a direita
### Gráfico de Dispersão sobre o DataSet Iris Veja o gráfico abaixo da base de dados *iris* ```r plot(dados) ```*** * São categorias importantes de análise; * Largura e comprimento da sépala * Largura e comprimento da pétala * Três espécies de análise
No terceiro iremos azer uma sumarização dos dados:
### Sumarização dos dados do DataSet Iris Veja o Condesado de algumas informações ```r summary(iris) ``` ``` ## Sepal.Length Sepal.Width Petal.Length Petal.Width ## Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100 ## 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300 ## Median :5.800 Median :3.000 Median :4.350 Median :1.300 ## Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199 ## 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800 ## Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500 ## Species ## setosa :50 ## versicolor:50 ## virginica :50 ## ## ## ```
Na seguinte iremos fazer uma tabela modelo, que servirá como padrão para constrções de tabelas quaisquer. Também ciaremos uma coluna de comentários a direita da tabela
### Uma tabela normal com informações importantes |Nome | Idade | Altura | Sexo| |--- | --- | --- | ---| |Amanda | 25 | 1.47m | F| |Amanda | 25 | 1.47m | F| |Amanda | 25 | 1.47m | F| |Amanda | 25 | 1.47m | F| |Amanda | 25 | 1.47m | F| |Amanda | 25 | 1.47m | F| |Amanda | 25 | 1.47m | F| *** **Comentários sobre os Dados** * ASDFSADFSADf * ASDFSADFSADFSDAF * ASDFSADFSDFSDF * ASDFSDFSDFSDFSDA
Por último iremos construir um gráfico interativo do banco de dados utilizado.
### Gráfico do ggplot
```r
grafico = ggplot(dados) +
aes(x = Sepal.Length, y = Petal.Length, colour = Species) +
geom_point(shape = "circle", size = 1.5) +
scale_color_hue(direction = 1) +
labs(
x = "Comprimeto da Sépala",
y = "Comprimento da Pétala",
title = "Comprimento da Sépala Vs Comprimento da Sépalada S",
subtitle = "DataSet Iris"
) +
theme_minimal() +
theme(
plot.title = element_text(size = 16L,
face = "bold"),
plot.subtitle = element_text(size = 14L),
axis.title.y = element_text(size = 14L,
face = "bold"),
axis.title.x = element_text(size = 14L,
face = "bold")
)
# Construindo a aplicação interativa:
# desmarque o # abaixo par apoderem executar a contrução do gráfico
#ggplotly(grafico)
```
Não esqueça de retirar o # da última linah de código, para executarem o código ggplotly(grafico)
Agora só clicar no knit novamente e ver como ficou o seu dashboard.
Uma possível visualização é a apresentada na imagem abaixo:
Se seu dashboard está de acordo com o que deseja, é só clicar em publicar no ícone a direta da página, escolher rpubs e pronto. Veja abaixo a sequência das ações na imagem abaixo:
Parabéns, você acabou de publicar seu dashboard. Agora é só compartilhar seu link com quem você desejar compartilhar o material.
Abraços e sucesso
Gleison Guardia
Disponível em https://www.r-project.org/↩︎
IDE significa, em tradução livre, Ambiente Integral de Desenvolvimento e é um software criado para facilitar a vida dos programadores.↩︎
Disponível em: https://posit.co/↩︎