Atividade 3 - gráfico para variáveis quantitativas

Fazer uma publicação no RPUBS com o estudo da estrutura das variáveis [str(data.frame)], de um histograma e uma análise descritiva [média, mediana, etc] em uma variável quantitativa da base de dados chamada “house-selling-price.csv”.

OBS: Obrigatória a interpretação do seu gráfico em pelo menos dois parágrafos.

Carregar arquivo.

library(readr)
house_selling_price <- read_csv("C:/Users/marco/Desktop/Base_de_dados-master/house-selling-price.csv")
View(house_selling_price)

Estruturando dados.

str(house_selling_price)
spec_tbl_df [100 x 7] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
 $ case : num [1:100] 1 2 3 4 5 6 7 8 9 10 ...
 $ Taxes: num [1:100] 3104 1173 3076 1608 1454 ...
 $ Beds : num [1:100] 4 2 4 3 3 3 3 3 5 3 ...
 $ Baths: num [1:100] 2 1 2 2 3 2 2 2 4 2 ...
 $ New  : num [1:100] 0 0 0 0 0 1 0 1 0 0 ...
 $ Price: num [1:100] 279900 146500 237700 200000 159900 ...
 $ Size : num [1:100] 2048 912 1654 2068 1477 ...
 - attr(*, "spec")=
  .. cols(
  ..   case = col_double(),
  ..   Taxes = col_double(),
  ..   Beds = col_double(),
  ..   Baths = col_double(),
  ..   New = col_double(),
  ..   Price = col_double(),
  ..   Size = col_double()
  .. )
 - attr(*, "problems")=<externalptr> 

Resumo de estatística

Média

A média é o cálculo da soma de todos os valores, divididos pela quantidade de valores.

Media_precos=mean(house_selling_price$Price)
Media_precos
[1] 155331

Mediana

A mediana é definida como o valor tal que 50% dos valores da variável estão acima da mediana e 50% estão abaixo. A obtenção da mediana é feita, ordenando-se os dados e escolhendo-se o valor do meio. Em uma amostragem com quantidade par de objetos, a mediana será a média dos dois valores centrais, por exemplo, em uma amostra com 10 números, a mediana será a média entre o 5º e 6º objetos da tabela.

Mediana_precos=median(house_selling_price$Price)
Mediana_precos
[1] 132600

Moda

O R não possui uma função específica para obtenção da moda, entretanto podemos usar uma composição de funções e métodos de indexação para obtermos este valor. Uma possibilidade é usar os seguintes comandos:

1- montar uma tabela de distribuição

tabela_precos=table(house_selling_price$Price)
tabela_precos

 21000  22500  45000  50000  60000  64500  69000  69900  70000  81000  81900 
     1      1      1      1      1      1      2      2      2      1      1 
 85000  86000  86500  87000  88400  89900  90000  90500  91200  93900  94300 
     3      1      1      1      1      1      1      1      1      1      1 
 1e+05 101000 103000 105900 109300 114600 118300 118600 121300 123000 124500 
     3      1      2      1      1      1      1      1      1      1      1 
124900 125000 127000 127200 130000 131500 132200 133000 136500 137000 140000 
     1      2      1      1      2      1      1      1      1      3      3 
142500 144900 145000 146500 147000 148000 151800 156900 159900 160000 162600 
     1      1      1      2      1      1      1      1      1      2      1 
163000 165000 167000 167500 176000 179000 180000 183000 188000 196500  2e+05 
     1      1      1      1      2      1      1      2      1      1      2 
225000 237700 240000 250000 265500 279900 285000 289900 338000 354900 381000 
     1      1      1      1      1      1      1      1      1      1      1 
434000 499900 577500 587000 
     1      1      1      1 
  **Obs:** Podemos observar que existem 4 valores com 3 repetições.

2-Para podermos localizar quais valores apresentam as maiores frequências faremos:

maiores = data.frame(tabela_precos[tabela_precos == max(tabela_precos)])
names(tabela_precos[tabela_precos == max(tabela_precos)])[1] = "Valores"
names(tabela_precos[tabela_precos == max(tabela_precos)])[2] = "Repetições"

library(flextable)
flextable(maiores)

Maior Valor

Maior=max(house_selling_price$Price)
Maior
[1] 587000

Menor Valor

Menor=min(house_selling_price$Price)
Menor
[1] 21000

Amplitude

É a diferença entre o maior e menor valor, podemos fazer através da fórmula maior menos menor

Amplitude=Maior-Menor
Amplitude
[1] 566000

Ou utilizando diff(range(tabela)).

amp=diff(range(house_selling_price$Price))
amp
[1] 566000

Variância

A variância mede o quanto os dados estão dispersos em relação à sua média; mas por não apresentar a mesma unidade de medida que a base de dados, a interpretação do valor obtido não é muito usual, costuma-se utilizar o desvio padrão para fazer esta comparação de resultado.

A variância é a soma dos quadrados dos desvios, dividida pelo total de observações menos um.

Variancia=var(house_selling_price$Price)
Variancia
[1] 10254035696

Desvio Padrão

O desvio padrão apresnta o quanto um daod está afastado da média de valores obtidos. Entendemos que quanto menor o valor do desvio padrão, mais homogênea é a amostra.

O desvio padrão é a raiz quadrada da variância.

despad=Variancia^(0.5)
despad
[1] 101262.2

Podemos também utilizar a fórmula existente no R.

dpad=sd(house_selling_price$Price)
dpad
[1] 101262.2

Coeficiente de variação

A interpretação do desvio padrão depende da ordem de grandeza da variável em estudo. Assim, um desvio padrão de 10 pode ser insignificante se os valores típicos observados forem muito altos, por exemplo, em torno de 1.000; mas pode ser muito expressivo para um conjunto de dados cuja observação típica seja em torno de 100.

Logo, pode ser conveniente expressar a variabilidade dos dados de uma variável de modo independente da sua unidade de medida utilizada, tirando a influência da ordem de grandeza da variável. Tal medida é denominada coeficiente de variação.

O coeficiente de variação de Pearson é a razão entre o desvio padrão e a média. Em geral, o resultado é multiplicado por 100, para que o coeficiente de variação seja expresso em porcentagem.

Para ficar mais claro, vamos imaginar que trabalhamos em uma empresa engarrafadora de líquidos. Que trabalhamos com recipientes grandes (1,5 litro) e pequenos (200 ml). Ao realizarmos uma inspeção na produção, identificamos um desvio padrão nos volumes de, no caso dos recipientes pequenos 0,5 ml e no grande em 2 ml.

Temos as seguintes interpretações:

  • Variação embalagem grande = (2 / 1500)*100 = 0,13%
  • Variação embalagem pequena = (0,50 / 200)*100 = 0,25%

Mesmo o desvio padrão do maior recipiente sendo 4 vezes maior que do recipiente pequeno, a variação na embalagem pequena é maior que na grande (0,25 > 0,13).

Neste exemplo que estamos analisando temos o seguinte valor:

CV = (despad/Media_precos)*100
CV
[1] 65.19124

Base para análise dos resultados:

  • CV = 0: adimensional, não há variação dos dados;
  • 0 < CV <= 10%: baixa disperção, dados homogêneos;
  • 10% < CV <= 30%: média disperção;
  • CV >30%: alta disperção, dados heterogêneos.

Fórmula existente do R

O R possui uma fórmula que apresenta alguns dos dados calculádos acima, summary

summary(house_selling_price$Price)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  21000   93225  132600  155331  169625  587000 

Resultados


Com base nos resultados apresentados até agora podemos ponderar:

A Amplitude, isto é, a diferença entre os valores extremos é muito alta. O que é validado pelo valor muito alto do Coeficiente de variação. A Média e a Mediana estão próximas dos valores iniciais da amostra, isso indica que a amostragem não é simétrica em relação a distribuição de dados. A Moda ratifica a afirmação anterior, pois apresenta 4 valores de maior repetição, dois abaixo da mediana e dois acima, sendo todos abaixo da média.

Vamos verificar se estas informações refletem nos gráficos.

Histograma

Formatação tradicional

Apenas utilizando a fórmula padrão do R.

hist(house_selling_price$Price, main = "Histograma sem formatação", xlab = "Valores", ylab = "Frequência",density = 30, angle = 45, col="black", border = "red")


O que gera uma interpretação de que há uma distribuição assimétrica positiva, indicando que a maior parte dos dados estão nos valores inferiores. Mas não permitindo uma análise detalhada para a validação dos cálculos anteroires, já que as faixas dos valores são largas.

Formatação Detalhada

Ao modificarmos a formatação para faixas menores, conseguimos observar o que havíamos comentado anteriormente, de que há uma variação muito grande dos valores e que existem mais de um ponto de moda. utilizaremos como parâmetro de determinação da faixa de valores a amplitude dividida pela quantidade de objetos da amostra,

qtdd=length(house_selling_price$Price)
quebras=Amplitude/qtdd
hist(house_selling_price$Price, main="Distribuição de valores", xlab = "Valores", ylab = "Frequência", col="lightblue", breaks = seq(Menor,Maior, quebras), probability = TRUE)
x = Menor:Maior
y = dnorm(x = x, mean = Media_precos, sd = despad)
lines(x = x, y = y, col = "red", lwd=2)


Aqui podemos observar as ponderações realizadas anteriormente. Confirmamos que a distribuição é assimétrica positiva. A maior quantidade de resultados está na parte incial do gráfico, temos também a verificação da disperção dos valores, com pontos que distorcem a distribuição do gráfico.

Tomando também os valores obitdos do primeiro e terceiro quartil (93.225 e 169.625) demonstrando que 50% da amostra está nesta faixa.

Extras

Transformar dados quantitativos em qualitativos

Dando uma olhada na quantidade de quartos antes de fazermos a modificação dos dados.

tabquaantes=table(house_selling_price$Beds)
tabquaantes

 2  3  4  5 
19 64 15  2 


Realizando a modificação na base

quartnovo=ifelse(house_selling_price$Beds==2,"Dois",ifelse(house_selling_price$Beds==3,"Três",ifelse(house_selling_price$Beds==4,"Quatro","Cinco")))
tabquadepois=table(quartnovo)
tabquadepois
quartnovo
 Cinco   Dois Quatro   Três 
     2     19     15     64 

O inconveniente é que a classificação ficou por ordem alfabética.

Dados de apoio:

https://support.minitab.com/pt-br/minitab/18/help-and-how-to/statistics/basic-statistics/how-to/store-descriptive-statistics/interpret-the-statistics/interpret-the-statistics/

http://www.uel.br/projetos/experimental/pages/arquivos/Comandos_basicos_para_analise_descritiva.html