gam

gampl

##set_gam

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.

Syntaxe Officielle
gam.gampl <result=results> <status=rc> /
alpha=double,
attributes={{casinvardesc}, ...},
class={{classStatement}, ...},
freq="variable-name",
itDetails=TRUE | FALSE,
model={
depVars={{responsevar}, ...},
dist="BERNOULLI" | "BINOMIAL" | "GAMMA" | "GAUSSIAN" | "IGAUSSIAN" | "NEGBINOMIAL" | "POISSON" | "TWEEDIE",
effects={{effect}, ...},
splines={{splineTerm}, ...},
link="CLOGLOG" | "IDENTITY" | "LOG" | "LOGIT" | "LOGLOG" | "NORMIT" | "POWERMINUS2" | "RECIPROCAL",
method="OUTER" | "PERFORMANCE",
phi=double
},
output={gamplOutputStatement},
store={casouttablebasic},
table={castable},
weight="variable-name"

Paramètres Clés

Nom du paramètre Description
alpha Définit le seuil de signification (alpha) pour les tests d'hypothèses et les bandes de confiance (0.05 par défaut) .
class Déclare les variables qualitatives (classification) utilisées dans le modèle .
model Paramètre central définissant la variable cible, la distribution (Gaussian, Poisson, etc.), les effets paramétriques et surtout les splines pour la partie non linéaire .
splines Sous-paramètre de model définissant la construction des splines (degrés de liberté, nœuds, pénalités) .
output Spécifie la table de sortie CAS pour stocker les statistiques par observation comme les prédictions ou les résidus .
store Sauvegarde l'état du modèle dans un format binaire pour une utilisation future (scoring) .
table La table CAS d'entrée contenant vos données précieuses .

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.

1DATA 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;
8RUN;
9DATA casuser.test_gam;
10 SET work.test_gam;
11RUN;

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.

1PROC CAS;
2 gam.gampl /
3 TABLE='test_gam',
4 model={
5 depVars={{name='y'}},
6 effects={{vars={'x2'}}},
7 splines={{vars={'x1'}}}
8 };
9RUN;
Résultat Attendu :
Un rapport contenant les estimations des paramètres, les tests de lissage et les critères de qualité d'ajustement (AIC, BIC).
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.

1PROC 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;
17RUN;
Résultat Attendu :
Exécution de l'algorithme 'Performance' avec historique des itérations, création de la table 'gam_pred' avec les colonnes PRED_Y et RESID_Y, et création de l'objet 'mon_modele_gam' pour le scoring.