Identificação
Nome: Rhyan César Santos Dias
Matrícula: 2025100439
Disciplina: Análise Multivariada — PPGQ/IQ/UFG
Professor: Prof. Keng
# Instale os pacotes caso necessário (remova o '#'):
# install.packages(c("tidyverse", "skimr", "corrplot", "ggplot2"))
library(ggplot2)
library(dplyr)base_url <- paste0("https://archive.ics.uci.edu/ml/",
"machine-learning-databases/wine-quality/")
# Vinho tinto
wine_red <- read.csv(paste0(base_url, "winequality-red.csv"), sep = ";")
# Vinho branco
wine_white <- read.csv(paste0(base_url, "winequality-white.csv"), sep = ";")
# Verificacao rapida
dim(wine_red)#> [1] 1599 12
#> [1] 4898 12
a) Criando o vetor numérico
ph_manual:
# Crie o vetor ph_manual com os valores indicados
ph_manual <- c(3.51,3.20,3.38,3.47,3.01)
# Verifique o tipo com class() e typeof()
class(ph_manual)#> [1] "numeric"
#> [1] "double"
O R não aceita os valores na forma em que estavam escritos na atividade, por isso o caracter de separação de decimal foi alterado para “.” e o de reparação entre os valores para “,”.
b) Criando o vetor de caracteres e convertendo para fator:
# Crie o vetor tipo_amostra
tipo_amostra <- c("Tinto","Tinto","Branco","Tinto","Branco")
# Converta para fator e exiba os níveis
factor(tipo_amostra)#> [1] Tinto Tinto Branco Tinto Branco
#> Levels: Branco Tinto
Os níveis apareceram automaticamente.
c) Vetor lógico de pH ácido:
# Crie o vetor lógico ph_acido
ph_acido <- ph_manual < 3.40
# Quantas amostras tem pH < 3.40?
print(ph_acido)#> [1] FALSE TRUE TRUE FALSE TRUE
#> [1] 3
a) Extraindo subconjunto de wine_red e
convertendo para matriz:
# Extraia as 6 primeiras linhas e as colunas indicadas de wine_red
Dados_matriz <- wine_red[1:6,c(1,2,9)]
# Converta para matriz e armazene em mat_wine
mat_wine <- as.matrix(Dados_matriz)Salvei primeiro as informações requeridas em um data.frame para em seguida transformar em matriz.
b) Dimensões da matriz:
#> [1] 6 3
#> [1] 6
#> [1] 3
c) Médias por coluna e por linha:
#> fixed.acidity volatile.acidity pH
#> 8.1666667 0.6633333 3.3583333
#> 1 2 3 4 5 6
#> 3.870000 3.960000 3.940000 4.880000 3.870000 3.856667
colMeans representa a média de cada coluna, no caso, retorna os valores médios da acidez fixa, volátil e do pH.
Já o rowMeans representa a média de cada linha, sendo no caso a média dos parâmetros observados para cada amostra individualmente.
a) Inspeção de wine_red:
#> 'data.frame': 1599 obs. of 12 variables:
#> $ fixed.acidity : num 7.4 7.8 7.8 11.2 7.4 7.4 7.9 7.3 7.8 7.5 ...
#> $ volatile.acidity : num 0.7 0.88 0.76 0.28 0.7 0.66 0.6 0.65 0.58 0.5 ...
#> $ citric.acid : num 0 0 0.04 0.56 0 0 0.06 0 0.02 0.36 ...
#> $ residual.sugar : num 1.9 2.6 2.3 1.9 1.9 1.8 1.6 1.2 2 6.1 ...
#> $ chlorides : num 0.076 0.098 0.092 0.075 0.076 0.075 0.069 0.065 0.073 0.071 ...
#> $ free.sulfur.dioxide : num 11 25 15 17 11 13 15 15 9 17 ...
#> $ total.sulfur.dioxide: num 34 67 54 60 34 40 59 21 18 102 ...
#> $ density : num 0.998 0.997 0.997 0.998 0.998 ...
#> $ pH : num 3.51 3.2 3.26 3.16 3.51 3.51 3.3 3.39 3.36 3.35 ...
#> $ sulphates : num 0.56 0.68 0.65 0.58 0.56 0.56 0.46 0.47 0.57 0.8 ...
#> $ alcohol : num 9.4 9.8 9.8 9.8 9.4 9.4 9.4 10 9.5 10.5 ...
#> $ quality : int 5 5 5 6 5 5 5 7 7 5 ...
#> fixed.acidity volatile.acidity citric.acid residual.sugar chlorides
#> 1 7.4 0.70 0.00 1.9 0.076
#> 2 7.8 0.88 0.00 2.6 0.098
#> 3 7.8 0.76 0.04 2.3 0.092
#> 4 11.2 0.28 0.56 1.9 0.075
#> 5 7.4 0.70 0.00 1.9 0.076
#> 6 7.4 0.66 0.00 1.8 0.075
#> free.sulfur.dioxide total.sulfur.dioxide density pH sulphates alcohol
#> 1 11 34 0.9978 3.51 0.56 9.4
#> 2 25 67 0.9968 3.20 0.68 9.8
#> 3 15 54 0.9970 3.26 0.65 9.8
#> 4 17 60 0.9980 3.16 0.58 9.8
#> 5 11 34 0.9978 3.51 0.56 9.4
#> 6 13 40 0.9978 3.51 0.56 9.4
#> quality
#> 1 5
#> 2 5
#> 3 5
#> 4 6
#> 5 5
#> 6 5
#> [1] 1599 12
Ao todo existem 1599 observações, ou linhas, sendo referentes cada uma a uma amostra. Tem-se ao todo 12 colunas, apresentadas como variáveis, sendo 11 delas classificadas como variáveis numéricas, e uma (qualidade) como variável inteira.
Resposta: O banco contém 1599 amostras e 12 variáveis. (complete aqui)
b) Adicionando coluna qualidade_cat a
wine_red:
# Crie a coluna qualidade_cat com ifelse() ou cut()
wine_red$quality_cat <- cut(wine_red$quality,
breaks = c(-Inf, 5, 6, Inf),
labels = c("baixa", "media", "alta"))c) Filtrando vinhos de qualidade alta:
# Crie wine_red_alto com apenas vinhos de qualidade alta
wine_red_alto <- wine_red[wine_red$quality_cat == "alta",]
# Quantas amostras?
print(wine_red_alto)#> fixed.acidity volatile.acidity citric.acid residual.sugar chlorides
#> 8 7.3 0.650 0.00 1.20 0.065
#> 9 7.8 0.580 0.02 2.00 0.073
#> 17 8.5 0.280 0.56 1.80 0.092
#> 38 8.1 0.380 0.28 2.10 0.066
#> 63 7.5 0.520 0.16 1.90 0.085
#> 129 8.0 0.590 0.16 1.80 0.065
#> 199 5.4 0.835 0.08 1.20 0.046
#> 201 9.6 0.320 0.47 1.40 0.056
#> 206 12.8 0.300 0.74 2.60 0.095
#> 207 12.8 0.300 0.74 2.60 0.095
#> 210 11.0 0.300 0.58 2.10 0.054
#> 231 5.2 0.480 0.04 1.60 0.054
#> 244 15.0 0.210 0.44 2.20 0.075
#> 245 15.0 0.210 0.44 2.20 0.075
#> 260 10.0 0.310 0.47 2.60 0.085
#> 266 11.8 0.260 0.52 1.80 0.071
#> 268 7.9 0.350 0.46 3.60 0.078
#> 279 10.3 0.320 0.45 6.40 0.073
#> 280 8.9 0.400 0.32 5.60 0.087
#> 282 7.7 0.270 0.68 3.50 0.358
#> 284 8.9 0.400 0.32 5.60 0.087
#> 289 8.7 0.520 0.09 2.50 0.091
#> 291 8.7 0.520 0.09 2.50 0.091
#> 319 9.8 0.660 0.39 3.20 0.083
#> 321 9.8 0.660 0.39 3.20 0.083
#> 327 11.6 0.530 0.66 3.65 0.121
#> 335 7.9 0.650 0.01 2.50 0.078
#> 336 11.9 0.695 0.53 3.40 0.128
#> 340 12.5 0.280 0.54 2.30 0.082
#> 347 6.6 0.815 0.02 2.70 0.072
#> 358 10.5 0.420 0.66 2.95 0.116
#> 359 11.9 0.430 0.66 3.10 0.109
#> 365 12.8 0.615 0.66 5.80 0.083
#> 367 12.8 0.615 0.66 5.80 0.083
#> 370 9.4 0.270 0.53 2.40 0.074
#> 376 11.5 0.540 0.71 4.40 0.124
#> 378 9.4 0.270 0.53 2.40 0.074
#> 390 9.6 0.380 0.31 2.50 0.096
#> 391 5.6 0.850 0.05 1.40 0.045
#> 396 12.0 0.370 0.76 4.20 0.066
#> 408 12.0 0.390 0.66 3.00 0.093
#> 414 9.9 0.400 0.53 6.70 0.097
#> 421 9.5 0.560 0.33 2.40 0.089
#> 422 6.6 0.840 0.03 2.30 0.059
#> 424 10.5 0.240 0.47 2.10 0.066
#> 426 6.6 0.840 0.03 2.30 0.059
#> 431 10.5 0.240 0.47 2.10 0.066
#> 441 12.6 0.310 0.72 2.20 0.072
#> 443 15.6 0.685 0.76 3.70 0.100
#> 444 10.0 0.440 0.49 2.70 0.077
#> 445 5.3 0.570 0.01 1.70 0.054
#> 454 10.4 0.330 0.63 2.80 0.084
#> 456 11.3 0.620 0.67 5.20 0.086
#> 459 10.4 0.330 0.63 2.80 0.084
#> 482 9.4 0.300 0.56 2.80 0.080
#> 489 11.6 0.320 0.55 2.80 0.081
#> 492 9.2 0.410 0.50 2.50 0.055
#> 493 8.9 0.400 0.51 2.60 0.052
#> 496 10.7 0.350 0.53 2.60 0.070
#> 499 10.7 0.350 0.53 2.60 0.070
#> 502 10.4 0.440 0.73 6.55 0.074
#> 503 10.4 0.440 0.73 6.55 0.074
#> 504 10.5 0.260 0.47 1.90 0.078
#> 505 10.5 0.240 0.42 1.80 0.077
#> 506 10.2 0.490 0.63 2.90 0.072
#> 507 10.4 0.240 0.46 1.80 0.075
#> 510 13.3 0.290 0.75 2.80 0.084
#> 514 10.5 0.510 0.64 2.40 0.107
#> 515 10.5 0.510 0.64 2.40 0.107
#> 539 12.9 0.350 0.49 5.80 0.066
#> 584 12.0 0.280 0.49 1.90 0.074
#> 585 11.8 0.330 0.49 3.40 0.093
#> 587 11.1 0.310 0.49 2.70 0.094
#> 589 5.0 0.420 0.24 2.00 0.060
#> 590 10.2 0.290 0.49 2.60 0.059
#> 607 9.4 0.410 0.48 4.60 0.072
#> 639 7.7 0.915 0.12 2.20 0.143
#> 646 7.8 0.640 0.10 6.00 0.115
#> 649 8.7 0.480 0.30 2.80 0.066
#> 658 12.0 0.500 0.59 1.40 0.073
#> 798 9.3 0.370 0.44 1.60 0.038
#> 803 5.1 0.585 0.00 1.70 0.044
#> 806 8.2 0.280 0.40 2.40 0.052
#> 807 8.4 0.250 0.39 2.00 0.041
#> 808 8.2 0.280 0.40 2.40 0.052
#> 822 4.9 0.420 0.00 2.10 0.048
#> 827 7.5 0.270 0.34 2.30 0.050
#> 829 7.8 0.570 0.09 2.30 0.065
#> 837 6.7 0.280 0.28 2.40 0.012
#> 838 6.7 0.280 0.28 2.40 0.012
#> 839 10.1 0.310 0.35 1.60 0.075
#> 841 11.1 0.420 0.47 2.65 0.085
#> 856 7.6 0.735 0.02 2.50 0.071
#> 858 8.2 0.260 0.34 2.50 0.073
#> 859 11.7 0.280 0.47 1.70 0.054
#> 874 9.1 0.210 0.37 1.60 0.067
#> 875 10.4 0.380 0.46 2.10 0.104
#> 876 8.8 0.310 0.40 2.80 0.109
#> 888 10.7 0.520 0.38 2.60 0.066
#> 897 8.3 0.310 0.39 2.40 0.078
#> 899 8.3 0.310 0.39 2.40 0.078
#> 902 7.4 0.635 0.10 2.40 0.080
#> 903 7.4 0.635 0.10 2.40 0.080
#> 904 6.8 0.590 0.06 6.00 0.060
#> 905 6.8 0.590 0.06 6.00 0.060
#> 914 9.4 0.395 0.46 4.60 0.094
#> 926 8.6 0.220 0.36 1.90 0.064
#> 930 8.7 0.330 0.38 3.30 0.063
#> 939 7.2 0.380 0.38 2.80 0.068
#> 941 9.6 0.330 0.52 2.20 0.074
#> 942 9.9 0.270 0.49 5.00 0.082
#> 943 10.1 0.430 0.40 2.60 0.092
#> 944 9.8 0.500 0.34 2.30 0.094
#> 945 8.3 0.300 0.49 3.80 0.090
#> 946 10.2 0.440 0.42 2.00 0.071
#> 947 10.2 0.440 0.58 4.10 0.092
#> 948 8.3 0.280 0.48 2.10 0.093
#> 949 8.9 0.120 0.45 1.80 0.075
#> 950 8.9 0.120 0.45 1.80 0.075
#> 951 8.9 0.120 0.45 1.80 0.075
#> 952 8.3 0.280 0.48 2.10 0.093
#> 953 8.2 0.310 0.40 2.20 0.058
#> 954 10.2 0.340 0.48 2.10 0.052
#> 959 6.4 0.570 0.12 2.30 0.120
#> 967 9.0 0.380 0.41 2.40 0.103
#> 973 10.1 0.380 0.50 2.40 0.104
#> 975 8.8 0.330 0.41 5.90 0.073
#> 979 7.0 0.400 0.32 3.60 0.061
#> 987 9.8 0.340 0.39 1.40 0.066
#> 997 5.6 0.660 0.00 2.20 0.087
#> 998 5.6 0.660 0.00 2.20 0.087
#> 1001 7.5 0.430 0.30 2.20 0.062
#> 1002 9.9 0.350 0.38 1.50 0.058
#> 1003 9.1 0.290 0.33 2.05 0.063
#> 1004 6.8 0.360 0.32 1.80 0.067
#> 1006 6.8 0.360 0.32 1.80 0.067
#> 1007 9.1 0.290 0.33 2.05 0.063
#> 1008 9.1 0.300 0.34 2.00 0.064
#> 1009 8.9 0.350 0.40 3.60 0.110
#> 1011 8.9 0.280 0.45 1.70 0.067
#> 1017 8.9 0.380 0.40 2.20 0.068
#> 1025 7.7 0.580 0.01 1.80 0.088
#> 1030 7.7 0.580 0.01 1.80 0.088
#> 1031 7.1 0.590 0.00 2.10 0.091
#> 1032 7.3 0.550 0.01 1.80 0.093
#> 1036 10.1 0.370 0.34 2.40 0.085
#> 1037 7.6 0.310 0.34 2.50 0.082
#> 1039 8.7 0.410 0.41 6.20 0.078
#> 1044 9.5 0.390 0.41 8.90 0.069
#> 1054 8.3 0.330 0.42 2.30 0.070
#> 1057 8.9 0.480 0.53 4.00 0.101
#> 1059 9.9 0.530 0.57 2.40 0.093
#> 1060 8.9 0.480 0.53 4.00 0.101
#> 1062 9.1 0.400 0.50 1.80 0.071
#> 1067 6.6 0.520 0.08 2.40 0.070
#> 1068 11.1 0.310 0.53 2.20 0.060
#> 1069 11.1 0.310 0.53 2.20 0.060
#> 1071 9.3 0.330 0.45 1.50 0.057
#> 1076 9.1 0.250 0.34 2.00 0.071
#> 1080 7.9 0.300 0.68 8.30 0.050
#> 1082 7.9 0.300 0.68 8.30 0.050
#> 1087 8.5 0.340 0.40 4.70 0.055
#> 1089 11.6 0.410 0.54 1.50 0.095
#> 1090 11.6 0.410 0.54 1.50 0.095
#> 1091 10.0 0.260 0.54 1.90 0.083
#> 1094 9.2 0.310 0.36 2.20 0.079
#> 1099 8.0 0.310 0.45 2.10 0.216
#> 1108 9.1 0.300 0.41 2.00 0.068
#> 1112 5.4 0.420 0.27 2.00 0.092
#> 1121 7.9 0.540 0.34 2.50 0.076
#> 1126 8.8 0.240 0.35 1.70 0.055
#> 1133 7.4 0.360 0.34 1.80 0.075
#> 1134 7.2 0.480 0.07 5.50 0.089
#> 1135 8.5 0.280 0.35 1.70 0.061
#> 1148 10.0 0.410 0.45 6.20 0.071
#> 1151 8.2 0.330 0.32 2.80 0.067
#> 1157 8.5 0.180 0.51 1.75 0.071
#> 1158 5.1 0.510 0.18 2.10 0.042
#> 1161 10.6 0.360 0.57 2.30 0.087
#> 1163 8.5 0.320 0.42 2.30 0.075
#> 1168 8.2 0.330 0.39 2.50 0.074
#> 1178 7.1 0.660 0.00 2.40 0.052
#> 1193 7.2 0.250 0.37 2.50 0.063
#> 1202 7.9 0.340 0.36 1.90 0.065
#> 1203 8.6 0.420 0.39 1.80 0.068
#> 1205 7.2 0.360 0.46 2.10 0.074
#> 1206 7.2 0.360 0.46 2.10 0.074
#> 1207 7.2 0.360 0.46 2.10 0.074
#> 1209 7.2 0.360 0.46 2.10 0.074
#> 1210 6.2 0.390 0.43 2.00 0.071
#> 1229 5.1 0.420 0.00 1.80 0.044
#> 1270 5.5 0.490 0.03 1.80 0.044
#> 1280 9.8 0.300 0.39 1.70 0.062
#> 1324 9.1 0.360 0.39 1.80 0.060
#> 1399 7.0 0.600 0.12 2.20 0.083
#> 1404 7.2 0.330 0.33 1.70 0.061
#> 1406 7.7 0.280 0.30 2.00 0.062
#> 1409 8.1 0.290 0.36 2.20 0.048
#> 1418 7.3 0.340 0.33 2.50 0.064
#> 1434 6.1 0.400 0.16 1.80 0.069
#> 1441 7.2 0.370 0.32 2.00 0.062
#> 1450 7.2 0.380 0.31 2.00 0.056
#> 1451 7.2 0.370 0.32 2.00 0.062
#> 1452 7.8 0.320 0.44 2.70 0.104
#> 1453 6.6 0.580 0.02 2.00 0.062
#> 1460 7.9 0.200 0.35 1.70 0.054
#> 1467 7.3 0.480 0.32 2.10 0.062
#> 1469 7.3 0.480 0.32 2.10 0.062
#> 1476 5.3 0.470 0.11 2.20 0.048
#> 1478 5.3 0.470 0.11 2.20 0.048
#> 1495 6.4 0.310 0.09 1.40 0.066
#> 1535 6.6 0.560 0.14 2.40 0.064
#> 1542 7.4 0.250 0.29 2.20 0.054
#> 1545 8.4 0.370 0.43 2.30 0.063
#> 1550 7.4 0.360 0.30 1.80 0.074
#> 1556 7.0 0.560 0.17 1.70 0.065
#> 1585 6.7 0.320 0.44 2.40 0.061
#> free.sulfur.dioxide total.sulfur.dioxide density pH sulphates alcohol
#> 8 15.0 21 0.99460 3.39 0.47 10.00000
#> 9 9.0 18 0.99680 3.36 0.57 9.50000
#> 17 35.0 103 0.99690 3.30 0.75 10.50000
#> 38 13.0 30 0.99680 3.23 0.73 9.70000
#> 63 12.0 35 0.99680 3.38 0.62 9.50000
#> 129 3.0 16 0.99620 3.42 0.92 10.50000
#> 199 13.0 93 0.99240 3.57 0.85 13.00000
#> 201 9.0 24 0.99695 3.22 0.82 10.30000
#> 206 9.0 28 0.99940 3.20 0.77 10.80000
#> 207 9.0 28 0.99940 3.20 0.77 10.80000
#> 210 7.0 19 0.99800 3.31 0.88 10.50000
#> 231 19.0 106 0.99270 3.54 0.62 12.20000
#> 244 10.0 24 1.00005 3.07 0.84 9.20000
#> 245 10.0 24 1.00005 3.07 0.84 9.20000
#> 260 14.0 33 0.99965 3.36 0.80 10.50000
#> 266 6.0 10 0.99680 3.20 0.72 10.20000
#> 268 15.0 37 0.99730 3.35 0.86 12.80000
#> 279 5.0 13 0.99760 3.23 0.82 12.60000
#> 280 10.0 47 0.99910 3.38 0.77 10.50000
#> 282 5.0 10 0.99720 3.25 1.08 9.90000
#> 284 10.0 47 0.99910 3.38 0.77 10.50000
#> 289 20.0 49 0.99760 3.34 0.86 10.60000
#> 291 20.0 49 0.99760 3.34 0.86 10.60000
#> 319 21.0 59 0.99890 3.37 0.71 11.50000
#> 321 21.0 59 0.99890 3.37 0.71 11.50000
#> 327 6.0 14 0.99780 3.05 0.74 11.50000
#> 335 17.0 38 0.99630 3.34 0.74 11.70000
#> 336 7.0 21 0.99920 3.17 0.84 12.20000
#> 340 12.0 29 0.99970 3.11 1.36 9.80000
#> 347 17.0 34 0.99550 3.58 0.89 12.30000
#> 358 12.0 29 0.99700 3.24 0.75 11.70000
#> 359 10.0 23 1.00000 3.15 0.85 10.40000
#> 365 7.0 42 1.00220 3.07 0.73 10.00000
#> 367 7.0 42 1.00220 3.07 0.73 10.00000
#> 370 6.0 18 0.99620 3.20 1.13 12.00000
#> 376 6.0 15 0.99840 3.01 0.83 11.80000
#> 378 6.0 18 0.99620 3.20 1.13 12.00000
#> 390 16.0 49 0.99820 3.19 0.70 10.00000
#> 391 12.0 88 0.99240 3.56 0.82 12.90000
#> 396 7.0 38 1.00040 3.22 0.60 13.00000
#> 408 12.0 30 0.99960 3.18 0.63 10.80000
#> 414 6.0 19 0.99860 3.27 0.82 11.70000
#> 421 35.0 67 0.99720 3.28 0.73 11.80000
#> 422 32.0 48 0.99520 3.52 0.56 12.30000
#> 424 6.0 24 0.99780 3.15 0.90 11.00000
#> 426 32.0 48 0.99520 3.52 0.56 12.30000
#> 431 6.0 24 0.99780 3.15 0.90 11.00000
#> 441 6.0 29 0.99870 2.88 0.82 9.80000
#> 443 6.0 43 1.00320 2.95 0.68 11.20000
#> 444 11.0 19 0.99630 3.23 0.63 11.60000
#> 445 5.0 27 0.99340 3.57 0.84 12.50000
#> 454 5.0 22 0.99980 3.26 0.74 11.20000
#> 456 6.0 19 0.99880 3.22 0.69 13.40000
#> 459 5.0 22 0.99980 3.26 0.74 11.20000
#> 482 6.0 17 0.99640 3.15 0.92 11.70000
#> 489 35.0 67 1.00020 3.32 0.92 10.80000
#> 492 12.0 25 0.99520 3.34 0.79 13.30000
#> 493 13.0 27 0.99500 3.32 0.90 13.40000
#> 496 5.0 16 0.99720 3.15 0.65 11.00000
#> 499 5.0 16 0.99720 3.15 0.65 11.00000
#> 502 38.0 76 0.99900 3.17 0.85 12.00000
#> 503 38.0 76 0.99900 3.17 0.85 12.00000
#> 504 6.0 24 0.99760 3.18 1.04 10.90000
#> 505 6.0 22 0.99760 3.21 1.05 10.80000
#> 506 10.0 26 0.99680 3.16 0.78 12.50000
#> 507 6.0 21 0.99760 3.25 1.02 10.80000
#> 510 23.0 43 0.99860 3.04 0.68 11.40000
#> 514 6.0 15 0.99730 3.09 0.66 11.80000
#> 515 6.0 15 0.99730 3.09 0.66 11.80000
#> 539 5.0 35 1.00140 3.20 0.66 12.00000
#> 584 10.0 21 0.99760 2.98 0.66 9.90000
#> 585 54.0 80 1.00020 3.30 0.76 10.70000
#> 587 16.0 47 0.99860 3.12 1.02 10.60000
#> 589 19.0 50 0.99170 3.72 0.74 14.00000
#> 590 5.0 13 0.99760 3.05 0.74 10.50000
#> 607 10.0 20 0.99730 3.34 0.79 12.20000
#> 639 7.0 23 0.99640 3.35 0.65 10.20000
#> 646 5.0 11 0.99840 3.37 0.69 10.10000
#> 649 10.0 28 0.99640 3.33 0.67 11.20000
#> 658 23.0 42 0.99800 2.92 0.68 10.50000
#> 798 21.0 42 0.99526 3.24 0.81 10.80000
#> 803 14.0 86 0.99264 3.56 0.94 12.90000
#> 806 4.0 10 0.99356 3.33 0.70 12.80000
#> 807 4.0 10 0.99386 3.27 0.71 12.50000
#> 808 4.0 10 0.99356 3.33 0.70 12.80000
#> 822 16.0 42 0.99154 3.71 0.74 14.00000
#> 827 4.0 8 0.99510 3.40 0.64 11.00000
#> 829 34.0 45 0.99417 3.46 0.74 12.70000
#> 837 36.0 100 0.99064 3.26 0.39 11.70000
#> 838 36.0 100 0.99064 3.26 0.39 11.70000
#> 839 9.0 28 0.99672 3.24 0.83 11.20000
#> 841 9.0 34 0.99736 3.24 0.77 12.10000
#> 856 10.0 14 0.99538 3.51 0.71 11.70000
#> 858 16.0 47 0.99594 3.40 0.78 11.30000
#> 859 17.0 32 0.99686 3.15 0.67 10.60000
#> 874 6.0 10 0.99552 3.23 0.58 11.10000
#> 875 6.0 10 0.99664 3.12 0.65 11.80000
#> 876 7.0 16 0.99614 3.31 0.79 11.80000
#> 888 29.0 56 0.99577 3.15 0.79 12.10000
#> 897 17.0 43 0.99444 3.31 0.77 12.50000
#> 899 17.0 43 0.99444 3.31 0.77 12.50000
#> 902 16.0 33 0.99736 3.58 0.69 10.80000
#> 903 16.0 33 0.99736 3.58 0.69 10.80000
#> 904 11.0 18 0.99620 3.41 0.59 10.80000
#> 905 11.0 18 0.99620 3.41 0.59 10.80000
#> 914 3.0 10 0.99639 3.27 0.64 12.20000
#> 926 53.0 77 0.99604 3.47 0.87 11.00000
#> 930 10.0 19 0.99468 3.30 0.73 12.00000
#> 939 23.0 42 0.99356 3.34 0.72 12.90000
#> 941 13.0 25 0.99509 3.36 0.76 12.40000
#> 942 9.0 17 0.99484 3.19 0.52 12.50000
#> 943 13.0 52 0.99834 3.22 0.64 10.00000
#> 944 10.0 45 0.99864 3.24 0.60 9.70000
#> 945 11.0 24 0.99498 3.27 0.64 12.10000
#> 946 7.0 20 0.99566 3.14 0.79 11.10000
#> 947 11.0 24 0.99745 3.29 0.99 12.00000
#> 948 6.0 12 0.99408 3.26 0.62 12.40000
#> 949 10.0 21 0.99552 3.41 0.76 11.90000
#> 950 10.0 21 0.99552 3.41 0.76 11.90000
#> 951 10.0 21 0.99552 3.41 0.76 11.90000
#> 952 6.0 12 0.99408 3.26 0.62 12.40000
#> 953 6.0 10 0.99536 3.31 0.68 11.20000
#> 954 5.0 9 0.99458 3.20 0.69 12.10000
#> 959 25.0 36 0.99519 3.47 0.71 11.30000
#> 967 6.0 10 0.99604 3.13 0.58 11.90000
#> 973 6.0 13 0.99643 3.22 0.65 11.60000
#> 975 7.0 13 0.99658 3.30 0.62 12.10000
#> 979 9.0 29 0.99416 3.28 0.49 11.30000
#> 987 3.0 7 0.99470 3.19 0.55 11.40000
#> 997 3.0 11 0.99378 3.71 0.63 12.80000
#> 998 3.0 11 0.99378 3.71 0.63 12.80000
#> 1001 6.0 12 0.99495 3.44 0.72 11.50000
#> 1002 31.0 47 0.99676 3.26 0.82 10.60000
#> 1003 13.0 27 0.99516 3.26 0.84 11.70000
#> 1004 4.0 8 0.99280 3.36 0.55 12.80000
#> 1006 4.0 8 0.99280 3.36 0.55 12.80000
#> 1007 13.0 27 0.99516 3.26 0.84 11.70000
#> 1008 12.0 25 0.99516 3.26 0.84 11.70000
#> 1009 12.0 24 0.99549 3.23 0.70 12.00000
#> 1011 7.0 12 0.99354 3.25 0.55 12.30000
#> 1017 12.0 28 0.99486 3.27 0.75 12.60000
#> 1025 12.0 18 0.99568 3.32 0.56 10.50000
#> 1030 12.0 18 0.99568 3.32 0.56 10.50000
#> 1031 9.0 14 0.99488 3.42 0.55 11.50000
#> 1032 9.0 15 0.99514 3.35 0.58 11.00000
#> 1036 5.0 17 0.99683 3.17 0.65 10.60000
#> 1037 26.0 35 0.99356 3.22 0.59 12.50000
#> 1039 25.0 42 0.99530 3.24 0.77 12.60000
#> 1044 18.0 39 0.99859 3.29 0.81 10.90000
#> 1054 9.0 20 0.99426 3.38 0.77 12.70000
#> 1057 3.0 10 0.99586 3.21 0.59 12.10000
#> 1059 30.0 52 0.99710 3.19 0.76 11.60000
#> 1060 3.0 10 0.99586 3.21 0.59 12.10000
#> 1062 7.0 16 0.99462 3.21 0.69 12.50000
#> 1067 13.0 26 0.99358 3.40 0.72 12.50000
#> 1068 3.0 10 0.99572 3.02 0.83 10.90000
#> 1069 3.0 10 0.99572 3.02 0.83 10.90000
#> 1071 19.0 37 0.99498 3.18 0.89 11.10000
#> 1076 45.0 67 0.99769 3.44 0.86 10.20000
#> 1080 37.5 278 0.99316 3.01 0.51 12.30000
#> 1082 37.5 289 0.99316 3.01 0.51 12.30000
#> 1087 3.0 9 0.99738 3.38 0.66 11.60000
#> 1089 22.0 41 0.99735 3.02 0.76 9.90000
#> 1090 22.0 41 0.99735 3.02 0.76 9.90000
#> 1091 42.0 74 0.99451 2.98 0.63 11.80000
#> 1094 11.0 31 0.99615 3.33 0.86 12.00000
#> 1099 5.0 16 0.99358 3.15 0.81 12.50000
#> 1108 10.0 24 0.99523 3.27 0.85 11.70000
#> 1112 23.0 55 0.99471 3.78 0.64 12.30000
#> 1121 8.0 17 0.99235 3.20 0.72 13.10000
#> 1126 13.0 27 0.99394 3.14 0.59 11.30000
#> 1133 18.0 38 0.99330 3.38 0.88 13.60000
#> 1134 10.0 18 0.99684 3.37 0.68 11.20000
#> 1135 6.0 15 0.99524 3.30 0.74 11.80000
#> 1148 6.0 14 0.99702 3.21 0.49 11.80000
#> 1151 4.0 12 0.99473 3.30 0.76 12.80000
#> 1157 45.0 88 0.99524 3.33 0.76 11.80000
#> 1158 16.0 101 0.99240 3.46 0.87 12.90000
#> 1161 6.0 20 0.99676 3.14 0.72 11.10000
#> 1163 12.0 19 0.99434 3.14 0.71 11.80000
#> 1168 29.0 48 0.99528 3.32 0.88 12.40000
#> 1178 6.0 11 0.99318 3.35 0.66 12.70000
#> 1193 11.0 41 0.99439 3.52 0.80 12.40000
#> 1202 5.0 10 0.99419 3.27 0.54 11.20000
#> 1203 6.0 12 0.99516 3.35 0.69 11.70000
#> 1205 24.0 44 0.99534 3.40 0.85 11.00000
#> 1206 24.0 44 0.99534 3.40 0.85 11.00000
#> 1207 24.0 44 0.99534 3.40 0.85 11.00000
#> 1209 24.0 44 0.99534 3.40 0.85 11.00000
#> 1210 14.0 24 0.99428 3.45 0.87 11.20000
#> 1229 18.0 88 0.99157 3.68 0.73 13.60000
#> 1270 28.0 87 0.99080 3.50 0.82 14.00000
#> 1280 3.0 9 0.99480 3.14 0.57 11.50000
#> 1324 21.0 55 0.99495 3.18 0.82 11.00000
#> 1399 13.0 28 0.99660 3.52 0.62 10.20000
#> 1404 3.0 13 0.99600 3.23 1.10 10.00000
#> 1406 18.0 34 0.99520 3.28 0.90 11.30000
#> 1409 35.0 53 0.99500 3.27 1.01 12.40000
#> 1418 21.0 37 0.99520 3.35 0.77 12.10000
#> 1434 11.0 25 0.99550 3.42 0.74 10.10000
#> 1441 15.0 28 0.99470 3.23 0.73 11.30000
#> 1450 15.0 29 0.99472 3.23 0.76 11.30000
#> 1451 15.0 28 0.99470 3.23 0.73 11.30000
#> 1452 8.0 17 0.99732 3.33 0.78 11.00000
#> 1453 37.0 53 0.99374 3.35 0.76 11.60000
#> 1460 7.0 15 0.99458 3.32 0.80 11.90000
#> 1467 31.0 54 0.99728 3.30 0.65 10.00000
#> 1469 31.0 54 0.99728 3.30 0.65 10.00000
#> 1476 16.0 89 0.99182 3.54 0.88 13.56667
#> 1478 16.0 89 0.99182 3.54 0.88 13.60000
#> 1495 15.0 28 0.99459 3.42 0.70 10.00000
#> 1535 13.0 29 0.99397 3.42 0.62 11.70000
#> 1542 19.0 49 0.99666 3.40 0.76 10.90000
#> 1545 12.0 19 0.99550 3.17 0.81 11.20000
#> 1550 17.0 24 0.99419 3.24 0.70 11.40000
#> 1556 15.0 24 0.99514 3.44 0.68 10.55000
#> 1585 24.0 34 0.99484 3.29 0.80 11.60000
#> quality quality_cat
#> 8 7 alta
#> 9 7 alta
#> 17 7 alta
#> 38 7 alta
#> 63 7 alta
#> 129 7 alta
#> 199 7 alta
#> 201 7 alta
#> 206 7 alta
#> 207 7 alta
#> 210 7 alta
#> 231 7 alta
#> 244 7 alta
#> 245 7 alta
#> 260 7 alta
#> 266 7 alta
#> 268 8 alta
#> 279 8 alta
#> 280 7 alta
#> 282 7 alta
#> 284 7 alta
#> 289 7 alta
#> 291 7 alta
#> 319 7 alta
#> 321 7 alta
#> 327 7 alta
#> 335 7 alta
#> 336 7 alta
#> 340 7 alta
#> 347 7 alta
#> 358 7 alta
#> 359 7 alta
#> 365 7 alta
#> 367 7 alta
#> 370 7 alta
#> 376 7 alta
#> 378 7 alta
#> 390 7 alta
#> 391 8 alta
#> 396 7 alta
#> 408 7 alta
#> 414 7 alta
#> 421 7 alta
#> 422 7 alta
#> 424 7 alta
#> 426 7 alta
#> 431 7 alta
#> 441 8 alta
#> 443 7 alta
#> 444 7 alta
#> 445 7 alta
#> 454 7 alta
#> 456 8 alta
#> 459 7 alta
#> 482 8 alta
#> 489 7 alta
#> 492 7 alta
#> 493 7 alta
#> 496 8 alta
#> 499 8 alta
#> 502 7 alta
#> 503 7 alta
#> 504 7 alta
#> 505 7 alta
#> 506 7 alta
#> 507 7 alta
#> 510 7 alta
#> 514 7 alta
#> 515 7 alta
#> 539 7 alta
#> 584 7 alta
#> 585 7 alta
#> 587 7 alta
#> 589 8 alta
#> 590 7 alta
#> 607 7 alta
#> 639 7 alta
#> 646 7 alta
#> 649 7 alta
#> 658 7 alta
#> 798 7 alta
#> 803 7 alta
#> 806 7 alta
#> 807 7 alta
#> 808 7 alta
#> 822 7 alta
#> 827 7 alta
#> 829 8 alta
#> 837 7 alta
#> 838 7 alta
#> 839 7 alta
#> 841 7 alta
#> 856 7 alta
#> 858 7 alta
#> 859 7 alta
#> 874 7 alta
#> 875 7 alta
#> 876 7 alta
#> 888 7 alta
#> 897 7 alta
#> 899 7 alta
#> 902 7 alta
#> 903 7 alta
#> 904 7 alta
#> 905 7 alta
#> 914 7 alta
#> 926 7 alta
#> 930 7 alta
#> 939 7 alta
#> 941 7 alta
#> 942 7 alta
#> 943 7 alta
#> 944 7 alta
#> 945 7 alta
#> 946 7 alta
#> 947 7 alta
#> 948 7 alta
#> 949 7 alta
#> 950 7 alta
#> 951 7 alta
#> 952 7 alta
#> 953 7 alta
#> 954 7 alta
#> 959 7 alta
#> 967 7 alta
#> 973 7 alta
#> 975 7 alta
#> 979 7 alta
#> 987 7 alta
#> 997 7 alta
#> 998 7 alta
#> 1001 7 alta
#> 1002 7 alta
#> 1003 7 alta
#> 1004 7 alta
#> 1006 7 alta
#> 1007 7 alta
#> 1008 7 alta
#> 1009 7 alta
#> 1011 7 alta
#> 1017 7 alta
#> 1025 7 alta
#> 1030 7 alta
#> 1031 7 alta
#> 1032 7 alta
#> 1036 7 alta
#> 1037 7 alta
#> 1039 7 alta
#> 1044 7 alta
#> 1054 7 alta
#> 1057 7 alta
#> 1059 7 alta
#> 1060 7 alta
#> 1062 8 alta
#> 1067 7 alta
#> 1068 7 alta
#> 1069 7 alta
#> 1071 7 alta
#> 1076 7 alta
#> 1080 7 alta
#> 1082 7 alta
#> 1087 7 alta
#> 1089 7 alta
#> 1090 7 alta
#> 1091 8 alta
#> 1094 7 alta
#> 1099 7 alta
#> 1108 7 alta
#> 1112 7 alta
#> 1121 8 alta
#> 1126 7 alta
#> 1133 7 alta
#> 1134 7 alta
#> 1135 7 alta
#> 1148 7 alta
#> 1151 7 alta
#> 1157 7 alta
#> 1158 7 alta
#> 1161 7 alta
#> 1163 7 alta
#> 1168 7 alta
#> 1178 7 alta
#> 1193 7 alta
#> 1202 7 alta
#> 1203 8 alta
#> 1205 7 alta
#> 1206 7 alta
#> 1207 7 alta
#> 1209 7 alta
#> 1210 7 alta
#> 1229 7 alta
#> 1270 8 alta
#> 1280 7 alta
#> 1324 7 alta
#> 1399 7 alta
#> 1404 8 alta
#> 1406 7 alta
#> 1409 7 alta
#> 1418 7 alta
#> 1434 7 alta
#> 1441 7 alta
#> 1450 8 alta
#> 1451 7 alta
#> 1452 7 alta
#> 1453 7 alta
#> 1460 7 alta
#> 1467 7 alta
#> 1469 7 alta
#> 1476 7 alta
#> 1478 7 alta
#> 1495 7 alta
#> 1535 7 alta
#> 1542 7 alta
#> 1545 7 alta
#> 1550 8 alta
#> 1556 7 alta
#> 1585 7 alta
No total, 217 amostras foram filtradas por serem classificadas como alta qualidade.
d) Ordenando por teor alcoólico:
# Ordene wine_red pelo teor de alcool (decrescente) e exiba as 5 primeiras linhas
wine_red %>% dplyr::arrange(desc(alcohol)) %>% head(5)#> fixed.acidity volatile.acidity citric.acid residual.sugar chlorides
#> 1 15.9 0.36 0.65 7.5 0.096
#> 2 5.2 0.34 0.00 1.8 0.050
#> 3 5.2 0.34 0.00 1.8 0.050
#> 4 8.8 0.46 0.45 2.6 0.065
#> 5 5.0 0.42 0.24 2.0 0.060
#> free.sulfur.dioxide total.sulfur.dioxide density pH sulphates alcohol
#> 1 22 71 0.9976 2.98 0.84 14.9
#> 2 27 63 0.9916 3.68 0.79 14.0
#> 3 27 63 0.9916 3.68 0.79 14.0
#> 4 7 18 0.9947 3.32 0.79 14.0
#> 5 19 50 0.9917 3.72 0.74 14.0
#> quality quality_cat
#> 1 5 baixa
#> 2 6 media
#> 3 6 media
#> 4 6 media
#> 5 8 alta
Nesse caso usar o pipe facilita a leitura do R para executar as ações solicitadas.
As primeiras tentativas usando o código diretamente geram erro.
a) Criando e acessando a lista
resumo_red:
# Crie a lista resumo_red com três elementos:
# (i) nomes das colunas, (ii) dimensões, (iii) médias das variáveis numéricas
resumo_red <- list(nome_colunas = colnames(wine_red),
dimensoes = dim(wine_red),
medias_numericas = colMeans(wine_red[sapply(wine_red, is.numeric)], na.rm = TRUE)
)
# Acesse cada elemento pelo nome ($) e pelo índice ([[]])
resumo_red$nome_colunas#> [1] "fixed.acidity" "volatile.acidity" "citric.acid"
#> [4] "residual.sugar" "chlorides" "free.sulfur.dioxide"
#> [7] "total.sulfur.dioxide" "density" "pH"
#> [10] "sulphates" "alcohol" "quality"
#> [13] "quality_cat"
#> [1] 1599 13
#> fixed.acidity volatile.acidity citric.acid
#> 8.31963727 0.52782051 0.27097561
#> residual.sugar chlorides free.sulfur.dioxide
#> 2.53880550 0.08746654 15.87492183
#> total.sulfur.dioxide density pH
#> 46.46779237 0.99674668 3.31111320
#> sulphates alcohol quality
#> 0.65814884 10.42298311 5.63602251
#> [1] "fixed.acidity" "volatile.acidity" "citric.acid"
#> [4] "residual.sugar" "chlorides" "free.sulfur.dioxide"
#> [7] "total.sulfur.dioxide" "density" "pH"
#> [10] "sulphates" "alcohol" "quality"
#> [13] "quality_cat"
#> [1] 1599 13
#> fixed.acidity volatile.acidity citric.acid
#> 8.31963727 0.52782051 0.27097561
#> residual.sugar chlorides free.sulfur.dioxide
#> 2.53880550 0.08746654 15.87492183
#> total.sulfur.dioxide density pH
#> 46.46779237 0.99674668 3.31111320
#> sulphates alcohol quality
#> 0.65814884 10.42298311 5.63602251
A função sapply é usada para agrupar dados com uma mesma função. Já o na.rm = TRUE elimina valores NA impedindo que a função não funcione de forma adequada.
b) Diferença entre lista e data frame:
# Sua justificativa como comentário no código:
# Uma lista permite armazenar objetos de tipos e tamanhos diferentes, enquanto um data frame exige que os dados existam e tenham o mesmo tamanho. De forma visual, um dara.frame é mais agradável que uma lista, sendo mais fácil de interpretar resultados de uma forma geral.# Classifique todas as variaveis do banco wine_red
# Sugestao: use data.frame() + knitr::kable()
variaveis <- data.frame(
Variavel = names(wine_red),
Tipo = c("Quantitativa Contínua", "Quantitativa Contínua", "Quantitativa Contínua",
"Quantitativa Contínua", "Quantitativa Contínua", "Quantitativa Discreta",
"Quantitativa Discreta", "Quantitativa Contínua", "Quantitativa Contínua",
"Quantitativa Contínua", "Quantitativa Contínua", "Qualitativa Ordinal",
"Qualitativa Ordinal") )
knitr::kable(variaveis,
caption = "Classificação das variáveis do banco Wine Quality (tinto)")| Variavel | Tipo |
|---|---|
| fixed.acidity | Quantitativa Contínua |
| volatile.acidity | Quantitativa Contínua |
| citric.acid | Quantitativa Contínua |
| residual.sugar | Quantitativa Contínua |
| chlorides | Quantitativa Contínua |
| free.sulfur.dioxide | Quantitativa Discreta |
| total.sulfur.dioxide | Quantitativa Discreta |
| density | Quantitativa Contínua |
| pH | Quantitativa Contínua |
| sulphates | Quantitativa Contínua |
| alcohol | Quantitativa Contínua |
| quality | Qualitativa Ordinal |
| quality_cat | Qualitativa Ordinal |
a) Média e mediana das variáveis selecionadas:
# Calcule média e mediana para alcohol, pH e volatile.acidity de wine_red
# Apresente em formato de tabela
Tabela_Média_e_Mediana <- data.frame( variável = c("alcohol","pH","volatile.acidity"),
Média = c(mean(wine_red$alcohol, na.rm = TRUE),
mean(wine_red$pH, na.rm = TRUE),
mean(wine_red$volatile.acidity, na.rm = TRUE)),
Mediana = c(median(wine_red$alcohol, na.rm = TRUE),
median(wine_red$pH, na.rm = TRUE),
median(wine_red$volatile.acidity, na.rm = TRUE)))
knitr::kable(Tabela_Média_e_Mediana,
caption = "Valores de Media e Mediana grupos alchool, pH e volatile.acidity")| variável | Média | Mediana |
|---|---|---|
| alcohol | 10.4229831 | 10.20 |
| pH | 3.3111132 | 3.31 |
| volatile.acidity | 0.5278205 | 0.52 |
b) Interpretação:
Em todos os casos a média e a mediana apresentaram valores próximos, indicando uma boa distribuição dos dados, com ausência de valores muito discrepantes, que caso existissem alterariam o valor da média significativamente
c) Função moda():
moda <- function(x) {
frequencias <- table(x)
maior_frequencia <- max(frequencias)
resultado <- names(frequencias)[frequencias == maior_frequencia]
return(as.numeric(resultado))
}
# Teste com a variavel quality de wine_red:
Valor_moda <- moda(wine_red$quality)
print(Valor_moda)#> [1] 5
O R não apresenta uma função “moda” nativa, para isso foi necessário construir a função, elencando todos os elementos presentes e contando qual mais aparecia.
a) Métricas de dispersão para alcohol
de wine_red:
#> [1] 8.4
#> [1] 14.9
#> [1] 6.5
#> 0% 25% 50% 75% 100%
#> 8.4 9.5 10.2 11.1 14.9
#> [1] 1.6
b) Resumo de quatro variáveis ao mesmo tempo:
#> alcohol pH volatile.acidity sulphates
#> Min. : 8.40 Min. :2.740 Min. :0.1200 Min. :0.3300
#> 1st Qu.: 9.50 1st Qu.:3.210 1st Qu.:0.3900 1st Qu.:0.5500
#> Median :10.20 Median :3.310 Median :0.5200 Median :0.6200
#> Mean :10.42 Mean :3.311 Mean :0.5278 Mean :0.6581
#> 3rd Qu.:11.10 3rd Qu.:3.400 3rd Qu.:0.6400 3rd Qu.:0.7300
#> Max. :14.90 Max. :4.010 Max. :1.5800 Max. :2.0000
c) Médias de todas as variáveis em uma linha:
#> fixed.acidity volatile.acidity citric.acid
#> 8.31963727 0.52782051 0.27097561
#> residual.sugar chlorides free.sulfur.dioxide
#> 2.53880550 0.08746654 15.87492183
#> total.sulfur.dioxide density pH
#> 46.46779237 0.99674668 3.31111320
#> sulphates alcohol quality
#> 0.65814884 10.42298311 5.63602251
Primeiro é necessário selecionar apenas as variáveis que são numéricas. Das 3 funções apresentadas, a colMeans é a mais indicada. na.rm =TRUE para garantir que valores ausentes não atrapalhem o código. sapply aplica a função para cada elemento.
a) Frequências de quality em
wine_red:
#>
#> 3 4 5 6 7 8
#> 10 53 681 638 199 18
#>
#> 3 4 5 6 7 8
#> 0.6 3.3 42.6 39.9 12.4 1.1
b) Frequências de qualidade_cat:
#>
#> baixa media alta
#> 744 638 217
#>
#> baixa media alta
#> 46.5 39.9 13.6
Sim, as proporções ainda fazem sentido, a distribuição para baixa é equivalente à soma dos valores dos vinhos com nota 3, 4 e 5
a) Adicionando coluna tipo e combinando
com rbind():
wine_red$tipo <- "Tinto"
wine_white$tipo <- "Branco"
wine_white$quality_cat <- cut(wine_white$quality,
breaks = c(-Inf, 5, 6, Inf),
labels = c("baixa", "media", "alta"))
wine_all <- rbind(wine_red, wine_white)b) Convertendo tipo para fator e
verificando:
#> 'data.frame': 6497 obs. of 14 variables:
#> $ fixed.acidity : num 7.4 7.8 7.8 11.2 7.4 7.4 7.9 7.3 7.8 7.5 ...
#> $ volatile.acidity : num 0.7 0.88 0.76 0.28 0.7 0.66 0.6 0.65 0.58 0.5 ...
#> $ citric.acid : num 0 0 0.04 0.56 0 0 0.06 0 0.02 0.36 ...
#> $ residual.sugar : num 1.9 2.6 2.3 1.9 1.9 1.8 1.6 1.2 2 6.1 ...
#> $ chlorides : num 0.076 0.098 0.092 0.075 0.076 0.075 0.069 0.065 0.073 0.071 ...
#> $ free.sulfur.dioxide : num 11 25 15 17 11 13 15 15 9 17 ...
#> $ total.sulfur.dioxide: num 34 67 54 60 34 40 59 21 18 102 ...
#> $ density : num 0.998 0.997 0.997 0.998 0.998 ...
#> $ pH : num 3.51 3.2 3.26 3.16 3.51 3.51 3.3 3.39 3.36 3.35 ...
#> $ sulphates : num 0.56 0.68 0.65 0.58 0.56 0.56 0.46 0.47 0.57 0.8 ...
#> $ alcohol : num 9.4 9.8 9.8 9.8 9.4 9.4 9.4 10 9.5 10.5 ...
#> $ quality : int 5 5 5 6 5 5 5 7 7 5 ...
#> $ quality_cat : Factor w/ 3 levels "baixa","media",..: 1 1 1 2 1 1 1 3 3 1 ...
#> $ tipo : Factor w/ 2 levels "Branco","Tinto": 2 2 2 2 2 2 2 2 2 2 ...
#>
#> Branco Tinto
#> 4898 1599
c) Tamanho total e balanceamento:
#> [1] 6497
#>
#> Branco Tinto
#> 4898 1599
#>
#> Branco Tinto
#> 0.7538864 0.2461136
Não, o banco não está balanceado, a divisão de amostras está em uma proporção de 1 tinto para 3 brancos, implicando que análises em geral desses grupos podem ser afetadas pela quantidade de amostras de cada grupo, a deixando tendenciosa
tapply()a) Médias de todas as variáveis por tipo:
#> Branco Tinto
#> 10.51427 10.42298
# Para todas as variaveis numericas de uma vez:
vars_num <- names(wine_all)[sapply(wine_all, is.numeric) &
names(wine_all) != "quality"]
medias_grupo <- sapply(vars_num, function(v) {
tapply(wine_all[[v]], wine_all$tipo, mean)
})
knitr::kable(round(t(medias_grupo), 3),
caption = "Medias por variavel e tipo de vinho")| Branco | Tinto | |
|---|---|---|
| fixed.acidity | 6.855 | 8.320 |
| volatile.acidity | 0.278 | 0.528 |
| citric.acid | 0.334 | 0.271 |
| residual.sugar | 6.391 | 2.539 |
| chlorides | 0.046 | 0.087 |
| free.sulfur.dioxide | 35.308 | 15.875 |
| total.sulfur.dioxide | 138.361 | 46.468 |
| density | 0.994 | 0.997 |
| pH | 3.188 | 3.311 |
| sulphates | 0.490 | 0.658 |
| alcohol | 10.514 | 10.423 |
b) Insights químicos:
O vinho tinto apresenta acidez fixa maior que a do branco, esse fato se dá pela produção do vinho, onde o vinho tinto fica em contato com a casca e com as sementes, já o vinho branco não. Essa diferença na produção irá interferir diretamente nos indicadores avaliados. A presença de bactérias e leveduras da casca por exemplo ajudam no processo de fermentação, acelerando o consumo do açúcar, que terá um menor residual para o tinto que para o branco. A presença de “mais matéria prima” na produção do vinho tinto, pode implicar também a produção de uma maior variedade e consequentemente quantidade de compostos, como ácidos, interferindo assim na acidez fixa e volátil, que será maior.
a) Desvio padrão por tipo:
dp_grupo <- sapply(vars_num, function(v) {
tapply(wine_all[[v]], wine_all$tipo, sd)
})
knitr::kable(round(t(dp_grupo), 3),
caption = "Desvio padrão por variável e tipo de vinho")| Branco | Tinto | |
|---|---|---|
| fixed.acidity | 0.844 | 1.741 |
| volatile.acidity | 0.101 | 0.179 |
| citric.acid | 0.121 | 0.195 |
| residual.sugar | 5.072 | 1.410 |
| chlorides | 0.022 | 0.047 |
| free.sulfur.dioxide | 17.007 | 10.460 |
| total.sulfur.dioxide | 42.498 | 32.895 |
| density | 0.003 | 0.002 |
| pH | 0.151 | 0.154 |
| sulphates | 0.114 | 0.170 |
| alcohol | 1.231 | 1.066 |
O vinho branco apresenta maior desvio padrão para a variável “açúcar residual”. Já a variável “acidez volátil” apresenta maior desvio padrão para as amostras de vinho tinto.
b) Quantis 5% e 95% de
total.sulfur.dioxide:
#> $Branco
#> 5% 95%
#> 75 212
#>
#> $Tinto
#> 5% 95%
#> 11.0 112.1
O vinho tinto possui uma proteção maior em comparação ao vinho branco devido a presença de diversos compostos, como os taninos por exemplo. A adição de dióxido de enxofre ocorre para garantir a preservação do vinho, sendo necessária uma maior quantidade, com uma maior amplitude de limites inferior e superior para os vinhos brancos.
c) IQR de density por tipo:
#> Branco Tinto
#> 0.0043775 0.0022350
O vinho branco é menos homogeneo em densidade. A justificativa mais direta pode ser o açúcar residual que é em média 4 vezes maior no vinho branco, esse açúcar residual irá refletir diretamente na densidade do vinho, uma vez que se tem uma maior quantidade de matéria em um mesmo volume amostral.
a) Construindo a lista comparacao com
médias, SDs e IQRs:
resumo_tipo <- function(df) {
vars <- names(df)[sapply(df, is.numeric) & names(df) != "quality"]
list(
medias = sapply(df[, vars], mean),
dp = sapply(df[, vars], sd),
iqr = sapply(df[, vars], IQR)
)
}
comparacao <- list(
tinto = resumo_tipo(wine_red[, names(wine_red) != "tipo"]),
branco = resumo_tipo(wine_white[, names(wine_white) != "tipo"])
)
print(comparacao)#> $tinto
#> $tinto$medias
#> fixed.acidity volatile.acidity citric.acid
#> 8.31963727 0.52782051 0.27097561
#> residual.sugar chlorides free.sulfur.dioxide
#> 2.53880550 0.08746654 15.87492183
#> total.sulfur.dioxide density pH
#> 46.46779237 0.99674668 3.31111320
#> sulphates alcohol
#> 0.65814884 10.42298311
#>
#> $tinto$dp
#> fixed.acidity volatile.acidity citric.acid
#> 1.741096318 0.179059704 0.194801137
#> residual.sugar chlorides free.sulfur.dioxide
#> 1.409928060 0.047065302 10.460156970
#> total.sulfur.dioxide density pH
#> 32.895324478 0.001887334 0.154386465
#> sulphates alcohol
#> 0.169506980 1.065667582
#>
#> $tinto$iqr
#> fixed.acidity volatile.acidity citric.acid
#> 2.100000 0.250000 0.330000
#> residual.sugar chlorides free.sulfur.dioxide
#> 0.700000 0.020000 14.000000
#> total.sulfur.dioxide density pH
#> 40.000000 0.002235 0.190000
#> sulphates alcohol
#> 0.180000 1.600000
#>
#>
#> $branco
#> $branco$medias
#> fixed.acidity volatile.acidity citric.acid
#> 6.85478767 0.27824112 0.33419151
#> residual.sugar chlorides free.sulfur.dioxide
#> 6.39141486 0.04577236 35.30808493
#> total.sulfur.dioxide density pH
#> 138.36065741 0.99402738 3.18826664
#> sulphates alcohol
#> 0.48984688 10.51426705
#>
#> $branco$dp
#> fixed.acidity volatile.acidity citric.acid
#> 0.843868228 0.100794548 0.121019804
#> residual.sugar chlorides free.sulfur.dioxide
#> 5.072057784 0.021847968 17.007137325
#> total.sulfur.dioxide density pH
#> 42.498064554 0.002990907 0.151000600
#> sulphates alcohol
#> 0.114125834 1.230620568
#>
#> $branco$iqr
#> fixed.acidity volatile.acidity citric.acid
#> 1.0000000 0.1100000 0.1200000
#> residual.sugar chlorides free.sulfur.dioxide
#> 8.2000000 0.0140000 23.0000000
#> total.sulfur.dioxide density pH
#> 59.0000000 0.0043775 0.1900000
#> sulphates alcohol
#> 0.1400000 1.9000000
b) Duas formas de acessar o IQR de
alcohol do tinto:
#> alcohol
#> 1.6
#> alcohol
#> 1.6
c) Vantagem da lista aninhada:
# Escreva sua justificativa como comentário:
# Armazenar em lista aninhada permite visualizar e comparar dados de forma mais direta, enquanto objetos soltos devem ser analisados separadamente.Diversas diferenças entre os tipos de vinho branco e tinto foram observadas, principalmente em relação à quantidade de açúcar residual e dióxidos de enxofre adicionados. Essas diferenças físico-químicas refletem as diferenças do processo de produção dos vinhos, que é distinta. De forma estatística, o teor de dióxido de enxofre livre é o mais discriminante entre os tipos de vinho, uma vez que a sua média é praticamente 4 vezes maior para o vinho branco em relação ao tinto.
#> R version 4.4.0 (2024-04-24 ucrt)
#> Platform: x86_64-w64-mingw32/x64
#> Running under: Windows 11 x64 (build 26200)
#>
#> Matrix products: default
#>
#>
#> locale:
#> [1] LC_COLLATE=Portuguese_Brazil.utf8 LC_CTYPE=Portuguese_Brazil.utf8
#> [3] LC_MONETARY=Portuguese_Brazil.utf8 LC_NUMERIC=C
#> [5] LC_TIME=Portuguese_Brazil.utf8
#>
#> time zone: America/Sao_Paulo
#> tzcode source: internal
#>
#> attached base packages:
#> [1] stats graphics grDevices utils datasets methods base
#>
#> other attached packages:
#> [1] dplyr_1.1.4 ggplot2_4.0.1
#>
#> loaded via a namespace (and not attached):
#> [1] vctrs_0.6.5 cli_3.6.5 knitr_1.50 rlang_1.1.6
#> [5] xfun_0.53 generics_0.1.4 S7_0.2.1 jsonlite_2.0.0
#> [9] glue_1.8.0 htmltools_0.5.8.1 sass_0.4.10 scales_1.4.0
#> [13] rmarkdown_2.30 grid_4.4.0 tibble_3.3.0 evaluate_1.0.5
#> [17] jquerylib_0.1.4 fastmap_1.2.0 yaml_2.3.10 lifecycle_1.0.4
#> [21] compiler_4.4.0 RColorBrewer_1.1-3 pkgconfig_2.0.3 rstudioapi_0.17.1
#> [25] farver_2.1.2 digest_0.6.37 R6_2.6.1 tidyselect_1.2.1
#> [29] pillar_1.11.1 magrittr_2.0.3 bslib_0.9.0 withr_3.0.2
#> [33] tools_4.4.0 gtable_0.3.6 cachem_1.1.0