Spaces:
Running
Running
Update src/streamlit_app.py
Browse files- src/streamlit_app.py +10 -7
src/streamlit_app.py
CHANGED
|
@@ -103,9 +103,9 @@ def plot_residual_analysis(y_true, y_pred, residuals):
|
|
| 103 |
"""Create comprehensive residual analysis plots"""
|
| 104 |
fig = make_subplots(rows=2, cols=2,
|
| 105 |
subplot_titles=("Residuals vs Fitted",
|
| 106 |
-
|
| 107 |
-
|
| 108 |
-
|
| 109 |
|
| 110 |
# Residuals vs Fitted
|
| 111 |
fig.add_trace(
|
|
@@ -119,17 +119,20 @@ def plot_residual_analysis(y_true, y_pred, residuals):
|
|
| 119 |
theoretical = qq.theoretical_quantiles
|
| 120 |
sample = qq.sample_quantiles
|
| 121 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 122 |
fig.add_trace(
|
| 123 |
go.Scatter(x=theoretical, y=sample, mode='markers', name='Q-Q Points'),
|
| 124 |
row=1, col=2
|
| 125 |
)
|
| 126 |
|
| 127 |
# Add reference line
|
| 128 |
-
line_x = np.array([theoretical.min(), theoretical.max()])
|
| 129 |
-
line_y = qq.slope * line_x + qq.intercept
|
| 130 |
fig.add_trace(
|
| 131 |
go.Scatter(x=line_x, y=line_y, mode='lines',
|
| 132 |
-
|
| 133 |
row=1, col=2
|
| 134 |
)
|
| 135 |
|
|
@@ -142,7 +145,7 @@ def plot_residual_analysis(y_true, y_pred, residuals):
|
|
| 142 |
# Residuals vs Order
|
| 143 |
fig.add_trace(
|
| 144 |
go.Scatter(x=np.arange(len(residuals)), y=residuals,
|
| 145 |
-
|
| 146 |
row=2, col=2
|
| 147 |
)
|
| 148 |
fig.add_hline(y=0, line_dash="dot", row=2, col=2)
|
|
|
|
| 103 |
"""Create comprehensive residual analysis plots"""
|
| 104 |
fig = make_subplots(rows=2, cols=2,
|
| 105 |
subplot_titles=("Residuals vs Fitted",
|
| 106 |
+
"Q-Q Plot",
|
| 107 |
+
"Residual Histogram",
|
| 108 |
+
"Residuals vs Order"))
|
| 109 |
|
| 110 |
# Residuals vs Fitted
|
| 111 |
fig.add_trace(
|
|
|
|
| 119 |
theoretical = qq.theoretical_quantiles
|
| 120 |
sample = qq.sample_quantiles
|
| 121 |
|
| 122 |
+
# Calculate regression line for Q-Q plot
|
| 123 |
+
slope, intercept = np.polyfit(theoretical, sample, 1)
|
| 124 |
+
line_x = np.array([theoretical.min(), theoretical.max()])
|
| 125 |
+
line_y = slope * line_x + intercept
|
| 126 |
+
|
| 127 |
fig.add_trace(
|
| 128 |
go.Scatter(x=theoretical, y=sample, mode='markers', name='Q-Q Points'),
|
| 129 |
row=1, col=2
|
| 130 |
)
|
| 131 |
|
| 132 |
# Add reference line
|
|
|
|
|
|
|
| 133 |
fig.add_trace(
|
| 134 |
go.Scatter(x=line_x, y=line_y, mode='lines',
|
| 135 |
+
line=dict(color='red'), name='Reference Line'),
|
| 136 |
row=1, col=2
|
| 137 |
)
|
| 138 |
|
|
|
|
| 145 |
# Residuals vs Order
|
| 146 |
fig.add_trace(
|
| 147 |
go.Scatter(x=np.arange(len(residuals)), y=residuals,
|
| 148 |
+
mode='lines+markers', name='Residuals'),
|
| 149 |
row=2, col=2
|
| 150 |
)
|
| 151 |
fig.add_hline(y=0, line_dash="dot", row=2, col=2)
|