USO DE MACROS NO SAS -...

download USO DE MACROS NO SAS - jaguar.fcav.unesp.brjaguar.fcav.unesp.br/euclides/AL_2008/CURSO_SAS_MRT/Apostila... · USO DE MACROS NO SAS Euclides Braga MALHEIROS* O uso de Macros no SAS

If you can't read please download the document

Transcript of USO DE MACROS NO SAS -...

  • USO DE MACROS NO SAS Euclides Braga MALHEIROS* O uso de Macros no SAS permite que uma varivel ou uma seqncia de comandos SAS seja chamado qualquer nmero de vezes. o mesmo princpio de subrotinas utilizado na maioria das linguagens de programao. O SAS permite vrios tipos de macros, alguns deles sero discutidos aqui. 1. Macro variveis. Uma macro varivel permite definir um valor a uma varivel no SAS. Sintaxe para definir a macro:

    %LET =; Sintaxe para chamar a macro:

    & Para exemplificar considere o conjunto de dados de um Delineamento Inteiramente Casulizado, com 5 variveis: Tratamento (TR), Repetio (RP) e as variveis dependentes Y1, Y2 e Y3, apresentado na Tabela1. Tabela 1. Dados de experimento Inteiramente Casualizado com 5 tratamentos e 3

    repeties. (Dados fictcios) 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

    * Departamento de Cincias Exatas FCAV/UNESP, Campus de Jaboticabal. 14870-000 Jaboticabal SP

  • 2

    A partir desses dados foi criado um arquivo ASC II com o nome MAC_V.TXT, disponvel no site do curso. Exerccio 1: Fazer download do arquivo MAC_V.ZIP, disponvel no site do curso, para o disco do

    drive A e descompact-lo. Fazer um programa SAS para a anlise do experimento Delineamento Inteiramente

    Casualizado, permitinto estabelecer as possveis variaes do programa, como: o Ttulo da anlise, o Arquivo ASC a ser importado, o Primeiro Registro com Dados, o Nmero de variveis a serem analisadas (variveis dependentes), o Tipo de teste de comparaes mltiplas e o Tipo de teste de Homocedasticidade, sejam definidas como variveis macro.

    Programa: /************* MACRO VARIAVEIS **********/ /* DELINEAMENTO INTERAMENTE CASUALIZADO */ /****************************************/ /*------------------- REDEFINA AS OPCOES DESEJADAS --------------------*/ %LET TITULO="EXEMPLO MACRO VARIVEIS"; /* 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; RUN;

  • 3

    2. Macro funes. Uma macro funo permite definir uma funo a ser usada no programa. Sintaxe para definir a macro:

    %macro ; expresso que define a funo usando o argumento precedido por &

    %mend ; Para usar a funo: % Para exemplificar considere o conjunto de dados de um Delineamento Inteiramente Casulizado, com 5 variveis: Tratamento (TR), Repetio (RP) e as variveis dependentes Y1, Y2 e Y3, apresentado na Tabela 2. Tabela 2. Dados de experimento Inteiramente Casualizado com 5 tratamentos e 3

    repeties. (Dados fictcios)

    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

    Exerccio 2: Fazer um programa SAS para ler os dados MAC_FC.TXT e transformar as variveis:

    Y1 em raiz quadrada de (Y1+0,5); Y2 e Y3 em arco seno da raiz da porcentagem. Definir a transformao como macro funo. Fazer a correlao entre as variveis originais e entre as variveis transformadas.

  • 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 ; %mend ;

    Sintaxe para chamar a macro:

    % Para exemplificar considere o conjunto de dados de um Delineamento Inteiramente Casulizado, com 4 variveis: Tratamento (Trat), Repetio (Rep) e as variveis dependentes Y1 e Y2, apresentado na Tabela 3. Tabela 3. Dados de experimento Inteiramente Casualizado com 5 tratamentos e 4

    repeties. (Dados fictcios) 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

    Exerccio 3: Fazer download do arquivo MAC_SP1.XLS, disponvel 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 anlise de regresso entre o Log da varincia e

    o Log da mdia usada para avaliar o tipo de heterocedasticidade (regular ou irregular) e, se for regular indicar a transformao de dados a ser usada, para cada varivel 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; RUN;

  • 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 parmetros. Uma macro subprograma permite definir uma rotina parte, variando alguns parmetros, que podem ser parmetros de entrada ou de sada. A rotina pode ser chamada tantas vezes quantas precisar. Sintaxe para definir a macro:

    %macro ; ) %mend ;

    Sintaxe para chamar a macro:

    % onde v_par1, v_par2 so os valores dos parmetros par1, par2, respectivamente.

    Para exemplificar considere o conjunto de dados da Avaliao de duas turmas de uma disciplina, cujos resultados so apresentados na Tabela 4. Tabela 4. Resultados da Avaliao de duas turmas de uma disciplina X

    Turma 1 NOME PRATICA PROVA MDIA

    Bartolomeu Pereira 8,0 6,0 7,0

    Custdio de Alvarenga 9,0 6,0 7,5

    Gernimo 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 Simo 9,0 4,0 6,5

    Turma 2 NOME PRATICA PROVA MDIA

    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

    Gernimo da Silva 7,0

    Maria Joaquina 8,0

    Pedro de Abreu 6,0

    Romario da Silva 9,0

    Rosalina da Penha 8,0

    Teresa Simo 9,0 Exerccio 4: Fazer download do arquivo MAC_SP2.XLS, disponvel no site do curso, para o disco

    do drive A,

  • 9

    Criar trs 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=MDIA se o aluno no fez exame e MF=(MDIA+EXAME)/2, caso tenha feito.

    Criar uma varivel AVALIACO (AV) sendo AV=Aprovado se MF7, AV=Recuperao se 5MF

  • 10

    IF MF