SAS/STAT® - General

retour SAS/STAT®

Quels sont les modules pré-requis pour le fonctionnement du module SAS/STAT®?

Seul le module SAS/BASE® est pré-requis pour l'utilisation de SAS/STAT®. Les modules SAS/INSIGHT®, SAS/GRAPH®, SAS/LAB®, SAS/ASSIST®, SAS/IML®, SAS/ETS®, SAS/OR® et SAS/QC® peuvent aussi être intéressants pour intégrer des fonctionnalités spécialisées.

Retour Haut


Quelles sont les différentes procédures pour chaque type d'analyse disponible dans le module SAS/STAT® ?


 

Types d'analyses

Procédures

Régression

Calis, Catmod, GLM, Lifereg, Logistic, Nlin, Orthoreg, Probit, Reg, Rsreg, Transreg

Analyse de variance

Anova, Catmod, GLM, Nested, Npar1way, Plan, Ttest, Varcomp

Analyse de données catégorielles

Catmod, Corresp, Freq, Logistic, Probit

Analyse Multivariée

Corresp, Princomp, Prinqual, Factor, Cancorr

Analyse discriminante

Discrim, Candisc, Stepdisc

Classification

Cluster, Fastclus, Varclus, Tree, Aceclus, Princomp, Standard

Scoring

Rank, Score, Standard, Transreg

Analyse de survie

Lifereg, Lifetest, Phreg



Retour Haut


Comment exporter en table n'importe quel résultat de votre sortie SAS ?

Depuis la version 8, tout résultat de la sortie SAS peut être stocké en table, grâce à l'Output Delivery System (ODS).

Dans la documentation en ligne, chaque procédure SAS possède une rubrique 'ODS TABLE NAMES', qui liste les noms de toutes les tables qu'il est possible de générer.

Etapes :
• Repérer le nom du résultat à exporter en table :

encadrer votre procédure avec les instructions "ODS trace on;" et "ODS trace off;", comme ci-après :

ODS TRACE ON;
proc GLM;
...
run;
ODS TRACE OFF;

Après exécution de ce code, les noms des résultats produits successivement par la procédure apparaissent dans la log.

• Utiliser l'ODS OUTPUT pour exporter le résultat désiré en table :

La syntaxe est : ODS OUTPUT NomDuRésultat = NomTableExportee

Ainsi, l'exemple suivant génère la table 'mytable', contenant les paramètres estimés du modèle :

ODS OUTPUT ParameterEstimates=mytable;
proc GLM;
...
run;
ODS OUTPUT close;

• Comment exporter plusieurs résultats portant le même nom ? :

Dans le cas où plusieurs résultats portent le même nom, l'option MATCH_ALL permet de sauvegarder tous les résultats dans des tables séparées:

ODS OUTPUT ModelANOVA(MATCH_ALL) = mytable;
proc GLM;
...
run;
ODS OUTPUT close;

 

Retour Haut


Comment réaliser un tirage aléatoire sans remise ? 

Grâce à la macro-procédure tasr:

Ses paramètres :
     entree: table à fournir en entrée
     sortie: table créée en sortie
     nb: nombre d'observations à tirer au sort

%macro tasr(libref=,entree=,sortie=,nb=);
data &libref..&sortie (drop=i j count);
  count=0;
  array obsnum(&nb) _temporary_;
  do i=1 to &nb;
      redo:
      select=ceil(ranuni(12345)*n);
      set &libref..&entree point=select nobs=n;
         do j=1 to count;
           if obsnum(j)=select then goto redo;
         end;
      position=select;
      count=count+1;
      obsnum(count)=select;
      output;
   end;
   stop;
   set &libref..&entree;
run;

%mend;

Exemple :
Tirage au sort de 300 observations dans une table de 500 observations 

data donnees (drop=var);
   do var=1 to 500;
     x=round(ranuni(1251)*100);
     output;
   end;
run;

%tasr(libref=work,entree=donnees,sortie=donnees2,nb=300);



Retour Haut



Comment réaliser un tirage aléatoire avec remise ?

/* Table d'exemple : 100 observations */
data test;
  do a=100 to 200;
    output;
  end;
run;

/* Tirage au sort de 20 observations dans cette table */
data ech1 (drop=i);
  do i=1 to 20;
    select=ceil(ranuni(1564)*n);
    set test point=select nobs=n;
    position=select;
    output;
  end;
  stop;
run;

La v ariable position correspond à la position de l'observation dans la table de départ.


Retour Haut



Comment générer des données suivant une loi particulière ?

Dans tous ces exemples, 20 valeurs sont tirées au sort et stockées dans une table SAS..

Distribution Uniforme 
Données générées comprises en 1000 et 7863 (Seed=45123)

data select(drop=i);
  do i=1 to 20;
    x=int(ranuni(45123)*6864)+1000;
    output;
  end;
run;

Distribution Normale 
Paramètres : moyenne=10, variance=0.1 (Seed=1515).
Les fonctions rannor et normal sont strictement identiques.

data select(drop=i);
  do i=1 to 20;
    x=10+sqrt(0.1)*normal(1515);
    output;
 end;
run;

Distribution Lognormale 
Paramètres : moyenne=20 et écart-type=5 (seed = 5213).

data select(drop=i);
  do i=1 to 20;
    x=exp(20+5*rannor(5213);
    output;
  end;
run;

Distribution Normale Bivariée
Paramètres : rho=0.3 (moyenne nulle et écart-type égal à 1)

data select(drop=i);
  do i=1 to 20;
    x=0.3*rannor(456789)+sqrt(1-0.3**2)*rannor(456789);
    output;
  end;
run;

Trois méthodes, en ordre croissant d'efficacité, dans lesquelles on entre les moyennes et écart-types des deux lois normales.

data a;
  keep x y;
  mu1=10; mu2=20; var1=4; var2=9; rho=.5;
  do i = 1 to 20;
    x = mu1+sqrt(var1)*rannor(123);
    y = (mu2+rho*(sqrt(var2)/sqrt(var1))*(x-mu1))+sqrt(var2*(1-rho**2))*rannor(123);
    output;
  end;
run;

data b;
  keep x y;
  mu1=10; mu2=20; var1=4; var2=9; rho=.5;
  do i = 1 to 20;
    x = rannor(123);
    y = rho*x+sqrt(1-rho**2)*rannor(123);
    x = mu1 + sqrt(var1)*x;
    y = mu2 + sqrt(var2)*y;
    output;
  end;
run;

data c;
  keep x y;
  mu1=10; mu2=20; var1=4; var2=9; rho=.5;
  std1=sqrt(var1); std2=sqrt(var2);
  c=sqrt(1-rho**2);
    do i = 1 to 20;
      x = rannor(123);
      y = rho*x+c*rannor(123);
      x = mu1 + sqrt(var1)*x;
      y = mu2 + sqrt(var2)*y;
      output;
    end;
run;

Distribution de Gamma
Paramètres : Beta=2 et Alpha=4 (seed = 123154).

data select(drop=i);
  do i=1 to 20;
    x=2*rangam(123154,4);
    output;
  end;
run;

Distribution Exponentielle
Paramètre : lambda=3 (seed = 4145).

data select(drop=i);
  do i=1 to 20;
    x=2*ranexp(4145)/3;
    output;
  end;
run;

Distribution Beta
Paramètres Alpha=5 et Beta=3 (seed = 12345).

data select(drop=i);
  do i=1 to 20;
    y1=rangam(12345,5);
    y2=rangam(12345,3);
    x=y1/(y1+y2);
    output;
  end;
run;

Distribution de Weibull
Paramètres c=2 et lambda=1/75 (seed = 212121).

data select(drop=i);
  do i=1 to 20;
    x=75*(-log(ranuni(212121)))*(1/2);
    output;
  end;
run;

Pour plus de détails, un article est consacré à la génération de nombres aléatoires avec le module SAS/BASE® dans l'Observations 3rd quarter 1992. 



Retour Haut



Que faire quand la fonction TINV renvoie 'MISSING' ?

La fonction TINV retourne l'abscisse correspondant à une probabilité donnée lue sur la fonction de distribution de la loi de Student.

Dans les spécifications techniques de la fonction TINV, il est précisé que dans certains cas l'algorithme d'inversion de la fonction de Student peut échouer et rendre une valeur MISSING. Dans ces cas là pour obtenir un résultat, il suffit d'approcher la loi de Student par une loi normale. Cette approximation est d'autant envisageable que le nombre de degrés de liberté augmente.




Retour Haut



Comment générer une loi normale multidimensionnelle sous SAS ?

Pour générer une loi normale multidimensionnelle, il suffit de tenir compte des deux points suivants :

* Si toutes les composantes d'un vecteur aléatoire X suivent une loi normale et si toutes sont indépendantes, alors X est gaussien.Une CNS pour qu'un vecteur gaussien ait ses composantes indépendantes, est que sa matrice de covariance soit diagonale.
Code SAS dans le cas d'un vecteur bidimensionnel :

Data INDEPNOR (drop = i) ;
    Retain seed1 1686174032 seed2 844616116 ;
         Do i=1 to 100 ;
         call rannor (seed1, stream1) ;
         call rannor (seed2, stream2) ;
         x = mux + sigmax * stream1 ;
         y = muy + sigmay * stream2 ;
         output ;
    end ;
run ;
    proc CORR data = INDEPNOR ;
        var x y ;
run ;

* Dans le cas d'un vecteur multidimensionnel (dimension > 2), une MACRO %MVN est disponible sur notre site internet à l'adresse suivante http://ftp.sas.com/techsup/download/stat dans le fichier MVN.sas.


Retour Haut



Comment traiter des séries appariées avec SAS ?

Pour traiter des séries appariées sous SAS, il faut combiner les données, si celles-ci sont normales (tests de normalité, théorème central limite), afin d'obtenir une seule variable qui pourra être traitée avec la procédure UNIVARIATE.

Si les données ne sont pas statistiquement assimilables à des données normales, c'est à dire si elles présentent des asymétries extrêmes ou sont ordinales, les méthodes non paramétriques de la procédure NPAR1WAY sont plus appropriées.

Retour Haut



Comment obtenir l' intervalle de confiance d'une variable aléatoire suivant une distribution de Poisson ?

Il n'existe pas sous SAS de procédures permettant d'obtenir directement un intervalle de confiance d'une distribution de Poisson. Il faut utiliser les fonctions SAS suivantes :
   CDF : retourne le niveau de probabilité cumulée à gauche d'une fonction de distribution donnée.
   PDF : retourne la valeur de la densité de probabilité d'une fonction de distribution donnée.

Les fonctions de distribution disponibles sont :
Bernoulli - F - Laplace - Poisson - Beta - Gamma - Logistic - T - Binomial - Gaussian - Lognormal - Uniform - Cauchy - Geometric - Negbinomial - Wald - Chisquare - Hypergeometric - Normal - Weibull - Exponential - Igauss - Pareto

Retour Haut



Comment obtenir le calcul des Odds Ratios avec SAS ?

La procédure LOGISTIC permet de réaliser une régression logistique binaire et d'obtenir les odds ratios qui expriment le risque moyen de passage entre les différentes modalités de la variable dépendante.

La procédure FREQ dans le cas d'une table d'entrée 2*2, permet également le calcul des odds ratios.
Une note technique SAS intitulée " Some Issues in using PROC LOGISTIC for Binary Logistic Regression" est disponible sur le site SAS à l'adresse suivante :
http://ftp.sas.com/techsup/download/technote/ts274.pdf

 

Retour Haut



Quelle différence existe-t-il entre les tests de Cochran et de Sattherwaite présents dans la procédure TTEST ?

Dans la procédure TTEST, sous l'hypothèse de variances inégales, une statistique T de Student approximative est calculée. Cette statistique est exploitable de deux façons différentes :

* l'approximation de Cochran et Cox :
Elle permet d'associer à T une probabilité p qui vérifie une loi de Student correspondant à des échantillons de tailles similaires, les effectifs des deux échantillons mis en cause. La probabilité p ainsi associée permet de tester l'égalité des moyennes.

* l'approximation de Sattherwaite :
Il est possible d'utiliser l'approximation de Sattherwaite pour associer à T un nombre df de degrés de liberté. Sous l'hypothèse d'égalité des moyennes, T est assimilée à une loi de Student à df degrés de liberté.

Le test de Cochran et Cox est plus conservatif que le test de Sattherwaite. Par défaut, le test de Sattherwaite est privilégié.

Retour Haut



Est-il possible d'estimer avec SAS une corrélation intra-classe ?

Pour estimer un coefficient de corrélation intra-classe entre 2 ou plusieurs taux dans le cas d'une variable réponse continue, il suffit d'utiliser la macro %INTRACC, disponible à l'adresse suivante:
http://www.sas.com/techsup/download/stat

Il existe également un programme SAS permettant de tester graphiquement cette corrélation. Ce programme est présent dans la publication 207 du SUGI 25 :"Using the SAS System to Visualize Inter-rater Agreement for Continuous Measurements in Medical Studies", visible à l'adresse :
http://www2.sas.com/proceedings/sugi25/25/po/25p207.pdf

Retour Haut



Comment calculer le nombre de permutations ou de combinaisons de P objets parmi N ?

A partir de la version 8 de SAS, il existe les fonctions PERM et COMB pour calculer le nombre de permutations et combinaisons de P objets parmi N.

Exemple:

data essai;
 c52=comb(5,2);
 p52=perm(5,2);
run;

Retour Haut



Comment représenter la fonction de répartition d'une variable aléatoire ?

La fonction de répartition d'une variable peut s'obtenir en utilisant
l'instruction CDFPLOT de la proc CAPABILITY du module SAS/QC.
Si vous ne disposez pas de ce module, vous pouvez utiliser une proc FREQ,
suivie d'une étape data et d'une proc GPLOT, comme dans l'exemple suivant :

/* Représenter une fonction de répartition sans le module SAS/QC */

/* Fabrication de données de test */

data one;
  drop i;
  do i=1 to 50;
    y=10+25*ranuni(12345);
    output;
  end;
run;
proc freq data=one noprint;
  table y / out=out;
run;
data final;
  set out;
  cumpct+percent;
  output;
run;
title 'fonction de repartition';
symbol i=steplj v=none;
proc gplot data=final;
  plot cumpct*y;
run;

/* Avec le module SAS/QC, utiliser PROC CAPABILITY */

proc capability data=one noprint;
  cdfplot y;
run;

Retour Haut



Quelle différence y a t'il entre la fonction CINV de SAS® et la fonction KHI2_INVERSE de Excel ?


Ces fonctions renvoient la valeur d'une variable aléatoire suivant une loi du Chi2, selon une probabilité et un degré de liberté donné.

Syntaxe :
La probabilité qu'une variable x suive une loi du chi2 à df degrés de liberté est définie telle que : Probabilité=Chi2(x, df)

L'appel des fonctions se fait comme suit :
- CINV (1-probabilite, df) = x
- KHI2_INVERSE (probabilite, df) = x

=>La fonction CINV attend un percentile de la distribution du Chi2 alors que la fonction KHI2.INVERSE attend une probabilité unilatérale.

Remarque :
La fonction CINV est l'inverse de la fonction PROBCHI de SAS®.

Exemple :
SAS :

X= =CINV (0.95, 3)
X=7.81

Excel :

X=KHIDEUX.INVERSE (0,05, 3)
X=7.81

Retour Haut


 

Comment augmenter la longueur des variables affichées en sortie des procédures SAS/STAT ?

Le nombre maximal de caractère autorisé par défaut est 20 ou 24 selon la procédure utilisée. Pour augmenter la taille par défaut, il faut utiliser l'option NAMELEN= dans l'appel de la procédure.

Exemple :
proc logistic data=test namelen=40;
...;
run;

Retour Haut



Comment générer un intervalle de confiance pour une proportion ?

l faut utiliser l'option BINOMIAL de l'instruction TABLES de la procédure FREQ. Pour générer un intervalle de confiance sur un niveau précis, il faut le spécifier grâce à l'option LEVEL=.

Exemple :

proc freq data=sashelp.class;
 tables sex/binomial;
 tables sex/binomial(level='M');
run;

 

Retour Haut



Dans la log j'ai le message "The QUANTREG procedure has expired".

 Le 31 Décembre 2008, la procédure QUANTREG du module SAS/ STAT a expiré. Un message d'erreur apparait à son utilisation dans la log :

ERROR: The QUANTREG procedure has expired. Please contact Lin.Chen@sas.com

Pour corriger cette erreur, suivez les indications de la SAS Note suivante : http://support.sas.com/kb/24/435.html

Le fichier téléchargé contient la dernière version de la procédure QUANTREG, qui sera mise à jour en sélectionnant le choix « update ».

Retour Haut

 


Caractéristiques :
  • Catégories : SAS/Stat
  • OS : Windows, Unix, z/OS
  • Version : 9.3
  • Vérifié en novembre 2012
Présentation de la procédure PLS (Partial Least Squares)

La régression des moindres carrés partiels est une méthode de modélisation très prisée dans les domaines de la chimie et de l'agronomie. La particularité de l'analyse des données chimiques vient du fait qu'elle porte sur des données mesurées sur de très nombreuses variables explicatives pour un nombre relativement faible d'observations.

Un des problèmes majeurs rencontrés dans ces cas d'études est le très fort degré de colinéarité entre les variables. Le but de la régression des moindres carrés partiels est de minimiser l'erreur sur la variable réponse en déterminant sur les variables explicatives des modèles linéaires ajustant au mieux la réponse.

Elle tient compte des variations des variables explicatives, quand celles-ci sont très fortement corrélées. L'estimation résultante dans l'espace des variables explicatives, si celles-ci sont correctement échantillonnées, doit permettre une meilleure caractérisation de la réponse.

La procédure PLS extrait successivement des combinaisons linéaires des variables explicatives, appelées facteurs. Ils doivent alors modéliser au mieux la variable réponse.

Les techniques utilisées dans cette procédure sont :

  • régression sur composantes principales afin d'extraire les facteurs décrivant le mieux les variations de la variable de réponse,
  • analyse des redondances maximales afin de sélectionner les facteurs les plus représentatifs de la variable réponse,
  • régression des moindres carrés partiels afin d'apporter le meilleur compromis entre les deux objectifs de minimisation de l'erreur sur la variable réponse et sur les facteurs.

Aide en ligne :

 
Retour Haut