01.05.2013 Views

SAS/IML Reference Card Création de Matrices M = {1 2, 3 4 ... - Crest

SAS/IML Reference Card Création de Matrices M = {1 2, 3 4 ... - Crest

SAS/IML Reference Card Création de Matrices M = {1 2, 3 4 ... - Crest

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>SAS</strong>/<strong>IML</strong> <strong>Reference</strong> <strong>Card</strong><br />

<strong>Création</strong> <strong>de</strong> <strong>Matrices</strong><br />

<br />

1<br />

M = {1 2, 3 4} crée la matrice<br />

3<br />

<br />

2<br />

4<br />

I(n) matrice i<strong>de</strong>ntité <strong>de</strong> taille n<br />

diag(V ), diag({. . .}) matrice diagonale dont les éléments sont ceux du vecteur V ou {. . .}<br />

vecdiag(M) vecteur colonne <strong>de</strong>s éléments diagonaux <strong>de</strong> M<br />

(n : p) vecteur séquence allant <strong>de</strong> n à p avec un pas <strong>de</strong> 1<br />

do(x, y, t) vecteur séquence allant <strong>de</strong> x à y avec un pas <strong>de</strong> t<br />

J(r, c, v) matrice <strong>de</strong> taille r × c constituée <strong>de</strong> l’unique élément v<br />

repeat(M, r, c) matrice répétant le bloc M, r fois en ligne et c fois en colonne<br />

shape(V, r, c) crée une matrice <strong>de</strong> taille r × c avec les éléments <strong>de</strong> V<br />

M‘ ou T (M) transposition <strong>de</strong> la matrice M<br />

A||B concaténation horizontale <strong>de</strong> A et B<br />

A//B concaténation verticale <strong>de</strong> A et B<br />

Opérateurs sur <strong>Matrices</strong> et Scalaires<br />

+ addition (matrices ou scalaires)<br />

− soustraction (matrices ou scalaires)<br />

∗ multiplication matricielle (matrices ou scalaires)<br />

# multiplication terme à terme (matrices ou scalaires)<br />

/ division terme à terme (matrices ou scalaires)<br />

∗∗ fonction puissance matricielle<br />

## fonction puissance terme à terme<br />

sqrt(M) racine carrée élément par élément <strong>de</strong> M<br />

@ produit <strong>de</strong> Kronecker<br />

Extractions / Réductions / Comparaisons<br />

M [Vr, Vc] matrice extraite <strong>de</strong> M dont les indices <strong>de</strong> lignes correspon<strong>de</strong>nt à Vr et ceux <strong>de</strong> colonnes à Vc<br />

M [Vr, ] matrice extraite <strong>de</strong> M dont les indices <strong>de</strong> lignes correspon<strong>de</strong>nt à Vr (toutes les colonnes)<br />

M [, Vc] matrice extraite <strong>de</strong> M dont les indices <strong>de</strong> colonnes correspon<strong>de</strong>nt à Vc (toutes les lignes)<br />

M [+] scalaire correspondant à la somme <strong>de</strong>s éléments <strong>de</strong> M<br />

M [, :] vecteur colonne <strong>de</strong>s moyennes <strong>de</strong>s lignes <strong>de</strong> M<br />

M [, ] vecteur ligne constitué <strong>de</strong> l’élément maximum <strong>de</strong> chaque colonne <strong>de</strong> M<br />

>< opérateur du minimum<br />

in<strong>de</strong>x du maximum<br />

>:< in<strong>de</strong>x du minimum<br />

## somme <strong>de</strong>s carrés<br />

A > 0 matrice booléenne, <strong>de</strong> même taille que A, du résultat du test sur chaque coefficient <strong>de</strong> A<br />

Fonctions matricielles<br />

nrow(M) nombre <strong>de</strong> lignes <strong>de</strong> M<br />

ncol(M) nombre <strong>de</strong> colonnes <strong>de</strong> M<br />

<strong>de</strong>t(M) déterminant <strong>de</strong> M<br />

inv(M) inverse <strong>de</strong> M<br />

trace(M) trace <strong>de</strong> M<br />

eigval(M) valeurs propres <strong>de</strong> M<br />

eigvec(M) vecteurs propres <strong>de</strong> M<br />

root(M) décomposition <strong>de</strong> Cholesky <strong>de</strong> M (définie positive) telle que U‘U = M<br />

Fonctions <strong>SAS</strong> générales<br />

print A; imprime A dans l’output<br />

print (ncol(A)); i<strong>de</strong>m mais bien penser aux parenthèses s’il y a une opération à faire<br />

rannor(J(n, p, 0)) crée une matrice n × p dont les coefficients suivent une loi normale centrée réduite<br />

ranuni(J(n, p, 0)) crée une matrice n × p dont les coefficients suivent une loi uniforme sur [0, 1]<br />

probnorm(x) probabilité qu’une variable suivant une loi normale centrée réduite soit inférieure à x<br />

probt(x, df) probabilité qu’une variable suivant une loi <strong>de</strong> Stu<strong>de</strong>nt à df <strong>de</strong>grés <strong>de</strong> liberté soit inférieure à x<br />

probf(x, df1, df2) probabilité qu’une variable suivant une loi <strong>de</strong> Fischer à df1 et df2 <strong>de</strong>grés <strong>de</strong> liberté soit inférieure à x<br />

cdf( ′ T ′ , x, df) 1 cumulative <strong>de</strong>nsity function (intégrale) <strong>de</strong> la loi T à df <strong>de</strong>grés <strong>de</strong> liberté en x<br />

pdf( ′ NORMAL ′ , x) 1 probability <strong>de</strong>nsity function (<strong>de</strong>nsité) <strong>de</strong> la loi normale centrée réduite en x<br />

1 liste <strong>de</strong>s lois disponibles: BERNOULLI, BETA, BINOMIAL, CAUCHY, CHISQUARE, EXPONENTIAL, F, GAMMA, GEOMETRIC, HYPERGEOMETRIC, LAPLACE,<br />

LOGISTIC, LOGNORMAL, NEGBINOMIAL, NORMAL ou GAUSS, NORMALMIX, PARETO, POISSON, T, UNIFORM, WALD ou IGAUSS, WEIBULL


Lire <strong>de</strong>s données <strong>de</strong>puis une table <strong>SAS</strong><br />

use lib.toto;<br />

read all var {. . .} into Y; /* lit toutes les observations (all) */<br />

read point 2 var {. . .} into X; /* lit uniquement la <strong>de</strong>uxième ligne (point 2) */<br />

Créer une table <strong>SAS</strong> en <strong>IML</strong><br />

create lib.toto from X [colname = {. . .}]; /* crée la table lib.toto à partir <strong>de</strong> la matrice X */<br />

append; /* l’instruction colname définit les noms <strong>de</strong> colonnes */<br />

Créer un module<br />

proc iml;<br />

start transpose(M); /* début du module ‘transpose’ qui prend pour argument M */<br />

t_M=M‘; /* crée une matrice transposée <strong>de</strong> M */<br />

return(t_M); /* le module renvoie la transposée <strong>de</strong> M */<br />

finish; /* fin du module */<br />

quit; /* un module peut aussi ne rien renvoyer */<br />

Utiliser une routine 1 d’optimisation<br />

proc iml; /* MCO par minimisation <strong>de</strong> la somme <strong>de</strong>s carrés <strong>de</strong>s résidus */<br />

use lib.td2; /* On déclare la table <strong>SAS</strong>. */<br />

read all var {<strong>de</strong>pense} into Y; /* On charge le vecteur <strong>de</strong>pense dans Y. */<br />

read all var {age ind revenu} into X1; /* On charge les explicatives dans X1. */<br />

e=J(nrow(Y),1,1); /* On crée un vecteur constant. */<br />

X=e||X1; /* On concatène la constante avec les explicatives. */<br />

start ols(beta) global(y,x); /* On démarre le module en déclarant */<br />

/* les paramètres d’optimisation en local */<br />

/* et le reste en global. */<br />

residu=y-x*beta‘; /* On calcule le résidu que l’on va ensuite */<br />

/* chercher à minimiser. */<br />

scr=residu[##]; /* On calcule la somme <strong>de</strong>s carrés. */<br />

return(scr); /* On renvoie la valeur à optimiser. */<br />

finish; /* Fin du module. */<br />

beta0=J(1,ncol(X),0); /* On déclare le vecteur qui va servir */<br />

/* d’initialisation à la routine d’optimisation. */<br />

optn={0 4}; /* Les options d’optimisation: 0 pour minimiser, */<br />

/* 4 pour contr^oler ce qui va ^etre affiché. */<br />

call nlpnra(rc,beta,’ols’,beta0,optn); /* La routine d’optimisation: */<br />

/* rc est le vecteur <strong>de</strong> return co<strong>de</strong>, */<br />

/* beta doit ^etre un vecteur ligne. */<br />

print beta; /* On imprime le vecteur <strong>de</strong> résultat. */<br />

quit;<br />

1 routines disponibles: NLPCG, NLPDD, NLPNMS, NLPNRA, NLPNRR, NLPQN, NLPQUA, NLPTR

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!