• Nenhum resultado encontrado

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;