Ce script illustre la capacité de la procédure GAMPL à ajuster des modèles de régression Tweedie non paramétriques. Il commence par simuler un jeu de données (distribution de Poisson composée) avec des relations non linéaires entre les prédicteurs et la réponse. Il compare ensuite les résultats d'un modèle linéaire généralisé standard (PROC GENMOD) avec deux modèles GAMPL : l'un utilisant des termes linéaires paramétriques et l'autre utilisant des splines de lissage.
Analyse des données
Type : CREATION_INTERNE
Les données sont générées artificiellement dans l'étape DATA 'one'. Des variables aléatoires (x1-x4) sont transformées via des fonctions non linéaires (sinus, exponentielle, polynômes) pour créer une moyenne 'mu', qui sert ensuite à simuler une réponse 'y' suivant une distribution Tweedie.
1 Bloc de code
DATA STEP Data
Explication : Génération de données synthétiques. Les macro-variables 'phi' et 'power' contrôlent la distribution Tweedie. Le code simule 1000 observations avec des prédicteurs aléatoires et une variable réponse 'y' construite à partir de transformations non linéaires complexes et d'un processus de Poisson composé.
Copié !
title 'Nonparametric Tweedie Model';
%let phi=0.4;
%let power=1.5;
data one;
do i=1 to 1000;
/* Sample the predictors */
x1=ranuni(1);
x2=ranuni(1);
x3=ranuni(1);
x4=ranuni(1);
/* Apply nonlinear transformations to predictors */
f1=2*sin(3.14159265*x1);
f2=exp(2*x2)*0.8;
f3=0.2*x3**11*(10*(1-x3))**6+10*(10*x3)**3*(1-x3)**10;
xb=f1+f2+f3;
xb=xb/20;
mu=exp(xb);
/* Compute parameters of compound Poisson distribution */
lambda=mu**(2-&power)/(&phi*(2-&power));
alpha=(2-&power)/(&power-1);
gamma=&phi*(&power-1)*(mu**(&power-1));
/* Simulate the response */
rpoi=ranpoi(1,lambda);
if rpoi=0 then y=0;
else do;
y=0;
do j=1 to rpoi;
y=y+rangam(1,alpha);
end;
y=y*gamma;
end;
output;
end;
run;
1
title 'Nonparametric Tweedie Model';
2
%let phi=0.4;
3
%let power=1.5;
4
5
DATA one;
6
DO i=1 to 1000;
7
8
/* Sample the predictors */
9
x1=ranuni(1);
10
x2=ranuni(1);
11
x3=ranuni(1);
12
x4=ranuni(1);
13
14
/* Apply nonlinear transformations to predictors */
/* Compute parameters of compound Poisson distribution */
23
lambda=mu**(2-&power)/(&phi*(2-&power));
24
alpha=(2-&power)/(&power-1);
25
gamma=&phi*(&power-1)*(mu**(&power-1));
26
27
/* Simulate the response */
28
rpoi=ranpoi(1,lambda);
29
IF rpoi=0 THEN y=0;
30
ELSEDO;
31
y=0;
32
DO j=1 to rpoi;
33
y=y+rangam(1,alpha);
34
END;
35
y=y*gamma;
36
END;
37
OUTPUT;
38
END;
39
RUN;
2 Bloc de code
PROC GENMOD
Explication : Ajustement d'un modèle linéaire généralisé (GLM) de référence utilisant la distribution Tweedie. Ce modèle suppose une relation linéaire entre les prédicteurs et la fonction de lien de la réponse, ce qui peut être insuffisant compte tenu de la nature non linéaire des données générées.
Copié !
proc genmod data=one;
model y=x1 x2 x3 x4/dist=tweedie;
run;
1
2
PROC GENMOD
3
DATA=one;
4
model y=x1 x2 x3 x4/dist=tweedie;
5
RUN;
6
3 Bloc de code
PROC GAMPL
Explication : Utilisation de PROC GAMPL pour ajuster un modèle similaire au GLM (termes paramétriques linéaires uniquement) avec la distribution Tweedie. Cela permet de comparer les performances de base de GAMPL avec GENMOD.
Copié !
proc gampl data=one seed=1234;
model y=param(x1 x2 x3 x4)/dist=tweedie;
run;
1
2
PROC GAMPL
3
DATA=one seed=1234;
4
model y=param(x1 x2 x3 x4)/dist=tweedie;
5
RUN;
6
4 Bloc de code
PROC GAMPL
Explication : Ajustement d'un modèle additif généralisé (GAM) complet. Les termes 'spline()' permettent de modéliser les relations non linéaires pour chaque prédicteur. L'option 'plots' génère des graphiques pour visualiser les splines ajustées par rapport aux données.
model y=spline(x1) spline(x2) spline(x3) spline(x4)/dist=tweedie;
5
RUN;
6
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.