knitr::opts_chunk$set(cache=FALSE, warning = FALSE, message = FALSE, fig.align = "center", out.width = "60%") knitr::knit_hooks$set(mysize = function(before, options, envir) { if (before) return(options$size) }) library(sf) library(kableExtra) library(ggplot2) library(cowplot) theme_set(theme_cowplot(14)) library(stargazer)
- appraiseR (https://lfpdroubi.github.io/appraiseR/) é um pacote de software livre para utilização:
- no ensino da Engenharia de Avaliações
- na pesquisa de melhores práticas e novos métodos para Avaliação de Bens
- na prática da Engenharia de Avaliações (sem garantias)
- Por que \proglang{R}?
- \proglang{R} é uma linguagem de programação feita por estatísticos
- \proglang{R} é uma linguagem de programação feita para estatísticos
- Milhares de pacotes de software com métodos estatísticos já programados
- Excelentes recursos para construção de gráficos
- Desenvolvimento comunitário: Free software
- fortemente baseado na NBR 14.653-2 [@NBR1465302]
- implementa também alguns parâmetros da IAAO [@iaao]
- pretende integrar a comunidade de Engenheiros Avaliadores na pesquisa e divulgação de dados e análise de dados para a Engenharia de Avaliações
- Existem diversos pacotes no \proglang{R} para baixar dados de APIs
- Por que não uma API para dados públicos de transações de imóveis?
library(appraiseR) data(centro_2015)
knitr::kable(head(st_drop_geometry(centro_2015), 10), format = "latex", format.args = list(big.mark = ".", decimal.mark = ","), booktabs = TRUE) %>% kable_styling(font_size = 7)
dados <- st_drop_geometry(centro_2015) plotdf(valor~., dados)
plotdf(log(valor)~., dados)
fits <- bestfit(valor~., data = dados) summary(fits)
library(car) fit <- lm(valor ~ area_total + quartos + suites + garagens + dist_b_mar + padrao, data = dados) s <- summary(fit) boxCox(fit)
boxTidwell(log(valor) ~ area_total + quartos + dist_b_mar, other.x = ~padrao + suites + garagens, data = dados)
logs <- fits$tab[which(fits$tab$valor == "log"), ] logs
logs <- fits$tab[which(fits$tab$valor == "log"), ] kable(head(logs, 9), booktabs = TRUE) %>% kable_styling(font_size = 7)
summary(fits, fit = 37)
plotdf(log(valor)~ area_total + quartos + suites + sqrt(garagens) + rsqrt(dist_b_mar) + padrao, dados)
# Modelo adotado (37) fit <- summary(fits, fit = 37)$fit plot(fit, which = 1:6)
fit <- summary(fits, fit = 37)$fit plot(fit, which = 1:6, cex.caption = 3, cex.sub = 1.5, cex.axis = 2, cex.lab = 2)
KS(fit)
library(lmtest) bptest(fit)
plot(fit, which = c(1, 3))
plotModel(fits, fit = 37, interval = "both", level = .80, local = list(area_total = 205, quartos = 3, suites = 1, garagens = 2, dist_b_mar = 250, padrao = "medio"))
plotModel(fits, fit = 37, interval = "both", level = .80, func="log", ca = TRUE, local = list(area_total = 205, quartos = 3, suites = 1, garagens = 2, dist_b_mar = 250, padrao = "medio"))
predict(fits, fit = 37, interval = "confidence", level = .80, newdata = data.frame(area_total = 205, quartos = 3, suites = 1, garagens = 2, dist_b_mar = 250, padrao = "medio"))
predict(fits, fit = 37, interval = "prediction", level = .80, newdata = data.frame(area_total = 205, quartos = 3, suites = 1, garagens = 2, dist_b_mar = 250, padrao = "medio"))
```r."} powerPlot(fit)
## Poder de Predição (2) ```r powerPlot(fit, axis = "inverted")
powerPlot(fit, axis = "inverted", func = "log")
shrinkPlot(fit, func = "log")
iaao_Ratio(fit, func = "log")
plot(iaao_Ratio(fit, func = "log"))
plot(iaao_Ratio(fit, func = "log"), cex.lab = 1.75, cex.axis = 1.75)
set.seed(1) area <- runif(1000, 50, 600) quartos <- rbinom(1000, 3, .33) + 1 suites <- rbinom(1000, 2, .5) VU <- 500 - .5*area + 150*quartos + 75*suites + rnorm(1000, 0, 50) dados <- data.frame(VU, area, quartos, suites) amostra <- dados[sample(1:1000, 250), ]
fit <- lm(VU ~ 1, amostra) # Resíduos vs. valores ajustados plot(fit, which = 1) #Resíduos vs. valores observados plot(amostra$VU, residuals(fit)) abline(a = 0, b = 0, col = "grey", lty = 2)
fit1 <- lm(VU ~ area, amostra) plot(fit, which = 1:6)
fit1 <- lm(VU ~ area, amostra) plot(fit1, which = 1:6, cex.caption = 3, cex.sub = 1.5, cex.axis = 2, cex.lab = 2)
powerPlot(fit1) powerPlot(fit1, axis ="inverted")
shrinkPlot(fit1)
fit2 <- lm(VU ~ area + quartos, amostra) powerPlot(fit2) powerPlot(fit2, axis ="inverted")
shrinkPlot(fit2)
fit3 <- lm(VU ~ area + quartos + suites, amostra) powerPlot(fit3) powerPlot(fit3, axis ="inverted")
- Mesmo com modelo completo ainda subsiste uma leve inclinação (em relação à diagonal) no 1º gráfico.
shrinkPlot(fit3)
- Nota-se ainda algum encolhimento, ainda que pequeno.
stargazer(fit, fit1, fit2, fit3, label = "tab:tab1", title = "Estatísticas dos modelos.", type = "latex", header = FALSE, table.placement = "H", report = "vcst*", single.row = F, intercept.bottom = FALSE, intercept.top = TRUE, decimal.mark = ",", digit.separator = ".", digits = 2, star.cutoffs = c(0.30, 0.20, 0.10), notes.label = "Notas:", font.size = "tiny")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.