Ce programme illustre l'utilisation de la procédure GENMOD pour analyser des données suivant une distribution de Tweedie. Dans un premier temps, il simule un jeu de données de 250 observations via une étape DATA, en construisant la variable réponse comme une somme Poisson de variables Gamma (représentation mathématique de la distribution de Tweedie). Ensuite, il ajuste deux modèles : le premier estime les paramètres avec la distribution Tweedie par défaut, et le second fixe le paramètre de puissance p à 1.5.
Analyse des données
Type : CREATION_INTERNE
Les données sont entièrement générées dans l'étape DATA 'tmp1' à l'aide de fonctions aléatoires (ranuni, ranpoi, rangam) basées sur des paramètres définis par macro-variables.
1 Bloc de code
DATA STEP Data
Explication : Initialisation des macro-variables de configuration. Création de la table 'tmp1' contenant des variables explicatives catégorielles (c1-c5) et continues (d1, d2), ainsi qu'une variable cible 'yTweedie' simulée selon un processus Poisson composé Gamma.
Copié !
%let nObs = 250;
%let nClass = 5;
%let nLevs = 4;
%let seed = 100;
data tmp1;
array c{&nClass};
keep c1-c&nClass yTweedie d1 d2;
/* Tweedie parms */
phi=0.5;
p=1.5;
do i=1 to &nObs;
do j=1 to &nClass;
c{j} = int(ranuni(1)*&nLevs);
end;
d1 = ranuni(&seed);
d2 = ranuni(&seed);
xBeta = 0.5*((c2<2) - 2*(c1=1) + 0.5*c&nClass + 0.05*d1);
mu = exp(xBeta);
/* Poisson distributions parms */
lambda = mu**(2-p)/(phi*(2-p));
/* Gamma distribution parms */
alpha = (2-p)/(p-1);
gamma = phi*(p-1)*(mu**(p-1));
rpoi = ranpoi(&seed,lambda);
if rpoi=0 then yTweedie=0;
else do;
yTweedie=0;
do j=1 to rpoi;
yTweedie = yTweedie + rangam(&seed,alpha);
end;
yTweedie = yTweedie * gamma;
end;
output;
end;
run;
Explication : Exécution de la procédure GENMOD pour ajuster un modèle linéaire généralisé sur les données simulées, en spécifiant une distribution Tweedie. L'option type3 demande les statistiques de type 3.
Copié !
proc genmod data=tmp1;
class C1-C5;
model yTweedie = C1-C5 D1 D2 / dist=Tweedie type3;
run;
1
PROC GENMODDATA=tmp1;
2
class C1-C5;
3
model yTweedie = C1-C5 D1 D2 / dist=Tweedie type3;
4
RUN;
3 Bloc de code
PROC GENMOD
Explication : Seconde exécution de PROC GENMOD avec un modèle simplifié (moins de variables explicatives) et en fixant explicitement le paramètre de puissance de la distribution Tweedie à 1.5.
Copié !
proc genmod data=tmp1;
class C1 C2;
model yTweedie = C1 C2 D1 / dist=Tweedie(p=1.5) type3;
run;
1
PROC GENMODDATA=tmp1;
2
class C1 C2;
3
model yTweedie = C1 C2 D1 / dist=Tweedie(p=1.5) type3;
4
RUN;
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.