FAQ SASConsultez toutes les FAQ
Nombre d'auteurs : 14, nombre de questions : 232, dernière mise à jour : 20 décembre 2012
- 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
;