
FAQ SASConsultez toutes les FAQ
Nombre d'auteurs : 14, nombre de questions : 232, dernière mise à jour : 20 décembre 2012
Sommaire→SAS STAT→Modélisation- Dans la procédure REG, comment récupérer le R² dans une table ?
 - Dans la procédure REG, comment récupérer la p-value du modèle dans une table ?
 - Dans la procédure REG, comment récupérer les paramètres estimés (T, p-value, etc.) dans une table ?
 - Comment récupérer, dans une table SAS, les paramètres estimés dans la procédure GLM ?
 - Comment tester l'hypothèse d'égalité des variances dans la procédure GLM ?
 - Comment choisir la procédure SAS pour l'analyse de variance ?
 - Où est documentée la procédure PLS ?
 - Quelles sont les différences existant entre les procédures MIXED et GLM ?
 - Comment paramétrer la procédure MIXED pour travailler avec des conditions maximales de convergence ?
 - Comment réaliser des tests de parallélisme pour valider une analyse de la covariance ?
 - Comment contourner les effets d'hétéroscédasticité du signal ?
 - À quoi correspondent les différentes sommes des carrés des écarts définies sous SAS ?
 - Comment obtenir des intervalles de confiance sur les valeurs d'entrée avec les procédures MIXED et GLM ?
 - À quoi correspondent les options PREDICTED et PREDMEANS de la procédure MIXED ?
 - Pourquoi systématiquement dans certains cas d'analyse de variance avec la procédure GLM, les coefficients associés à la dernière modalité de chaque variable sont nuls ?
 - Comment générer des variables indicatrices à partir d'une variable catégorielle ?
 - Comment changer la modalité de référence d'une variable catégorielle dans la proc LOGISTIC ?
 - Comment corriger les problèmes d'hétéroscédasticité, sans utiliser la méthode de GARCH ?
 - Dans la procédure LOGISTIC, comment imposer les valeurs de certains paramètres ?
 - Dans la procédure GENMOD, comment augmenter le nombre de décimales des résultats ?
 - Comment obtenir le R2 (R-square) ajusté, à partir des résultats d'une procédure GLM ?
 
En combinant les options outest= (option de la proc REG) et adjrsq (après le / dans l'instruction model).
Cette statistique n'est pas disponible en standard en sortie de la procédure REG. Par contre elle peut être recalculée dans une étape data, en utilisant la somme des carrés de l'erreur et le R² (disponibles dans la table créée par l'option outest= de la procédure REG).
data calc;
* la table sortie a été obtenue en sortie d'une procédure REG, avec les options outest=sortie mse sse ;
    set sortie;
* somme des carrés totale ;
    SST=_SSE_/(1-_RSQ_);
* somme des carrés du modèle ;
    SSM=SST-_SSE_;
* carré moyen du modèle ;
    MSM=SSM/_IN_;
* valeur du F et de la pvalue associée ;
    F=MSM/_MSE_;
    pvalue=1-probf(F,_IN_,_EDF_);
run; À partir de la version 6.12, avec les options TABLEOUT et OUTEST= (options de la proc REG). Il existe également un programme (regci.sas) : Extracting anova data from the reg output dataset, disponible dans la bibliothèque d'exemples du Système SAS (SAS/STAT®).
Ce n'est pas prévu dans la procédure GLM. La solution consiste à passer par la procédure MIXED, avec une instruction MAKE.
Il suffit d'utiliser l'option 'hovtest' dans l'instruction 'means' : MEANS effects / HOVTEST; Plusieurs tests sont disponibles : Keyword = Bartlett, BF, Levene, Obrien. Par défaut, c'est le test de Levene qui est effectué.
Les procédures suivantes GLM, MIXED et VARCOMP réalisent des comparaisons multiples, toutefois elles sont optimisées pour les caractéristiques suivantes :
- GLM : cas des effets majoritairement fixes ;
 - MIXED : combinaison d'effets fixes et aléatoires ;
 - VARCOMP : cas des effets majoritairement aléatoires.
 
Les deux documents suivants :
- Examples using the PLS procedure ;
 - An introduction to the Partial Least Square
 
sont disponibles à l'adresse 
http://support.sas.com/rnd/app/da/new/dapls.html
Il existe deux différences majeures entre les procédures MIXED et GLM :
- MIXED propose uniquement des tests pour les effets fixes qui sont basés sur l'erreur de type 3, tandis que GLM offre des tests basés sur les erreurs de type 1,2, 3 et 4 ;
 - GLM utilise la méthode des moments pour estimer les composantes de la variance tandis que MIXED utilise le maximum de vraisemblance.
 
Par défaut dans la procédure MIXED, le nombre maximum d'itérations est de 150. L'option MAXFUNC permet à partir de la version 6.08 d'augmenter ce nombre d'itérations.
L'instruction PARMS permet quant à elle de changer la valeur initiale des estimateurs des paramètres à évaluer. Enfin, l'option METHOD paramètre le type de méthode de lissage à utiliser. 
Une analyse de la covariance se réalise en deux étapes :
- la première consiste à vérifier l'hypothèse de parallélisme des deux groupes d'individus ;
 - la seconde teste l'égalité des ordonnées à l'origine.
 
Pour réaliser le test de parallélisme, c'est-à-dire d'égalité des pentes, il est possible d'utiliser soit la procédure REG, soit la procédure GLM. 
 
Dans les deux cas, le test est strictement identique.
 
La syntaxe SAS est la suivante :
 
proc GLM ;
      class GROUPE ;
      model QC = GROUPE V02 GROUPE*V02 / e xpx solution ;
      lsmeans GROUPE / sterr pdiff cov ;
   run ;      C'est l'effet GROUPE*V02 qui teste le parallélisme.
 
  proc REG ;
      model QC = GROUPE1 GROUPE2 V02_1 V02_2 / noint ;
      parallel : mtest V02_1 - V02_2 = 0 / print details ;
   run ; 
   Il existe dans le Système SAS® deux procédures qui permettent de reconnaître l'hétéroscédasticité du signal :
- MODEL module SAS/ETS®
 
Dans la procédure MODEL, l'option 'white' permet de tester l'existence d'hétéroscédasticité en mettant en ?uvre le test de White.
- REG module SAS/STAT®.
 
	Dans la procédure REG, l'option 'spec' teste la validité des moments
d'ordre 1 ou 2. L'option 'acov' permet d'avoir une estimation de la
matrice asymptotique de variance-covariance des régresseurs suivant
l'article de White.
 
 
Mais toutes les deux ne proposent pas de correction dans l'estimation du modèle et des paramètres correspondants.
 
 
Pour corriger une régression des effets d'hétéroscédasticité, le Système SAS® propose une méthode utilisant la régression pondérée. Des informations théoriques concernant la correction de l'hétéroscédasticité par la régression pondérée sont disponibles dans le manuel SAS suivant :
Univariate and Multivariate General Linear Models
Theory and Applications using SAS Software
Neil H.Timm and Tammy A. Mieczkowski.
 
 
Le programme qui réalise cette correction est également disponible sur le site de SAS Institute sous la dénomination suivante : 'WLSE for data with heteroscedasticity' et à l'adresse suivante :
http://www.sas.com/samples/A55809 
SS1 :
- Somme des carrés des erreurs séquentielles.
 - Chaque effet est ajouté l'un après l'autre au modèle général.
 
Exemple : Modèle Y fonction de A, B, C et A*B
Terminologie
- A, B, C et A*B constituent les variables explicatrices ou effet.
 - A, B et C sont des effets simples issus donc d'un seul terme A, B et C respectivement.
 - A*B est un effet composite, c'est-à-dire issu de deux termes A et B.
 - La somme des carrés des écarts SS est définie par la formule suivante :
SS(Y) = SS(A, B, C, A*B / constante) - Alors, les SS1 sont définies comme suit :
SS1(A) = SS(A / constante)
SS1(B) = SS(B / constante, A)
SS1(C) = SS(C / constante, A, B)
SS1(A*B) = SS(A / constante, A, B, C) 
Caractéristiques des SS1 :
- SS(Y) = SS1(A) + SS1(B) + SS1(C) + SS1(A*B)
 - Les SS1 sont statistiquement indépendantes les unes des autres si les erreurs sont indépendantes et normalement distribuées.
 - Les SS1 dépendent de l'ordre dans lequel les effets sont inclus dans le modèle général.
 - Les SS1 sont utiles en particulier dans le cas des modèles polynomiaux pour connaître la contribution d'un terme de degré (n+1) par rapport au modèle général de degré n.
 - Les hypothèses de significativité des SS1 testées diffèrent selon que les données sont équilibrées ou pas (valeurs manquantes ou non).
 
SS2 :   elle est dérivée de la différence entre les sommes des carrés des écarts des sous-modèles correspondants.
 
L'erreur de type 2 d'un effet donné est en fait la différence d'erreur due à l'ajout de cet effet dans le modèle une fois que tous les autres effets ont été ajoutés au modèle général, excepté les effets composites.
Alors, les SS2 sont définies comme suit :
- SS2(A) = SS(A / constante, B, C)
 - SS2(B) = SS(B / constante, A, C)
 - SS2(C) = SS(C / constante, A, B)
 - SS2(A*B) = SS(A*B / constante, A, B, C)
 
Caractéristiques des SS2 :
- SS(Y) n'est pas égale à SS2(A) + SS2(B) + SS2(C) + SS2(A*B).
 - Les hypothèses de significativité des SS2 testées n'incluent pas nécessairement les paramètres des autres effets excepté pour les effets composites.
 - Les SS2 ne dépendent pas de l'ordre d'introduction des effets dans le modèle général.
 - Les hypothèses de significativité des SS2 testées diffèrent selon que les données sont équilibrées ou pas (valeurs manquantes ou non).
 
	SS3 - 4 :   somme des carrés des erreurs partielles.
 
Chaque effet est testé séparément par rapport au modèle général. Ce sont les sommes des carrés des écarts les plus intéressantes et les plus exploitées. En l'absence de valeurs manquantes (données équilibrées), SS3 et SS4 sont égales.
 
                     Alors, les SS3-4 sont définies comme suit :
- SS3-4(A) = SS(A / constante, B, C, A*B)
 - SS3-4(B) = SS(B / constante, A, C, A*B)
 - SS3-4(C) = SS(C / constante, A, B, A*B)
 - SS3-4(A*B) = SS(A*B / constante, A, B, C)
 
Caractéristiques des SS3 - 4 :
- SS(Y) n'est pas égale à SS3-4(A) + SS3-4(B) + SS3-4(C) + SS3-4(A*B).
 - Les hypothèses de significativité des SS3-4 testées n'incluent pas nécessairement les paramètres des autres effets excepté pour les effets composites.
 - Les SS3-4 ne dépendent pas de l'ordre d'introduction des effets dans le modèle général.
 - Les SS3 et SS4 diffèrent uniquement si les données sont déséquilibrées (valeurs manquantes présentes). Dans ces cas-là, SS3 conserve l'orthogonalité tandis que SS4 conserve l'équilibre des données, c'est à dire contrebalance le déséquilibre des données.
 
Le type de somme des carrés des écarts à considérer dépend de ce que l'on souhaite étudier. Dans le cas d'une régression linéaire classique, valeurs explicatives continues, SS2, SS3 et SS4 sont identiques. Dans le cas d'une analyse de variance, valeurs explicatives nominales, SS1, SS2, SS3 et SS4 peuvent être utiles toutes les quatre.
Il n'existe pas comme dans la procédure REG d'option offrant la possibilité d'obtenir une estimation directe d'intervalle de confiance sur les valeurs individuelles de la table SAS d'entrée.
Pour les procédures MIXED et GLM, il faut passer par l'option SOLUTION qui donne l'estimation des paramètres du modèle linéaire ajusté ainsi que la précision associée. Ensuite, il ne reste plus qu'à calculer la valeur estimée pour chacune des données d'entrée ainsi que l'intervalle de confiance associé. 
Ces deux options calculent des intervalles de confiance de valeurs prédites moyennes et non pas de valeurs prédites individuelles. L'option PREDMEANS calcule des intervalles de confiance sans tenir compte des effets aléatoires tandis que l'option PREDICTED permet de tenir compte des effets aléatoires définis dans l'instruction RANDOM.
L'option PREDMEANS ne présente donc un intérêt uniquement si vous avez un effet aléatoire dans le modèle ajusté. Elle permet ainsi la comparaison avec et sans effet aléatoire.
S'ils sont nuls, c'est que l'on est en présence d'une matrice XX' singulière. Cela ne signifie nullement que l'estimation est mauvaise mais simplement qu'il existe une infinité de solutions au modèle à ajuster. Alors, afin de fournir au moins une solution parmi toutes celles possibles, la procédure ajoute une condition supplémentaire lors de la résolution du problème inverse. À savoir, elle impose la nullité de la dernière modalité de chaque variable.
Il est possible de générer les variables indicatrices relatives à une variable catégorielle grâce à une étape data, ou encore grâce à la proc TRANSREG.
 
Un exemple des deux méthodes est présenté ci-dessous dans le cas d'une variable catégorielle, notée 'Trait', à trois modalités 'A', 'B' et 'P'.
1- Avec une étape data, il est dans les habitudes d'utiliser le code synthétique suivant :
 
    title 'Création de variables indicatrices';
    data Maladie ;
    set Maladie ;
    TraitA = (Trait='A') ;
    TraitB = (Trait='B') ;
    Run ;
   2- Avec la proc TRANSREG, il faut utiliser l'option DESIGN et l'instruction MODEL CLASS en précisant la variable catégorielle :
   title 'Création de variables indicatrices';
    proc transreg data=Maladie design;
    model class(Trait);
    id Age Duree Gueri;
    output;
    run;
   Dans ce cas, les variables indicatrices sont générées dans une table Datan.
Il est possible de choisir la modalité que l'on souhaite pour référence, grâce aux options PARAM= et REF=.
Exemple :
title 'LOGISTIC en V8 - PARAM=REF' ;
    proc logistic data=maladie;
    class trait(param=ref ref= 'A');
    model gueri= trait age duree;
    run;
    Cela est possible avec la proc MODEL du module SAS/ETS, qui fournit deux tests :
- le test de White ;
 - le test de Breusch-Pagan.
 
Il n'est pas possible d'imposer des paramètres de manière directe. 
Cependant, il existe un contournement, en utilisant l'option OFFSET= de l'instruction MODEL, comme dans l'exemple ci-dessous.
 
 
Soit un modèle à 10 variables indépendantes : X1-X10
 
proc LOGISTIC DATA=data;
 model y=x1-x10;
 On souhaite imposer les paramètres comme suit :
1 pour X1, 2 pour X2, 3 pour X3, 4 pour X4 et 5 pour X5.
 
La solution consiste dans un premier temps à construire à l'aide d'une étape data une variable offset, 
combinaison linéaire des variables X1-X5, en utilisant les valeurs imposées comme des constantes.
 
data newdata;
 set data;
 offstvar=1*x1+2*x2+3*x3+4*x4+5*x5;
 Il faut ensuite lancer une régression logistique, utilisant la variable offset et les variables explicatives restantes :
proc LOGISTIC data=datanew;
 model y=x6-x10 / offset=offstvar;
 run;
 À noter que la totalité des paramètres peut être imposée facilement de la manière suivante :
- il faut tout d'abord créer une table d'une seule observation, avec comme variables les variables explicatives (chacune de ces variables sera affectée de la valeur que l'on souhaite imposer à son estimateur) ;
 - spécifier ensuite cette table dans l'option INEST=, au niveau de l'instruction de la procédure LOGISTIC. Spécifier également l'option MAXITER=0 dans l'instruction MODEL.
 
Il n'y a pas d'options permettant de modifier le nombre de décimales des résultats.
 
 
Cependant, un contournement existe. Il s'agit de sauvegarder les résultats dans une table SAS, 
grâce à l'ODS OUTPUT, et d'appliquer ensuite le format à la variable concernée, comme dans l'exemple ci-dessous :
 
Data Neural;
  input Treat $ Sex $ Age Dur Pain $ @@;
  datalines;
P F 68 1 No B M 74 16 No P F 67 30 No
P M 66 26 Yes B F 67 28 No B F 77 16 No
A F 71 12 No B F 72 50 No B F 76 9 Yes
A M 71 17 Yes A F 63 27 No A F 69 18 Yes
B F 66 12 No A M 62 42 No P F 64 1 Yes
A F 64 17 No P M 74 4 No A F 72 25 No
P M 70 1 Yes B M 66 19 No B M 59 29 No
A F 64 30 No A M 70 28 No A M 69 1 No
B F 78 1 No P M 83 1 Yes B F 69 42 No
B M 75 30 Yes P M 77 29 Yes P F 79 20 Yes
A M 70 12 No A F 69 12 No B F 65 14 No
B M 70 1 No B M 67 23 No A M 76 25 Yes
P M 78 12 Yes B M 77 1 Yes B F 69 24 No
P M 66 4 Yes P F 65 29 No P M 60 26 Yes
A M 78 15 Yes B M 75 21 Yes A F 67 11 No
P F 72 27 No P F 70 13 Yes A M 75 6 Yes
B F 65 7 No P F 68 27 Yes P M 68 11 Yes
P M 67 17 Yes B M 70 22 No A M 65 15 No
P F 67 1 Yes A M 67 10 No P F 72 11 Yes
A F 74 1 No B M 80 21 Yes A F 69 3 No
;
 
ods output parameterestimates=parms; /* création de la table parms */
 
proc genmod data=Neural;
  class Treat Sex;
  model Pain= Treat Sex Treat*Sex Age Dur/d=bin link=logit;
run;
 
data parms;
 set parms;
 format estimate 12.6; /* application d'un format */
run;
 
proc print;
run;Le R² ajusté n'est pas fourni en standard. 
Vous pouvez l'obtenir, à partir des résultats de la procédure GLM en utilisant l'ODS et une étape data comme dans l'exemple suivant :
 
data iron;
  input fe loss @@;
datalines;
0.01 127.6 0.48 124.0 0.71 110.8 0.95 103.9
1.19 101.5 0.01 130.1 0.48 122.0 1.44 92.3
0.71 113.1 1.96 83.7 0.01 128.0 1.44 91.4
1.96 86.2
;
 
ods output fitstatistics=fit_ds(keep=dependent rsquare) /*création de la table fit_ds */
     overallanova=anova(where=(source='Model')) /* création de la table anova */
     nobs=nobs(keep=nvalue1); /* création de la table nobs */
 
proc glm data=iron;
 model loss=fe;
run;
 
data rsq;
 merge fit_ds anova nobs;
 m=df+1;
 adj_rsq=1-(1-rsquare)*((nvalue1-1)/(nvalue1-m)); /* calcul du R2 ajusté */
 keep dependent rsquare adj_rsq;
proc print;
run;


