SAS/STAT® - Modelisation

retour SAS/STAT® 

Dans la procédure REG, comment récupérer le R² dans une table ?

En combinant les options outest= (option de la proc REG) et adjrsq (après le / dans l'instruction model).

Retour Haut


Dans la procédure REG, comment récupérer la pvalue du modèle dans une table ?

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;

Retour Haut


Dans la procédure REG, comment récupérer les paramètres estimés (T, p-value, etc) dans une table ?

A 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®).

Retour Haut


Comment récupérer, dans une table SAS, les paramètres estimés dans la procédure GLM ?

Ce n'est pas prévu dans la procédure GLM. La solution consiste à passer par la procédure MIXED, avec une instruction MAKE.

Retour Haut


Comment tester l'hypothèse d'égalité des variances dans la procédure GLM ?

Il suffit d'utiliser l'option 'hovtest' dans l'instruction 'means' : MEANS effects / HOVTEST <=keyword>;

Plusieurs tests sont disponibles :
Keyword = Bartlett, BF, Levene, Obrien.

Par défaut, c'est le test de Levene qui est effectué.

Retour Haut


Comment choisir la procédure SAS pour l'analyse de variance ?

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.

Retour Haut


Comment récupérer dans une table les paramètres estimés d'une régression logistique, dans une procédure LOGISTIC ?

La macro eststats est disponible à l'adresse suivante :
www.sas.com/techsup/download/stat/eststats.sas.

Retour Haut


Comment utiliser les résultats de l'ajustement de données à l'aide d'un modèle logistique afin de prédire un nouveau jeu de données ?

Dans le programme scorenew.sas, une procédure LOGISTIC est utilisée pour établir un modèle. Puis les probabilités prédites sont calculées sur de nouvelles observations, en utilisant ce modèle :
www.sas.com/techsup/download/stat/scorenew.sas.

Retour Haut


Où est documentée la procédure PLS ?

Les deux documents suivants :
Examples using the PLS procedure
An introduction to the Partial Least Square
sont disponibles à l'adresse www.sas.com/rnd/app/da/new/dapls.html.

Retour Haut


Quel est le statut de la procédure PLS ?

Elle est expérimentale depuis la version 6.11 et sera production dans la version 8 du Système SAS®.

Retour Haut


Comment paramétrer la procédure MIXED pour travailler avec des conditions maximales de convergence ?

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.

Retour Haut


Comment réaliser des tests de parallélisme pour valider une analyse de la covariance ?

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 le 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 ;

Retour Haut


Comment contourner les effets d'hétéroscédasticité du signal ?

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 & Multivariate General Linear Models
Theory and Applications using SAS Software
Neil H.Timm & 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://ftp.sas.com/samples/A55809 

Retour Haut


A quoi correspondent les différentes sommes des carrés des écarts définies sous SAS ?

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 soient é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 enfait 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és 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 soient é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'abscence 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és 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 4.

Retour Haut


Quelles sont les différences existant entre les procédures MIXED et GLM ?

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.

Retour Haut


Comment obtenir des intervalles de confiance sur les valeurs d'entrée avec les procédures MIXED et GLM ?

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é.

Retour Haut


A quoi correspondent les options PREDICTED et PREDMEANS de la procédure MIXED ?

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.

Retour Haut


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 ?

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. A savoir, elle impose la nullité de la dernière modalité de chaque variable.

Retour Haut


Comment générer des variables indicatrices à partir d'une variable catégorielle ?

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', à 3 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.

Retour Haut


Comment changer la modalité de référence d'une variable catégorielle dans la proc LOGISTIC ?

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;

Retour Haut


Comment corriger les problèmes d'hétéroscédasticité, sans utiliser la méthode de GARCH ?

Cela est possible avec la proc MODEL du module SAS/ETS, qui fournit deux tests:
le test de White et le test de Breusch-Pagan.

Retour Haut


Dans la procédure LOGISTIC, comment imposer les valeurs de certains paramètres ?

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;


A 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.

Retour Haut


Dans la procédure GENMOD, comment augmenter le nombre de décimales des résultats ?

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:

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:

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;

Des détails sur l'utilisation de l'ODS OUTPUT sont disponibles, dans la FAQ suivante :
SAS/STAT – General - Comment exporter en table n'importe quel résultat de votre sortie SAS ?

Retour Haut


Comment obtenir le R2 (R-square) ajusté, à partir des résultats d'une procédure GLM ?

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')) /* creation 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;

Retour Haut


Comment spécifier des termes d'intéraction dans la procédure PHREG ?

Si les covariables sont dépendantes du temps, les termes d'interaction doivent être codés à l'intérieur de la procédure PHREG, comme suit:

data test;
  input censor time a $ b $ c d;
cards;
...
;
run; proc PHREG data=test;
  model time*censor(0)=a b c d timed;
  timed=time*d;      /* la variable d’interaction dépendante du temps */
                            /* est créée à l’intérieur de la procédure PHREG*/
run;
 

- Les interactions entre les covariables fixes peuvent être codées soit à
l'intérieur de la procédure PHREG, soit à l'extérieur, dans une étape data :

data test;
  ab=a*b;           /* les variables d’interaction ab et cd sont */
  cd=c*d;           /* créées à l’extérieur de la procédure PHREG */
  input censor time a $ b $ c d;
cards;
...
;
run;
proc PHREG data=test;
  model time*censor(0)=a b c d ab cd; /* utilisation des variables ab et cd */
run;


Ce code est identique à:

data test;
  input censor time a $ b $ c d;
cards;
...
;
run;
proc PHREG data=test;
  model time*censor(0)=a b c d ab cd;
  ab=a*b;           /* les variables d’interaction ab et cd sont */
  cd=c*d;           /* créées à l’intérieur de la procédure PHREG */
run;


Retour Haut