Exemple d'utilisation de distributions multivariées

Ce code est également disponible en : Deutsch English Español
Niveau de difficulté
Débutant
Publié le :
Le script commence par utiliser `PROC IML` pour simuler 100 observations à partir d'une distribution normale bivariée avec une moyenne et une matrice de covariance spécifiées. Les données simulées sont ensuite enregistrées dans un jeu de données SAS© nommé `inputdata`. Ensuite, `PROC MCMC` est utilisée pour ajuster un modèle normal multivarié bayésien à ces données. Des distributions a priori (normale multivariée pour la moyenne `mu` et inverse Wishart pour la matrice de covariance `Sigma`) sont spécifiées. La procédure exécute 3000 itérations de la chaîne de Markov Monte Carlo (MCMC) pour échantillonner les distributions a posteriori des paramètres du modèle.
Analyse des données

Type : CREATION_INTERNE


Les données `inputdata` sont générées en interne par `PROC IML` à partir d'une distribution normale multivariée simulée.

1 Bloc de code
PROC IML Data
Explication :
Ce bloc `PROC IML` initialise un générateur de nombres aléatoires (`call randseed(1)`), simule 100 observations (`N = 100`) d'une distribution normale bivariée avec une moyenne {1 2} et une matrice de covariance spécifique, puis calcule et affiche les moyennes et les matrices de covariance des échantillons. Enfin, il crée un jeu de données SAS nommé `inputdata` à partir des données simulées avec les colonnes 'x1' et 'x2'.
Copié !
1title 'An Example that Uses Multivariate Distributions';
2PROC IML;
3 N = 100;
4 Mean = {1 2};
5 Cov = {2.4 3, 3 8.1};
6 call randseed(1);
7 x = RANDNORMAL( N, Mean, Cov );
8 
9 SampleMean = x[:];
10 n = nrow(x);
11 y = x - repeat( SampleMean, n );
12 SampleCov = y`*y / (n-1);
13 PRINT SampleMean Mean, SampleCov Cov;
14 
15 cname = {"x1", "x2"};
16 create inputdata from x [colname = cname];
17 append from x;
18 close inputdata;
19QUIT;
2 Bloc de code
PROC MCMC
Explication :
Ce bloc `PROC MCMC` ajuste un modèle normal multivarié aux données `inputdata` générées précédemment. Il spécifie les variables de données (`x1`, `x2`), les paramètres à estimer (`mu` et `Sigma`), et définit des distributions a priori pour ces paramètres : une distribution normale multivariée pour `mu` (avec moyenne `mu0` et matrice de covariance `Sigma0` d'une grande variance) et une distribution inverse Wishart pour `Sigma` (avec degrés de liberté 2 et matrice d'échelle `S` qui est la matrice identité). La procédure exécute 3000 itérations de la chaîne de Markov Monte Carlo (MCMC) pour l'inférence bayésienne des paramètres, et la sortie est limitée aux statistiques sommaires et intervalles crédibles (`ods select PostSumInt`).
Copié !
1PROC MCMC DATA=inputdata seed=17 nmc=3000 diag=none;
2 ods select PostSumInt;
3 array DATA[2] x1 x2;
4 array mu[2];
5 array Sigma[2,2];
6 array mu0[2] (0 0);
7 array Sigma0[2,2] (100 0 0 100);
8 array S[2,2] (1 0 0 1);
9 parm mu Sigma;
10 prior mu ~ mvn(mu0, Sigma0);
11 prior Sigma ~ iwish(2, S);
12 model DATA ~ mvn(mu, Sigma);
13RUN;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : S A S S A M P L E L I B R A R Y