Spaces:
Sleeping
Sleeping
Update src/streamlit_app.py
Browse files- src/streamlit_app.py +85 -3
src/streamlit_app.py
CHANGED
|
@@ -530,13 +530,97 @@ if st.session_state.page == 'ANOVA':
|
|
| 530 |
- Para análise multivariada, prossiga para Regressão Linear Múltipla.
|
| 531 |
""")
|
| 532 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 533 |
else:
|
| 534 |
if df_anova is None:
|
| 535 |
st.warning("Aguardando carregamento dos dados ou verifique as URLs.")
|
| 536 |
elif coluna_preco_anova is None:
|
| 537 |
st.error(f"Coluna de preço não encontrada. Verifique as colunas: {todas_colunas_anova}")
|
| 538 |
|
| 539 |
-
|
| 540 |
# --- Página REGRESSÃO ---
|
| 541 |
elif st.session_state.page == 'REGRESSAO':
|
| 542 |
st.title("🏠 Dashboard de Regressão Imobiliária")
|
|
@@ -705,5 +789,3 @@ elif st.session_state.page == 'REGRESSAO':
|
|
| 705 |
else:
|
| 706 |
if not colunas_categoricas_reg and not colunas_continuas_reg:
|
| 707 |
st.error("Nenhuma coluna adequada identificada para regressão.")
|
| 708 |
-
|
| 709 |
-
|
|
|
|
| 530 |
- Para análise multivariada, prossiga para Regressão Linear Múltipla.
|
| 531 |
""")
|
| 532 |
|
| 533 |
+
# NOVO: Inserir campo para a análise fornecida dentro da seção ANOVA
|
| 534 |
+
st.header("🔎 Análise de Modelo e Recomendações Exemplo")
|
| 535 |
+
st.markdown("""
|
| 536 |
+
Foram escolhidas 6 variáveis, incluindo variáveis contínuas e categóricas:
|
| 537 |
+
|
| 538 |
+
**Contínuas**:
|
| 539 |
+
- **grlivarea**: Área construída (acima do solo) em pés quadrados.
|
| 540 |
+
- **overallqual**: Qualidade geral do imóvel (escala de 1 a 10).
|
| 541 |
+
- **garagecars**: Capacidade da garagem (número de carros).
|
| 542 |
+
|
| 543 |
+
**Categóricas (convertidas em dummies)**:
|
| 544 |
+
- **neighborhood**: Bairro.
|
| 545 |
+
- **area_faixa**: Faixas da área construída.
|
| 546 |
+
|
| 547 |
+
📊 **Resultados do Modelo (Regressão Linear Múltipla)**:
|
| 548 |
+
- **R² = 0,7535** → O modelo explica aproximadamente 75,35% da variabilidade do preço de venda dos imóveis, o que é considerado muito bom para dados econômicos/sociais.
|
| 549 |
+
- **RMSE = 39.665** → Erro médio quadrático (desvio padrão dos erros).
|
| 550 |
+
- **MAE = 27.558** → Erro médio absoluto — em média, o modelo erra cerca de 27 mil dólares por previsão.
|
| 551 |
+
|
| 552 |
+
🏗️ **Coeficientes Estimados (Impacto das Variáveis)**:
|
| 553 |
+
- **grlivarea = 52,32** → Cada aumento de 1 pé² na área construída eleva o preço em 52,32 dólares. Ex.: 100 pés² = +5.232 dólares.
|
| 554 |
+
- **overallqual = 28.190** → Cada ponto a mais na qualidade geral do imóvel (1 a 10) aumenta o preço em 28.190 dólares. Impacto muito significativo.
|
| 555 |
+
- **garagecars = 19.700** → Cada vaga adicional na garagem eleva o preço em 19.700 dólares.
|
| 556 |
+
|
| 557 |
+
📏 **Análise dos Pressupostos**:
|
| 558 |
+
1. **Linearidade**: ✅
|
| 559 |
+
- O gráfico de resíduos vs valores ajustados não apresentou padrões severos, embora haja leve tendência nas caudas, o que é aceitável.
|
| 560 |
+
|
| 561 |
+
2. **Normalidade dos resíduos**: ❌
|
| 562 |
+
- Teste de Shapiro-Wilk: p < 0.0001 → Os resíduos não são normais.
|
| 563 |
+
- Contudo, com amostras grandes (> 2000 observações), a normalidade dos resíduos não é um pressuposto crítico para a validade dos coeficientes (teorema central do limite). Impacta mais a construção de intervalos de confiança.
|
| 564 |
+
|
| 565 |
+
3. **Homocedasticidade**: ❌
|
| 566 |
+
- O teste de Levene nas ANOVAs sugere heterocedasticidade (variância dos resíduos não é constante).
|
| 567 |
+
|
| 568 |
+
4. **Multicolinearidade**: ✅
|
| 569 |
+
- VIF (Fator de Inflação da Variância) está baixo para as variáveis:
|
| 570 |
+
- grlivarea: 1,56
|
| 571 |
+
- overallqual: 1,85
|
| 572 |
+
- garagecars: 1,64
|
| 573 |
+
- Sem risco de multicolinearidade.
|
| 574 |
+
|
| 575 |
+
🔥 **Principais Insights**:
|
| 576 |
+
- A variável de maior impacto absoluto é **overallqual** (qualidade geral).
|
| 577 |
+
→ Imóveis de melhor acabamento, materiais, design e estado de conservação são fortemente valorizados.
|
| 578 |
+
|
| 579 |
+
- **Garagem** também tem peso elevado: cada vaga adicional vale quase 20 mil dólares.
|
| 580 |
+
|
| 581 |
+
- A **área construída** tem impacto linear relevante: quanto maior o imóvel, maior o preço.
|
| 582 |
+
|
| 583 |
+
- As variáveis de localização (**neighborhood**) e faixa de área (**area_faixa**) também são importantes, mas os coeficientes não foram mostrados diretamente na tabela (porque são muitas dummies). Sabemos, porém, que bairros premium têm preços bem mais altos.
|
| 584 |
+
|
| 585 |
+
🔄 **Transformações Logarítmicas (Seriam Necessárias?)**:
|
| 586 |
+
- Dado que há:
|
| 587 |
+
- Não normalidade dos resíduos;
|
| 588 |
+
- Heterocedasticidade;
|
| 589 |
+
- ➡️ Seria adequado testar um modelo log-log (`log(preço) ~ log(área) + outras`) para melhorar os pressupostos.
|
| 590 |
+
|
| 591 |
+
- Vantagem do modelo log-log:
|
| 592 |
+
- Os coeficientes passam a ser interpretados como variações percentuais.
|
| 593 |
+
- Ex.: Um coeficiente de 0,15 indica que um aumento de 1% na área resulta em um aumento de 0,15% no preço.
|
| 594 |
+
|
| 595 |
+
**Recomendações**:
|
| 596 |
+
- Foque em imóveis com alta qualidade de construção.
|
| 597 |
+
→ A cada ponto a mais na qualidade, você valoriza o imóvel em quase 30 mil dólares.
|
| 598 |
+
|
| 599 |
+
- Invista em melhorar vagas de garagem.
|
| 600 |
+
→ Acrescentar uma vaga pode agregar aproximadamente 20 mil dólares ao valor.
|
| 601 |
+
|
| 602 |
+
- Área construída é importante, mas cresce de forma linear.
|
| 603 |
+
→ Estratégia: Ampliações moderadas são rentáveis até certo ponto.
|
| 604 |
+
|
| 605 |
+
- Atenção à localização (**Neighborhood**).
|
| 606 |
+
→ Embora os coeficientes individuais não estejam visíveis no resumo, é sabido que bairros mais valorizados impactam fortemente o preço. Você deve usar essa informação para selecionar imóveis em regiões de maior demanda.
|
| 607 |
+
|
| 608 |
+
- Para modelagem mais robusta:
|
| 609 |
+
→ Recomenda-se testar modelos logarítmicos que podem entregar previsões mais estáveis.
|
| 610 |
+
|
| 611 |
+
- Cuidado com imóveis fora do padrão:
|
| 612 |
+
→ O modelo tem maiores erros nos extremos — imóveis muito caros ou muito baratos.
|
| 613 |
+
|
| 614 |
+
📌 **Decisão com Confiança**:
|
| 615 |
+
- Priorize imóveis bem construídos, em bairros consolidados, com boa metragem e pelo menos 2 vagas de garagem.
|
| 616 |
+
- Foque sua argumentação nesses atributos para justificar o preço do imóvel aos clientes.
|
| 617 |
+
""")
|
| 618 |
else:
|
| 619 |
if df_anova is None:
|
| 620 |
st.warning("Aguardando carregamento dos dados ou verifique as URLs.")
|
| 621 |
elif coluna_preco_anova is None:
|
| 622 |
st.error(f"Coluna de preço não encontrada. Verifique as colunas: {todas_colunas_anova}")
|
| 623 |
|
|
|
|
| 624 |
# --- Página REGRESSÃO ---
|
| 625 |
elif st.session_state.page == 'REGRESSAO':
|
| 626 |
st.title("🏠 Dashboard de Regressão Imobiliária")
|
|
|
|
| 789 |
else:
|
| 790 |
if not colunas_categoricas_reg and not colunas_continuas_reg:
|
| 791 |
st.error("Nenhuma coluna adequada identificada para regressão.")
|
|
|
|
|
|