ricardoadriano commited on
Commit
053faec
·
verified ·
1 Parent(s): 9f22e36

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +33 -15
src/streamlit_app.py CHANGED
@@ -36,7 +36,7 @@ st.markdown("---")
36
  tabs = st.tabs(["Simulações Teóricas", "Análise AmesHousing"])
37
 
38
  # -----------------------------------------------------
39
- # Aba 1: Simulações Teóricas (mantida)
40
  # -----------------------------------------------------
41
  with tabs[0]:
42
  st.subheader("Teste de Hipótese para Proporção de Testes Positivos de COVID-19")
@@ -67,33 +67,48 @@ with tabs[1]:
67
 
68
  # Leitura fixa do CSV dentro da pasta Dados
69
  casa_data = pd.read_csv("../Dados/AmesHousing.csv")
70
-
71
- # Renomear colunas para evitar problemas com espaços
72
  casa_data.columns = casa_data.columns.str.strip().str.replace(" ", "_")
73
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  # -------------------------------------------------
75
  # Análise Exploratória
76
  # -------------------------------------------------
77
  st.markdown("### Distribuição do Preço de Venda")
78
  fig, ax = plt.subplots(figsize=(8,5))
79
- sns.histplot(casa_data['SalePrice'], kde=True, ax=ax)
80
  ax.set_title("Distribuição do Preço de Venda")
81
  st.pyplot(fig)
82
 
83
  # Boxplots
84
  st.markdown("### Boxplots das Variáveis Selecionadas")
85
- variavel = st.selectbox("Escolha a variável categórica para comparar preços:",
86
- ["Neighborhood","Garage_Type","Fireplaces"])
 
 
87
 
88
  fig2, ax2 = plt.subplots(figsize=(12,6))
89
- sns.boxplot(x=variavel, y="SalePrice", data=casa_data, ax=ax2)
90
  plt.xticks(rotation=90)
91
  ax2.set_title(f"Preço de Venda por {variavel}")
92
  st.pyplot(fig2)
93
 
94
  # Scatter interativo (média de preço por bairro)
95
  st.markdown("### Preço Médio de Venda por Bairro")
96
- bairro_grouped = casa_data.groupby('Neighborhood').agg(
97
  count=('SalePrice','size'),
98
  mean_price=('SalePrice','mean')
99
  ).reset_index()
@@ -115,13 +130,16 @@ with tabs[1]:
115
  # ANOVA
116
  # -------------------------------------------------
117
  st.markdown("### ANOVA para Neighborhood, Garage_Type e Fireplaces")
118
- alpha = st.sidebar.slider("Nível de significância (α) - ANOVA AmesHousing",
119
- 0.01,0.10,0.05,0.01,key="alpha_ames")
 
 
 
120
 
121
  modelos = {
122
- "Neighborhood": ols('SalePrice ~ C(Neighborhood)', data=casa_data).fit(),
123
- "Garage_Type": ols('SalePrice ~ C(Garage_Type)', data=casa_data).fit(),
124
- "Fireplaces": ols('SalePrice ~ C(Fireplaces)', data=casa_data).fit()
125
  }
126
 
127
  for nome, modelo in modelos.items():
@@ -143,7 +161,7 @@ with tabs[1]:
143
 
144
  st.markdown("#### Teste de Homocedasticidade (Levene)")
145
  for nome in ["Neighborhood","Garage_Type","Fireplaces"]:
146
- grupos = [grupo["SalePrice"].dropna() for _, grupo in casa_data.groupby(nome)]
147
  stat, p = levene(*grupos)
148
  st.write(f"{nome}: estatística={stat:.3f}, p={p:.3f} "
149
  + ("variâncias iguais" if p >= alpha else "variâncias diferentes"))
@@ -153,7 +171,7 @@ with tabs[1]:
153
  # -------------------------------------------------
154
  st.markdown("### Teste não-paramétrico (Kruskal-Wallis)")
155
  for nome in ["Neighborhood","Garage_Type","Fireplaces"]:
156
- grupos = [grupo["SalePrice"].dropna() for _, grupo in casa_data.groupby(nome)]
157
  stat, p = kruskal(*grupos)
158
  st.write(f"{nome}: estatística={stat:.3f}, p={p:.3f} "
159
  + ("diferenças significativas" if p < alpha else "sem diferença significativa"))
 
36
  tabs = st.tabs(["Simulações Teóricas", "Análise AmesHousing"])
37
 
38
  # -----------------------------------------------------
39
+ # Aba 1: Simulações Teóricas
40
  # -----------------------------------------------------
41
  with tabs[0]:
42
  st.subheader("Teste de Hipótese para Proporção de Testes Positivos de COVID-19")
 
67
 
68
  # Leitura fixa do CSV dentro da pasta Dados
69
  casa_data = pd.read_csv("../Dados/AmesHousing.csv")
 
 
70
  casa_data.columns = casa_data.columns.str.strip().str.replace(" ", "_")
71
 
72
+ # ---------------------------
73
+ # NOVO: Proporção de amostra
74
+ # ---------------------------
75
+ st.sidebar.markdown("### Parâmetros do AmesHousing")
76
+ prop_sample = st.sidebar.slider(
77
+ "Proporção da amostra usada nos gráficos",
78
+ 0.1, 1.0, 1.0, 0.05,
79
+ key="prop_ames"
80
+ )
81
+
82
+ if prop_sample < 1.0:
83
+ dados = casa_data.sample(frac=prop_sample, random_state=42)
84
+ else:
85
+ dados = casa_data.copy()
86
+
87
  # -------------------------------------------------
88
  # Análise Exploratória
89
  # -------------------------------------------------
90
  st.markdown("### Distribuição do Preço de Venda")
91
  fig, ax = plt.subplots(figsize=(8,5))
92
+ sns.histplot(dados['SalePrice'], kde=True, ax=ax)
93
  ax.set_title("Distribuição do Preço de Venda")
94
  st.pyplot(fig)
95
 
96
  # Boxplots
97
  st.markdown("### Boxplots das Variáveis Selecionadas")
98
+ variavel = st.selectbox(
99
+ "Escolha a variável categórica para comparar preços:",
100
+ ["Neighborhood","Garage_Type","Fireplaces"]
101
+ )
102
 
103
  fig2, ax2 = plt.subplots(figsize=(12,6))
104
+ sns.boxplot(x=variavel, y="SalePrice", data=dados, ax=ax2)
105
  plt.xticks(rotation=90)
106
  ax2.set_title(f"Preço de Venda por {variavel}")
107
  st.pyplot(fig2)
108
 
109
  # Scatter interativo (média de preço por bairro)
110
  st.markdown("### Preço Médio de Venda por Bairro")
111
+ bairro_grouped = dados.groupby('Neighborhood').agg(
112
  count=('SalePrice','size'),
113
  mean_price=('SalePrice','mean')
114
  ).reset_index()
 
130
  # ANOVA
131
  # -------------------------------------------------
132
  st.markdown("### ANOVA para Neighborhood, Garage_Type e Fireplaces")
133
+ alpha = st.sidebar.slider(
134
+ "Nível de significância (α) - ANOVA AmesHousing",
135
+ 0.01,0.10,0.05,0.01,
136
+ key="alpha_ames"
137
+ )
138
 
139
  modelos = {
140
+ "Neighborhood": ols('SalePrice ~ C(Neighborhood)', data=dados).fit(),
141
+ "Garage_Type": ols('SalePrice ~ C(Garage_Type)', data=dados).fit(),
142
+ "Fireplaces": ols('SalePrice ~ C(Fireplaces)', data=dados).fit()
143
  }
144
 
145
  for nome, modelo in modelos.items():
 
161
 
162
  st.markdown("#### Teste de Homocedasticidade (Levene)")
163
  for nome in ["Neighborhood","Garage_Type","Fireplaces"]:
164
+ grupos = [grupo["SalePrice"].dropna() for _, grupo in dados.groupby(nome)]
165
  stat, p = levene(*grupos)
166
  st.write(f"{nome}: estatística={stat:.3f}, p={p:.3f} "
167
  + ("variâncias iguais" if p >= alpha else "variâncias diferentes"))
 
171
  # -------------------------------------------------
172
  st.markdown("### Teste não-paramétrico (Kruskal-Wallis)")
173
  for nome in ["Neighborhood","Garage_Type","Fireplaces"]:
174
+ grupos = [grupo["SalePrice"].dropna() for _, grupo in dados.groupby(nome)]
175
  stat, p = kruskal(*grupos)
176
  st.write(f"{nome}: estatística={stat:.3f}, p={p:.3f} "
177
  + ("diferenças significativas" if p < alpha else "sem diferença significativa"))