Estudando Conjuntos

Como dito, Aqui inicia a seção de Teoria dos Conjuntos, conceito muito importante para a construção do raciocínio de funções e principalmente análises estatísticas.

Aqui no curso de ADS é importante saber que a teoria dos conjuntos e suas leis é a base de funcionamento dos Banco de Dados. Nenhum sistema funciona sem trabalhar com este conceito.

Podemos resumir programar como sendo a manipulação técnica de dois macro conhecimentos. 1º Conceitos de funções - para construir os algoritmos do backend, que são todas as rotinas que fazem um sistema funcionar e 2º Teoria dos Conjuntos que regulamenta e permite a existência dos Banco de Dados Relacionais, principio da construção de qualquer software empresarial ou comercial.

Voçê pode ver um pouco mais em https://youtu.be/1-fyVSgvbis

Igualdade e Tipos de Conjuntos

Vamoas agora estudar um pouco da relação dos elementos de um conjunto:

Igualdade de conjuntos

Outro conceito importante é entender quando dois conjuntos são diferentes. Eles terão esta caracteristicas quando um possuir todos os elementos que o segundo. Veja o exemplo abaixo:

A <- c(0,1,2,3)
B <- 0:3
C <- 1:5
A == B
## [1] TRUE TRUE TRUE TRUE
A == C
## Warning in A == C: longer object length is not a multiple of shorter object
## length
## [1] FALSE FALSE FALSE FALSE FALSE
B == C
## Warning in B == C: longer object length is not a multiple of shorter object
## length
## [1] FALSE FALSE FALSE FALSE FALSE

Veja que neste caso, o valor de cada membro do conjunto A é Igual a um membro do Conjunto B. Nos demais casos eles não são idênticos, logo os conjuntos não são iguais.

Aprenda mais em https://youtu.be/AQKwBGw70dk

Conjuntos Vazios, Unitários e Universo

São classificação em relação a seu número de elementos. Temos um conjunto vazio quando não podemos encontrar nenhum elemento que satisfaça nossa condição. No exemplo abaixo podemos verificar esta afirmação:

A[A>3]
## numeric(0)

Veja que nenhuma valor presente no vetor A satisfaz a condição estabelecida. Assim dizemos que a resposta a essa solicitação será vazia.

Contudo, caso queiramos saber se o vetor A possui algum valor igual a 3, teremos a seguinte solução:

A[A == 3]
## [1] 3

Veja que uma das soluções, neste caso a última atende ao requisito, o que nos classifica essa solicitaçao como unitária, ou seja, possui apenas um valor como retorno.

Agora veremos quando o retorno é satisfatório para todos os valores possíveis, ou seja, o nossa resposta é igual o nosso conjunto universo de estudo.

A[A < 10]
## [1] 0 1 2 3

Neste caso temos o típico conjunto universo, ou seja, todas as respostas obtidas são as resposta possíveis.

Você pode aprofundar este conceito em https://youtu.be/u3i99KR1RWc

Subconjuntos

Neste caso tratamos como subconjuntos de um conjunto, uma solicitação que reproduz parte do conjunto principal. Veja o exemplo abaixo:

A_1 <- A[A>1 & A<3]
A_1
## [1] 2

Veja que A_1 possui algum(s) elementos de A porém nenhum que não esteja em A, assim A_1 é subconjunto de A.

Veja mais sobre este assunto em https://youtu.be/bsrKdEhg8ng

Aplicações práticas

Vamos agora conhecer um banco de dados do R que nos permitirá explorar nossos conhecimentos. O banco de dados que iremos conhecer é o iris, que traz medições e parâmetros feitos desta planta da figura abaixo:

Vamos importar o dataset e vermos as primeiras informações:

dados <- iris
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

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  
##  setosa    :50  
##  versicolor:50  
##  virginica :50  
##                 
##                 
## 

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

Exercícios Aplicados

  • 1 Em cada caso, faça uma consulta que possa retornar as seguintes informações:

      1. Crie o Subconjunto dados_setosa, com todas as informações sobre esta especie.
      1. Crie o Subconjunto dados_versicolor, com todas as informações sobre esta especie.
      1. Crie o Subconjunto dados_virginica, com todas as informações sobre esta especie.
      1. Verifique se em dados_virginica, exitem amostras com Petal.Length >= a 6.
      1. Verifique se em dados_setosa, exitem amostras com Petal.Width > 0.3