mirror of
https://github.com/ArthurDanjou/ArtStudies.git
synced 2026-03-16 05:11:40 +01:00
Compare commits
6 Commits
9a42e5b310
...
af055bc176
| Author | SHA1 | Date | |
|---|---|---|---|
| af055bc176 | |||
| cd13946041 | |||
| 5b44bdcf1b | |||
| d12efdede5 | |||
| 80f6ec8517 | |||
| 746f4fbc78 |
83
.github/copilot-instructions.md
vendored
Normal file
83
.github/copilot-instructions.md
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
# Copilot Instructions for ArtStudies
|
||||
|
||||
Collection de travaux académiques en mathématiques (L3 → M2) utilisant **Python** et **R**.
|
||||
|
||||
## Architecture du Projet
|
||||
|
||||
```
|
||||
L3/, M1/, M2/ # Niveaux académiques (Licence 3, Master 1 & 2)
|
||||
└── <Nom du Cours>/ # Ex: "Deep Learning", "Linear Models"
|
||||
├── TP{n}/ # Travaux pratiques numérotés
|
||||
├── Project/ # Projets finaux
|
||||
└── data/ # Données locales au TP
|
||||
```
|
||||
|
||||
## Python - Conventions
|
||||
|
||||
- **Gestionnaire de packages** : `uv` (voir `pyproject.toml` racine)
|
||||
- **Linter** : Ruff avec règles strictes (`select = ["ALL"]`)
|
||||
- **Format des imports** : sections personnalisées définies dans `pyproject.toml` :
|
||||
```python
|
||||
# standard-library → third-party → data-science → ml → first-party
|
||||
import numpy as np # data-science group
|
||||
import pandas as pd
|
||||
from sklearn import ... # ml group
|
||||
```
|
||||
- **Notebooks** : structures Jupyter avec cellules markdown descriptives + code
|
||||
- **Reproductibilité** : utiliser `np.random.seed(42)` pour fixer les seeds
|
||||
|
||||
### Sous-projets avec dépendances isolées
|
||||
|
||||
Certains projets ont leur propre `pyproject.toml` (ex: `M2/Reinforcement Learning/project/`). Utiliser `uv` dans ces dossiers pour installer les dépendances spécifiques.
|
||||
|
||||
## R - Conventions
|
||||
|
||||
- **Projets R** : fichiers `.Rproj` dans chaque dossier TP/Projet
|
||||
- **Gestion packages** : `renv` pour l'isolation (voir `.Rprofile`)
|
||||
- **Script d'init** : `M2/Data Visualisation/init.R` installe les packages courants
|
||||
- **Documents** : RMarkdown (`.Rmd`) pour les rapports reproductibles
|
||||
- **Linting** : utiliser `lintr` pour l'analyse statique et `styler` pour le formatage (config: `.lintr` à la racine)
|
||||
```r
|
||||
# Vérifier le style d'un fichier
|
||||
lintr::lint("script.R")
|
||||
|
||||
# Formater automatiquement
|
||||
styler::style_file("script.R")
|
||||
```
|
||||
|
||||
## SQL (M2/SQL)
|
||||
|
||||
Environnement Docker avec MySQL :
|
||||
```bash
|
||||
# Démarrer le conteneur
|
||||
docker compose -f M2/SQL/docker-compose.yml up -d
|
||||
|
||||
# Exécuter les TPs via Make
|
||||
make tp1 # Exécute scripts/TP1.sql
|
||||
make tp2 # Exécute scripts/TP2.sql
|
||||
make project # Exécute scripts/DANJOU_Arthur.sql
|
||||
```
|
||||
Logs générés dans `M2/SQL/logs/`.
|
||||
|
||||
## Nommage des Fichiers
|
||||
|
||||
| Type | Convention | Exemple |
|
||||
|------|------------|---------|
|
||||
| TP numérotés | `TP{n}.ipynb`, `TP{n}.Rmd` | `TP1.ipynb`, `TP2.Rmd` |
|
||||
| Projets personnels | `DANJOU_Arthur.*` | `DANJOU_Arthur.sql` |
|
||||
| Labs thématiques | Nom descriptif complet | `Lab 4 - Monte Carlo Control in Blackjack game.ipynb` |
|
||||
|
||||
## Stack Technique Principale
|
||||
|
||||
- **Data Science** : numpy, pandas, scipy, matplotlib, seaborn, plotly
|
||||
- **ML** : scikit-learn, xgboost, catboost, tensorflow/keras, shap
|
||||
- **LLM/RAG** : langchain, sentence-transformers, faiss-cpu
|
||||
- **Géospatial** : geopandas, rasterio
|
||||
- **R** : tidyverse, ggplot2, FactoMineR, caret, glmnet
|
||||
|
||||
## Bonnes Pratiques
|
||||
|
||||
1. Toujours vérifier si un `pyproject.toml` local existe avant d'ajouter des dépendances
|
||||
2. Les notebooks contiennent souvent du texte explicatif en **français**
|
||||
3. Utiliser Plotly pour les visualisations interactives, Matplotlib/Seaborn pour les exports
|
||||
4. Les données volumineuses ne sont pas versionnées - télécharger via le code du notebook si nécessaire
|
||||
39
.lintr
Normal file
39
.lintr
Normal file
@@ -0,0 +1,39 @@
|
||||
linters: linters_with_defaults(
|
||||
# Longueur de ligne - 120 caractères pour le code, 80 pour le texte
|
||||
line_length_linter(120),
|
||||
# Noms d'objets : snake_case recommandé, camelCase autorisé pour les packages
|
||||
object_name_linter(styles = c("snake_case")),
|
||||
# Interdire le code commenté (à la place, supprimer ou utiliser roxygen)
|
||||
commented_code_linter(),
|
||||
# Complexity cyclomatique - alerte au-dessus de 10
|
||||
cyclocomp_linter(max = 10)
|
||||
)
|
||||
|
||||
# Options de linters supplémentaires
|
||||
objects:
|
||||
# Éviter les noms trop courts (sauf dans les fonctions anonymes)
|
||||
- exclude: "(^_.+$)|(^i$)|(^j$)|(^k$)"
|
||||
linters: ["object_name_linter"]
|
||||
# Autoriser les noms courts pour les boucles imbriquées
|
||||
- exclude: ".*\\.funs$"
|
||||
linters: ["object_name_linter"]
|
||||
|
||||
# Exclusions : répertoires virtuels ou générés automatiquement
|
||||
exclusions: list(
|
||||
# Dependencies renv (gérées séparément)
|
||||
"renv/",
|
||||
"packrat/",
|
||||
# Données brutes (souvent des fichiers génériques)
|
||||
"data/",
|
||||
# Fichiers de configuration de projets R
|
||||
"\\.Rproj\\.",
|
||||
# Cache R
|
||||
"\\.Rhistory",
|
||||
"\\.RData",
|
||||
"\\.Rprofile\\.exprs"
|
||||
)
|
||||
|
||||
encoding: "UTF-8"
|
||||
|
||||
# Spécificité pour ce projet : autoriser le français dans les commentaires
|
||||
# et les noms d'objets pour les projets académiques
|
||||
67
CLAUDE.md
Normal file
67
CLAUDE.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Quick Commands
|
||||
|
||||
### Python Projects
|
||||
- **Install dependencies**: `uv sync` (root) or `uv sync` in a subdirectory with its own `pyproject.toml`
|
||||
- **Run linter**: `ruff check .` (includes all files via `extend-include`)
|
||||
- **Auto-fix**: `ruff check . --fix`
|
||||
- **Format imports**: `ruff format .`
|
||||
|
||||
### R Projects
|
||||
- **Load project**: RStudio/.Rprofile uses `renv` for isolation
|
||||
- **Check style**: `lintr::lint("script.R")`
|
||||
- **Format code**: `styler::style_file("script.R")`
|
||||
|
||||
### SQL (M2/SQL)
|
||||
```bash
|
||||
docker compose -f M2/SQL/docker-compose.yml up -d
|
||||
make tp1 # Execute TP1.sql
|
||||
make tp2 # Execute TP2.sql
|
||||
make tp3 # Execute TP3.sql
|
||||
make project # Execute DANJOU_Arthur.sql
|
||||
```
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
L3/ # Bachelor's degree (3rd year)
|
||||
M1/ # Master's degree (1st year)
|
||||
M2/ # Master's degree (2nd year)
|
||||
└── <Course>/ # e.g., "Deep Learning", "Data Visualisation"
|
||||
├── TP{n}/ # Practical work (numbered)
|
||||
├── Project/ # Final project
|
||||
└── data/ # Course-specific data
|
||||
```
|
||||
|
||||
## Python Conventions
|
||||
|
||||
- **Package manager**: `uv` (workspace configured at root)
|
||||
- **Linting**: Ruff with strict rules (`select = ["ALL"]`)
|
||||
- **Import ordering**: Custom sections in `pyproject.toml`:
|
||||
- `data-science`: numpy, pandas, scipy, matplotlib, seaborn, plotly
|
||||
- `ml`: tensorflow, keras, torch, sklearn, xgboost, catboost, shap
|
||||
- **Reproducibility**: Use `np.random.seed(42)` for random seeds
|
||||
- **Notebooks**: Jupyter with descriptive markdown cells
|
||||
|
||||
## R Conventions
|
||||
|
||||
- **Package management**: `renv` (autoloading via `.Rprofile`)
|
||||
- **Linting**: `lintr` configured in `.lintr`
|
||||
- **Documents**: RMarkdown (`.Rmd`) for reproducible reports
|
||||
- **Visualization**: ggplot2, plotly, FactoMineR
|
||||
|
||||
## Key Technologies
|
||||
|
||||
- **Data Science**: numpy, pandas, scipy, matplotlib, seaborn, plotly, geopandas
|
||||
- **Machine Learning**: scikit-learn, xgboost, catboost, tensorflow, keras, shap
|
||||
- **LLM/RAG**: langchain, sentence-transformers, faiss-cpu
|
||||
- **R**: tidyverse, ggplot2, FactoMineR, caret, glmnet, RShiny
|
||||
|
||||
## Notes
|
||||
|
||||
- Some subprojects (e.g., `M2/Reinforcement Learning/project/`) have isolated `pyproject.toml` files
|
||||
- Large datasets are not versioned—download via notebook code when needed
|
||||
- Course materials and documentation are primarily in French
|
||||
291
M2/Time Series/TD1.Rmd
Normal file
291
M2/Time Series/TD1.Rmd
Normal file
@@ -0,0 +1,291 @@
|
||||
# Import des données
|
||||
|
||||
```{r}
|
||||
library(tseries)
|
||||
|
||||
data = read.csv2('./data/TD1.csv')
|
||||
data_series = ts(data)
|
||||
```
|
||||
|
||||
# Graphique
|
||||
|
||||
```{r}
|
||||
plot(
|
||||
data_series,
|
||||
main = "Exemple de série temporelle",
|
||||
ylab = "Valeurs",
|
||||
xlab = "Temps",
|
||||
col = "blue",
|
||||
type = "o"
|
||||
)
|
||||
|
||||
acf(data, main = "Fonction d'Autocorrélation (ACF)")
|
||||
```
|
||||
|
||||
## 1. Analyse de la série temporelle (Time Plot)
|
||||
|
||||
- Tendance : Il y a une tendance linéaire croissante extrêmement claire et forte sur toute la période (de `t=0` à `t=100`). La moyenne de la série augmente de façon constante, ce qui confirme une non-stationnarité pure.
|
||||
|
||||
- Saisonnalité : Nous observons des oscillations très régulières en forme de "dents de scie". La répétition systématique de ces motifs indique une composante saisonnière forte.
|
||||
|
||||
- Variabilité : L'amplitude des oscillations semble ici rester constante par rapport à la tendance (modèle additif).
|
||||
|
||||
## 2. Analyse de la Fonction d'Autocorrélation (ACF)
|
||||
|
||||
- Profil de Non-Stationnarité : Nous observons une décroissance très lente et linéaire des pics. Même au lag 20, la corrélation reste très élevée (environ `0.4`), bien au-dessus de la zone de significativité bleue. C'est la signature typique d'une série avec une tendance non traitée.
|
||||
|
||||
- Saisonnalité de période 2 : les retards pairs (2,4,6...) sont systématiquement plus élevés que les retards impairs (1,3,5...).
|
||||
|
||||
- Le pic au lag 2 est particulièrement fort, presque au même niveau que le lag 1.
|
||||
- Cela confirme que la valeur à l'instant `t` est très fortement corrélée à la valeur à `t−2`.
|
||||
|
||||
# Lag plot
|
||||
|
||||
```{r}
|
||||
lag.plot(
|
||||
data_series,
|
||||
lags = 4,
|
||||
do.lines = FALSE,
|
||||
main = "Lag-Plot"
|
||||
)
|
||||
```
|
||||
|
||||
## 1. Analyse par retard (Lag)
|
||||
|
||||
- Lag 2 et Lag 4 (Forte corrélation positive) : Les nuages de points pour les retards pairs sont extrêmement resserrés autour de la première bissectrice (la ligne pointillée). Cela signifie que la valeur à l'instant `t` est presque parfaitement prédite par la valeur à `t−2` et `t−4`. Cela confirme la saisonnalité de péridoe `2`.
|
||||
|
||||
- Lag 1 et Lag 3 (Dispersion organisée) : Pour les retards impairs, nous observons deux "nuages" ou une dispersion plus large. Cela traduit l'oscillation "haut-bas" : une valeur haute est suivie d'une valeur basse, créant cet écart par rapport à la ligne d'identité.
|
||||
|
||||
## 2. Relation avec la tendance
|
||||
|
||||
L'alignement global de tous les lags le long d'une diagonale ascendante confirme la tendance déterministe. Même avec le "bruit" saisonnier, la valeur globale `Y_t` augmente proportionnellement à `Y_{t−k}`. C'est ce qui expliquait la p-value de `0.581` à l'ADF : la série ne revient jamais vers une moyenne centrale, elle "s'échappe" vers le haut.
|
||||
|
||||
# Saisonnalité
|
||||
|
||||
```{r}
|
||||
kpss_test_result <- kpss.test(data_series)
|
||||
print(kpss_test_result)
|
||||
|
||||
adf_test_result <- adf.test(data_series)
|
||||
print(adf_test_result)
|
||||
```
|
||||
|
||||
## 1. Analyse du test ADF (Augmented Dickey-Fuller)
|
||||
|
||||
- Hypothèse nulle (`H0`) : La série est non stationnaire.
|
||||
|
||||
- Résultat : La p-value est de `0.581`.
|
||||
|
||||
- Interprétation : Étant donné que la p-value est très supérieure au seuil classique de `0.05`, nous conservons `H0`. La série est donc considérée comme non stationnaire par l'ADF.
|
||||
|
||||
## 2. Analyse du test KPSS
|
||||
|
||||
- Hypothèse nulle (`H0`) : La série est stationnaire.
|
||||
|
||||
- Résultat : La statistique de test est très élevée (`2.0282`) et la p-value est de `0.01`.
|
||||
|
||||
- Interprétation : La p-value est inférieure à `0.05`, nous rejetons donc l'hypothèse de stationnarité. Le test KPSS confirme que la série n'est pas stationnaire.
|
||||
|
||||
## Conclusion croisée
|
||||
|
||||
| Test | Hypothèse Nulle (`H0`) | Résultat | Conclusion statistique |
|
||||
|------------------|------------------|------------------|------------------|
|
||||
| ADF | Non stationnaire | Non rejetée (`p=0.58`) | La série n'est pas stationnaire |
|
||||
| KPS | Stationnaire | Rejetée (`p=0.01`) | La série n'est pas stationnaire. |
|
||||
|
||||
# Correction de la saisonnalité
|
||||
|
||||
## Lag 1
|
||||
|
||||
```{r}
|
||||
serie_diff = diff(data_series)
|
||||
|
||||
plot(serie_diff, type = "l")
|
||||
acf(serie_diff, main = "ACF de la série différenciée lag 1")
|
||||
```
|
||||
|
||||
### Pourquoi la différenciation d=1 a "échoué" ?
|
||||
|
||||
Le graphique ACF de la série différenciée montre des pics à `-0.9` (lag 1) et `+0.85` (lag 2). Le Lag-Plot explique pourquoi : en faisant `Y_t−Y_{t−1}`, la pente est supprimée, mais l'oscillation `S=2` est transformée en une alternance de signes massive.
|
||||
|
||||
**Verdict final** : Pour modéliser proprement cette série, nous ne pouvons pas nous contenter d'un modèle ARIMA classique. Nous devons utiliser la différence saisonnière : diff(data_series, lag = 2).
|
||||
|
||||
## Lag 2
|
||||
|
||||
```{r}
|
||||
serie_diff_2 <- diff(data_series, lag = 2)
|
||||
|
||||
plot(serie_diff_2, type = "l")
|
||||
acf(serie_diff_2, main = "ACF de la série différenciée lag 2")
|
||||
```
|
||||
|
||||
### 1. Disparition de la non-stationnarité
|
||||
|
||||
- Observation : Contrairement aux ACF précédentes qui affichaient des pics massifs et persistants, celle-ci chute immédiatement vers zéro dès le premier retard.
|
||||
|
||||
- Conclusion : La série résultante est désormais stationnaire. La moyenne et la variance sont stabilisées.
|
||||
|
||||
### 2. Élimination de la structure saisonnière `S=2`
|
||||
|
||||
- Observation : L'alternance parfaite "haut-bas" (pics à `+0.8`/`-0.9`) que nous voyions après la différenciation classique (`diff(x)`) a totalement disparu.
|
||||
|
||||
- Interprétation : En appliquant `diff(x, lag = 2)`, nous avons retiré à chaque point sa valeur correspondante au cycle précédent. Cela a "neutralisé" l'oscillation déterministe de période 2.
|
||||
|
||||
### 3. Identification des résidus (Bruit Blanc ?)
|
||||
|
||||
- Pic au Lag 2 : Nous observons un pic négatif significatif au lag 2. Cela suggère qu'il reste une petite dépendance de type `MA(1)` saisonnier ou `MA(2)`.
|
||||
|
||||
- Reste du graphique : Pour tous les autres retards, les pics sont situés à l'intérieur des bandes de confiance bleues.
|
||||
|
||||
- Conclusion : La série est maintenant très proche d'un bruit blanc. Les résidus sont quasi-indépendants, ce qui est l'objectif ultime avant de valider un modèle de prévision.
|
||||
|
||||
## Moyenne
|
||||
|
||||
```{r}
|
||||
t.max = length(data_series)
|
||||
serie_moy = ts((data_series[1:(t.max - 1)] + data_series[2:t.max]) / 2)
|
||||
|
||||
plot(serie_moy, type = "l")
|
||||
acf(serie_moy, main = "ACF de la série moyenne")
|
||||
```
|
||||
|
||||
### 1. Analyse de la série temporelle (serie_moy)
|
||||
|
||||
- Lissage de la saisonnalité : L'effet le plus frappant est la disparition presque totale des dents de scie (l'oscillation "haut-bas" de période 2). En moyennant deux points consécutifs, nous avons annulé les variations saisonnières de court terme pour ne laisser apparaître que la composante de tendance.
|
||||
|
||||
- Allure de la tendance : La série montre une croissance qui n'est pas strictement linéaire mais légèrement curviligne (quadratique). On observe une accélération de la pente à mesure que le temps progresse.
|
||||
|
||||
- Stationnarité : La série n'est toujours pas stationnaire. La moyenne augmente de façon continue avec le temps (environ de 100 à 1100).
|
||||
|
||||
### 2. Analyse de l'ACF de la série moyenne
|
||||
|
||||
- Disparition de l'alternance : On ne voit plus l'oscillation caractéristique (pics positifs/négatifs) tous les deux lags. Cela prouve mathématiquement que la saisonnalité de période 2 a été filtrée avec succès par la moyenne mobile.
|
||||
|
||||
- Profil de "Trend" pur : L'ACF décroît de manière très lente, régulière et presque linéaire. C'est la signature typique d'une série dont la seule source de non-stationnarité restante est la tendance.
|
||||
|
||||
- Persistance : Même au lag 15, l'autocorrélation reste très élevée (\>0.5). Cela confirme que la série a une "mémoire" longue induite par sa dérive déterministe.
|
||||
|
||||
## Synthèse des corrections
|
||||
|
||||
| Caractéristique | Série Brute | Différenciation Lag 1 (`diff(x)`) | Différenciation Lag 2 (`diff(x, 2)`) | Série Moyenne (`serie_moy`) |
|
||||
|:--------------|:--------------|:--------------|:--------------|:--------------|
|
||||
| **Allure Visuelle** | Tendance ascendante forte + oscillations en "dents de scie". | Moyenne stabilisée mais oscillations "haut-bas" amplifiées. | Série stationnaire, ressemble à un bruit blanc avec peu de structure. | Courbe lisse montrant la tendance (sans les oscillations). |
|
||||
| **Stationnarité** | **Non** (moyenne mobile dans le temps). | **Partielle** (moyenne stable mais forte dépendance cyclique). | **Oui** (la plus proche de la stationnarité complète). | **Non** (la tendance est toujours présente). |
|
||||
| **Profil ACF** | Décroissance linéaire très lente. | Alternance parfaite de pics positifs/négatifs ($S=2$). | Chute immédiate vers 0 après le lag 2. | Décroissance lisse et très lente. |
|
||||
| **Saisonnalité** | Présente (période 2) mais masquée par la tendance. | **Exacerbée** : l'alternance devient la structure dominante. | **Éliminée** : le cycle de période 2 est neutralisé. | **Filtrée** : les variations de court terme sont lissées. |
|
||||
| **Usage Typique** | Observation initiale des données. | Suppression d'une tendance linéaire simple. | Traitement d'une tendance + saisonnalité de période 2. | Isolation de la tendance pour une régression polynomiale. |
|
||||
|
||||
# Régression polynomiale
|
||||
|
||||
```{r}
|
||||
n <- length(data_series)
|
||||
time <- 1:n
|
||||
|
||||
data_deseas <- (data_series[2:n] + data_series[1:(n - 1)]) / 2
|
||||
time_deseas <- time[2:n]
|
||||
|
||||
model_poly <- lm(data_deseas ~ time_deseas + I(time_deseas^2))
|
||||
|
||||
summary(model_poly)
|
||||
|
||||
plot(
|
||||
time,
|
||||
data_series,
|
||||
type = "l",
|
||||
col = "gray",
|
||||
lty = 2,
|
||||
main = "Ajustement Polynomial (d=2)",
|
||||
xlab = "Temps",
|
||||
ylab = "Valeurs"
|
||||
)
|
||||
lines(time_deseas, data_deseas, col = "blue", lwd = 2)
|
||||
lines(time_deseas, fitted(model_poly), col = "red", lwd = 2)
|
||||
|
||||
plot(
|
||||
time_deseas,
|
||||
resid(model_poly),
|
||||
type = "l",
|
||||
col = "darkred",
|
||||
main = "Résidus du modèle",
|
||||
xlab = "Temps",
|
||||
ylab = "Résidus"
|
||||
)
|
||||
abline(h = 0, col = "black", lty = 2)
|
||||
```
|
||||
|
||||
# Résidus
|
||||
|
||||
```{r}
|
||||
residus <- residuals(model_poly)
|
||||
|
||||
plot(
|
||||
time_deseas,
|
||||
residus,
|
||||
type = "l",
|
||||
col = "darkgreen",
|
||||
main = "Série des résidus",
|
||||
xlab = "Temps",
|
||||
ylab = "Résidus"
|
||||
)
|
||||
abline(h = 0, col = "red", lty = 2)
|
||||
|
||||
acf(residus, main = "ACF des résidus")
|
||||
```
|
||||
|
||||
## Série des résidus
|
||||
|
||||
Ce graphique représente l'erreur de prédiction (`e_t=y_t−y^t`) au cours du temps.
|
||||
|
||||
- Comportement : La série oscille de manière erratique autour de la ligne horizontale rouge pointillée (l'ordonnée 0).
|
||||
|
||||
- Moyenne : Le fait que les résidus soient centrés sur zéro indique que votre régression polynomiale de degré 2 a correctement capturé la tendance globale de la série.
|
||||
|
||||
- Variance : L'amplitude des fluctuations semble rester dans un tunnel constant (approximativement entre `-60` et `+70`), ce qui suggère une certaine stabilité de la variance (homoscédasticité).
|
||||
|
||||
- Saisonnalité : On ne distingue plus le motif en "dents de scie" très marqué de la série brute, ce qui confirme l'efficacité du filtrage par la série moyenne.
|
||||
|
||||
## ACF des résidus
|
||||
|
||||
Ce graphique (la fonction d'autocorrélation) mesure la corrélation des résidus avec leurs propres valeurs passées.
|
||||
|
||||
- Pic au Lag 0 : Il est toujours égal à `1.0` (corrélation parfaite d'une valeur avec elle-même), on ne l'interprète pas pour le diagnostic.
|
||||
|
||||
- Le pic au Lag 1 : On observe une barre verticale qui dépasse nettement la ligne pointillée bleue supérieure. Cela indique une autocorrélation positive significative au premier retard.
|
||||
|
||||
- Signification statistique : Les lignes pointillées bleues représentent l'intervalle de confiance à 95 % pour un bruit blanc. Puisque le pic au retard 1 sort de cet intervalle, vos résidus ne sont pas encore totalement indépendants (ce n'est pas encore un "bruit blanc" pur).
|
||||
|
||||
- Lags supérieurs : Au-delà du premier retard, les autres pics (2, 3, etc.) rentrent dans la zone de non-significativité, ce qui montre que la dépendance est à très court terme.
|
||||
|
||||
# Stationnarité des résidus
|
||||
|
||||
|
||||
```{r}
|
||||
kpss_test_result <- kpss.test(residus)
|
||||
print(kpss_test_result)
|
||||
|
||||
adf_test_result <- adf.test(residus)
|
||||
print(adf_test_result)
|
||||
```
|
||||
|
||||
## 1. Test ADF (Augmented Dickey-Fuller)
|
||||
|
||||
- Hypothèse nulle (`H0`) : La série est non stationnaire.
|
||||
|
||||
- Résultat : La p-value est de `0.01` (indiquée comme inférieure à la valeur affichée par le warning).
|
||||
|
||||
- Interprétation : On rejette `H0`. Il y a des preuves statistiques fortes que la série des résidus est stationnaire.
|
||||
|
||||
## 2. Test KPSS
|
||||
|
||||
- Hypothèse nulle (`H0`) : La série est stationnaire.
|
||||
|
||||
- Résultat : La p-value est de `0.1`.
|
||||
|
||||
- Interprétation : On ne rejette pas `H0`. Le test conclut que la série est stationnaire.
|
||||
|
||||
## Synthèse
|
||||
|
||||
| Test | Hypothèse nulle ($H_0$) | p-value | Décision |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| **ADF** | Non stationnaire | 0.01 | Rejet de $H_0$ |
|
||||
| **KPSS** | Stationnaire | 0.10 | Échec du rejet de $H_0$ |
|
||||
101
M2/Time Series/data/TD1.csv
Normal file
101
M2/Time Series/data/TD1.csv
Normal file
@@ -0,0 +1,101 @@
|
||||
"x"
|
||||
-29,2226905371166
|
||||
213,582166211104
|
||||
-34,8814306205024
|
||||
289,36404010689
|
||||
28,975388590768
|
||||
174,576580794099
|
||||
43,2714526214243
|
||||
259,316235256461
|
||||
54,8890675826746
|
||||
214,730580642182
|
||||
109,689058422542
|
||||
257,892161820572
|
||||
11,8379709729098
|
||||
136,865005641125
|
||||
108,746545907155
|
||||
255,353319549238
|
||||
62,0904868450527
|
||||
315,591810534265
|
||||
115,161059754904
|
||||
309,695066060875
|
||||
132,048868580411
|
||||
331,506815036553
|
||||
102,62824916826
|
||||
206,132415206831
|
||||
143,491287394736
|
||||
316,79356302355
|
||||
119,110224664734
|
||||
260,862380805036
|
||||
118,192497244569
|
||||
370,897078009985
|
||||
226,033977576452
|
||||
361,26061363285
|
||||
194,283580577968
|
||||
380,909747970855
|
||||
123,64702215857
|
||||
380,850271835016
|
||||
191,185502314483
|
||||
417,434330164441
|
||||
285,101268599194
|
||||
478,158787422877
|
||||
241,873820187321
|
||||
447,731915993175
|
||||
305,748168770237
|
||||
509,433159933683
|
||||
258,062215272524
|
||||
468,225242151894
|
||||
333,129098106841
|
||||
564,826646225771
|
||||
332,482689392489
|
||||
594,055386322711
|
||||
382,005294018353
|
||||
543,798680337462
|
||||
403,955984571221
|
||||
543,13184519596
|
||||
484,151185085052
|
||||
724,619994925293
|
||||
420,538926176675
|
||||
600,193268684174
|
||||
494,585981372121
|
||||
673,247269805959
|
||||
614,180888025239
|
||||
706,437999863342
|
||||
557,386968122539
|
||||
739,000107939033
|
||||
515,33633955588
|
||||
777,039614975717
|
||||
492,652068555448
|
||||
871,677743078144
|
||||
621,762666910595
|
||||
938,630583518108
|
||||
669,875476444983
|
||||
826,902678453909
|
||||
709,436317674453
|
||||
848,895118417787
|
||||
649,818329988045
|
||||
944,172311775873
|
||||
724,735406339078
|
||||
964,455267581581
|
||||
785,817066207583
|
||||
970,523952690596
|
||||
789,666563359075
|
||||
1029,64106924381
|
||||
913,80434982866
|
||||
997,421659978512
|
||||
922,197309381421
|
||||
1128,24751856068
|
||||
984,054991863818
|
||||
1135,19080381829
|
||||
988,600940495814
|
||||
1203,35493953861
|
||||
982,973998450418
|
||||
1290,79339029916
|
||||
1108,92013078475
|
||||
1306,61068247575
|
||||
1171,84167272704
|
||||
1341,52432127827
|
||||
1071,0703895771
|
||||
1327,73672928816
|
||||
1116,86936925508
|
||||
1376,32996817803
|
||||
|
140
README.md
140
README.md
@@ -2,63 +2,105 @@
|
||||
|
||||
[ArtStudies Projects](https://github.com/ArthurDanjou/artstudies) is a curated collection of academic projects completed throughout my mathematics studies. The repository showcases work in both _Python_ and _R_, focusing on mathematical modeling, data analysis, and numerical methods.
|
||||
|
||||
The projects are organized into two main sections:
|
||||
- **L3** – Third year of the Bachelor's degree in Mathematics
|
||||
- **M1** – First year of the Master's degree in Mathematics
|
||||
- **M2** – Second year of the Master's degree in Mathematics
|
||||
|
||||
## 📁 File Structure
|
||||
## 📁 Project Structure
|
||||
|
||||
- `L3`
|
||||
- `Analyse Matricielle`
|
||||
- `Analyse Multidimensionnelle`
|
||||
- `Calculs Numériques`
|
||||
- `Équations Différentielles`
|
||||
- `Méthodes Numériques`
|
||||
- `Probabilités`
|
||||
- `Projet Numérique`
|
||||
- `Statistiques`
|
||||
### L3 - Bachelor's Degree
|
||||
|
||||
- `M1`
|
||||
- `Data Analysis`
|
||||
- `General Linear Models`
|
||||
- `Monte Carlo Methods`
|
||||
- `Numerical Methods`
|
||||
- `Numerical Optimization`
|
||||
- `Portfolio Management`
|
||||
- `Statistical Learning`
|
||||
| Course | Description |
|
||||
|--------|-------------|
|
||||
| `Analyse Matricielle` | Matrix analysis and numerical linear algebra |
|
||||
| `Analyse Multidimensionnelle` | Multivariate data analysis (PCA, MCA, CA) |
|
||||
| `Calculs Numériques` | Numerical computation methods |
|
||||
| `Equations Différentielles` | Differential equations solving |
|
||||
| `Méthodes Numériques` | Numerical methods implementation |
|
||||
| `Projet Numérique` | Numerical project |
|
||||
| `Statistiques` | Applied statistics |
|
||||
|
||||
- `M2`
|
||||
- `Clustering In Practice`
|
||||
- `Data Visualisation`
|
||||
- `Deep Learning`
|
||||
- `Generative AI`
|
||||
- `Linear Models`
|
||||
- `Machine Learning`
|
||||
- `Reinforcement Learning`
|
||||
- `SQL`
|
||||
- `Statistiques Non Paramétrique`
|
||||
- `Unsupervised Learning`
|
||||
- `VBA`
|
||||
### M1 - Master's Degree 1st Year
|
||||
|
||||
| Course | Description |
|
||||
|--------|-------------|
|
||||
| `Data Analysis` | Exploratory data analysis and visualization |
|
||||
| `General Linear Models` | Regression and ANOVA models |
|
||||
| `Monte Carlo Methods` | Statistical simulation techniques |
|
||||
| `Numerical Methods` | Numerical algorithms implementation |
|
||||
| `Numerical Optimisation` | Optimization algorithms |
|
||||
| `Portfolio Management` | Financial portfolio optimization |
|
||||
| `Statistical Learning` | Machine learning fundamentals |
|
||||
|
||||
### M2 - Master's Degree 2nd Year
|
||||
|
||||
| Course | Description |
|
||||
|--------|-------------|
|
||||
| `Advanced Machine Learning` | Advanced ML techniques |
|
||||
| `Classification and Regression` | Supervised learning methods |
|
||||
| `Clustering In Practice` | Unsupervised learning and clustering |
|
||||
| `Data Visualisation` | Data visualization principles and tools |
|
||||
| `Deep Learning` | Neural networks and deep architectures |
|
||||
| `Enjeux Climatiques` | Climate issues and data analysis |
|
||||
| `Generative AI` | Generative models (LLMs, diffusion) |
|
||||
| `Linear Models` | Linear modeling techniques |
|
||||
| `Machine Learning` | Core machine learning algorithms |
|
||||
| `Reinforcement Learning` | Reinforcement learning algorithms |
|
||||
| `SQL` | Database and SQL queries |
|
||||
| `Statistiques Non Paramétrique` | Non-parametric statistics |
|
||||
| `Time Series` | Time series analysis and forecasting |
|
||||
| `Unsupervised Learning` | Unsupervised learning methods |
|
||||
| `VBA` | Visual Basic for Applications |
|
||||
|
||||
## 🛠️ Technologies & Tools
|
||||
|
||||
- [Python](https://www.python.org): A high-level, interpreted programming language, widely used for data science, machine learning, and scientific computing.
|
||||
- [R](https://www.r-project.org): A statistical computing environment, perfect for data analysis and visualization.
|
||||
- [Jupyter](https://jupyter.org): Interactive notebooks combining code, results, and rich text for reproducible research.
|
||||
- [Pandas](https://pandas.pydata.org): A data manipulation library providing data structures and operations for manipulating numerical tables and time series.
|
||||
- [NumPy](https://numpy.org): Core package for numerical computing with support for large, multi-dimensional arrays and matrices.
|
||||
- [SciPy](https://www.scipy.org): A library for advanced scientific computations including optimization, integration, and signal processing.
|
||||
- [Scikit-learn](https://scikit-learn.org): A robust library offering simple and efficient tools for machine learning and statistical modeling, including classification, regression, and clustering.
|
||||
- [TensorFlow](https://www.tensorflow.org): A comprehensive open-source framework for building and deploying machine learning and deep learning models.
|
||||
- [Keras](https://keras.io): A high-level neural networks API, running on top of TensorFlow, designed for fast experimentation.
|
||||
- [Matplotlib](https://matplotlib.org): A versatile plotting library for creating high-quality static, animated, and interactive visualizations in Python.
|
||||
- [Plotly](https://plotly.com): An interactive graphing library for creating dynamic visualizations in Python and R.
|
||||
- [Seaborn](https://seaborn.pydata.org): A statistical data visualization library built on top of Matplotlib, providing a high-level interface for drawing attractive and informative graphics.
|
||||
- [RMarkdown](https://rmarkdown.rstudio.com): A dynamic tool for combining code, results, and narrative into high-quality documents and presentations.
|
||||
- [FactoMineR](https://factominer.free.fr/): An R package focused on multivariate exploratory data analysis (e.g., PCA, MCA, CA).
|
||||
- [ggplot2](https://ggplot2.tidyverse.org): A grammar-based graphics package for creating complex and elegant visualizations in R.
|
||||
- [RShiny](https://shiny.rstudio.com): A web application framework for building interactive web apps directly from R.
|
||||
- [LangChain](https://langchain.com): A framework for developing applications powered by language models.
|
||||
- and my 🧠.
|
||||
### Python
|
||||
|
||||
- **Data Science**: `numpy`, `pandas`, `scipy`, `matplotlib`, `seaborn`, `plotly`, `geopandas`
|
||||
- **Machine Learning**: `scikit-learn`, `xgboost`, `catboost`, `shap`, `umap-learn`, `imblearn`
|
||||
- **Deep Learning**: `tensorflow`, `keras`, `torch`, `accelerate`
|
||||
- **LLM/RAG**: `langchain`, `langchain-community`, `sentence-transformers`, `faiss-cpu`
|
||||
- **Other**: `statsmodels`, `plotly`, `polars`, `requests`, `openpyxl`
|
||||
|
||||
### R
|
||||
|
||||
- **Core**: tidyverse, ggplot2, FactoMineR, caret, glmnet
|
||||
- **Shiny**: RShiny for interactive web applications
|
||||
- **Reporting**: RMarkdown for reproducible reports
|
||||
|
||||
### Tools
|
||||
|
||||
- **Jupyter** – Interactive notebooks for reproducible research
|
||||
- **RStudio** – R development environment
|
||||
- **uv** – Fast Python package manager and virtual environment
|
||||
- **ruff** – Python linter and formatter
|
||||
- **lintr** – R linter
|
||||
|
||||
## 🚀 Getting Started
|
||||
|
||||
1. Clone the repository:
|
||||
```bash
|
||||
git clone <repository-url>
|
||||
cd studies
|
||||
```
|
||||
|
||||
2. Set up the Python environment:
|
||||
```bash
|
||||
uv sync
|
||||
```
|
||||
|
||||
3. Run the linter:
|
||||
```bash
|
||||
ruff check .
|
||||
```
|
||||
|
||||
4. Format code:
|
||||
```bash
|
||||
ruff format .
|
||||
```
|
||||
|
||||
## 📝 Notes
|
||||
|
||||
- Some subprojects have isolated `pyproject.toml` files (e.g., `M2/Reinforcement Learning/project/`)
|
||||
- Large datasets are not versioned—download via notebook code when needed
|
||||
- Course materials and documentation are primarily in French
|
||||
|
||||
Reference in New Issue
Block a user