`
library(readr)
carros <- read_csv("carros-usados.csv")
## Rows: 150 Columns: 6
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (3): modelo, cor, transmissao
## dbl (3): ano, preco, kilometragem
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
Resumo do dataset
str(carros)
## spec_tbl_df [150 x 6] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ ano : num [1:150] 2011 2011 2011 2011 2012 ...
## $ modelo : chr [1:150] "SEL" "SEL" "SEL" "SEL" ...
## $ preco : num [1:150] 21992 20995 19995 17809 17500 ...
## $ kilometragem: num [1:150] 7413 10926 7351 11613 8367 ...
## $ cor : chr [1:150] "Bege" "Cinza" "Prata" "Cinza" ...
## $ transmissao : chr [1:150] "AUTO" "AUTO" "AUTO" "AUTO" ...
## - attr(*, "spec")=
## .. cols(
## .. ano = col_double(),
## .. modelo = col_character(),
## .. preco = col_double(),
## .. kilometragem = col_double(),
## .. cor = col_character(),
## .. transmissao = col_character()
## .. )
## - attr(*, "problems")=<externalptr>
head(carros)
## # A tibble: 6 x 6
## ano modelo preco kilometragem cor transmissao
## <dbl> <chr> <dbl> <dbl> <chr> <chr>
## 1 2011 SEL 21992 7413 Bege AUTO
## 2 2011 SEL 20995 10926 Cinza AUTO
## 3 2011 SEL 19995 7351 Prata AUTO
## 4 2011 SEL 17809 11613 Cinza AUTO
## 5 2012 SE 17500 8367 Branco AUTO
## 6 2010 SEL 17495 25125 Prata AUTO
summary(carros$ano)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2000 2008 2009 2009 2010 2012
summary(carros[c("preco", "kilometragem")])
## preco kilometragem
## Min. : 3800 Min. : 4867
## 1st Qu.:10995 1st Qu.: 27200
## Median :13592 Median : 36385
## Mean :12962 Mean : 44261
## 3rd Qu.:14904 3rd Qu.: 55125
## Max. :21992 Max. :151479
Análise Explotaroria de dados para variaveis númericas
#Usando as funções
mean(carros$preco)
## [1] 12961.93
median(carros$preco)
## [1] 13591.5
quantile(carros$preco)
## 0% 25% 50% 75% 100%
## 3800.0 10995.0 13591.5 14904.5 21992.0
quantile(carros$preco, probs = c(0.01,0.99))
## 1% 99%
## 5428.69 20505.00
quantile(carros$preco, seq(from = 0, to = 1, by = 0.20))
## 0% 20% 40% 60% 80% 100%
## 3800.0 10759.4 12993.8 13992.0 14999.0 21992.0
IQR(carros$preco)#Diferencça entre Q3 e Q1
## [1] 3909.5
range(carros$preco)
## [1] 3800 21992
diff(carros$preco)
## [1] -997 -1000 -2186 -309 -5 -495 -5 0 0 0 -3 -42
## [13] 0 -950 -1 0 -4 -3 0 -4 -8 -81 -10 -201
## [25] -188 -1 0 -201 -299 0 -4 -3 0 0 -2 -1
## [37] -83 -6 -7 -132 -62 -22 -128 -50 -4 0 -15 -3
## [49] -122 -56 -24 -275 -1 -2 -2 0 0 0 -3 0
## [61] 0 0 -1 -41 0 0 -55 -7 -43 -46 -57 -55
## [73] -24 -64 -15 -159 -41 -1 -33 -351 -1 -1 -2 0
## [85] 0 0 0 0 0 -3 -2 -2 -139 -69 -3 -73
## [97] -109 -88 -7 0 -220 -281 -7 -8 -4 -188 -38 -5
## [109] -254 -45 -455 0 0 -16 -24 0 -119 -21 -45 -53
## [121] -717 -1 0 -4 0 -3 -341 -651 -1 -3 -196 -305
## [133] -1 -14 -481 -4 0 -95 -412 -489 -4 -15 0 -30
## [145] -750 -205 -15 -1081 -1099
Graficos
#Leitura de baixo para cima = Q!, Q@(mediana) Q3
boxplot(carros$preco, main="Boxplot para os preços de carros Usados", ylab = "Preço (R$")
boxplot(carros$kilometragem, main="Boxplot para a KM de carros Usado", ylab= "Kilometragem(R$")
Histograma
#Indica a freqência de valores denro de cada BIN(Classe de valores)
hist(carros$preco, main = "Histograma para carros Usados", xlab="Preço(RS")
hist(carros$kilometragem, main = "Histograma para a Km de Carros Usados", ylab = "Kilometragem (R$)")
hist(carros$kilometragem, main = "Histograma para a Km de Carros Usados", breaks = 5, ylab = "Kilometragem (R$)")
Scatterplot Preço x Km
# Scatterplot Preço x Km
# Usando o preço como variável dependente (y)
plot(x = carros$kilometragem, y = carros$preco,
main = "Scatterplot - Preço x Km",
xlab = "Kilometragem",
ylab = "Preço (R$)")
Ao interpretar a variância, números maiores indicam que os dados estão espalhados mais amplamente em torno da média. O desvio padrão indica, em média, a quantidade de cada valor diferente da média.
var(carros$preco)
## [1] 9749892
sd(carros$preco)
## [1] 3122.482
var(carros$kilometragem)
## [1] 728033954
sd(carros$kilometragem)
## [1] 26982.1
Tabela
#?table
table(carros$cor)
##
## Azul Bege Branco Cinza Gold Prata Preto Verde
## 17 3 16 16 1 32 35 5
## Vermelho
## 25
table(carros$modelo)
##
## SE SEL SES
## 78 23 49
str(carros)
## spec_tbl_df [150 x 6] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ ano : num [1:150] 2011 2011 2011 2011 2012 ...
## $ modelo : chr [1:150] "SEL" "SEL" "SEL" "SEL" ...
## $ preco : num [1:150] 21992 20995 19995 17809 17500 ...
## $ kilometragem: num [1:150] 7413 10926 7351 11613 8367 ...
## $ cor : chr [1:150] "Bege" "Cinza" "Prata" "Cinza" ...
## $ transmissao : chr [1:150] "AUTO" "AUTO" "AUTO" "AUTO" ...
## - attr(*, "spec")=
## .. cols(
## .. ano = col_double(),
## .. modelo = col_character(),
## .. preco = col_double(),
## .. kilometragem = col_double(),
## .. cor = col_character(),
## .. transmissao = col_character()
## .. )
## - attr(*, "problems")=<externalptr>
model_table <- table(carros$modelo)
prop.table(model_table)
##
## SE SEL SES
## 0.5200000 0.1533333 0.3266667
model_table <- table(carros$modelo)
model_table <- prop.table(model_table) * 100
round(model_table, digits = 1)
##
## SE SEL SES
## 52.0 15.3 32.7
(que as pessoas compra com mais frequencia)
head(carros)
## # A tibble: 6 x 6
## ano modelo preco kilometragem cor transmissao
## <dbl> <chr> <dbl> <dbl> <chr> <chr>
## 1 2011 SEL 21992 7413 Bege AUTO
## 2 2011 SEL 20995 10926 Cinza AUTO
## 3 2011 SEL 19995 7351 Prata AUTO
## 4 2011 SEL 17809 11613 Cinza AUTO
## 5 2012 SE 17500 8367 Branco AUTO
## 6 2010 SEL 17495 25125 Prata AUTO
(Que as pessoas compra com mais frequência)
# %in% quando esta dentro do dataset
#Criar uma nova variavel
carros$conserv <- carros$cor %in% c("Preto", "Cinza", "Prata", "Branco")
head(carros)
## # A tibble: 6 x 7
## ano modelo preco kilometragem cor transmissao conserv
## <dbl> <chr> <dbl> <dbl> <chr> <chr> <lgl>
## 1 2011 SEL 21992 7413 Bege AUTO FALSE
## 2 2011 SEL 20995 10926 Cinza AUTO TRUE
## 3 2011 SEL 19995 7351 Prata AUTO TRUE
## 4 2011 SEL 17809 11613 Cinza AUTO TRUE
## 5 2012 SE 17500 8367 Branco AUTO TRUE
## 6 2010 SEL 17495 25125 Prata AUTO TRUE
table(carros$conserv)
##
## FALSE TRUE
## 51 99
Verificando o relacionamento entre 2 variáveis categóricas Criando uma crosstable Tabelas de contingência fornecem uma maneira de exibir as frequências e frequências relativas de observações (lembra do capítulo de Estatística?), que são classificados de acordo com duas variáveis categóricas. Os elementos de ma categoria são exibidas através das colunas; selementos de outra categoria são exibidas sobre as linhas.
#install.packages("gmodels")
library(gmodels)
#?CrossTable
CrossTable(x = carros$modelo, y = carros$conserv)
##
##
## Cell Contents
## |-------------------------|
## | N |
## | Chi-square contribution |
## | N / Row Total |
## | N / Col Total |
## | N / Table Total |
## |-------------------------|
##
##
## Total Observations in Table: 150
##
##
## | carros$conserv
## carros$modelo | FALSE | TRUE | Row Total |
## --------------|-----------|-----------|-----------|
## SE | 27 | 51 | 78 |
## | 0.009 | 0.004 | |
## | 0.346 | 0.654 | 0.520 |
## | 0.529 | 0.515 | |
## | 0.180 | 0.340 | |
## --------------|-----------|-----------|-----------|
## SEL | 7 | 16 | 23 |
## | 0.086 | 0.044 | |
## | 0.304 | 0.696 | 0.153 |
## | 0.137 | 0.162 | |
## | 0.047 | 0.107 | |
## --------------|-----------|-----------|-----------|
## SES | 17 | 32 | 49 |
## | 0.007 | 0.004 | |
## | 0.347 | 0.653 | 0.327 |
## | 0.333 | 0.323 | |
## | 0.113 | 0.213 | |
## --------------|-----------|-----------|-----------|
## Column Total | 51 | 99 | 150 |
## | 0.340 | 0.660 | |
## --------------|-----------|-----------|-----------|
##
##
Tabela Cruzada.
hipóteses que se destina a encontrar um valor da dispersão para duas variáveis nominais, avaliando a associação existente entre variáveis qualitativas.
É um teste não paramétrico, ou seja, não depende dos parâmetros populacionais, como média e variância.
O princípio básico deste método é comparar proporções, isto é, as possíveis divergências entre as frequências observadas e esperadas para um certo evento. Evidentemente, pode-se dizer que dois grupos se comportam de forma semelhante se as diferenças entre as frequências observadas e as esperadas em cada categoria forem muito pequenas, próximas a zero.
Ou seja, Se a probabilidade é muito baixa, ele fornece fortes evidências de que as duas variáveis estão associadas.
CrossTable(x = carros$modelo, y = carros$conserv, chisq = TRUE)
##
##
## Cell Contents
## |-------------------------|
## | N |
## | Chi-square contribution |
## | N / Row Total |
## | N / Col Total |
## | N / Table Total |
## |-------------------------|
##
##
## Total Observations in Table: 150
##
##
## | carros$conserv
## carros$modelo | FALSE | TRUE | Row Total |
## --------------|-----------|-----------|-----------|
## SE | 27 | 51 | 78 |
## | 0.009 | 0.004 | |
## | 0.346 | 0.654 | 0.520 |
## | 0.529 | 0.515 | |
## | 0.180 | 0.340 | |
## --------------|-----------|-----------|-----------|
## SEL | 7 | 16 | 23 |
## | 0.086 | 0.044 | |
## | 0.304 | 0.696 | 0.153 |
## | 0.137 | 0.162 | |
## | 0.047 | 0.107 | |
## --------------|-----------|-----------|-----------|
## SES | 17 | 32 | 49 |
## | 0.007 | 0.004 | |
## | 0.347 | 0.653 | 0.327 |
## | 0.333 | 0.323 | |
## | 0.113 | 0.213 | |
## --------------|-----------|-----------|-----------|
## Column Total | 51 | 99 | 150 |
## | 0.340 | 0.660 | |
## --------------|-----------|-----------|-----------|
##
##
## Statistics for All Table Factors
##
##
## Pearson's Chi-squared test
## ------------------------------------------------------------
## Chi^2 = 0.1539564 d.f. = 2 p = 0.92591
##
##
##
#podemos usar esse modelo
chisq.test(x = carros$modelo, y = carros$conserv)
##
## Pearson's Chi-squared test
##
## data: carros$modelo and carros$conserv
## X-squared = 0.15396, df = 2, p-value = 0.9259
As frequências observadas não são diferentes das frequências esperadas. Não existe diferença entre as frequências (contagens) dos grupos. Portanto, não há associação entre os grupos
As frequências observadas são diferentes das frequências esperadas, portanto existe diferença entre as frequências. Portanto, há associação entre os grupos.
Neste caso, o valor do Chi = 0.15
E graus de liberdade (df) = 2 Portanto, não há associação entre os
grupos O valor alto do p-value confirma esta conclusão.