Exemple basique de transformation Box-Cox avec PROC TRANSREG

Niveau de difficulté
Débutant
Publié le :
Le script initialise en générant un premier jeu de données 'x' où la variable 'y' est une fonction exponentielle de 'x' et d'un bruit normal. Une première exécution de PROC TRANSREG applique une transformation Box-Cox à 'y' par rapport à 'x' avec les options par défaut pour démontrer la fonctionnalité de base. Une deuxième exécution plus détaillée de PROC TRANSREG explore un éventail de valeurs pour le paramètre lambda de la transformation Box-Cox, incluant des options pour la convergence et des spécifications de tracés graphiques avancées pour visualiser les transformations. Par la suite, un nouveau jeu de données 'x' est créé, cette fois avec des observations de 'y' tirées d'une distribution log-normale et une variable 'z' constante. Enfin, une troisième invocation de PROC TRANSREG effectue une transformation Box-Cox univariée, suivie d'une PROC UNIVARIATE pour générer un histogramme de la variable 'y', permettant une visualisation de sa distribution après transformation. Les sorties graphiques sont activées globalement par ODS GRAPHICS.
Analyse des données

Type : CREATION_INTERNE


Les jeux de données 'x' utilisés tout au long de ce script sont entièrement générés en interne via des étapes DATA, exploitant des fonctions SAS telles que EXP, NORMAL, CALL STREAMINIT et RAND('LOGNORMAL'). Aucune source de données externe ni jeu de données de la bibliothèque SASHELP n'est sollicité.

1 Bloc de code
DATA STEP Data
Explication :
Ce bloc DATA STEP est responsable de la création du premier jeu de données nommé 'x'. Il génère une série de valeurs pour 'x' allant de 1 à 8 avec un incrément de 0.025. Pour chaque valeur de 'x', il calcule une variable 'y' en appliquant une transformation exponentielle à la somme de 'x' et d'une valeur aléatoire tirée d'une distribution normale. Ce jeu de données sert de base pour les premières analyses de transformation Box-Cox.
Copié !
1DATA x;
2 DO x = 1 to 8 BY 0.025;
3 y = exp(x + normal(7));
4 OUTPUT;
5 END;
6RUN;
2 Bloc de code
PROC TRANSREG
Explication :
Cette exécution de PROC TRANSREG applique une transformation Box-Cox à la variable dépendante 'y' et modélise sa relation avec la variable indépendante 'x', qui est traitée avec une transformation d'identité. L'option TEST est spécifiée pour réaliser des tests d'hypothèses sur les paramètres du modèle de transformation. Cette procédure utilise le jeu de données 'x' généré précédemment et illustre les options par défaut de la transformation Box-Cox.
Copié !
1 
2PROC TRANSREG
3DATA=x test;
4model BoxCox(y) = identity(x);
5RUN;
6 
3 Bloc de code
PROC TRANSREG
Explication :
Ce bloc PROC TRANSREG démontre des options plus sophistiquées pour la transformation Box-Cox. Il spécifie une plage étendue de valeurs lambda à évaluer pour la transformation de 'y', incluant des options telles que CONVENIENT, PARAMETER et ALPHA pour contrôler le processus d'optimisation. De plus, les options PLOTS sont utilisées pour générer des graphiques spécifiques, notamment la transformation de la variable dépendante, des nuages de points et des graphiques des valeurs observées par rapport aux valeurs prédites, offrant une visualisation détaillée de l'ajustement du modèle.
Copié !
1PROC TRANSREG DATA=x ss2 details
2 plots=(transformation(dependent) scatter
3 observedbypredicted);
4 model BoxCox(y / lambda=-2 -1 -0.5 to 0.5 BY 0.05 1 2
5 convenient parameter=2 alpha=0.00001) =
6 identity(x);
7RUN;
4 Bloc de code
DATA STEP Data
Explication :
Ce deuxième bloc DATA STEP recrée le jeu de données 'x'. Il initialise le générateur de nombres aléatoires avec la graine 17 via CALL STREAMINIT. Une variable 'z' est définie comme une constante égale à 0. La boucle génère 500 observations où la variable 'y' est tirée d'une distribution log-normale. Ce nouveau jeu de données est préparé spécifiquement pour l'exemple de transformation Box-Cox univariée.
Copié !
1DATA x;
2 call streaminit(17);
3 z = 0;
4 DO i = 1 to 500;
5 y = rand('lognormal');
6 OUTPUT;
7 END;
8RUN;
5 Bloc de code
PROC TRANSREG
Explication :
Cette exécution de PROC TRANSREG est configurée pour une analyse univariée de la transformation Box-Cox sur la variable 'y', en utilisant la variable constante 'z' comme prédicteur factice. L'option MAXITER=0 désactive les processus itératifs, tandis que NOZEROCONSTANT empêche l'ajustement d'une constante à zéro. L'option OUTPUT est incluse pour créer un nouveau jeu de données contenant les variables transformées et les prédictions du modèle.
Copié !
1PROC TRANSREG maxiter=0 nozeroconstant;
2 model BoxCox(y) = identity(z);
3 OUTPUT;
4RUN;
6 Bloc de code
PROC UNIVARIATE
Explication :
Ce bloc PROC UNIVARIATE est utilisé pour générer un histogramme de la variable 'y'. L'option NOPRINT supprime l'affichage des tableaux de statistiques descriptives, se concentrant uniquement sur la sortie graphique. L'histogramme aide à visualiser la distribution de la variable 'y', potentiellement après une transformation Box-Cox, permettant d'évaluer l'adéquation à une distribution normale ou d'autres caractéristiques de la distribution.
Copié !
1PROC UNIVARIATE noprint;
2 histogram y ty;
3RUN;
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.
Informations de Copyright : S A S S A M P L E L I B R A R Y