SAS/IML Reference Card Création de Matrices M = {1 2, 3 4} crée la

SAS/IML Reference Card
Cr´eation de Matrices
M={1 2,3 4}cr´ee la matrice 1 2
3 4
I(n) matrice identit´e de taille n
diag(V), diag({. . .}) matrice diagonale dont les ´el´ements sont ceux du vecteur Vou {. . .}
vecdiag(M) vecteur colonne des ´el´ements diagonaux de M
(n:p) vecteur s´equence allant de n`a pavec un pas de 1
do(x, y, t) vecteur s´equence allant de x`a yavec un pas de t
J(r, c, v) matrice de taille r×cconstitu´ee de l’unique ´el´ement v
repeat(M, r, c) matrice r´ep´etant le bloc M,rfois en ligne et cfois en colonne
shape(V, r, c) cr´ee une matrice de taille r×cavec les ´el´ements de V
M‘ ou T(M) transposition de la matrice M
A||Bconcat´enation horizontale de Aet B
A//B concat´enation verticale de Aet B
Op´erateurs sur Matrices et Scalaires
+ addition (matrices ou scalaires)
soustraction (matrices ou scalaires)
multiplication matricielle (matrices ou scalaires)
# multiplication terme `a terme (matrices ou scalaires)
/division terme `a terme (matrices ou scalaires)
∗∗ fonction puissance matricielle
## fonction puissance terme `a terme
sqrt(M) racine carr´ee ´el´ement par ´el´ement de M
@ produit de Kronecker
Extractions / R´eductions / Comparaisons
M[Vr, Vc] matrice extraite de Mdont les indices de lignes correspondent `a Vret ceux de colonnes `a Vc
M[Vr,] matrice extraite de Mdont les indices de lignes correspondent `a Vr(toutes les colonnes)
M[, Vc] matrice extraite de Mdont les indices de colonnes correspondent `a Vc(toutes les lignes)
M[+] scalaire correspondant `a la somme des ´el´ements de M
M[,:] vecteur colonne des moyennes des lignes de M
M[<>, ] vecteur ligne constitu´e de l’´el´ement maximum de chaque colonne de M
>< op´erateur du minimum
<:>index du maximum
>:<index du minimum
## somme des carr´es
A > 0 matrice bool´eenne, de mˆeme taille que A, du r´esultat du test sur chaque coefficient de A
Fonctions matricielles
nrow(M) nombre de lignes de M
ncol(M) nombre de colonnes de M
det(M) d´eterminant de M
inv(M) inverse de M
trace(M) trace de M
eigval(M) valeurs propres de M
eigvec(M) vecteurs propres de M
root(M) ecomposition de Cholesky de M(d´efinie positive) telle que UU=M
Fonctions SAS en´erales
print A; imprime Adans l’output
print (ncol(A)); idem mais bien penser aux parenth`eses s’il y a une op´eration `a faire
rannor(J(n, p, 0)) cr´ee une matrice n×pdont les coefficients suivent une loi normale centr´ee r´eduite
ranuni(J(n, p, 0)) cr´ee une matrice n×pdont les coefficients suivent une loi uniforme sur [0,1]
probnorm(x) probabilit´e qu’une variable suivant une loi normale centr´ee r´eduite soit inf´erieure `a x
probt(x, df) probabilit´e qu’une variable suivant une loi de Student `a df degr´es de libert´e soit inf´erieure `a x
probf(x, df1, df2) probabilit´e qu’une variable suivant une loi de Fischer `a df1et df2degr´es de libert´e soit inf´erieure `a x
cdf(0T0, x, df)1cumulative density function (int´egrale) de la loi T `a df degr´es de libert´e en x
pdf(0NORMAL0, x)1probability density function (densit´e) de la loi normale centr´ee r´eduite en x
1liste des lois disponibles: BERNOULLI, BETA, BINOMIAL, CAUCHY, CHISQUARE, EXPONENTIAL, F, GAMMA, GEOMETRIC, HYPERGEOMETRIC, LAPLACE,
LOGISTIC, LOGNORMAL, NEGBINOMIAL, NORMAL ou GAUSS, NORMALMIX, PARETO, POISSON, T, UNIFORM, WALD ou IGAUSS, WEIBULL
Lire des donn´ees depuis une table SAS
use lib.toto;
read all var {. . .}into Y; /* lit toutes les observations (all) */
read point 2 var {. . .}into X; /* lit uniquement la deuxi`eme ligne (point 2) */
Cr´eer une table SAS en IML
create lib.toto from X [colname ={. . .}]; /* cr´ee la table lib.toto `a partir de la matrice X */
append; /* l’instruction colname d´efinit les noms de colonnes */
Cr´eer un module
proc iml;
start transpose(M); /* ebut du module ‘transpose’ qui prend pour argument M */
t_M=M‘; /* cr´ee une matrice transpos´ee de M */
return(t_M); /* le module renvoie la transpos´ee de M */
finish; /* fin du module */
quit; /* un module peut aussi ne rien renvoyer */
Utiliser une routine1d’optimisation
proc iml; /* MCO par minimisation de la somme des carr´es des r´esidus */
use lib.td2; /* On d´eclare la table SAS. */
read all var {depense} into Y; /* On charge le vecteur depense dans Y. */
read all var {age ind revenu} into X1; /* On charge les explicatives dans X1. */
e=J(nrow(Y),1,1); /* On cr´ee un vecteur constant. */
X=e||X1; /* On concat`ene la constante avec les explicatives. */
start ols(beta) global(y,x); /* On d´emarre le module en d´eclarant */
/* les param`etres d’optimisation en local */
/* et le reste en global. */
residu=y-x*beta‘; /* On calcule le r´esidu que l’on va ensuite */
/* chercher `a minimiser. */
scr=residu[##]; /* On calcule la somme des carr´es. */
return(scr); /* On renvoie la valeur `a optimiser. */
finish; /* Fin du module. */
beta0=J(1,ncol(X),0); /* On d´eclare le vecteur qui va servir */
/* d’initialisation `a la routine d’optimisation. */
optn={0 4}; /* Les options d’optimisation: 0 pour minimiser, */
/* 4 pour contr^oler ce qui va ^etre affich´e. */
call nlpnra(rc,beta,’ols’,beta0,optn); /* La routine d’optimisation: */
/* rc est le vecteur de return code, */
/* beta doit ^etre un vecteur ligne. */
print beta; /* On imprime le vecteur de r´esultat. */
quit;
1routines disponibles: NLPCG, NLPDD, NLPNMS, NLPNRA, NLPNRR, NLPQN, NLPQUA, NLPTR
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !