SAS/IML Reference Card Création de Matrices M

Transcription

SAS/IML Reference Card Création de Matrices M
SAS/IML Reference Card
Création de Matrices
M = {1 2, 3 4}
I(n)
diag(V ), diag({. . .})
vecdiag(M )
(n : p)
do(x, y, t)
J(r, c, v)
repeat(M, r, c)
shape(V, r, c)
M ‘ ou T (M )
A||B
A//B
1 2
crée la matrice
3 4
matrice identité de taille n
matrice diagonale dont les éléments sont ceux du vecteur V ou {. . .}
vecteur colonne des éléments diagonaux de M
vecteur séquence allant de n à p avec un pas de 1
vecteur séquence allant de x à y avec un pas de t
matrice de taille r × c constituée de l’unique élément v
matrice répétant le bloc M , r fois en ligne et c fois en colonne
crée une matrice de taille r × c avec les éléments de V
transposition de la matrice M
concaténation horizontale de A et B
concaténation verticale de A et B
Opérateurs sur Matrices et Scalaires
+
addition (matrices ou scalaires)
−
soustraction (matrices ou scalaires)
∗
multiplication matricielle (matrices ou scalaires)
#
multiplication terme à terme (matrices ou scalaires)
/
division terme à terme (matrices ou scalaires)
∗∗
fonction puissance matricielle
##
fonction puissance terme à terme
sqrt(M )
racine carrée élément par élément de M
@
produit de Kronecker
Extractions / Réductions / Comparaisons
M [Vr , Vc ]
matrice extraite de M dont les indices de lignes correspondent à Vr et ceux de colonnes à Vc
M [Vr , ]
matrice extraite de M dont les indices de lignes correspondent à Vr (toutes les colonnes)
M [, Vc ]
matrice extraite de M dont les indices de colonnes correspondent à Vc (toutes les lignes)
M [+]
scalaire correspondant à la somme des éléments de M
M [, :]
vecteur colonne des moyennes des lignes de M
M [<>, ]
vecteur ligne constitué de l’élément maximum de chaque colonne de M
><
opérateur du minimum
<:>
index du maximum
>:<
index du minimum
##
somme des carrés
A>0
matrice booléenne, de même taille que A, du résultat 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éterminant 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 )
décomposition de Cholesky de M (définie positive) telle que U ‘U = M
Fonctions SAS générales
print A;
imprime A dans l’output
print (ncol(A));
idem mais bien penser aux parenthèses s’il y a une opération à faire
rannor(J(n, p, 0))
crée une matrice n × p dont les coefficients suivent une loi normale centrée réduite
ranuni(J(n, p, 0))
crée une matrice n × p dont les coefficients suivent une loi uniforme sur [0, 1]
probnorm(x)
probabilité qu’une variable suivant une loi normale centrée réduite soit inférieure à x
probt(x, df )
probabilité qu’une variable suivant une loi de Student à df degrés de liberté soit inférieure à x
probf (x, df1 , df2 )
probabilité qu’une variable suivant une loi de Fischer à df1 et df2 degrés de liberté soit inférieure à x
cdf (0 T 0 , x, df )1
cumulative density function (intégrale) de la loi T à df degrés de liberté en x
pdf (0 N ORM AL0 , x)1
probability density function (densité) de la loi normale centrée réduite en x
1
liste 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ées depuis une table SAS
use lib.toto;
read all var {. . .} into Y;
read point 2 var {. . .} into X;
/*
/*
lit toutes les observations (all)
lit uniquement la deuxième ligne (point 2)
*/
*/
Créer une table SAS en IML
create lib.toto from X [colname = {. . .}];
append;
/*
/*
crée la table lib.toto à partir de la matrice X
l’instruction colname définit les noms de colonnes
*/
*/
Créer un module
proc iml;
start transpose(M);
t_M=M‘;
return(t_M);
finish;
quit;
/*
/*
/*
/*
/*
début du module ‘transpose’ qui prend pour argument M
crée une matrice transposée de M
le module renvoie la transposée de M
fin du module
un module peut aussi ne rien renvoyer
*/
*/
*/
*/
*/
Utiliser une routine1 d’optimisation
proc iml;
use lib.td2;
read all var {depense} into Y;
read all var {age ind revenu} into X1;
e=J(nrow(Y),1,1);
X=e||X1;
start ols(beta) global(y,x);
residu=y-x*beta‘;
scr=residu[##];
return(scr);
finish;
beta0=J(1,ncol(X),0);
optn={0 4};
call nlpnra(rc,beta,’ols’,beta0,optn);
print beta;
quit;
1
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
MCO par minimisation de la somme des carrés des résidus
On déclare la table SAS.
On charge le vecteur depense dans Y.
On charge les explicatives dans X1.
On crée un vecteur constant.
On concatène la constante avec les explicatives.
On démarre le module en déclarant
les paramètres d’optimisation en local
et le reste en global.
On calcule le résidu que l’on va ensuite
chercher à minimiser.
On calcule la somme des carrés.
On renvoie la valeur à optimiser.
Fin du module.
On déclare le vecteur qui va servir
d’initialisation à la routine d’optimisation.
Les options d’optimisation: 0 pour minimiser,
4 pour contr^
oler ce qui va ^
etre affiché.
La routine d’optimisation:
rc est le vecteur de return code,
beta doit ^
etre un vecteur ligne.
On imprime le vecteur de résultat.
routines disponibles: NLPCG, NLPDD, NLPNMS, NLPNRA, NLPNRR, NLPQN, NLPQUA, NLPTR
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/
*/

Documents pareils

Les matrices : les bases Créer des matrices

Les matrices : les bases Créer des matrices - Pour créer une matrice, on utilise les crochets [ ]. On les obtient avec la combinaison [SHIFT] + [+] ou [-]. N’oubliez pas les deux crochets ouverts au début : le premier crochet délimite la mat...

Plus en détail