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>
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
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
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)
Var1 | Freq |
85000 | 3 |
1e+05 | 3 |
137000 | 3 |
140000 | 3 |
Maior=max(house_selling_price$Price)
Maior
[1] 587000
Menor=min(house_selling_price$Price)
Menor
[1] 21000
É 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
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
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
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:
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:
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
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.
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.
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.
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.
http://www.uel.br/projetos/experimental/pages/arquivos/Comandos_basicos_para_analise_descritiva.html