IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAS IML Discussion :

SAS IML ( proc IML)


Sujet :

SAS IML

  1. #1
    Membre confirm�
    Inscrit en
    Octobre 2008
    Messages
    167
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 167
    Par d�faut SAS IML ( proc IML)
    Bonjour ,

    je souhaiterais savoir si y'a des pro IML sur le site .
    En fait je n'arrive pas � comprendre. tout est parfait et il me met unmessage comme quoi la matrice n'est pas conforme.


    Cidessous la log;

    Merci pour l'aide.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    data datin; set sample09.datin;
    2997  where nuts2='ITC4';
    2998  run;
     
    NOTE: There were 7 observations read from the data set SAMPLE09.DATIN.
          WHERE nuts2='ITC4';
    NOTE: The data set WORK.DATIN has 7 observations and 17 variables.
    NOTE: DATA statement used (Total process time):
          real time           0.00 seconds
          cpu time            0.00 seconds
     
     
    2999
    3000  data datin2; set sample09.datin2;
    3001  where nuts2='ITC4';
    3002  run;
     
    NOTE: There were 1 observations read from the data set SAMPLE09.DATIN2.
          WHERE nuts2='ITC4';
    NOTE: The data set WORK.DATIN2 has 1 observations and 16 variables.
    NOTE: DATA statement used (Total process time):
          real time           0.01 seconds
          cpu time            0.01 seconds
     
     
    3003
    3004  %MACRO BETHEL(DATIN, datin2, DATOUT,STR,SUM,VAR,N,ERR,NITER,CONV);
    3005
    3006  /* RICHIEDE LA SPECIFICA DEL NOME DEL FILE DI INPUT, NOME DEL FILE  */
    3007  /* DI OUTPUT, NOME DELLA VAR CHE INDICA LO STRATO, NOME DELLE VARS  */
    3008  /* DI CUI SI CONOSCE LA STIMA, NOME DELLE VARIANZE, NUMEROSITA'     */
    3009  /* DELLA POP. PER STRATO, ERRORI ATTESI PER CIASCUNA VAR, NUMERO    */
    3010  /* MAX DI ITERAZ, CRITERIO DI CONVERGENZA                           */
    3011
    3012  PROC IML;
    3013  USE &DATIN;
    3014  READ ALL VAR { &VAR } INTO VARIA;
    3015  READ ALL VAR { &N }   INTO N;     READ ALL VAR { &STR } INTO STR;
    3016  USE &DATIN2;
    3017  READ ALL VAR { &SUM } INTO SOMME;
    3018  ERR={ &ERR };
    3019  STATS=ERR;
    3020  AIJ=((n/N[+])##2)#VARIA#(1/(((SOMME)##2)#(ERR##2)+((VARIA)#(n/  (N[+]##2)  ))[+,]))   ;
    3021  ALFA=J(NCOL(AIJ),1,1/(NCOL(AIJ)));
    3022  DO I=1 TO &NITER UNTIL(DIF< &CONV);
    3023     X=1/(SQRT(AIJ*ALFA)*((SQRT(AIJ*ALFA))[+,])+1E-20);
    3024     NALFA=(ALFA#(T(AIJ)*X)##2)#(1/(ALFA#(T(AIJ)*X)##2)[+,]);
    3025     DIF=MAX(ABS(NALFA-ALFA));
    3026     ALFA=NALFA;
    3027  END;
    3028  NH=CEIL(1/X);
    3029  VARI2=(1/(NH*N))#(N-NH)#VARIA;
    3030  ERR=(SQRT((VARI2)[+,])/((N/N[+,])*SOMME)[+,]);        * può dare errore se NH>N;
    3031  STATS=STATS//ERR;
    3032  NH=(NH<>J(NROW(AIJ),1,2))><N;
    3033  NHS=(N-NH)><NH;                         * trova il minore elemento per elemento;
    3034  VARIA=(1/(NH*N))#(N-NH)#VARIA;
    3035  ERR=(SQRT((VARIA)[+,])/((N/N[+,])*SOMME)[+,]);        * [+,] somma per riga prendi
    3035! tutte le colonne;
    3036  STATS=STATS//ERR;
    3037  STATS=STATS//T(ALFA);
    3038  NH=STR||NH||NHS||N;                     * affianca tutti gli elementi elencati;
    3039  CREATE STATS VAR { &SUM };APPEND FROM STATS;
    3040  CREATE &DATOUT VAR { &STR NH NHS &N };
    3041  APPEND FROM NH;
    3042  QUIT;
    3043  PROC TRANSPOSE DATA=STATS OUT=STATS;
    3044  DATA STATS;SET STATS;
    3045  ATTRIB COL1 LABEL='ERRORI RICHIESTI'
    3046   COL2 LABEL='ERRORI OTTENUTI SENZA CORREZIONI'
    3047   COL3 LABEL='ERRORI OTTENUTI CON CORREZIONI'
    3048   COL4 LABEL='IMPORTANZA DELLA VAR. SULLA DIM. CAMP.'
    3049   _NAME_ LABEL='NOME VARIABILE';
    3050  PROC PRINT DATA=STATS NOOBS LABEL;
    3051  VAR _NAME_ COL1 COL2 COL3 COL4;
    3052  DATA &DATOUT;SET &DATOUT;
    3053  ATTRIB &STR LABEL='CODICE DI STRATO'
    3054   NH LABEL='NUMEROSITA CAMPIONE'
    3055
    3056   NHS LABEL='NUMEROSITA EVENTUALE SUPPLETIVO'
    3057   &N LABEL='NUMEROSITA POPOLAZIONE'
    3058   _NAME_ LABEL='NOME VARIABILE';
    3059  PROC PRINT DATA=&DATOUT NOOBS LABEL;
    3060  VAR &STR &N NH NHS ;
    3061  SUM &N NH NHS;
    3062  %MEND;
    3063
    3064  OPTIONS MPRINT MTRACE SYMBOLGEN;
    3065  %BETHEL(datin, datin2, sample09.IT09, STRnuts, a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12,
    3065! s2a1 s2a2 s2a3 s2a4 s2a5 s2a6 s2a7 s2a8 s2a9 s2a10 s2a11 s2a12 ,
    MLOGIC(BETHEL):  Beginning execution.
    3066          N,0.10 0.2 0.3 0.2 0.1 0.1 0.25 0.15 0.15 0.2 0.25 0.3, 1000,0.000001);
    MLOGIC(BETHEL):  Parameter DATIN has value datin
    MLOGIC(BETHEL):  Parameter DATIN2 has value datin2
    MLOGIC(BETHEL):  Parameter DATOUT has value sample09.IT09
    MLOGIC(BETHEL):  Parameter STR has value STRnuts
    MLOGIC(BETHEL):  Parameter SUM has value a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12
    MLOGIC(BETHEL):  Parameter VAR has value s2a1 s2a2 s2a3 s2a4 s2a5 s2a6 s2a7 s2a8 s2a9 s2a10
          s2a11 s2a12
    MLOGIC(BETHEL):  Parameter N has value N
    MLOGIC(BETHEL):  Parameter ERR has value 0.10 0.2 0.3 0.2 0.1 0.1 0.25 0.15 0.15 0.2 0.25 0.3
    MLOGIC(BETHEL):  Parameter NITER has value 1000
    MLOGIC(BETHEL):  Parameter CONV has value 0.000001
    MPRINT(BETHEL):   PROC IML;
    NOTE: IML Ready
    SYMBOLGEN:  Macro variable DATIN resolves to datin
    MPRINT(BETHEL):   USE datin;
    SYMBOLGEN:  Macro variable VAR resolves to s2a1 s2a2 s2a3 s2a4 s2a5 s2a6 s2a7 s2a8 s2a9
                s2a10 s2a11 s2a12
    MPRINT(BETHEL):   READ ALL VAR { s2a1 s2a2 s2a3 s2a4 s2a5 s2a6 s2a7 s2a8 s2a9 s2a10 s2a11
    s2a12 } INTO VARIA;
    SYMBOLGEN:  Macro variable N resolves to N
    MPRINT(BETHEL):   READ ALL VAR { N } INTO N;
    SYMBOLGEN:  Macro variable STR resolves to STRnuts
    MPRINT(BETHEL):   READ ALL VAR { STRnuts } INTO STR;
    SYMBOLGEN:  Macro variable DATIN2 resolves to datin2
    MPRINT(BETHEL):   USE datin2;
    SYMBOLGEN:  Macro variable SUM resolves to a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12
    MPRINT(BETHEL):   READ ALL VAR { a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 } INTO SOMME;
    SYMBOLGEN:  Macro variable ERR resolves to 0.10 0.2 0.3 0.2 0.1 0.1 0.25 0.15 0.15 0.2 0.25
                0.3
    MPRINT(BETHEL):   ERR={ 0.10 0.2 0.3 0.2 0.1 0.1 0.25 0.15 0.15 0.2 0.25 0.3 };
    MPRINT(BETHEL):   STATS=ERR;
    MPRINT(BETHEL):   AIJ=((n/N[+])##2)#VARIA#(1/(((SOMME)##2)#(ERR##2)+((VARIA)#(n/ (N[+]##2)
    ))[+,])) ;
    MPRINT(BETHEL):   ALFA=J(NCOL(AIJ),1,1/(NCOL(AIJ)));
    SYMBOLGEN:  Macro variable NITER resolves to 1000
    SYMBOLGEN:  Macro variable CONV resolves to 0.000001
    MPRINT(BETHEL):   DO I=1 TO 1000 UNTIL(DIF< 0.000001);
    MPRINT(BETHEL):   X=1/(SQRT(AIJ*ALFA)*((SQRT(AIJ*ALFA))[+,])+1E-20);
    MPRINT(BETHEL):   NALFA=(ALFA#(T(AIJ)*X)##2)#(1/(ALFA#(T(AIJ)*X)##2)[+,]);
    MPRINT(BETHEL):   DIF=MAX(ABS(NALFA-ALFA));
    MPRINT(BETHEL):   ALFA=NALFA;
    MPRINT(BETHEL):   END;
    MPRINT(BETHEL):   NH=CEIL(1/X);
    MPRINT(BETHEL):   VARI2=(1/(NH*N))#(N-NH)#VARIA;
    ERROR: (execution) Matrices do not conform to the operation.
     
     operation : * at line 3065 column 1
     operands  : NH, N
     
    NH      7 rows      1 col     (numeric)
     
             1
             1
             1
             3
             1
             1
             1
     
    N      7 rows      1 col     (numeric)
     
          2043
           106
           796
          1942
           295
           552
           238
     
     statement : ASSIGN at line 3065 column 1
    MPRINT(BETHEL):   ERR=(SQRT((VARI2)[+,])/((N/N[+,])*SOMME)[+,]);
    ERROR: (execution) Matrix has not been set to a value.
     
     operation : [ at line 3065 column 1
     operands  : VARI2, $SUB0001,
     
    VARI2      0 row       0 col     (type ?, size 0)
     
     
     statement : ASSIGN at line 3065 column 1
    MPRINT(BETHEL):   * può dare errore se NH>N;
    MPRINT(BETHEL):   STATS=STATS//ERR;
    MPRINT(BETHEL):   NH=(NH<>J(NROW(AIJ),1,2))><N;
    MPRINT(BETHEL):   NHS=(N-NH)><NH;
    MPRINT(BETHEL):   * trova il minore elemento per elemento;
    MPRINT(BETHEL):   VARIA=(1/(NH*N))#(N-NH)#VARIA;
    ERROR: (execution) Matrices do not conform to the operation.
     
     operation : * at line 3065 column 1
     operands  : NH, N
     
    NH      7 rows      1 col     (numeric)
     
             2
             2
             2
             3
             2
             2
             2
     
    N      7 rows      1 col     (numeric)
     
          2043
           106
           796
          1942
           295
           552
           238
     
     statement : ASSIGN at line 3065 column 1
    MPRINT(BETHEL):   ERR=(SQRT((VARIA)[+,])/((N/N[+,])*SOMME)[+,]);
    MPRINT(BETHEL):   * [+,] somma per riga prendi tutte le colonne;
    MPRINT(BETHEL):   STATS=STATS//ERR;
    MPRINT(BETHEL):   STATS=STATS//T(ALFA);
    MPRINT(BETHEL):   NH=STR||NH||NHS||N;
    ERROR: (execution) Numeric argument should be character.
     
     operation : || at line 3065 column 1
     operands  : STR, NH
     
    STR      7 rows      1 col     (character, size 5)
     
     ITC41
     ITC42
     ITC43
     ITC44
     ITC45
     ITC46
     ITC47
     
    NH      7 rows      1 col     (numeric)
     
             2
             2
             2
             3
             2
             2
             2
     
     statement : ASSIGN at line 3065 column 1
    MPRINT(BETHEL):   * affianca tutti gli elementi elencati;
    SYMBOLGEN:  Macro variable SUM resolves to a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12
    MPRINT(BETHEL):   CREATE STATS VAR { a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 };
    MPRINT(BETHEL):  APPEND FROM STATS;
    SYMBOLGEN:  Macro variable DATOUT resolves to sample09.IT09
    SYMBOLGEN:  Macro variable STR resolves to STRnuts
    SYMBOLGEN:  Macro variable N resolves to N
    MPRINT(BETHEL):   CREATE sample09.IT09 VAR { STRnuts NH NHS N };
    MPRINT(BETHEL):   APPEND FROM NH;
    ERROR: Number of columns in NH does not match with the number of variables in the data set.
     
     statement : APPEND at line 3065 column 1
    MPRINT(BETHEL):   QUIT;
    NOTE: Exiting IML.
    NOTE: The data set WORK.STATS has 4 observations and 12 variables.
    NOTE: The data set SAMPLE09.IT09 has 0 observations and 4 variables.
    NOTE: The SAS System stopped processing this step because of errors.
    NOTE: PROCEDURE IML used (Total process time):
          real time           0.01 seconds
          cpu time            0.01 seconds
     
     
    MPRINT(BETHEL):   PROC TRANSPOSE DATA=STATS OUT=STATS;
    NOTE: There were 4 observations read from the data set WORK.STATS.
    NOTE: The data set WORK.STATS has 12 observations and 5 variables.
    NOTE: PROCEDURE TRANSPOSE used (Total process time):
          real time           0.01 seconds
          cpu time            0.01 seconds
     
     
    MPRINT(BETHEL):   DATA STATS;
    MPRINT(BETHEL):  SET STATS;
    MPRINT(BETHEL):   ATTRIB COL1 LABEL='ERRORI RICHIESTI' COL2 LABEL='ERRORI OTTENUTI SENZA
    CORREZIONI' COL3 LABEL='ERRORI OTTENUTI CON CORREZIONI' COL4 LABEL='IMPORTANZA DELLA VAR.
    SULLA DIM. CAMP.' _NAME_ LABEL='NOME VARIABILE';
     
    NOTE: There were 12 observations read from the data set WORK.STATS.
    NOTE: The data set WORK.STATS has 12 observations and 5 variables.
    NOTE: DATA statement used (Total process time):
          real time           0.01 seconds
          cpu time            0.01 seconds
     
     
    MPRINT(BETHEL):   PROC PRINT DATA=STATS NOOBS LABEL;
    MPRINT(BETHEL):   VAR _NAME_ COL1 COL2 COL3 COL4;
    SYMBOLGEN:  Macro variable DATOUT resolves to sample09.IT09
    NOTE: There were 12 observations read from the data set WORK.STATS.
    NOTE: PROCEDURE PRINT used (Total process time):
          real time           0.00 seconds
          cpu time            0.00 seconds
     
     
    MPRINT(BETHEL):   DATA sample09.IT09;
    SYMBOLGEN:  Macro variable DATOUT resolves to sample09.IT09
    MPRINT(BETHEL):  SET sample09.IT09;
    SYMBOLGEN:  Macro variable STR resolves to STRnuts
    SYMBOLGEN:  Macro variable N resolves to N
    MPRINT(BETHEL):   ATTRIB STRnuts LABEL='CODICE DI STRATO' NH LABEL='NUMEROSITA CAMPIONE' NHS
    LABEL='NUMEROSITA EVENTUALE SUPPLETIVO' N LABEL='NUMEROSITA POPOLAZIONE' _NAME_ LABEL='NOME
    VARIABILE';
     
    NOTE: Variable _NAME_ is uninitialized.
    NOTE: There were 0 observations read from the data set SAMPLE09.IT09.
    NOTE: The data set SAMPLE09.IT09 has 0 observations and 4 variables.
    NOTE: DATA statement used (Total process time):
          real time           0.01 seconds
          cpu time            0.01 seconds
     
     
    SYMBOLGEN:  Macro variable DATOUT resolves to sample09.IT09
    MPRINT(BETHEL):   PROC PRINT DATA=sample09.IT09 NOOBS LABEL;
    SYMBOLGEN:  Macro variable STR resolves to STRnuts
    SYMBOLGEN:  Macro variable N resolves to N
    MPRINT(BETHEL):   VAR STRnuts N NH NHS ;
    SYMBOLGEN:  Macro variable N resolves to N
    MPRINT(BETHEL):   SUM N NH NHS;
    MLOGIC(BETHEL):  Ending execution.
    3067  RUN;
     
    NOTE: No observations in data set SAMPLE09.IT09.
    NOTE: PROCEDURE PRINT used (Total process time):
          real time           0.00 seconds
          cpu time            0.00 seconds
     
     
    3068
    3069
    3070  /*    %MACRO BETHEL(DATIN,DATOUT,STR,SUM,VAR,N,ERR,NITER,CONV); */
    3071  /*    elenco elementi necessari a far girare la macro           */

  2. #2
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    19
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 19
    Par d�faut
    il me semble que tu as des * au lieu des # pour les produits de tes matrices.
    ca pourrait venir de ca. je pense que c'est ca.
    pour le reste ca m'a l'air correct

Discussions similaires

  1. PROC IML SAS boucles DO
    Par salim514 dans le forum SAS IML
    R�ponses: 1
    Dernier message: 15/04/2013, 11h55
  2. [IML] Proc Iml avec SAS de base
    Par RM2006 dans le forum SAS IML
    R�ponses: 2
    Dernier message: 25/10/2011, 16h26
  3. proc IML (langage matriciel sous sas)
    Par Abdeltif_esa dans le forum SAS IML
    R�ponses: 0
    Dernier message: 20/11/2008, 23h57
  4. Utilisation de Table SAS dans l'IML
    Par stefsas dans le forum SAS IML
    R�ponses: 1
    Dernier message: 24/05/2008, 17h28
  5. Proc export dans une proc IML
    Par stefsas dans le forum SAS IML
    R�ponses: 0
    Dernier message: 05/05/2008, 16h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo