A15.12 Taxa de cobertura do IC model-based NUTS
CÓDIGO SAS
/********************************************/ /*Criação das pseudo-amostras de transacções*/ /********************************************/
Data amos_trans;
set hb.amos_trans; rename trimestre=t;
run;
Proc sort data=amos_trans out=amos_trans;
by cod_nut_iii_trans;
run;
Data amos_trans;
merge amos_trans hb.CodigoDominios;
run;
Data amos_trans;
set amos_trans; drop cod_nut_iii_trans;
run;
Proc sort data=amos_trans out=amos_trans;
by ano t npc;
run;
Data trans_q1;
set amos_trans; where ano=2002 and t=1;
Data trans_q2;
set amos_trans; where ano=2002 and t=2;
Data trans_q3;
set amos_trans; where ano=2002 and t=3;
Data trans_q4;
set amos_trans; where ano=2002 and t=4;
Data trans_q5;
set amos_trans; where ano=2003 and t=5;
Data trans_q6;
set amos_trans; where ano=2003 and t=6;
Data trans_q7;
set amos_trans; where ano=2003 and t=7;
run;
Data trans_q1;
set trans_q1;
keep npc preco t cod_nut_ii_trans i ano;
Data trans_q2;
set trans_q2;
keep npc preco t cod_nut_ii_trans i ano;
Data trans_q3;
set trans_q3;
keep npc preco t cod_nut_ii_trans i ano;
Data trans_q4;
set trans_q4;
keep npc preco t cod_nut_ii_trans i ano;
Data trans_q5;
set trans_q5;
keep npc preco t cod_nut_ii_trans i ano;
Data trans_q6;
set trans_q6;
keep npc preco t cod_nut_ii_trans i ano;
Data trans_q7;
set trans_q7;
keep npc preco t cod_nut_ii_trans i ano;
run; Data null;
file 'C:\Documents and Settings\Luis Pereira \My Documents\EstudoEmpirico\chamamacro.txt'; do i= 1 to 1000; k=i;
var='%ext_am('||i||','||k||');'; put var; end;
run;
%macro ext_am(i,k);
/* Extracção das amostras */ Data amostra;
merge hb.ppopul hb.pdims; by estrato;
if ranuni(&i) <= m_h/npop then do; output;
m_h=m_h - 1; end;
/*Dimensões amostrais efectivas por estrato */ proc means data=amostra nway noprint;
var npc; class estrato;
output out=resultn n=m; run;
data resultn;
merge resultn hb.pdims; by estrato;
if m=. then m=0; run;
data resultn; set resultn;
coef=npop/m; /* Este é o novo coeficiente de extrapolação calculado com as dimensões populacionais da pseudo-população e da amostra dela extraída */
drop _type_ _freq_ m npop m_h mh; run;
/* É necessário atribuir o novo coef à amostra de empresas */
Proc sort data=amostra; by estrato;
Proc sort data=resultn; by estrato;
run;
Data amostra;
merge amostra (in=a) resultn (in=b); by estrato;
if a=1 and b=1 then output; run;
/* Fim das dimensões amostrais efectivas por estrato */
/* Dimensões amostrais efectivas de cada empresa */
proc sort data=amostra; by npc; run; Data amostra_aux; set amostra; var1=1; run;
proc means data=amostra_aux nway noprint; class npc;
output out=resultemp n=n; run;
data resultemp; set resultemp; drop _type_ _freq_; run;
/* Fim das dimensões amostrais efectivas de cada empresa */
/********************************************* *********************************************/ /* Criação das pseudo-amostras de transacções para cada trimestre */
/********************************************* *********************************************/ Data amos_first; set amostra; by npc; if first.npc; run; Data resultemp;
merge resultemp amos_first; by npc;
Data amos_transq2;
merge resultemp (in=a) trans_q2 (in=b); by npc;
if a=1 and b=1 then output; Data amos_transq3;
merge resultemp (in=a) trans_q3 (in=b); by npc;
if a=1 and b=1 then output; Data amos_transq4;
merge resultemp (in=a) trans_q4 (in=b); by npc;
if a=1 and b=1 then output; Data amos_transq5;
merge resultemp (in=a) trans_q5 (in=b); by npc;
if a=1 and b=1 then output; Data amos_transq6;
merge resultemp (in=a) trans_q6 (in=b); by npc;
if a=1 and b=1 then output; Data amos_transq7;
merge resultemp (in=a) trans_q7 (in=b); by npc;
if a=1 and b=1 then output; run; Data s_transq1; set amos_transq1; do j=1 to n; by npc; output; end; Data s_transq2; set amos_transq2; do j=1 to n; by npc; output; end; Data s_transq3; set amos_transq3; do j=1 to n; by npc; output; end; Data s_transq4; set amos_transq4; do j=1 to n; by npc; output; end; Data s_transq5; set amos_transq5; do j=1 to n; by npc; output; end; Data s_transq6; set amos_transq6; do j=1 to n; by npc; output; end; Data s_transq7; set amos_transq7; do j=1 to n; by npc; output; end; run;
Data s_transq1; /* Ficheiro com as transacções do 1º trimestre */ set s_transq1; drop n j; Data s_transq2; set s_transq2; drop n j; Data s_transq3; set s_transq3; drop n j; Data s_transq4; set s_transq4;
drop n j; Data s_transq6; set s_transq6; drop n j; Data s_transq7; set s_transq7; drop n j; run; Data stotal_trans;
set s_transq1 s_transq2 s_transq3 s_transq4 s_transq5 s_transq6 s_transq7; run; Data stotal_trans; set stotal_trans; simul=&k; run;
Proc append base=Hb.Pseudo_amostra_trans data=stotal_trans;
run;
DM 'CLEAR OUTPUT'; DM 'CLEAR LOG';
%mend;
%inc 'C:\Documents and Settings\Luis Pereira \My Documents\EstudoEmpirico\chamamacro.txt'; /********************************************* *********************************************/ /*Criação das pseudo-populacoes transacções*/ /********************************************* *********************************************/ /* Dimensões populacionais efectivas de cada empresa */
proc sort data=Hb.ppopul out=ppopul;
by npc; run; Data ppopul_aux; set ppopul; var1=1; run;
proc means data=ppopul_aux nway noprint;
class npc;
output out=resultemp n=n;
run;
data resultemp;
set resultemp; drop _type_ _freq_;
run;
/* Fim das dimensões populacionais efectivas de cada empresa */
/********************************************* *********************************************/ /* Criação das pseudo-populacções de
transacções para cada trimestre */
/********************************************* *********************************************/ Data amos_first; set ppopul; by npc; if first.npc; run; Data resultemp;
merge resultemp amos_first; by npc;
run;
Data ppopul_transq1;
merge resultemp (in=a) trans_q1 (in=b); by npc;
if a=1 and b=1 then output;
Data ppopul_transq2;
merge resultemp (in=a) trans_q2 (in=b); by npc;
if a=1 and b=1 then output;
merge resultemp (in=a) trans_q3 (in=b); by npc;
if a=1 and b=1 then output;
Data ppopul_transq4;
merge resultemp (in=a) trans_q4 (in=b); by npc;
if a=1 and b=1 then output;
Data ppopul_transq5;
merge resultemp (in=a) trans_q5 (in=b); by npc;
if a=1 and b=1 then output;
Data ppopul_transq6;
merge resultemp (in=a) trans_q6 (in=b); by npc;
if a=1 and b=1 then output;
Data ppopul_transq7;
merge resultemp (in=a) trans_q7 (in=b); by npc;
if a=1 and b=1 then output;
run; Data s_transq1; set ppopul_transq1; do j=1 to n; by npc; output; end; Data s_transq2; set ppopul_transq2; do j=1 to n; by npc; output; end; Data s_transq3; set ppopul_transq3; do j=1 to n; by npc; output; end; Data s_transq4; set ppopul_transq4; do j=1 to n; by npc; output; end; Data s_transq5; set ppopul_transq5; do j=1 to n; by npc; output; end; Data s_transq6; set ppopul_transq6; do j=1 to n; by npc; output; end; Data s_transq7; set ppopul_transq7; do j=1 to n; by npc; output; end; run;
Data s_transq1; /* Ficheiro com as
transacções do 1º trimestre */ set s_transq1; drop n j; Data s_transq2; set s_transq2; drop n j; Data s_transq3; set s_transq3; drop n j; Data s_transq4; set s_transq4; drop n j; Data s_transq5; set s_transq5; drop n j; Data s_transq6; set s_transq6; drop n j; Data s_transq7; set s_transq7; drop n j;
s_transq5
s_transq6 s_transq7;
run;
Proc append base=Hb.Pseudo_populacao_trans
data=stotal_trans;
run;
/*** Cálculo do verdadeiro valor do parâmetro de interesse na pseudo-população de
transacções gerada a partir de uma amostra de dados reais ***/
Proc sort data=Hb.Pseudo_populacao_trans
out=Pseudo_populacao_trans; by t i;
run;
proc means data=Pseudo_populacao_trans;
by t i; var preco; output out=hb.verdadeiro_parametro mean=parametro var=variancia; run;
proc means data=Pseudo_populacao_trans;
by t i; var preco;
output out=hb.verdadeiro_parametro1 mean=parametro var=variancia min=minimo max=maximo median=mediana;
run;
Proc sort data=Pseudo_populacao_trans
out=Pseudo_populacao_trans; by i;
run;
proc means data=Pseudo_populacao_trans;
by i; var preco;
output out=hb.verdadeiro_parametro2 mean=parametro var=variancia min=minimo max=maximo median=mediana;
run;
proc means data=Pseudo_populacao_trans;
var preco;
output out=hb.verdadeiro_parametro3 mean=parametro var=variancia min=minimo max=maximo median=mediana; run; Data hb.verdadeiro_parametro1; set hb.verdadeiro_parametro1; cv=sqrt(variancia)/parametro; run; Data hb.verdadeiro_parametro2; set hb.verdadeiro_parametro2; cv=sqrt(variancia)/parametro; run; Data hb.verdadeiro_parametro3; set hb.verdadeiro_parametro3; cv=sqrt(variancia)/parametro; run;