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 */ |
Partager