• Nenhum resultado encontrado

USO DE MACROS NO SAS

N/A
N/A
Protected

Academic year: 2021

Share "USO DE MACROS NO SAS"

Copied!
10
0
0

Texto

(1)

Euclides Braga MALHEIROS* O uso de Macros no SAS permite que uma variável ou uma seqüência de comandos SAS seja chamado qualquer número de vezes. É o mesmo princípio de subrotinas utilizado na maioria das linguagens de programação.

O SAS permite vários tipos de macros, alguns deles serão discutidos aqui.

1.

Macro variáveis.

Uma macro variável permite definir um valor a uma variável no SAS. Sintaxe para definir a macro:

%LET <nome>=<valor>;

Sintaxe para chamar a macro:

&<nome>

Para exemplificar considere o conjunto de dados de um Delineamento Inteiramente Casulizado, com 5 variáveis: Tratamento (TR), Repetição (RP) e as variáveis dependentes Y1, Y2 e Y3, apresentado na Tabela1.

Tabela 1. Dados de experimento Inteiramente Casualizado com 5 tratamentos e 3 repetições. (Dados fictícios)

TR RP Y1 Y2 Y3 1 1 11,82 14,86 13,84 1 2 12,07 14,44 13,92 1 3 12,45 14,18 13,76 2 1 12,47 15,19 15,02 2 2 11,07 13,38 14,61 2 3 10,66 14,22 13,54 3 1 12,92 14,49 13,40 3 2 10,29 14,42 14,62 3 3 12,83 13,92 15,69 4 1 11,96 14,71 14,98 4 2 13,38 15,07 13,62 4 3 10,37 15,78 13,33 5 1 11,05 13,18 14,61 5 2 10,63 13,14 14,53 5 3 13,43 14,08 14,23

(2)

A partir desses dados foi criado um arquivo ASC II com o nome MAC_V.TXT, disponível no site do curso.

Exercício 1:

• Fazer download do arquivo MAC_V.ZIP, disponível no site do curso, para o disco do

drive A e descompactá-lo.

• Fazer um programa SAS para a análise do experimento Delineamento Inteiramente

Casualizado, permitinto estabelecer as possíveis variações do programa, como:

o Título da análise,

o Arquivo ASC a ser importado, o Primeiro Registro com Dados,

o Número de variáveis a serem analisadas (variáveis dependentes), o Tipo de teste de comparações múltiplas e

o Tipo de teste de Homocedasticidade,

sejam definidas como variáveis macro.

Programa:

/************* MACRO VARIAVEIS **********/

/* DELINEAMENTO INTERAMENTE CASUALIZADO */

/****************************************/

/*--- REDEFINA AS OPCOES DESEJADAS ---*/ %LET TITULO="EXEMPLO MACRO VARIÁVEIS"; /* TITULO */ %LET AASC="A:\MAC1.TXT"; /* ARQUIVO ASC II */ %LET PRD=1; /* PRIMEIRO REGISTO DE DADOS – FIRSTOBS */ %LET NVD=3; /* NUMERO DE VARIAVEIS DEPENDENTES */ %LET TCM=TUKEY; /* TESTE DE COMPARACOES MULTIPLAS */ %LET THV=LEVENE; /* TESTE DE HOMOGENEIDADE DE VARIANCIA */ /*---*/ OPTION LS=78 PS=64 PAGENO=1;

TITLE &TITULO;

DATA M1;

INFILE &AASC FIRSTOBS=&PRD;

INPUT TR RP Y1-Y&NVD;

PROC GLM;

CLASS TR RP;

MODEL Y1-Y&NVD=TR/SS3;

MEANS TR/&TCM HOVTEST=&THV;

OUTPUT OUT=AE STUDENT=ER1-ER&NVD;

RUN;

PROC UNIVARIATE DATA=AE NORMAL PLOT;

VAR ER1-ER&NVD;

(3)

2. Macro funções.

Uma macro função permite definir uma função a ser usada no programa. Sintaxe para definir a macro:

%macro <nome(lista de argumentos - separados por ,)>;

expressão que define a função usando o argumento precedido por &

%mend <nome>;

Para usar a função:

%<nome(valores para os argumentos)>

Para exemplificar considere o conjunto de dados de um Delineamento Inteiramente Casulizado, com 5 variáveis: Tratamento (TR), Repetição (RP) e as variáveis dependentes Y1, Y2 e Y3, apresentado na Tabela 2.

Tabela 2. Dados de experimento Inteiramente Casualizado com 5 tratamentos e 3 repetições. (Dados fictícios)

TR RP Y1 Y2 Y3 1 1 15 0,486 78,5 1 2 16 0,444 80,6 1 3 14 0,418 83,8 2 1 25 0,519 83,9 2 2 21 0,338 72,3 2 3 12 0,422 68,8 3 1 11 0,449 87,7 3 2 21 0,442 65,8 3 3 30 0,392 86,9 4 1 24 0,471 79,7 4 2 13 0,507 91,5 4 3 11 0,578 66,4 5 1 21 0,318 72,1 5 2 21 0,314 68,6 5 3 18 0,408 91,9 Exercício 2:

• Fazer um programa SAS para ler os dados MAC_FC.TXT e transformar as variáveis: Y1 em raiz quadrada de (Y1+0,5); Y2 e Y3 em arco seno da raiz da porcentagem.

• Definir a transformação como macro função.

(4)

Programa: /************* MACRO FUNCOES **********/ /* TRANSFORMACAO DE DADOS */ /****************************************/ /*---DEFINICAO DA MACRO---*/ %MACRO RAIZ(X,ALFA); SQRT(&X+&ALFA) %MEND RAIZ; %MACRO ASRP(X,DIV,ALFA); ARSIN(SQRT(&X/&DIV)+&ALFA) %MEND ASRP; /*---*/ OPTIONS LS=78 PS=64 PAGENO=1; DATA MF;

INFILE "A:\MAC_FC.TXT" FIRSTOBS=2;

INPUT TR RP Y1-Y3; YT1=%RAIZ(Y1,0,5); YT2=%ASRP(Y2,1,0); YT3=%ASRP(Y3,100,0);

PROC PRINT; RUN; PROC CORR; VAR Y1-Y3; RUN; PROC CORR; VAR YT1-YT3; RUN;

(5)

3. Macro subprograma.

Uma macro subprograma permite definir uma rotina à parte que pode ser chamada tantas vezes quantas precisar.

Sintaxe para definir a macro:

%MACRO <nome>;

<subprograma>

%mend <nome>;

Sintaxe para chamar a macro:

%<nome>

Para exemplificar considere o conjunto de dados de um Delineamento Inteiramente Casulizado, com 4 variáveis: Tratamento (Trat), Repetição (Rep) e as variáveis dependentes Y1 e Y2, apresentado na Tabela 3.

Tabela 3. Dados de experimento Inteiramente Casualizado com 5 tratamentos e 4 repetições. (Dados fictícios)

Trat Rep Y1 Y2 1 1 2370 14,236 1 2 1687 14,478 1 3 2592 14,519 1 4 2283 13,888 2 1 1282 13,928 2 2 1527 13,777 2 3 871 14,444 2 4 1025 13,061 3 1 562 14,073 3 2 321 13,406 3 3 636 13,607 3 4 317 14,411 4 1 173 15,088 4 2 127 13,583 4 3 132 13,697 4 4 150 13,636 5 1 193 15,349 5 2 71 16,502 5 3 82 15,175 5 4 62 15,022

(6)

Exercício 3:

Fazer download do arquivo MAC_SP1.XLS, disponível no site do curso, para o disco do drive A,

• Criar um SDS importando o arquivo do direto do Excel.

• Fazer um programa SAS para realizar a análise de regressão entre o Log da variância e o Log da média usada para avaliar o tipo de heterocedasticidade (regular ou irregular) e, se for regular indicar a transformação de dados a ser usada, para cada variável dependente.

Como criar o SAS DATA SET (SDS) importando o arquivo do Excel PROC IMPORT OUT=SDS DATAFILE="ARQ.XLS" DBMS=EXCEL2000 REPLACE; SHEET="PLANILHA$";

GETNAMES=YES; RUN;

Onde: SDS – é o nome do SAS DATA SET a ser criado

ARQ. XLS – é o arquivo a ser importado, icluindo o caminho onde ele se encontra. PALNIHA – É o nome da planilha.

Programa:

/************** USO DE MACROS *************/

/* TESTE PARA A ESCOLHA DA TRANSFORMACAO */

/******************************************/ /****************** DEFINA AS OPCOES *****************/ %LET TITULO="MACRO SUBPROGRAMA";

%LET TTCM=TUKEY;

/*****************************************************/ /*---MACRO---*/ %MACRO BARTL;

PROC MEANS NOPRINT;

OUTPUT OUT=SDSB MEAN=M VAR=V; BY TR; VAR Y; RUN; DATA SDSB; SET SDSB; LM=LOG(M); LV=LOG(V); RUN; PROC REG; MODEL LV=LM; RUN; %MEND BARTL; /*---PROGRAMA PRINCIPAL---*/ TITLE &TITULO; OPTIONS LS=78 PS=64;

PROC IMPORT OUT=A DATAFILE="A:\MAC_SP1.XLS" DBMS=EXCEL2000 REPLACE; SHEET="PLAN1$";

GETNAMES=YES;

(7)

PROC PRINT DATA=A;

RUN;

DATA A; SET A;

TITLE "TESTE DE BARTLET PARA Y1"; Y=Y1;

%BARTL RUN;

DATA A; SET A;

TITLE "TESTE DE BARTLET PARA Y2"; Y=Y2;

%BARTL RUN;

(8)

4. Macro subprograma com parâmetros.

Uma macro subprograma permite definir uma rotina à parte, variando alguns parâmetros, que podem ser parâmetros de entrada ou de saída. A rotina pode ser chamada tantas vezes quantas precisar.

Sintaxe para definir a macro:

%macro <nome(par1,par2, ... )>;

<subprograma incluindo os parâmetros precedidos por & (ex: &par1, &par2, etc.>)

%mend <nome>;

Sintaxe para chamar a macro:

%<nome(v_par1,v_par2, ... )>

onde v_par1, v_par2 são os valores dos parâmetros par1, par2, respectivamente. Para exemplificar considere o conjunto de dados da Avaliação de duas turmas de uma disciplina, cujos resultados são apresentados na Tabela 4.

Tabela 4. Resultados da Avaliação de duas turmas de uma disciplina X

Turma 1

NOME PRATICA PROVA MÉDIA

Bartolomeu Pereira 8,0 6,0 7,0 Custódio de Alvarenga 9,0 6,0 7,5 Gerônimo da Silva 6,0 4,0 5,0 José de Jesus 10,0 7,0 8,5 Maria Joaquina 8,0 5,0 6,5 Pedro de Abreu 9,0 3,0 6,0 Pietro Guarabira 10,0 8,0 9,0 Rosalina da Penha 7,0 4,0 5,5 Terencio Rodrrigues 7,0 9,0 8,0 Teresa Simão 9,0 4,0 6,5 Turma 2

NOME PRATICA PROVA MÉDIA

Benedito da Cruz 7,0 6,0 6,5 Genivaldo Paiva 6,0 5,0 5,5 Luciano Bombom 8,0 7,0 7,5 Osvaldo Lidobino 6,0 8,0 7,0 Romario da Silva 9,0 4,0 6,5 Exame NOME EXAME Benedito da Cruz 7,0 Genivaldo Paiva 6,0 Gerônimo da Silva 7,0 Maria Joaquina 8,0 Pedro de Abreu 6,0 Romario da Silva 9,0 Rosalina da Penha 8,0 Teresa Simão 9,0 Exercício 4:

Fazer download do arquivo MAC_SP2.XLS, disponível no site do curso, para o disco do drive A,

(9)

• Criar três SDS (turma1, turma2 e exame) importando os arquivos direto do Excel, das planilhas Plan1, Plan2 e Plan3, respectivamente. Fazer um subprograma para importar os arquivos.

• Fazer um programa SAS para Criar um único arquivo com os alunos das duas turmas, incluindo as notas do exame.

• Calcular MEDIA FINAL (MF), sendo que MF=MÉDIA se o aluno não fez exame e

MF=(MÉDIA+EXAME)/2, caso tenha feito.

• Criar uma variável AVALIACÃO (AV) sendo AV=Aprovado se MF≥7,

AV=Recuperação se 5≥MF<7 e AV=Reprovado se MF<5.

• Criar um arquivo ASC, de nome AVFINAL.txt contendo apenas o Nome, Média e

Situação. Programa:

/**************** USO DE MACROS ***************/

/* APLICAÇÃO DE SUBPROGRAMA COM PARÂMETROS */

/**********************************************/ /****************** DEFINA AS OPCOES *****************/ %LET TITULO="MACRO SUBPROGRAMA COM PARÂMETROS";

/*****************************************************/ /*---MACRO---*/ %MACRO IAE(SDS,ARQUIVO,PLANILHA);

PROC IMPORT OUT=&SDS DATAFILE="&ARQUIVO" DBMS=EXCEL2000 REPLACE; SHEET="&PLANILHA$"; GETNAMES=YES; RUN; %MEND IAE; /*---PROGRAMA PRINCIPAL---*/ TITLE "&TITULO"; OPTIONS LS=78 PS=64 PAGENO=1; %IAE(T1,A:\MAC_SP2.XLS,TURMA1); %IAE(T2,A:\MAC_SP2.XLS,TURMA2); %IAE(EX,A:\MAC_SP2.XLS,EXAME);

PROC PRINT DATA=T1;

PROC PRINT DATA=T2;

PROC PRINT DATA=EX;

RUN;

DATA T1E2;

SET T1 T2;

RUN;

PROC SORT DATA=T1E2; BY NOME;

PROC PRINT DATA=T1E2;

RUN;

PROC SORT DATA=EX; BY NOME;

DATA FINAL; MERGE T1E2 EX;

BY NOME;

RUN;

DATA FINAL; SET FINAL;

IF EXAME=. THEN MF=MEDIA; ELSE MF=(MEDIA+EXAME)/2;

IF MF>=7 THEN AV="APROVADO ";

(10)

IF MF<5 THEN AV="REPROVADO ";

RUN;

PROC PRINT DATA=FINAL;

RUN;

DATA FINAL; SET FINAL;

FILE "A:\AVFINAL.TXT";

PUT (NOME) ($20.) +1 (EXAME MF) (2*F7.2) +2 (AV) ($12.);

PROC PRINT;

RUN;

Exercício 5:

Fazer download do arquivo MAC_SP3.txt, disponível no site do curso, para o disco do drive A,

• Criar um SDS importando o arquivo ASC, com as variáveis A, B, C, RP e Y.

• Fazer um programa SAS para analisar esses dados, usando subprograma para os desdobramentos das interações duplas.

Programa:

/******************************************/ /* DESDOBRAMENTO DA INTERAÇAO */ /* COM O USO DE MACRO */ /******************************************/ %LET AASC="A:\MAC_SP3.TXT"; %MACRO DESD(FA,FB); LSMEANS &FA*&FB/SLICE=&FA; LSMEANS &FA*&FB/SLICE=&FB; %MEND DESD; /********PROGRAMA PRINCIPAL ***************************/ OPTIONS LS=78 PS=64 PAGENO=1; DATA MSP3;

INFILE &AASC FIRSTOBS=2;

INPUT A B C RP Y; TR=(A-1)*6+(B-1)*2+C; PROC PRINT; RUN; PROC GLM DATA=MSP3; CLASS TR RP; MODEL Y=TR/SS3; MEANS TR/HOVTEST;

OUTPUT OUT=AE STUDENT=ER;

RUN;

PROC UNIVARIATE DATA=AE NORMAL PLOT;

VAR ER;

RUN;

PROC GLM;

CLASS A B C RP;

MODEL Y=A B C A*B A*C B*C A*B*C/SS3; %DESD(A,B);

%DESD(A,C); %DESD(B,C);

Referências

Documentos relacionados

Este estudo apresenta como tema central a análise sobre os processos de inclusão social de jovens e adultos com deficiência, alunos da APAE , assim, percorrendo

Este trabalho buscou, através de pesquisa de campo, estudar o efeito de diferentes alternativas de adubações de cobertura, quanto ao tipo de adubo e época de

O objetivo do curso foi oportunizar aos participantes, um contato direto com as plantas nativas do Cerrado para identificação de espécies com potencial

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

Durante este estágio, passei a maior parte do tempo no internamento do serviço mas também estive algumas noites no serviço de urgências, para além das consultas externas

Realizar a manipulação, o armazenamento e o processamento dessa massa enorme de dados utilizando os bancos de dados relacionais se mostrou ineficiente, pois o

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

O produto e seu equipamento auxiliar podem representar perigo se usados incorrectamente por pessoas não qualificadas ou se usados para fins diferentes daqueles para os quais