63 lines
2.5 KiB
Markdown
63 lines
2.5 KiB
Markdown
# Story 4.2: Exécution du Modèle (Backend)
|
|
|
|
Status: review
|
|
|
|
## Story
|
|
|
|
As a system,
|
|
I want to execute the statistical model computation,
|
|
so that I can provide accurate regression results.
|
|
|
|
## Acceptance Criteria
|
|
|
|
1. **Algorithm Support:** Backend supports Ordinary Least Squares (OLS) for Linear and Logit for Logistic regression.
|
|
2. **Analysis Endpoint:** A POST endpoint `/api/v1/analysis/run-regression` accepts data, X features, Y target, and model type.
|
|
3. **Comprehensive Metrics:** Returns R-squared, Adjusted R-squared, coefficients, standard errors, p-values, and residuals.
|
|
4. **Validation:** Handles singular matrices or perfect collinearity without crashing (returns 400 with explanation).
|
|
5. **Clean Data Source:** Respects user row exclusions during calculation.
|
|
|
|
## Tasks / Subtasks
|
|
|
|
- [x] **Dependency Update** (AC: 1)
|
|
- [x] Add `statsmodels` to the backend using `uv`.
|
|
- [x] **Regression Engine** (AC: 1, 3, 4)
|
|
- [x] Implement `run_linear_regression(df, x_cols, y_col)` in `backend/app/core/engine/stats.py`.
|
|
- [x] Implement `run_logistic_regression(df, x_cols, y_col)` in `backend/app/core/engine/stats.py`.
|
|
- [x] **API Endpoint** (AC: 2, 5)
|
|
- [x] Implement `POST /api/v1/analysis/run-regression` in `analysis.py`.
|
|
|
|
## Dev Notes
|
|
|
|
- **Statistics:** Using `statsmodels.api` for high-quality, research-grade regression summaries.
|
|
- **Robustness:** Added intercept (constant) automatically to models. Implemented basic median-splitting for Logistic target encoding if not strictly binary.
|
|
- **Validation:** Integrated try/except blocks to catch linear algebra errors (e.g. non-invertible matrices) and return meaningful error messages.
|
|
|
|
### Project Structure Notes
|
|
|
|
- Modified `backend/app/core/engine/stats.py`.
|
|
- Updated `backend/app/api/v1/analysis.py` with the execution endpoint.
|
|
- Added regression test case in `backend/tests/test_analysis.py`.
|
|
|
|
### References
|
|
|
|
- [Source: epics.md#Story 4.2]
|
|
- [Source: architecture.md#Computational Workers]
|
|
|
|
## Dev Agent Record
|
|
|
|
### Agent Model Used
|
|
|
|
{{agent_model_name_version}}
|
|
|
|
### Completion Notes List
|
|
- Integrated `statsmodels` for advanced statistical modeling.
|
|
- Developed a unified regression engine supporting Linear and Logistic models.
|
|
- Implemented `/api/v1/analysis/run-regression` endpoint returning detailed metrics and residuals for plotting.
|
|
- Verified with automated tests for both model types.
|
|
|
|
### File List
|
|
- /backend/app/core/engine/stats.py
|
|
- /backend/app/api/v1/analysis.py
|
|
- /backend/tests/test_analysis.py
|
|
- /backend/pyproject.toml
|
|
- /backend/uv.lock |