gampl
Description
L'action gampl est votre couteau suisse pour modéliser des relations complexes et non linéaires ! Elle ajuste des modèles additifs généralisés (GAMModèle additif généralisé étendant le modèle linéaire en utilisant des fonctions de lissage non linéaires. Il permet de capturer des relations complexes entre les variables sans forme prédéfinie.) par maximum de vraisemblance pénalisée . Contrairement aux modèles linéaires classiques qui forcent une ligne droite, gampl utilise des fonctions 'splines' pour épouser les courbes de vos données, un peu comme un vêtement sur mesure qui cache les imperfections (ou les non-linéarités). Elle supporte de nombreuses distributions comme PoissonLoi de probabilité discrète modélisant le nombre d'événements indépendants survenant dans un intervalle fixe (temps/espace), définie par un paramètre de moyenne égal à la variance. ou Binomiale, rendant l'analyse de données de comptage ou de classification aussi fluide qu'une descente en ski.
Paramètres Clés
Préparation des données
Création de données synthétiques non linéaires
Ce code génère un jeu de données avec une relation sinusoïdale entre X et Y, parfait pour tester les capacités de lissage de l'action gampl.
| 1 | DATA work.test_gam; |
| 2 | DO i = 1 to 1000; |
| 3 | x1 = ranuni(123) * 10; |
| 4 | x2 = ranuni(456) * 10; |
| 5 | y = 5 + 2*sin(x1) + 0.5*x2 + rannor(123)*0.5; |
| 6 | OUTPUT; |
| 7 | END; |
| 8 | RUN; |
| 9 | DATA casuser.test_gam; |
| 10 | SET work.test_gam; |
| 11 | RUN; |
Exemples d'utilisation
Modèle GAM de base
Un exemple simple pour modéliser Y en fonction d'une spline sur X1 et d'un effet linéaire sur X2.
| 1 | PROC CAS; |
| 2 | gam.gampl / |
| 3 | TABLE='test_gam', |
| 4 | model={ |
| 5 | depVars={{name='y'}}, |
| 6 | effects={{vars={'x2'}}}, |
| 7 | splines={{vars={'x1'}}} |
| 8 | }; |
| 9 | RUN; |
Résultat Attendu :
Analyse complète avec sauvegarde et sortie de données
Cet exemple utilise une distribution Gaussienne, spécifie les degrés de liberté pour la spline, sauvegarde le modèle et génère des prédictions dans une table CAS.
| 1 | PROC CAS; |
| 2 | gam.gampl / |
| 3 | TABLE={name='test_gam', where='i < 900'}, |
| 4 | model={ |
| 5 | depVars={{name='y'}}, |
| 6 | dist='GAUSSIAN', |
| 7 | link='IDENTITY', |
| 8 | splines={{vars={'x1'}, df=5, m=2}, {vars={'x2'}, df=3}} |
| 9 | }, |
| 10 | OUTPUT={ |
| 11 | casOut={name='gam_pred', replace=true}, |
| 12 | pred='PRED_Y', |
| 13 | resid='RESID_Y' |
| 14 | }, |
| 15 | store={name='mon_modele_gam', replace=true}, |
| 16 | itDetails=true; |
| 17 | RUN; |