You are on page 1of 221

Programa de Ps-Graduao em Engenharia Florestal Programa de Ps-Graduao em Estatstica e Modelagem Quantitativa

SAS

O ESSENCIAL DA LINGUAGEM

EDUARDO PAGEL FLORIANO IVANOR MLLER PAULO RENATO SCHNEIDER LUIS FELIPE DIAS LOPES

Santa Maria 2007 Associao de Pesquisa, Educao e Proteo Ambiental


<http://www.ambienteinteiro.org.br>

Floriano, Eduardo P. SAS O essencial da linguagem, 2ed. Eduardo Pagel Floriano, Ivanor Mller, Paulo Renato Schneider, Luis Felipe Dias Lopes. Santa Maria: UFSM(PPGEFPPGMQ) / Ambiente Inteiro, 2007. 211p.

UFSM(PPGEF-PPGMQ) / Ambiente Inteiro 1. SAS. 2. Estatstica. 3. Programao. 4. Engenharia Florestal. I. Ttulo

SAS O

E SS E N C I A L D A L I N G U A G E M

M.Sc. Eduardo Pagel Floriano1 Prof. Dr. Ivanor Mller2 Prof. Dr. Paulo Renato Schneider3 Prof. Dr. Luis Felipe Dias Lopes4 Santa Maria, 16 de maro de 2007. PPGEF - Programa de Ps-Graduao em Engenharia Florestal PPGEMQ - Programa de Ps-Graduao em Estatstica e Modelagem Quantitativa UFSM Associao de Pesquisa, Educao e Proteo Ambiental <http://www.ambienteinteiro.org.br>

1 Engenheiro Florestal. Doutorando do Programa de Ps-Graduao em Engenharia Florestal da Universidade Federal de Santa Maria, RS. Mailto: eduardofloriano@correios.net.br 2 Engenheiro Florestal, Licenciado em Matemtica. Professor do Programa de Ps-graduao em Estatstica e Modelagem Quantitativa da Universidade Federal de Santa Maria, RS. Mailto: ivanormuller@smail.ufsm.br 3 Engenheiro Florestal. Professor do Programa de Ps-Graduao em Engenharia Florestal da Universidade Federal de Santa Maria, RS. Mailto: paulors@smail.ufsm.br 4 Licenciado em Matemtica. Professor do Programa de Ps-graduao em Estatstica e Modelagem Quantitativa da Universidade Federal de Santa Maria, RS. Mailto: lflopes@ccne.ufsm.br

Apresentao
Este Manual foi concebido para auxiliar nos primeiros passos com a programao na linguagem do SAS System, para uso na Engenharia Florestal e cincias correlatas. Os manuais originais do SAS so escritos em lngua Inglesa e somam mais de dezenas de milhares de pginas, dificultando o seu uso. O objetivo deste documento o de servir de guia, em lngua portuguesa, para as principais aplicaes da linguagem SAS. No se pretende substituir os manuais originais, mas facilitar o acesso ao que se considera o mais importante da linguagem. Este manual foi dividido em trs volumes. No primeiro volume, SAS O essencial da linguagem, procurou-se descrever a linguagem de forma que possa servir de guia geral para quem est iniciando a desenvolver programas. No segundo volume, SAS O essencial da linguagem para Engenheiros Florestais, so

apresentados exemplos de aplicaes na pesquisa, administrao e controle de florestas econmicas. O terceiro volume, SAS Anlise da estrutura florestal e anlise multivariada aplicada fitossociologia, dedicado a aplicaes teis no estudo de florestas nativas. Os captulos do primeiro volume so organizados em seqncia apropriada para aprendizagem passo a passo, sem mestre. Os trs primeiros captulos explicam a estrutura da linguagem SAS. Para

aprender a programar, portanto, aconselhvel ler e realizar os exerccios desta parte inicial integralmente. O Captulo IV refere-se formatao de dados de entrada e de sada e o Captulo V diz respeito s funes pr-programadas da linguagem; destes dois, IV e V, recomenda-se a leitura da introduo e o estudo das seces sobre sintaxe, o restante pode ser utilizado somente para consulta, quando necessrio, durante a elaborao de um programa, no sendo de leitura obrigatria. Do Captulo VI em diante, so descritos resumidamente os principais procedimentos da linguagem, entitulados de PROC. O segundo e terceiro volumes esto em fase de elaborao e contm aplicaes prontas, em linguagem SAS, para a rea florestal. So programas que podem ser utilizados na atividade profissional do Engenheiro Florestal, ou profissional de rea correlata, na forma em que foram escritos, ou modificados pelo usurio para adapt-los a situaes semelhantes, quando necessrio.

Contedo

Introduo...........................................................................................................1
CONVENSES UTILIZADAS .................................................................................................... 2
Menus ................................................................................................................................................ 2 Exemplos ........................................................................................................................................... 3 Sintaxe............................................................................................................................................... 3 Valores perdidos................................................................................................................................ 4

PROGRAMAS SAS: EDIO, EXECUO E COMPONENTES ...................................................... 5


Editor ............................................................................................................................................... 11 Log .................................................................................................................................................. 12 Output .............................................................................................................................................. 13

PROCEDIMENTOS SAS (PROC STEP).................................................................................. 14 USANDO OS EXEMPLOS DE PROGRAMAS .............................................................................. 18

Captulo 1 : Passos de programao SAS .....................................................19


1.1 DATA STEP.................................................................................................................. 19 1.2 PROC STEP ................................................................................................................. 21 1.3 JCL (JOB CONTROL LANGUAGE) .................................................................................. 22

Captulo 2 : Elementos da linguagem SAS ....................................................25


2.1 PALAVRAS ................................................................................................................... 26
2.1.1 Nomes .................................................................................................................................... 27 2.1.2 Literais .................................................................................................................................... 28 2.1.3 Nmeros ................................................................................................................................. 28 2.1.4 Caracteres especiais .............................................................................................................. 29

2.2 CONSTANTES .............................................................................................................. 29


2.2.1 Constantes numricas............................................................................................................ 29 2.2.2 Constantes de caracteres....................................................................................................... 30 2.2.3 Constantes de data, horrio e data-horrio............................................................................ 30

2.3 VARIVEIS ................................................................................................................... 30

2.4 OPERANDOS................................................................................................................ 31 2.5 OPERADORES .............................................................................................................. 31 2.6 EXPRESSES .............................................................................................................. 34 2.7 INSTRUES................................................................................................................ 35 2.8 DECLARAES ............................................................................................................ 36 2.9 FUNES .................................................................................................................... 37

Captulo 3 : Arquivos de dados (DATA STEP) ...............................................38


3.1 SINTAXE ...................................................................................................................... 39
3.1.1 Criao de arquivos de dados do tipo DATA SET ................................................................. 39 3.1.2 Outros modelos de sintaxe para o DATA STEP .................................................................... 40

3.2 FORMATOS DE ENTRADA E SADA (INPUT/PUT) ............................................................ 42 3.3 PROCEDIMENTOS ESSENCIAIS COM O DATA STEP ........................................................... 46
3.3.1 PROC APPEND...................................................................................................................... 46 3.3.2 PROC SORT .......................................................................................................................... 47

3.4 INSTRUES ESSENCIAIS DO DATA STEP........................................................................ 49


3.4.1 ARRAY (instruo) ................................................................................................................. 50 3.4.2 BY (instruo)......................................................................................................................... 52 3.4.3 CARDS (instruo) ................................................................................................................. 52 3.4.4 DATALINES (instruo).......................................................................................................... 52 3.4.5 DELETE (instruo)................................................................................................................ 53 3.4.6 DO/END (instruo)................................................................................................................ 53 3.4.7 DROP (instruo) ................................................................................................................... 54 3.4.8 FILE (instruo) ...................................................................................................................... 55 3.4.9 FILENAME (instruo)............................................................................................................ 56 3.4.10 IF THEN (instruo).............................................................................................................. 57 3.4.11 INFILE (instruo) ................................................................................................................ 57 3.4.12 INPUT (instruo)................................................................................................................. 58 3.4.13 KEEP (instruo) .................................................................................................................. 60 3.4.14 MERGE (instruo) .............................................................................................................. 61 3.4.15 OUTPUT (instruo)............................................................................................................. 64 3.4.16 PUT (instruo)..................................................................................................................... 67 3.4.17 RETAIN (instruo) .............................................................................................................. 68 3.4.18 SET (instruo)..................................................................................................................... 70 3.4.19 SUM (instruo).................................................................................................................... 71 3.4.20 UPDATE (instruo) ............................................................................................................. 71 3.4.21 WHERE (instruo) .............................................................................................................. 72

Captulo 4 : Formatos de sada (FORMAT) e entrada (INFORMAT )...................74


4.1 FORMAT (INSTRUO DE FORMATOS DE SADA).............................................................. 75

4.1.1 Formatos de sada definidos pelo usurio ............................................................................. 76 4.1.2 Formatos de sada para variveis de caracteres ................................................................... 77 4.1.3 Formatos de sada para variveis numricas ........................................................................ 78 4.1.4 Formatos de sada para variveis de data_e_horrio............................................................ 79

4.2 INFORMAT (INSTRUO DE FORMATOS DE ENTRADA) ...................................................... 80


4.2.1 Formatos de entrada para variveis de caracteres................................................................ 81 4.2.2 Formatos de entrada para variveis numricas ..................................................................... 81 4.2.3 Formatos de entrada para data, horrio e data-horrio ......................................................... 82

4.3 PROC FORMAT ............................................................................................................ 82


4.3.1 VALUE (instruo).................................................................................................................. 84 4.3.2 INVALUE (instruo) .............................................................................................................. 84 4.3.3 SELECT (instruo)................................................................................................................ 85 4.3.4 PICTURE (instruo).............................................................................................................. 85 4.3.5 EXCLUDE (instruo)............................................................................................................. 86

4.4 EXEMPLOS .................................................................................................................. 86

Captulo 5 : Funes ........................................................................................94


5.1 RESULTADOS DE FUNES ........................................................................................... 96 5.2 CATEGORIAS DE FUNES............................................................................................ 96
5.2.1 Funes aritmticas ............................................................................................................... 97 5.2.2 Funes de caracter............................................................................................................... 98 5.2.3 Funes de data_e_horrio.................................................................................................... 99 5.2.4 Funes financeiras ............................................................................................................. 100 5.2.5 Funes matemticas .......................................................................................................... 104 5.2.6 Funes de nmeros aleatrios ........................................................................................... 105 5.2.7 Funes de estatstica bsica .............................................................................................. 106 5.2.8 Funes trigonomtricas ...................................................................................................... 106 5.2.9 Funes de truncagem......................................................................................................... 107 5.2.10 Funes de hospedagem ................................................................................................... 107

Captulo 6 : PROC ANOVA / PROC GLM ......................................................108


6.1 SINTAXE:................................................................................................................... 109 6.2 OPES DO PROCEDIMENTO: ..................................................................................... 109 6.3 INSTRUES DO PROCEDIMENTO: ............................................................................... 109

Captulo 7 : PROC CHART / PROC GCHART ...............................................115 Captulo 8 : PROC CORR ...............................................................................120
8.1 SINTAXE:................................................................................................................... 120 8.2 OPES DO PROCEDIMENTO: ..................................................................................... 120 8.3 INSTRUES DO PROCEDIMENTO: ............................................................................... 122

8.3.1 BY (instruo)...................................................................................................................... 122 8.3.2 FREQ (instruo).................................................................................................................. 122 8.3.3 PARTIAL (instruo)............................................................................................................. 123 8.3.4 VAR (instruo) .................................................................................................................... 123 8.3.5 WEIGHT (instruo) ............................................................................................................. 123 8.3.6 WITH (instruo)................................................................................................................... 124 8.3.7 Valores perdidos (missing values)........................................................................................ 124 8.3.8 Arquivos de sada TYPE=CORR.......................................................................................... 124

Captulo 9 : PROC FREQ................................................................................127


9.1 SINTAXE .................................................................................................................... 127
9.1.1 BY (instruo)....................................................................................................................... 128 9.1.2 EXACT (instruo)................................................................................................................ 128 9.1.3 OUTPUT (instruo)............................................................................................................. 129 9.1.4 TABLES (instruo).............................................................................................................. 129 9.1.5 TEST (instruo)................................................................................................................... 130 9.1.6 WEIGHT (instruo) ............................................................................................................. 130

Captulo 10 : PROC MEANS / PROC SUMMARY..........................................138


10.1 SINTAXE .................................................................................................................. 138 10.2 OPES DO PROCEDIMENTO .................................................................................... 138 10.3 ALGUMAS ESTATSTICAS ........................................................................................... 138

Captulo 11 : PROC MODEL...........................................................................141


11.1 INTRODUO ........................................................................................................... 141 11.2 VALIDAO DE MODELOS .......................................................................................... 144
11.2.1 Homocedasticidade da varincia........................................................................................ 144 11.2.2 Independncia dos resduos .............................................................................................. 145 11.2.3 Normalidade da distribuio dos resduos ......................................................................... 146

11.3 VALORES PERDIDOS NO PROC MODEL................................................................... 151

Captulo 12 : PROC PLOT / PROC GPLOT ...................................................155


12.1 SINTAXE .................................................................................................................. 155 12.2 OPES DO PROCEDIMENTO PROC GPLOT ............................................................ 155 12.3 INSTRUES DO PROCEDIMENTO .............................................................................. 156
12.3.1 Caractersticas dos grficos gerados por PLOT ................................................................ 157

Captulo 13 : PROC PRINT.............................................................................166


13.1 SINTAXE .................................................................................................................. 167
13.1.1 Opes do procedimento: .................................................................................................. 167 13.1.2 BY (instruo)..................................................................................................................... 168

13.1.3 PAGEBY (instruo)........................................................................................................... 168 13.1.4 SUMBY (instruo)............................................................................................................. 168 13.1.5 ID (instruo) ...................................................................................................................... 169 13.1.6 SUM (instruo).................................................................................................................. 169 13.1.7 VAR (instruo) .................................................................................................................. 169

Captulo 14 : PROC REG................................................................................175


14.1 SINTAXE .................................................................................................................. 175
14.1.1 Opes do Procedimento ................................................................................................... 176 14.1.2 Instrues do procedimento ............................................................................................... 176

Captulo 15 : PROC NLIN ...............................................................................183


15.1 SINTAXE .................................................................................................................. 184
15.1.1 Opes do procedimento ................................................................................................... 185 15.1.2 Instrues do procedimento ............................................................................................... 185

Captulo 16 : PROC UNIVARIATE..................................................................193


16.1 SINTAXE .................................................................................................................. 193
16.1.1 Opes do procedimento ................................................................................................... 193 16.1.2 Instrues do procedimento ............................................................................................... 194

Captulo 17 : (operaes com matrizes) PROC IML ...................................204


17.1 SINTAXE .................................................................................................................. 204
17.1.1 Declaraes, Mdulos e Subrotinas................................................................................... 205 17.1.2 Comandos e Operadores ................................................................................................... 205

Referncias .....................................................................................................211

Introduo
O SAS foi idealizado como um pacote estatstico, mas, com o passar do tempo, o Instituto SAS produziu um sistema muito complexo chamado de SAS System . O SAS System considerado o mais completo pacote estatstico produzido at hoje, entretanto, vai muito alm disso, podendo ser visto como: Gerenciador de bancos de dados; Conversor de dados entre sistemas operacionais; Sistema de informaes geogrficas (SIG); Linguagem de programao estruturada e orientada a objetos; Linguagem matemtica com clculo matricial; Gerador de grficos em alta resoluo; Sistema de programao linear.

Assim, com esta profuso de funes, os manuais do SAS System acabaram por se tornar muito extensos e algo confusos, dificultando o seu uso. Entretanto, o poder da linguagem SAS, para aplicaes estatsticas em reas como a biolgica e a florestal pode ser alcanado com um mnimo de conhecimento sobre o sistema. isso o que se pretende com este manual: descrever o essencial do SAS System para aplicaes estatsticas, de forma a possibilitar o uso do poder do sistema ao usurio leigo em informtica, com nfase na rea da Engenharia Florestal.
1

SAS - O essencial da linguagem ____________________________________________________________________________________

A programao SAS a que se refere este manual prpria para o SAS System verso 8.2, para microcomputadores em ambiente Windows, na forma programvel. No se tratar da anlise de dados no modo interativo, ou em computadores de grande porte, ou com outro sistema operacional, exceto nos casos em que se julgar adequado.

Convenses utilizadas
As principais convenes e metodologias de descrio da linguagem SAS utilizados, sejam prprias do SAS System, ou deste manual, so descritas a seguir. Os manuais do SAS System constituem uma enciclopdia de muitos milhares de pginas que descrevem todas as suas possibilidades. Neste manual so descritos somente o que se considerou essenciais para se usar na rea biolgica, com especial ateno s aplicaes na Engenharia Florestal. Muitas opes dos procedimentos foram omitidas para se evitar escrever um volume muito extenso. Para informaes sobre todas as possibilidades do SAS System, o leitor deve acessar seus manuais on line, disponveis para download em PDF, na URL

<http://www.nbs.ntu.edu.sg/userguide/SAS/sas 8.2/> ou no site do SAS Institute <http://www.sas.com/>.

Menus
As referncias no texto, feitas aos menus da barra de menus do SAS System (Figura 1), so realizadas seqencialmente, conforme sua hierarquia, entre barras verticais, como em |FILE|SAVE|, que identifica o

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

menu |File| e seu submenu |Save|, utilizado para acessar a janela de salvamento de arquivos.

Exemplos
Neste manual, os exemplos e linhas de programa so escritos em negrito tamanho 8, limitados esquerda por uma barra vertical cinza de 6 pontos de largura com recuo de 4 pontos esquerda, seguidos de uma outra barra e de uma coluna com nmeros ilustrativos direita, os quais no fazem parte do programa. Esses servem exclusivamente para fazer referncias explicativas s linhas do programa no texto, como nas duas linhas de comentrio (Linhas 1 e 2) a seguir:
* EXEMPLO DE LINHA DE COMENTRIO NO SAS SYSTEM; /* UMA LINHA DE COMENTRIO TAMBM PODE SER ASSIM. */ 1 2

Sintaxe
Sintaxe o formato geral de um comando, instruo ou declarao na programao SAS, que deve ser seguido para que funcione. As linhas de sintaxe so escritas em negrito tamanho 8, limitados esquerda por uma barra vertical cinza de 6 pontos de largura, com recuo esquerda de 1,5 cm, como a seguir:
PROC SORT <data=ArquivoDeEntrada> <OUT=ArquivoDeSaida> <Opes>; BY <DESCENDING> Variavel-1 ...<<DESCENDING> Variavel-n>;

As descries de sintaxe so compostas por partes obrigatrias e partes opcionais. As partes opcionais na descrio da sintaxe sempre esto entre os sinais < > (que no devem ser escritos no programa). Os nomes e outras palavras que devem ser definidos pelo usurio ou

SAS - O essencial da linguagem ____________________________________________________________________________________

programador so especificados sem espaos, com as palavras justapostas, sendo a primeira letra de cada palavra escrita em maisculo e as demais em minsculo, como no exemplo a seguir, onde a expresso 'nome do array' est escrita como NomeDoArray e a palavra 'subscrito' est escrita como Subscrito:
NomeDoArray{Subscrito}<$>;

As palavras utilizadas com todas as letras maisculas so palavras do sistema e as que usam a primeira letra de cada palavra (nica ou justaposta) so nomes que o usurio deve escolher, sejam de opes do sistema ou nomes definidos pelo usurio.

Valores perdidos
Valor perdido (ou faltante), entendido como a inexistncia de contedo em um ou mais registros de uma ou mais variveis de um arquivo SAS. Quando no existe valor em uma varivel, o caracter utilizado o ponto (.). Portanto, sempre que houver falta de um valor nos arquivos de dados, nos vetores, ou em matrizes, este deve ser informado como um ponto (.). Quando o contedo de um arquivo impresso e faltam valores em registros e colunas, impresso um ponto (.) no local de cada valor que falta. Valores perdidos so sempre os primeiros de um ordenamento ascendente e os ltimos no descendente. Em experimentos com parcelas perdidas, o seu valor deve ser informado como um ponto (.). Ento, o sistema entende que aquela
4

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

parcela foi perdida e no a considera. Entretanto, se o resultado nulo deve ser considerado como conseqncia do efeito dos tratamentos, o valor que deve ser informado para que o sistema o considere zero (0). Observao: alguns procedimentos do SAS System permitem que o usurio informe que os valores perdidos devem ser considerados na anlise.

Programas SAS: edio, execuo e componentes


H duas formas para processamento de dados no SAS System em ambiente WINDOWS, a interativa e a programvel. Na forma interativa, no se escrevem programas, apenas se deve gerar os arquivos de dados e solicitar, atravs de menus e janelas, o que se deseja que o sistema faa com os dados. No modo programvel, deve-se escrever os programas e depois execut-los. Este manual se restringe forma programvel. H, tambm, dois modos para execuo de programas SAS no ambiente WINDOWS, o modo interativo atravs de janelas e o modo de lotes. Neste manual ser tratado somente do modo programvel interativo, ou seja, criar arquivos de dados, escrever programas e execut-los atravs da interface grfica do SAS System para WINDOWS. Programas SAS em microcomputadores, aos quais se restringe este manual, so escritos na rea de edio do SAS System (Editor) e so constitudos por passos de programao (DATA STEP e PROC STEP). Cada passo de programa constitudo por declaraes (frases) e cada declarao constituda por palavras (Ver Captulo II).

SAS - O essencial da linguagem ____________________________________________________________________________________

aconselhvel que sejam includas linhas de identificao no incio do programa, atravs de frases de comentrio, iniciando-as por um asterisco seguido de um espao branco, o que torna a frase sem efeito na programao, podendo-se escrever, na seqncia, qualquer palavra, letra ou nmero, finalizando a linha com ponto-e-vrgula. A identificao do programa pode incluir o nome do mesmo, o que ele realiza, a data e o nome do programador. Pode-se incluir tantas frases de comentrio quantas forem necessrias, iniciando cada uma por um asterisco, seguido de espao branco e finalizando com ponto-e-vrgula. Um programa SAS em ambiente WINDOWS deve ter, como ltimas, as linhas:
Em que: RUN; a linha que diz ao sistema operacional que execute o programa; QUIT|EXIT; a linha que instrui o sistema operacional para encerrar a execuo do programa ( de uso opcional, mas faz com que o programa no fique aguardando novos passos e encerre mais rapidamente).
RUN; QUIT|EXIT; 1 2

Um programa SAS tpico para WINDOWS, portanto, composto por:


* LINHAS DE COMENTRIO (IDENTIFICAO DO PROGRAMA); DATA STEP; INSTRUOES; PROC STEP; INSTRUOES; RUN; QUIT|EXIT; 1 2 3 4 5 6 7

O SAS System para WINDOWS possui trs reas principais (ou janelas) relacionadas programao bsica e estatstica: Editor, Log e Output. No Editor so editados os arquivos de programas e de dados, que devem ser salvos da mesma forma que os textos do MS-WORD, mas devem ter a terminaes .SAS e .DAT, respectivamente. Um arquivo

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

SAS de programa, ou de dados, pode ter um nome composto da mesma forma que qualquer outro arquivo WINDOWS. O Log um relatrio com a descrio do que aconteceu durante a execuo do programa. O Output o relatrio de sada com os resultados do processamento. Exemplos de nomes de programas SAS: Programa.sas; Regresso.sas; Programa-reg01.sas. Exemplo de nomes de arquivos de dados: Dados.dat; Arquivo.dat; Arquivo_de_dados01.dat. Ao se abrir o SAS System no WINDOWS, automaticamente so geradas as trs janelas: Editor, Log e Output (Figura 1). Para salvar um arquivo de programa, clique no menu |File|Save| (Figura 2A) e escolha a opo salvar como tipo |SAS Files (*.sas)| (Figura 2B). Para salvar um arquivo de dados, clique no menu |File|Save| (Figura 2A) e escolha a opo salvar como tipo |DATA Files (*.dat)| (Figura 2C).

SAS - O essencial da linguagem ____________________________________________________________________________________

1. Barra de menus 2. Endereo 3. Barra de Tarefas 4. Bibliotecas 5. Atalhos

6. Aba de resultados 7. Aba do explorador 8. Janela do editor 9. Janela do arquivo de log 10. Janela do relatrio (sada)

FIGURA 1 Tela de abertura do SAS System para WINDOWS verso 8.2

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

(2A)

(2B)
9

SAS - O essencial da linguagem ____________________________________________________________________________________

(2C) FIGURA 2 Salvando (2A) programas (2B) e dados (2C) em disco. Depois de salvo, o programa pode ser executado utilizando o atalho na barra de atalhos ou o menu |Run|Submit|, como na Figura 3.

FIGURA 3 Execuo de um programa atravs da barra de menus. O Editor (Program Editor) e os relatrios podem ser acessados atravs do menu |View| (Figura 4).

10

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

FIGURA 4 Menu View: permite acessar o Editor do SAS e os relatrios.

Editor
Na janela do Editor pode-se escrever os programas ou dados e salvar em disco de forma semelhante a outros editores de texto. Os arquivos de programas devem ser salvos com nomes do tipo nomedoprograma.sas e arquivos de dados devem ser salvos com nomes do tipo arquivodedados.dat. O arquivo de programa

exemplo.sas a seguir, contm 22 linhas de programao, sendo 3 de comentrios que identificam o programa, 15 linhas de DATA STEP onde 11 so de dados, duas de PROC STEP, uma de execuo e uma de finalizao.
* PROGRAMA DE EXEMPLO (EXEMPLO.SAS); * 17/01/2005; * EDUARDO PAGEL FLORIANO; DATA ARQ; INPUT X Y Z; CARDS; 5 8 3.26 1 2 3 4 5 6 7

11

SAS - O essencial da linguagem ____________________________________________________________________________________


6 9 3.93 7 12 2.94 8 18 4.06 9 25 4.35 10 33 4.11 11 42 4.64 12 57 4.29 13 70 4.50 14 85 4.55 15 101 4.97 ; PROC REG DATA=ARQ; MODEL Z=X Y; RUN; QUIT|EXIT; 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

Log .
Log uma crnica ou crtica que o sistema faz, enquanto um programa est sendo executado, sobre o que foi realizado, relatando a execuo e os possveis erros. Aps a execuo do programa, o SAS System informa o que aconteceu durante a execuo do programa na janela de Log. Os erros porventura existentes so relatados, localizados e identificados para que o programador possa corrig-los. No caso do programa exemplo.sas, no houve erros e o relatrio de Log o seguinte:
1 * PROGRAMA DE EXEMPLO; 2 * 17/01/2005; 3 * EDUARDO PAGEL FLORIANO; 4 DATA ARQ; 5 INPUT X Y Z; 6 CARDS; NOTE: THE DATA SET WORK.ARQ HAS 11 OBSERVATIONS AND 3 VARIAVELS. NOTE: DATA (INSTRUO) USED: REAL TIME 0.20 SECONDS CPU TIME 0.20 SECONDS 18 ; 19 PROC REG DATA=ARQ; 20 MODEL Z=X Y; 21 RUN; NOTE: 11 OBSERVATIONS READ. NOTE: 11 OBSERVATIONS USED IN COMPUTATIONS.

12

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
22 QUIT|EXIT; NOTE: PROCEDURE REG USED: REAL TIME 0.60 SECONDS CPU TIME 0.60 SECONDS

Output
O relatrio de sada do programa exemplo.sas o seguinte:
THE SAS SYSTEM THE REG PROCEDURE MODEL: MODEL1 DEPENDENT VARIAVEL: Z ANALYSIS OF VARIANCE SUM OF MEAN SOURCE DF SQUARES SQUARE F VALUE PR > F MODEL 2 2.50102 1.25051 9.37 0.0080 ERROR 8 1.06765 0.13346 CORRECTED TOTAL 10 3.56867 ROOT MSE 0.36532 R-SQUARE 0.7008 DEPENDENT MEAN 4.14545 ADJ R-SQ 0.6260 COEFF VAR 8.81246 PARAMETER ESTIMATES PARAMETER STANDARD VARIAVEL DF ESTIMATE ERROR T VALUE PR > |T| INTERCEPT 1 2.24246 0.84499 2.65 0.0291 X 1 0.22266 0.14120 1.58 0.1535 Y 1 -0.00774 0.01450 -0.53 0.6081

O SAS System permite salvar este relatrio no formato rich text format (rtf), que pode ser lido diretamente em qualquer editor de textos como o MS-Word, onde pode ser editado e modificado. Para tanto, basta clicar na aba da janela de Output para torn-la ativa, acessar o menu |File|Save as| e selecionar o formato rtf. Existe um outro formato de sada mais elaborado que pode ser ativado atravs do menu |Tools|Opes|Preferences...|, na aba |Results|, marcando-se a caixa de seleo |Create HTML| (Figura 5). O relatrio HTML gerado pelo SAS System apresenta os resultados no formato de tabela. As tabelas do relatrio de sada podem ser copiadas e coladas em outros locais. O relatrio HTML pode ser aberto

13

SAS - O essencial da linguagem ____________________________________________________________________________________

no MS-Word e alterado, podendo depois ser salvo com a terminao .doc no formato do prprio MS-Word.

FIGURA 5 Selecionando relatrios no formato HTML.

Procedimentos SAS (Proc Step)


Os procedimentos do SAS System so utilizados para processar os dados gerados no DATA STEP e abrangem muitas reas do conhecimento.

14

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Podem ser entendidos como rotinas de programao do sistema que realizam clculos complexos, conforme a metodologia descrita nos manuais originais do SAS System, que se baseiam em obras cientficas consagradas. Alm dos procedimentos bsicos, que so essenciais para se trabalhar com a linguagem, na rea florestal os mais importantes so os relacionados com estatstica (inclundo clculos e produo de grficos), programao linear e processamento de informaes geogrficas. Neste manual dada nfase aos procedimentos de estatstica e de programao linear. Os captulos dedicados aos passos de programao de

procedimentos abrangem: PROC ANOVA; PROC CHART; PROC CORR; PROC FREC; PROC GLM; PROC MEANS; PROC MODEL; PROC PLOT; PROC PRINT; PROC REG; PROC UNIVARIATE.

Os procedimentos (PROC) bsicos do SAS System so utilizados para manipular arquivos, obter estatsticas simples uni e bivariadas, para formatar variveis e emitir relatrios, entre outros. Maiores detalhes sobre os procedimento bsicos citados so encontrados no manual 'SAS Institute. SAS Procedures Guide, v. 8.

15

SAS - O essencial da linguagem ____________________________________________________________________________________

Cary, NC: SAS Institute, 1999. 1729 p.', no qual os captulos deste manual so baseados. Para aplicao nas cincias rurais e biolgicas, considera-se essencial conhecer os procedimentos bsicos relacionados a seguir: Procedimentos bsicos estatsticos Geralmente no vivel medir todos os indivduos de uma populao. Ento, procura-se medir alguns inivduos que a representem. Uma coleo de valores medidos sobre uma parte dos indivduos de uma populao chamada de amostra. O resultado de uma funo matemtica executada sobre valores de uma amostra chamada de estimador (SAS Institute, 1999), enquanto que o resultado obtido atravs de todos os indivduos da populao chamado de parmetro. habitual representar estimadores por caracteres arbicos e parmetros por letras gregas. Dentre todos os procedimentos estatsticos bsicos do SAS System h trs que oferecem juntos todas as possibilidades de clculos e relatrios dos demais, so o PROC UNIVARIATE, o PROC FREQ e o PROC CORR; alm dos relatrios emitidos por eles, ainda apresentam a opo de emitir arquivos de sada com os quais se pode produzir todos os tipos de relatrios emitidos pelos demais procedimentos bsicos estatsticos com auxlio do PROC PRINT. Dois procedimento que apresentam grande utilidade pela sua simplicidade so o PROC MEANS e o seu correlato PROC SUMMARY; ambos fazem os mesmos clculos de forma semelhante, mas o primeiro apresenta relatrios mais elaborados e o segundo apresenta a posibilidade de gravar os resultados em um arquivo de sada sem emitir relatrios. Assim, este manual ser restrito a esses seis procedimentos. Os demais procedimentos bsicos estatsticos so: PROC TABULATE, PROC REPORT e PROC SQL.

16

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Procedimentos bsicos de manipulao de arquivos Os principais so o PROC APPEND e o PROC SORT, descritos no Captulo III. Procedimento bsico de formatao o procedimento PROC FORMAT. Procedimentos de emisso de relatrios Os principais so o PROC PRINT, que imprime o contedo de arquivos em forma de lista, e o PROC TABULATE, que imprime o contedo de arquivos em forma de tabelas, alm de calcular algumas estatsticas simples; o PROC FREQ pode ser utilizado para produzir tabelas semelhantes ao PROC TABULATE, assim, somente o primeiro foi descrito neste manual. Neste volume so descritos os seguintes procedimentos bsicos: PROC APPEND; PROC CORR; PROC FORMAT; PROC FREQ; PROC MEANS; PROC PRINT; PROC SORT; PROC UNIVARIATE.

Entre os procedimentos estatsticos e de produo de grficos, so abordados neste volume os seguintes: PROC ANOVA / GLM; PROC CHART / GCHART; PROC MODEL; PROC PLOT / GPLOT; PROC REG.

Maiores detalhes sobre os procedimento bsicos citados so encontrados nos manuais 'SAS Institute. SAS/STAT user's guide, v. 8. Cary, NC: SAS Institute, 1999. 3365 p.' e ' SAS Institute. SAS/graph user's guide, v. 8. Cary, NC: SAS Institute, 1999. 1220p.'.
17

SAS - O essencial da linguagem ____________________________________________________________________________________

Usando os exemplos de programas


Para usar os exemplos descritos neste manual sem alter-los, necessrio criar uma pasta no diretrio raiz (C:) do computador chamada de SASEXEMPLOS. Para criar a pasta, abra o WINDOWS EXPLORER e clique em |Disco local (C:)| (Figura 6-A), depois clique em |Arquivo|Novo |Pasta| (Figura 6-B). Aparecer uma nova pasta no diretrio raiz; altere o nome padro de Nova pasta para SASEXEMPLOS.

(A) Clique em |Disco local C:| (B) Clique em |Arquivo|Novo |Pasta| FIGURA 6 Criando uma nova pasta no diretrio raiz C:\.

18

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Captulo 1 : Passos de programao SAS

Os programas SAS so constitudos por dois tipos de passos de programao (STEPS): os passos de criao de arquivos de dados (DATA STEP) e os passos de execuo de procedimentos (PROC STEP). Este Captulo uma introduo ao DATA STEP e ao PROC STEP. O DATA STEP descrito com detalhes no Captulo III e os principais PROC STEPs so descritos nos captulos subseqentes.

1.1 DATA STEP


O DATA STEP o passo da programao SAS em que so criados ou modificados os arquivos SAS usados no programa. Pode haver tantos DATA STEP quantos necessrios em um programa, que so constituidos por expresses e instrues formando frases (declaraes) que iniciam pelo nome de um comando ou de uma varivel e terminam por ponto-e-vrgula (;). Um DATA STEP sempre inicia por DATA seguido do nome do arquivo SAS que ser criado. Um Arquivo SAS um arquivo criado em um programa, com um nome iniciado por uma letra e com at 8 caracteres de comprimento, sendo padronizadamente armazenado na memria do computador at

19

SAS - O essencial da linguagem ____________________________________________________________________________________

que o programa seja encerrado, opcionalmente podendo ser excluido ou modificado antes do encerramento do programa por declaraes especficas escritas pelo programador, em qualquer parte do programa, aps a criao do arquivo. Exemplo de DATA STEP:
* EXEMPLO DE DATA STEP; DATA ARQ; INPUT X Y @@; Z=1.5+0.4*X-0.03*Y; DATALINES; 5 8 6 9 7 12 8 18 9 25 10 33 11 42 12 57 13 70 14 85 15 101 ; RUN; 1 2 3 4 5 6 7 8 9

Neste exemplo criado um arquivo SAS denominado de ARQ, so lidos 6 grupos de duas colunas de dados (X e Y) na primeira linha, 5 grupos na segunda linha e calculada uma terceira varivel (Z), a partir dos valores de X e Y, para compor o contedo do arquivo ARQ, que resulta na seguinte tabela final:
Obs 1 2 3 4 5 6 7 8 9 10 11 X 5 6 7 8 9 10 11 12 13 14 15 Y 8 9 12 18 25 33 42 57 70 85 101 Z 3.26 3.63 3.94 4.16 4.35 4.51 4.64 4.59 4.60 4.55 4.47

20

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

1.2 PROC STEP


O PROC STEP o passo da programao SAS em que so processados os dados de arquivos utilizando os procedimentos (PROCEDURES) do sistema. Os procedimentos so programas internos, cada um com sua sintaxe especfica, que executam tarefas complexas como o desenho de grficos e anlise estatstica. Pode haver quantos PROC STEPs quantos necessrios em um programa. Compem-se de comandos e operadores formando frases (declaraes) que iniciam pelo nome de um comando ou de uma varivel e terminam por ponto-e-vrgula (;). Um PROC STEP sempre inicia por PROC seguido do nome do procedimento que ser executado. Exemplo de PROC STEP:
* EXEMPLO DE PROC STEP; PROC REG DATA=ARQ; MODEL Z=X Y; RUN; 1 2 3 4

O exemplo de PRO STEP acima calcula uma regresso com os dados do arquivo ARQ, onde a varivel dependente Z e as variveis independentes so X e Y. O relatrio de sada gerado pelo SAS System em formato HTML, resultado do processamento do PROC STEP, com os dados do arquivo SAS gerado pelo exemplo de DATA STEP anterior, apresentado a seguir no formato HTML de relatrios SAS:

21

SAS - O essencial da linguagem ____________________________________________________________________________________

The SAS System


The REG Procedure Model: MODEL1 Dependent Variavel: Z Analysis of Variance Sum of Squares 2.07467 0 2.07467 Mean Square 1.03734 0

Source Model Error Corrected Total

DF 2 8 10

F Value Infty

Pr > F <.0001

Root MSE

R-Square 1.0000 Adj R-Sq 1.0000

Dependent Mean 4.24545 Coeff Var 0

Parameter Estimates Parameter Standard Estimate Error t Value 1.50000 0.40000 -0.03000 0 0 0 Infty Infty -Infty

Variavel Intercept X Y

DF 1 1 1

Pr > |t| <.0001 <.0001 <.0001

1.3 JCL (JOB CONTROL LANGUAGE)


Os programas SAS podem conter ainda, um passo inicial de instrues para integrao do programa ao sistema operacional no qual est instalado, chamado de JCL. O JCL no necessrio no WINDOWS, sendo aqui referido porque podem ser encontrados
22

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

programas na literatura que o incluem, embora seja possvel executar programas SAS no modo de lotes (Batch Mode) no WINDOWS. O JCL necessrio geralmente com sistemas IBM de grande porte e UNIX. Nos sistemas de grande porte (mainframes IBM, por exemplo) os programas so escritos na rea de edio do sistema operacional, so executados atravs de procedimentos prprios de cada ambiente operacional e incluem um JCL inicial que fornece informaes ao sistema operacional sobre o programa a ser executado, alm de linhas especiais de encerramento do programa. Para converter programas SAS que possuem JCL, com a finalidade de execut-los em ambiente WINDOWS, geralmente suficiente excluir o JCL, corrigir os endereos de arquivos externos referidos nos comandos INFILE do restante do programa, eliminar as linhas de encerramento do programa e incluir ao final do mesmo as linhas:
RUN; QUIT|EXIT; 1 2

A estrutura do JCL inclui as seguintes linhas de programao geralmente iniciadas por //:
CARTO JOB CARTO EXEC SAS CARTES DE IDENTIFICAO DE ARQUIVOS DE ENTRADA E SADA CARTO DE ENCERRAMENTO DO JCL

Exemplo de JCL:
//LOGUSUARIO // //SAS //NOMEARQ1 //SYSIN DD * JOB(R,BIB,USUARIO), ENDEREO-NOME, CLASS=Y,TIME=(5),MSGCLAS=R EXEC SAS, TIME=5 DD DSN=ENDERECOBIB.NOMEARQ2,DISP=SHR 1 2 3 4 5

Em que: NOMEARQ1=nome do arquivo externo para chamada no programa; NOMEARQ2=nome do arquivo externo em disco.

23

SAS - O essencial da linguagem ____________________________________________________________________________________

Exemplo de linhas de encerramento de programa:


ENDSAS; /* // 1 2 3

24

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Captulo 2 : Elementos da linguagem SAS

Programas na linguagem SAS so constitudos por passos de programao (DATA STEP e PROC STEP). Um passo de programa SAS, sempre inicia por uma das duas palavras: DATA ou PROC. Cada passo de programa constitudo por declaraes (frases) e cada declarao constituda por expresses. Neste manual feita distino entre declaraes (frases de programao) e instrues (comandos que executam aes em programas) que os manuais do SAS no distinguem e se referem a ambos como 'STATEMENTS'. Uma declarao uma frase completa que inicia por uma varivel ou por uma instruo e sempre termina por um ponto e vrgula (;). Uma expresso formada por operandos e operadores escritos na forma de palavras de diferentes tipos e significados. Operandos so constantes ou variveis que podem ser numricas ou de caracteres.

25

SAS - O essencial da linguagem ____________________________________________________________________________________

Operadores so smbolos que representam: uma comparao, um clculo aritmtico, ou uma operao lgica; uma funo SAS; ou grupos de qualquer desses anteriores entre parnteses. Os correspondentes em ingls dos elementos da linguagem SAS so: STEP Passos de programao (DATA STEP E PROC STEP); STATEMENT Declarao (frase) de programao; STATEMENT Instruo de comando de uma ao; EXPRESSION Expresso; OPERAND Operando; OPERATOR Operador; TOKEN | WORD Smbolo ou palavra; CONSTANT Constante; VARIABLE Varivel.

A forma geral dos passos de programao (DATA STEP e PROC STEP) esto descritos no Captulo I, funes so descritas em detalhe no Captulo V e os elementos a seguir so definidos neste captulo: PALAVRAS; OPERANDOS; OPERADORES; CONSTANTES; EXPRESSES; VARIVEIS; INSTRUES; DECLARAES; FUNES.

2.1 PALAVRAS
Uma palavra ou smbolo na linguagem SAS uma coleo de caracteres, indivisveis em unidades menores capazes de uso

26

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

independente, que comunicam um significado ao SAS. Uma palavra pode conter um mximo de 32767 caracteres. Uma palavra smbolo termina quando o SAS encontra um dos seguintes: O comeo de um novo smbolo; Um espao em branco depois de um nome ou um smbolo de nmero; A aspa de fim de um smbolo literal. Cada palavra ou smbolo na linguagem SAS pertence a uma das quatro categorias: Nomes; Literais; Nmeros; Caracteres especiais.

2.1.1 NOMES Nomes de variveis podem possuir: Letras (ABCDEFGHIJKLMNOPQRSTUVXYZ); Algarismos (0123456789); Caracter de sublinhado (_). Geralmente so limitados ao tamanho de 8 caracteres e devem iniciar por uma letra ou pelo caracter de sublinhado; no podem iniciar por um nmero. Nomes de variveis criadas pelo usurio no podem coincidir com palavras reservadas do SAS como nomes de variveis internas, nomes de instrues ou de procedimentos e no podem ter acentos ou cedilha.

27

SAS - O essencial da linguagem ____________________________________________________________________________________

Exemplos de nomes: _DADOS _OBS_ VARIAV01 _n_ ARV_03 data _new _FREQ_ yearcutoff year_99 descending j7rk3

2.1.2 LITERAIS Literais podem conter qualquer tipo de caracter, exceto caracteres de concatenao e delimitao das literais como o apstrofo, barra vertical ou aspas (,| ou ). Exemplos de literais: 'Brasil' "1990-91" 'Santa Maria' "It's only a literal."

O SAS no grava os delimitadores junto com o valor literal, exceto em casos especiais quando isso determinado pelo usurio. 2.1.3 NMEROS Nmeros podem iniciar por um sinal de positivo (+) ou de negativo (-) e podem ter formato inteiro, decimal, notao cientfica (E-), notao hexadecimal, smbolo de valor perdido, formato de data e de data literal. Exemplos de nmeros: 5683 2.35 -5 5.4E-1 '24aug90'

28

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

2.1.4 CARACTERES

ESPECIAIS

Caracteres especiais so todos os que fazem parte da linguagem SAS e no so utilizados para compor nomes, nem nmeros. A maioria das palavras (smbolos) compostas por caracteres especiais constituda por um s caracter, mas algumas so formadas por dois caracteres. Exemplo de palavras constitudas por caracteres especiais: ; / = @ + <= |

2.2 CONSTANTES
Uma constante SAS um nmero, uma srie de caracteres ou outra notao que indique um valor fixo (constante). Uma constante tambm chamada de valor literal. O SAS usa trs tipos de constantes: Numricas; Srie de caracteres; Data, Horrio e Data-Horrio. 2.2.1 CONSTANTES
NUMRICAS

Uma constante numrica um nmero simples que usado em uma frase de programa ou declarao SAS. Constantes numricas podem usar ponto decimal, sinal de negativo, ou notao cientfica do tipo exponencial de 10. Exemplos de exponenciais: 3,5 x 10 = 3.5E21; 5 x 10-3 = 5E-3.

29

SAS - O essencial da linguagem ____________________________________________________________________________________

Constantes numricas podem ser expressas como valores hexadecimais em declaraes SAS. Uma constante hexadecimal inicia por um dgito numrico (usualmente zero), podendo ser seguido de um ou mais dgitos e sempre finalizada pela letra X. 2.2.2 CONSTANTES

DE CARACTERES

Uma constante de caracteres consiste de uma srie de at 200 caracteres limitados por aspas simples ou duplas (constanteliteral). Se uma constante tiver de obrigatoriamente incluir uma aspa simples (), ela dever ser limitada por aspas duplas (constanteliteral). Uma constante literal representando um valor perdido consiste de um caracter branco limitado por aspas( ). 2.2.3 CONSTANTES
DE DATA, HORRIO E DATA-HORRIO

Uma constante de data, horrio, ou de data-horrio criada escrevendo-se a data, horrio, ou data-horrio entre aspas seguidas de, respectivamente, D para data, T para horrio, ou DT para data-horrio. Veja o Captulo IV: Formats e informats para maiores informaes.

2.3 VARIVEIS
Variveis so nomes de colunas utilizadas nos arquivos SAS e podem ser internas (geradas pelo sistema) ou criadas pelo usurio. Os nomes de variveis internas so restritos; o usurio no pode criar uma nova varivel com o nome de uma varivel restrita do sistema. O contedo de uma varivel interna pode ser utilizado pelo usurio como qualquer outra em clculos ou operaes relacionais.

30

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

As variveis definidas pelo usurio podem ser nmeros ou literais, seus nomes devem obedecer s regras para nomes e seus contedos devem seguir as regras para nmeros e literais descritas anteriormente na seco PALAVRAS.

2.4 OPERANDOS
Operandos so constantes ou variveis que podem ser numricas ou de caracteres. Freqentemente so usados parnteses para compor grupos de operandos. Neste caso eles devem ser separados ou por espaos em branco ou por vrgulas. Operandos so simples informaes e no executam aes. O nome de uma varivel colocado em uma declarao, por exemplo, no executa nenhuma ao, simplesmente diz ao SAS onde encontrar a informao. As aes so executadas por instrues de comando ou por operadores. Entre si e entre nomes de qualquer tipo, inclusive cdigos mnemnicos, os operandos sempre devem ser separados por espaos em branco, mas no necessitam ser separados dos operadores escritos como smbolos.

2.5 OPERADORES
Os trs principais tipos de operadores na linguagem SAS so os matemticos, lgicos e relacionais. Cada operador tem uma prioridade

31

SAS - O essencial da linguagem ____________________________________________________________________________________

de execuo e, dependendo do grupo a que pertencem, operadores de mesmo nvel de prioridade so executados em mesmo sentido. Os operadores podem ser representados por smbolos ou por seus correspondentes mnemnicos em um programa, ambos executam as mesmas aes. Os operadores matemticos so semelhantes aos da linguagem matemtica simples (Tabela 1). TABELA 1 Operadores matemticos e sua prioridade de execuo na linguagem SAS.
Cdigo Mnemnico Prioridade Smbolo Sentido

Grupo

Descrio

Exemplo

0 0 I II II III III VIII

( ) ** * / + =

No h No h No h No h No h No h No h No h

Parntese aberto Parntese fechado Potenciao Multiplicao Diviso Adio Subtrao Igualdade

De dentro para fora De dentro para fora

1 1 2 4 4 3 3 5

X=K+Z* ( A-B) X=K+Z*(A-B ) Y= B ** X C=A * B; F=G / H; C=A + B; F=G - H; F = G-H;

Os operadores lgicos so aqueles utilizados para formar declaraes que implicam na tomada de deciso (Tabela 2).

32

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

TABELA 2 Operadores lgicos na linguagem SAS.


Cdigo Mnemnico Prioridade Smbolo Sentido Grupo

Descrio

Exemplo

I VII VI

^ | &

NOT OR AND

No lgico(*) Ou lgico E lgico

1 3 2

IF NOT Z THEN PUT X; IF X=1 OR Z=3 THEN DELETE; IF X=1 AND Z=1 THEN OUTPUT;

(*) H trs smbolos para NOT dependendo do sistema operacional: ^, ~ e .

Operadores relacionais so os utilizados para comparaes, principalmente do contedo de variveis ou de literais (Tabela 3). TABELA 3 Operadores relacionais na linguagem SAS.
Cdigo Mnemnico Prioridade Smbolo Sentido Grupo

Descrio

Exemplo

V V V V V V V

< <= = ^= >= > No h

LT LE EQ NE GE GT IN

Menor que Menor ou igual a Igual a No igual a Maior ou igual a Maior que Igual a um da lista

5 5 5 5 5 5 5

IF X LT Y THEN A=0; IF X LE Y THEN A=1; IF Y EQ (X+A) THEN DELETE; IF X NE Z THEN OUTPUT; IF Y>=A THEN OUTPUT; IF Z>A THEN OUTPUT; IF ESTADO IN (RS,SC,PR) THEN REGIAO=SUL;

H outros operadores na linguagem SAS. Entre eles podem ser citados os prefixos matemticos (positivo e negativo) utilizados para definir variveis, os de relacionamento para definir qual o valor mximo ou mnimo entre duas variveis e o de concatenao de literais que justape dois ou mais valores literais (ou o contedo de variveis literais) para compor um s valor (Tabela 4).
33

SAS - O essencial da linguagem ____________________________________________________________________________________

TABELA 4 Outros operadores na linguagem SAS.


Cdigo Mnemnico Prioridade Smbolo Sentido Grupo

Descrio

Exemplo

I I I I IV

+ -

No h No h MIN MAX No h

Prefixo positivo Prefixo negativo Mnimo Mximo Concatenao

1 1 3 3 1

Y=+(A+B); Z=-(A+B); X=(A><B); X=(A<>B); A=AGUA; B=VIVA; C=A|| - ||B; Contedo de C: AGUA-VIVA

>< <> ||

2.6 EXPRESSES
Uma expresso SAS, geralmente, uma sucesso de operandos e operadores formando um conjunto de operaes que so executadas para produzir um valor resultante. Expresses em SAS so usadas para escrever declaraes, para criar variveis, nomear valores, calcular valores novos, transformar variveis e executar processos condicionais. Expresses SAS podem resultar em valores numricos, valores de caracteres, ou valores Boleanos. Expresso simples uma expresso sem mais de um operador. Uma expresso simples pode consistir de uma nica: Constante; Varivel; Funo. Expresso combinada uma expresso que inclui vrios operadores. Quando o SAS encontra uma expresso combinada, segue

34

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

regras para determinar em que ordem deve executar cada parte da expresso. Exemplos de expresses SAS: Simples: 3; x; max; Combinadas: idade<10 and peso>20; trim(last) || ', ' ||first; x=4+y.

2.7 INSTRUES
Uma instruo SAS uma srie de itens que inicia por uma palavra de comando que d nome instruo. Uma instruo SAS requer que o sistema execute uma ao ou fornece uma informao ao sistema. H trs tipos de instrues SAS: As especficas do DATA STEP (passos de construo de arquivos); As especficas de cada PROC STEP (passos de execuo de procedimentos); As globais que podem ser usadas em qualquer lugar de um programa de SAS. Algumas declaraes SAS especficas a cada procedimento SAS, so comuns a grupos de procedimentos afins e so executadas com sintaxe semelhante. Instrues SAS globais podem ser colocadas fora dos passos de programa. Neste caso no sero executadas, ficaro disponveis a partir

35

SAS - O essencial da linguagem ____________________________________________________________________________________

do ponto de sua declarao no programa. Sero executadas quando um passo de programa necessitar delas, como as instrues de impresso. Por exemplo: se ao iniciar um programa for escrita uma instruo TITLE com um ttulo qualquer, sempre que um passo de programa imprimir algo, aparecer o ttulo declarado. As instrues SAS globais so classificadas nas seis categorias a seguir: ACESSO A DADOS - Associam nomes de referncia com bibliotecas de dados SAS, catlogos SAS, arquivos externos, dispositivos de produo e arquivos remotos; AMBIENTE OPERACIONAL - Acessam o ambiente operacional diretamente; CONTROLE DE LOG - Alteram a aparncia do LOG do SAS; CONTROLE DE PRODUO - Acrescentam ttulos e notas de rodap produo do usurio; preparam a produo em uma variedade de formatos; CONTROLE DE PROGRAMA - Controlam o modo como o SAS processa os programas do usurio; EXIBIO DE JANELA - Exibe e personaliza janelas. As diferentes instrues globais so descritas no manual disponvel on line, no site <http://www.nbs.ntu.edu.sg/userguide/>: "SAS. SAS Language Reference: Concepts, v.8. Cary, NC: SAS Institute, 1999. 554p."

2.8 DECLARAES
Uma declarao SAS uma frase de programao completa, composta por uma srie de itens que pode incluir palavras chave, nomes SAS, caracteres especiais, operandos e operadores, formando expresses que so reguladas por uma sintaxe rgida e especfica de

36

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

cada tipo de instruo ou comando envolvido na declarao. Uma declarao SAS requer que o sistema execute ao(es), fornece informao(es) ao sistema, ou somente uma linha de comentrio. Geralmente uma declarao SAS inicia pelo nome de um passo (PROC ou DATA), pelo nome de uma instruo, ou pelo nome de uma varivel. Todas as declaraes SAS terminam com um ponto-e-vrgula (;). Os erros mais comuns em programas SAS ocorrem quando o programador esquece de encerrar uma declarao com ponto-e-vrgula. Ento, o sistema entende que a continuao do programa parte da declarao anterior e gera erros, obviamente.

2.9 FUNES
Funes so operaes executadas pelo SAS System que possuem um nome prprio. Uma funo SAS, a partir do fornecimento de um argumento, retorna um valor. O SAS System possui um elenco de funes em diferentes reas, desde as mais comuns, como as funes aritmticas, at funes complexas como as econmicas e as de procura de parte de uma srie de caracteres. Por sua importncia, as funes foram descritas em mais detalhes no Captulo V deste manual.

37

SAS - O essencial da linguagem ____________________________________________________________________________________

Captulo 3 : Arquivos de dados (DATA STEP)

Os Arquivos de dados no SAS so constitudos por colunas (campos) e linhas (registros). As colunas tambm podem ser entendidas como as variveis e as linhas como as observaes contidas no arquivo. Os arquivos, na programao SAS, podem ser criados a partir de: Arquivos externos pr-existentes; Arquivos criados anteriormente no mesmo programa; Dados fornecidos no prprio programa; Sada de um procedimento (PROC STEP).

Os passos da estrutura de um programa SAS, onde so criados arquivos, so chamados de DATA STEP. Num DATA STEP pode ser criado um ou mais arquivos e pode haver mais de um DATA STEP em um programa. Deve-se evitar as palavras reservadas CON, NUL, PRN, LPT1 LPT9 e COM1 para nomes de arquivos. O SAS System utiliza dois tipos de dados: os arquivos de dados SAS tpicos (DATA SET) ou dados virtuais resultantes de arquivos de lgica (DATA VIEW). Um arquivo de dados SAS (DATA SET) descreve e armazena os valores dos dados enquanto os arquivos de lgica SAS (DATA VIEW) no armazenam valores, ao invs disso, armazenam
38

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

questes que criam dados virtuais que podem ser usados como se fossem simples arquivos de dados SAS; isso permite que sejam acessados dados armazenados em um ou mais arquivos de dados ao mesmo tempo e at arquivos de dados de no formato de outros softwares que no o SAS. Os DATA VIEW permitem que sejam criados arquivos de lgica SAS sem usar espao para armazenamento de dados, somente as questes lgicas so armazenadas e o que o usurio utiliza quando os acessa so os dados de resposta das questes programadas. No se tratar dos DATA VIEW neste manual. Um DATA STEP de um programa SAS para criao de arquivos de dados SAS sempre inicia por DATA e tem a seguinte forma geral:
Data NomeDoArquivo <Opes>; DeclaraesDeInicializaoDeVariveisEVetores; DeclaraesParaClculoEAtribuioDeValores; DeclaraesDeEntradaDeDados; 1 2 3 4

3.1 SINTAXE
H vrios modelos de sintaxe para o DATA STEP, dependendo que tipo de arquivo que est sendo criado: DATA SET, DATA VIEW ou DATA PGM. 3.1.1 CRIAO
DE ARQUIVOS DE DADOS DO TIPO

DATA SET

DATA <Nomedoarquivo-1 <(Opes-1)>> <Nomedoarquivo--n <(Opes-n)>> </DEBUG>;

Ou

DATA _NULL_;

Nomedoarquivo o nome do arquivo de dados SAS a ser criado. Opes aparecem entre parnteses aps um nome de arquivo. Especifica uma ou mais aes SAS a realizar enquanto escreve no arquivo externo. A sintaxe de opes do DATA SET tem a seguinte estrutura: DEBUG - Permite depurar o programa, auxiliando na identificao de possveis erros de dados ou de lgica. _NULL_ - Permite criar um arquivo de dados temporrio que permanece na memria somente enquanto o DATA STEP est sendo executado.

39

SAS - O essencial da linguagem ____________________________________________________________________________________

3.1.2 OUTROS

MODELOS DE SINTAXE PARA O

DATA STEP

3.1.2.1 CRIAO DE ARQUIVOS DE LGICA DATA VIEW


DATA view-nome <nomedoarquivo-1 <(opes-1)>> <. . .nomedoarquivo-n <(opes-n)>> / VIEW=view-nome <(<senhaopo>< SOURCE=fonte-opo>)>;

ou

DATA VIEW=view-nome (<senha-opo>); DESCRIBE; (opo-1=value-1<...opo-n=value-n>)

3.1.2.2 CRIAO DE ARQUIVOS DE PROGRAMA DATA PGM


DATA nomedoarquivo / PGM=nomedoprograma <(<senha-opo> <SOURCE=fonte-opo>)>;

ou

DATA PGM=nomedoprograma (<senha-opo>); <DESCRIBE;> <REDIRECTREDIRECT INPUT | OUTPUT nomeantigo-1 = nomenovo-1 <... nomeantigo-n = nomenovo-n>>; <EXECUTE;>

Exemplo 3.1 - Criando um arquivo fornecendo dados no prprio programa:


* EXEMPLO 3.1; DATA ARQ1; INPUT ARVORE DIAMETRO ALTURA; AREABASL=3.1416*(DIAMETRO/100)**2/4; DATALINES; 01 10.5 11.3 02 15.0 14.1 03 12.4 11.9 ; * VALORES DAS LINHAS DE DADOS NAO PODEM SER RECUADOS NESTE CASO; RUN; 1 2 3 4 5 6 7 8 9 10 11 12

Na linha 1 identificado o nome do programa com uma linha de comentrio. O incio do passo de dados na linha 2, segunda frase ou declarao do programa do Exemplo 3.1, cria o arquivo chamado ARQ1:
DATA ARQ1;

40

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Instrui a entrada de dados em trs colunas chamadas de ARVORE, DIAMETRO e ALTURA atravs da declarao de INPUT na linha 3:
INPUT ARVORE DIAMETRO ALTURA;

Atribui o valor da rea basal AREABASL na linha 4, atravs da frmula:


AREABASL=3.1416*(DIAMETRO/100)**2/4;

Declara o incio da entrada de dados com a declarao DATALINES linha 5:


DATALINES;

D entrada de trs linhas de dados (linhas 6, 7 e 8):


01 10.5 11.3 02 15.0 14.1 03 12.4 11.9

Encerra a leitura de dados com um ltimo ponto-e-vrgula na linha 9:


;

A linha 10 apresenta um comentrio e a linha 11 instrui a execuo do programa (RUN). A partir da criao do arquivo ARQ1, este pode ser usado para a criao de outros arquivos no mesmo programa, ou pode ser chamado em um passo de procedimento. Exemplo 3.2 - criando um arquivo a partir de dados de um arquivo externo:
* EXEMPLO 3.2; DATA ARQ1; INFILE C:\SASEXEMPLOS\DADOSDH.DAT; INPUT ARVORE DIAMETRO ALTURA; AREABASL=3.1416*(DIAMETRO/100)**2/4; RUN; 1 2 3 4 5 6

41

SAS - O essencial da linguagem ____________________________________________________________________________________

O passo de programao do Exemplo 3.2 cria o arquivo chamado ARQ1 na linha 2:


DATA ARQ1;

Na linha 3, chama o arquivo externo DADOSDH.DAT localizado no endereo C:\SASEXEMPLOS\ ENDERECO\, atravs da declarao de INFILE:
INFILE C:\SASEXEMPLOS\ARQEXTERNO.DAT;

Instrui a entrada de dados em trs colunas chamadas de ARVORE, DIAMETRO e ALTURA atravs da declarao de INPUT na linha 4:
INPUT ARVORE DIAMETRO ALTURA;

Atribui o valor da rea basal AREABASL na linha 5, atravs da frmula:


AREABASL=3.1416*(DIAMETRO/100)**2/4;

Observe que a instruo de atribuio de valores a partir de dados lidos no arquivo, em ambos os exemplos, deve ser realizada aps a declarao de INPUT. Antes do INPUT podem ser includas declaraes de vetores (ARRAY), de RETAIN, FORMAT, laos (DO;END;), atribuio de valores que no so lidos pelo INPUT, entre outras, mas no a atribuio de valores e clculos baseados nos valores lidos pelo INPUT.

3.2 FORMATOS DE ENTRADA E SADA (INPUT/PUT)


As instrues INPUT e PUT aceitam qualquer tipo de estrutura de dados em colunas e linhas. Pode-se instruir a leitura ou gravao de cada linha separadamente, de cada coluna e de diferentes maneiras. As principais so apresentadas em exemplos a seguir.

42

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Exemplo 3.3 Entrada de dados em colunas seqenciais sem limites definidos, em linhas de dados seqenciais:
* EXEMPLO 3.3; DATA A; INPUT COLUNA1 COLUNA2 COLUNA3; DATALINES; 10.7 45.003 7. 11.0 34 71.03 10 25 93.8 14 50.3 57.8 ; PROC PRINT; RUN; 1 2 3 4 5 6 7 8 9 10 11

Os dados devem ser colocados em duas colunas separadas por um espao em branco. As linhas de dados so colocadas uma aps a outra e o programa l uma de cada vez. O comando DATALINES sinnimo de CARDS na linguagem SAS, podendo-se usar um ou outro. No Exemplo 3.3, o programa l uma tabela de dados com trs colunas chamadas de COLUNA1, COLUNA2 e COLUNA3 gerando um arquivo de dados SAS com o seguinte contedo:
10.7 11.0 10.0 14.0 45.003 34.000 25.000 50.300 7.00 71.03 93.80 57.80

Aps, o programa imprime o relatrio a seguir:


_OBS_ 1 2 3 4 COLUNA1 COLUNA2 COLUNA3 10.7 11.0 10.0 14.0 45.003 34.000 25.000 50.300 7.00 71.03 93.80 57.80

A coluna _OBS_ inserida automaticamente no relatrio SAS, contendo o nmero de ordem seqencial de cada observao do

43

SAS - O essencial da linguagem ____________________________________________________________________________________

arquivo. Para que no seja impressa necessrio utilizar a opo NOOBS, como no exemplo:
PROC PRINT NOOBS;

Exemplo 3.4 Entrada de dados em colunas delimitadas, por grupos de linhas de dados:
* EXEMPLO 3.4; DATA B; INPUT #1 @3 A 4-8 B 9-12 #2 @6 C D; CARDS; ABC002009177 2.034983 9 KNX009130918 40000 7 4 ZJH137105937 0.330010.71000 14.8 ; RUN; 1 2 3 4 5 6 7 8 9 10 11 12

A instruo CARDS equivalente instruo DATALINES. O caracter # seguido de um nmero inteiro, numa declarao de INPUT, indica o nmero de ordem de um grupo de linhas que deve ser lido. A parte de programa do Exemplo 3.4 l grupos de duas linhas, sendo a primeira linha a de nmero 1 e a segunda a de nmero 2. Inicialmente, no primeiro grupo de linhas, l os cinco dgitos (4 at 8) da primeira linha e os atribui varivel A resultando em A=00200, l os quatro dgitos de 9 at 12 da linha 1 e os atribui varivel B resultando em B=9177; l, a partir do 6 dgito da linha 2, at encontrar um caracter branco e os atribui varivel C resultando em C=983.00; em seguida l os caracteres seguintes da linha 2 aps o carter branco que segue a varivel C e os atribui D, resultando em D=9.0. Depois lido o segundo grupo e assim por diante at que o caracter ponto-evrgula indique o final dos dados. O resultado da leitura a seguinte tabela de dados:

44

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________ A 200 913 13710 B 9177 918 5937 C 983.00 7.00 10.71 D 9.0 4.0 14.8

Exemplo 3.5 Entrada de dados em grupos de colunas seqenciais sem limites definidos, em linhas de dados seqenciais:
* EXEMPLO 3.5; DATA C; INPUT COLUNA1 COLUNA2 COLUNA3 @@; DATALINES; 10.7 45.003 7. 11.7 40.0 8.3 11.0 34 71.03 11.0 35 70.1 10 25 93.8 10 27 99.8 14 50.3 57.8 ; RUN; 1 2 3 4 5 6 7 8 9 10

O INPUT do Exemplo 3.5 l duas seqncias de colunas. Poderiam ser includas mais seqncias de colunas sem alterar o programa. So os caracteres @@ que indicam que os dados esto em grupos. Os trs primeiros valores de cada linha so pertencentes primeira seqncia de trs colunas e os ltimos trs valores de cada linha pertencem segunda seqncia, sendo cada valor separado do seguinte por um nico caracter branco. O programa l linha por linha, incluindo os dados da primeira seqncia e, em seguida, os da segunda seqncia da mesma linha de dados, resultando na tabela de dados a seguir:
COLUNA1 COLUNA2 COLUNA3 10.7 11.7 11.0 11.0 10.0 10.0 14.0 45.003 40.000 34.000 35.000 25.000 27.000 50.300 7.00 8.30 71.03 70.10 93.80 99.80 57.80

45

SAS - O essencial da linguagem ____________________________________________________________________________________

3.3 PROCEDIMENTOS ESSENCIAIS COM O DATA STEP


Dois procedimentos associados criao de arquivos so essenciais para trabalhar com arquivos de dados. O primeiro serve para adicionar dados de um arquivo SAS em outro (PROC APPEND) e o segundo para ordenar os dados (PROC SORT). 3.3.1 PROC APPEND PROC APPEND adiciona observaes de um arquivo SAS ao fim de outro arquivo SAS, sem processar as observaes, sendo mais rpido e eficiente que o uso do DATA STEP. O arquivo SAS original chamado de BASE, ao qual sero adicionados os dados de outro arquivo SAS. S i n tax e
PROC APPEND BASE=ARQUIVOBASE DATA=ARQUIVOADICIONADO <FORCE> <APPENDVER=V6>;

BASE=nomedoarquivobase Informa o nome do arquivo BASE que dever receber adio dos dados do outro arquivo SAS. DATA=nomedoarquivoadicionado Informa o nome do arquivo que ser adicionado ao final do arquivo BASE. APPENDVER=V6 Usando a Verso 6 do SAS, deve ser especificada esta opo. FORCE Fora a adio de dados mesmo quando o arquivo que est sendo adicionado contm variveis que no existem no arquivo BASE. Exemplo 3.6 Adicionando os dados de um arquivo SAS em outro
* EXEMPLO 3.6; DATA ARQ1; INPUT PARCELA ESPECIE $ DAP; CARDS; 01 ANGICO 35.5 01 AROEIRA 22.0 01 TIMBAUVA 40.5 ; DATA ARQ2; INPUT PARCELA ESPECIE $ DAP; CARDS; 02 VASSOURAO 19.0 1 2 3 4 5 6 7 8 9 10 11 12

46

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
02 CABREUVA 37.0 ; PROC APPEND BASE=ARQ1 DATA=ARQ2; RUN; 13 14 15 16

No Exemplo 3.6 so adicionados os dados do arquivo SAS denominado de ARQ2 ao arquivo SAS denominado de ARQ1. Ao final do procedimento, o arquivo ARQ2 permanece inalterado e o arquivo ARQ1 passa a ter o seguinte contedo:
PARCELA 01 01 01 02 02 ESPECIE ANGICO AROEIRA TIMBAUVA CABREUVA DAP 35.5 22.0 40.5 37.0

VASSOURAO 19.0

3.3.2 PROC SORT O procedimento SORT ordena as observaes existentes em um arquivo SAS por uma ou mais variveis de forma crescente ou decrescente, atravs de uma instruo BY. Pode simplesmente ser reordenado o arquivo original que passa a apresentar o ordenamento de dados requerido, ou pode ser criado um novo arquivo com os dados reordenados, permanecendo o arquivo original sem alteraes. O procedimento SORT no produz impresso por si s. S i n tax e
PROC SORT <DATA=ArquivoDeEntrada> <OUT=ArquivoDeSaida> <Opes>; BY <DESCENDING> Variavel-1 ...<<DESCENDING> Variavel-n>;

DATA=ArquivoDeEntrada Especifica o arquivo de dados de entrada. Se esta opo no for utilizada, o ltimo arquivo utilizado ou criado pelo programa ser utilizado no procedimento. OUT=ArquivoDeSada Esta opo especifica o arquivo de dados de sada. Se o arquivo de sada no existe, ele criado por esta opo. Por padro sem a opo OUT, o procedimento sobrepe o arquivo existente com o novo, na nova ordem.

47

SAS - O essencial da linguagem ____________________________________________________________________________________

NODUPKEY Procura e elimina observaes com valores BY duplicados. Se esta opo for especificada, todos os valores BY de cada observao so comparados com a observao predecessora. Se uma observao exatamente igual encontrada, ela eliminada do arquivo final resultante do procedimento. NODUPRECS Procura e elimina observaes duplicadas. Todos os valores das variveis de cada observao so comparados com a observao prvia se esta opo for especificada. Se um valor exato encontrado, a observao eliminada do arquivo final resultante do procedimento. NODUPRECS confere s observaes sucessivas, assim, algumas observaes duplicadas no sucessivas podem permanecer arquivo final. BY A instruo BY obrigatria e especifica as variveis pelas quais o arquivo deve ser ordenado. O padro a ordem ascendente. Se for necessrio usar ordem descendente, necessrio especificar atravs da opo DESCENDING. VARIAVEL Podem ser relacionadas quantas variveis forem necessrias (1 at N) para ordenar o arquivo, uma aps a outra, na ordem de prioridade da esquerda para a direita. DESCENDING Quando for necessrio ordenar de forma descendente, o termo DESCENDING deve ser escrito antes de cada varivel que deve ser ordenada desta forma. Se uma varivel da lista de variveis que segue a instruo BY no for precedida pela opo DESCENDING, automaticamente ser ordenada ascendentemente. Exemplo 3.7 Ordenando os dados de um arquivo SAS Utilizando os dados do arquivo de sada ARQ1 do Exemplo 3.6 anterior e reordenando o arquivo pelas variveis PARCELA e ESPECIE, tem-se o seguinte:
* EXEMPLO 3.7; PROC SORT DATA=ARQ1; BY PARCELA ESPECIE; RUN; 1 2 3 4

Como resultado o contedo do arquivo ARQ1 passa ser o da tabela abaixo, onde se observa que as observaes 4 e 5 trocaram de posio com o re-ordenamento:

48

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________ PARCELA 01 01 01 02 02 ESPECIE ANGICO AROEIRA TIMBAUVA CABREUVA DAP 35.5 22.0 40.5 37.0

VASSOURAO 19.0

3.4 INSTRUES ESSENCIAIS DO DATA STEP


ARRAY Identificao de vetores; BY Ordenao de variveis; CARDS Chamada de cartes de dados; DATALINES Chamada de linhas de dados; DELETE Instruo de excluso de registro; DO END Repetio em lao; DROP Elimina variveis de um arquivo SAS; FILE Sada de arquivo externo; FILENAME Identificao de arquivo externo de sada; IF THEN Execuo condicional. INFILE Chamada de arquivo externo; INPUT Chamada e formatao de dados de entrada; KEEP Seleciona variveis a permanecer num arquivo SAS; MERGE Intercalao de arquivos; OUTPUT Sada de dados para arquivo interno; PUT Formatao de dados de sada; RETAIN Retm o valor de uma varivel at a prxima atribuio de valor para a mesma; SET Chamada de arquivo interno; SUM Efetua somatrios; UPDATE Efetua atualizao de dados em arquivos SAS; VAR Identificao de variveis a utilizar; WHERE Impe condies para execuo de declaraes.

49

SAS - O essencial da linguagem ____________________________________________________________________________________

3.4.1 ARRAY (INSTRUO) ARRAY um vetor de dados que pode ser de elementos literais ou nmeros. Um ARRAY deve ser escrito no incio do passo em que ser utilizado, onde se define a sua dimenso mxima e os valores iniciais. composto por um nome seguido de um nmero de ordem (subscrito) entre duas chaves, assumindo o seguinte formato:
NomeDdArray{Subscrito}<$>

S i n tax e
ARRAY Nome{n}<$> <Comprimento> <Elementos> <(ValoresIniciais)>; Nome{N};

Nome o nome do vetor; no pode ser o mesmo de uma varivel de uma janela; entretanto, variveis de uma janela podem ser elementos de um vetor. {n} a dimenso do vetor (nmero de elementos); se em lugar de um nmero, for colocado um asterisco (*), a dimenso ser determinada pelo nmero total de elementos atribudos ao vetor durante o processamento, ou pelo nmero inicial de elementos; so permitidos vetores multidimensionais. $ Indica que os elementos do vetor so do tipo caracter. Comprimento o comprimento mximo de elementos no vetor. Vetores de caracteres no podem ter comprimento maior que 200. O comprimento ignorado em vetores numricos. Elementos So as variveis que constituem o vetor. ValoresIniciais So os valores para inicializar alguns ou todos os elementos do vetor. Os valores devem ser separados por vrgula ou caracteres brancos. Como padro todos os elementos so inicializados com valores perdidos. Exemplo 3.8 Criando vetores (ARRAY)
* EXEMPLO 3.8; DATA ARQ; ARRAY X{10} X1-X10 (0,0,0,0,0,0,0,0,0,0); INPUT X1-X10; CARDS; 14 15 12 17 19 11 17 19 13 16 13 19 17 13 11 14 13 15 10 11 ; RUN; 1 2 3 4 5 6 7 8 9

50

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

No Exemplo 3.8 criado o arquivo SAS chamado de ARQ e com a declarao ARRAY X{10} X1-X10 (0,0,0,0,0,0,0,0,0,0) so criados 10 vetores X com 2 elementos, de X1 at X10, ou seja, X1, X2, X3, X4, X5, X6, X7, X8, X9 e X10, com todos os elementos de valor inicial zero (0); instruda a entrada de dados em colunas seqenciais de X1 at X10 e dada a entrada de dois cartes de dados (linhas) contendo dez valores cada um. O resultado so dez vetores com o seguinte contedo: X1{1}=14, X1{2}=13; X2{1}=15, X2{2}=19; X3{1}=12, X3{2}=17; X4{1}=17, X4{2}=13; X5{1}=19, X5{2}=11; X6{1}=11, X6{2}=14; X7{1}=17, X7{2}=13; X8{1}=19, X8{2}=15; X9{1}=13, X9{2}=10; X10{1}=16, X10{2}=11. O contedo do arquivo SAS criado com o nome de ARQ um vetor multidimensional, ou tabela, com 11 colunas e duas linhas, em que a primeira coluna contm o nmero de cada linha de dados que foi lida e as demais colunas contm os 10 vetores, como segue:
X1 14 13 X2 15 19 X3 12 17 X4 17 13 X5 19 11 X6 11 14 X7 17 13 X8 19 15 X9 13 10 X10 16 11

O conjunto de vetores, neste caso, comparvel a uma matriz em que cada elemento pode ser referenciado individualmente, o que facilita a programao em alguns casos.
51

SAS - O essencial da linguagem ____________________________________________________________________________________

3.4.2 BY (INSTRUO) A instruo BY usada para controlar uma operao com SET, MERGE, MODIFY ou UPDATE em um DATA STEP, impondo uma condio de ordenao ou de seleo de dados. S i n tax e
BY <DESCENDING> Varivel-1 <NOTSORTED>; ...<<DESCENDING> Varivel-n>

Varivel Especifica variveis em seqncia hierrquica da esquerda para a direita que deve ser usada para ordenar ou controlar grupos. Variveis em uma declarao de BY so chamadas de variveis BY. Por padro o SAS ordena as variveis BY ascendentemente. O arquivo em uso deve ter sido previamente ordenado em um procedimento PROC SORT, ou deve-se usar a opo NOTSORTED. DESCENDING Quando esta opo escrita antes de uma varivel BY, indica que a ordem da varivel descendente. NOTSORTED Indica que o arquivo em uso no foi ordenado previamente em ordem alfabtica e pode ter sido ordenado por outro critrio como o cronolgico. 3.4.3 CARDS (INSTRUO) A instruo CARDS indica que a prxima linha uma linha de dados em formato de acordo com a declarao de INPUT antecessora. S i n tax e
CARDS;

CARDS A instruo deve seguir uma declarao de INPUT anterior. No h argumentos para esta instruo. 3.4.4 DATALINES (INSTRUO) A instruo DATALINES equivalente instruo CARDS e indica que a prxima linha uma linha de dados em formato de acordo com a declarao de INPUT antecessora.

52

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

S i n tax e
DATALINES;

DATALINES A instruo deve seguir uma declarao de INPUT anterior. No h argumentos para esta instruo. 3.4.5 DELETE (INSTRUO) Elimina a linha de dados corrente do arquivo em uso. S i n tax e
DELETE;

DELETE Elimina o registro atual de dados do arquivo em uso. No h argumentos para esta instruo. 3.4.6 DO/END (INSTRUO) a instruo utilizada para controle de laos de programao, semelhante s de outras linguagens como FORTRAN e BASIC. Informa que as declaraes entre DO e END devem ser executadas em grupo at que uma varivel contadora de controle atinja seu o limite mximo. O SAS System permite trs formas de DO: DO simples; DO UNTIL; DO WHILE. S i n tax e 3.4.6.1.1 DO
DO variavel= Inicial TO Final <BY incremento>; Declaraes; END;

53

SAS - O essencial da linguagem ____________________________________________________________________________________

3.4.6.1.2 DO UNTIL
DO VARIAVEL=Inicial TO Final <BY incremento> UNTIL(expresso); Declaraes; END;

Ou
DO UNTIL(expresso); Declaraes; END;

3.4.6.1.3 DO WHILE
DO VARIAVEL= Inicial TO Final <BY incremento> WHILE(expresso); Declaraes; END;

Ou
DO WHILE(expresso); Declaraes; END;

DO Inicia um lao de declaraes a serem executadas em grupo. VARIVEL Nome da varivel de controle do lao de declaraes. Inicial Valor inicial da varivel de controle. Final Valor final da varivel de controle. BY Indica que h um valor a incrementar a cada retorno que segue a palavra BY. Incremento o valor a incrementar na varivel a cada passagem. Declaraes So as declaraes a executar em cada passagem. END Indica que se o ltimo valor atribudo varivel de controle foi igual ao valor final, o lao deve ser encerrado e que devem ser executadas as declaraes escritas aps a instruo END. Enquanto o valor final no for atingido, o END faz com que o programa volte para executar todo o grupo de declaraes a partir do DO. UNTIL Significa at que, ou seja, executa o grupo de declaraes at que o valor da expresso entre parnteses seja encontrado. WHILE Significa enquanto, ou seja, executa o grupo de declaraes enquanto o valor da expresso entre parnteses for verdadeiro. Expresso qualquer expresso SAS vlida. 3.4.7 DROP (INSTRUO) Especifica os nomes das variveis que devem ser eliminadas do arquivo SAS.
54

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

S i n tax e
(DROP=listadevariaveis);

3.4.8 FILE (INSTRUO) Especifica o nome do arquivo SAS a ser gravado em disco conforme uma instruo FILENAME antecessora e no formato de uma declarao de PUT posterior. Deve-se evitar as palavras reservadas CON, NUL, PRN, LPT1 - LPT9 e COM1 para nomes de arquivos. S i n tax e
FILE Nomedoarquivo <Opes> <host-opes>;

Nomedoarquivo Nome do arquivo SAS a ser gravado externamente em disco; Opes e host-opes H vrias opes para execuo desta instruo, mas no so consideradas essenciais. Exemplo 3.9 Gravao em disco de arquivos externos permanentes
* EXEMPLO 3.9; DATA ARQSAS1; INPUT X Y Z; CARDS; 1 2 5 2 6 8 3 9 11 4 12 18 ; DATA _NULL_; FILENAME ARQSAS2 "C:\SASEXEMPLOS\ARQEXTERNO.DAT"; SET ARQSAS1; FILE ARQSAS2; PUT X Y X; RUN; 1 2 3 4 5 6 7 8 8 9 10 11 12 13 14

As declaraes do programa do Exemplo 3.9 realizam o seguinte: Declarao 1 (DATA ARQSAS1;) Cria o arquivo SAS chamado de ARQSAS1; Declarao 2 (INPUT X Y Z;) Instrui o formato de entrada de trs colunas X Y e Z; Declarao 3 (CARDS;) Instrui o incio das linhas de dados; Linhas 4 a 7 (valores) Entrada de 4 linhas de dados; Linha 8 (;) Finaliza a entrada de dados;

55

SAS - O essencial da linguagem ____________________________________________________________________________________

Declarao 4 (DATA _NULL_;) Cria o arquivo temporrio _NULL_; Declarao 5 (FILENAME ARQSAS2 "C:\SASEXEMPLOS\ARQEXTERNO.DAT";) Instrui o programa para gravar o arquivo SAS chamado de ARQSAS2 no endereo C:\SASEXEMPLOS\ com o nome de ARQEXTERNO.DAT; Declarao 6 (SET ARQSAS1;) Chama o arquivo SAS ARQSAS1 para constituir o arquivo temporrio; Declarao 7 (FILE ARQSAS2;) Cria o arquivo ARQSAS2 para ser gravado externamente conforme o formato da declarao de PUT a seguir; Declarao 8 (PUT X Y X;) Formata os dados para gravao no arquivo externo; Declarao 9 (RUN;) Executa o programa. Como resultado criado o arquivo de dados externo ARQEXTERNO.DAT com o seguinte contedo:
1 2 3 4 2 5 6 8 9 11 12 18

O arquivo ARQEXTERNO.DAT pode ser acessado por outros programas atravs de uma declarao INFILE de um DATA STEP. 3.4.9 FILENAME (INSTRUO) Associa o nome de um arquivo SAS, referenciado em uma declarao de FILE posterior, com um arquivo externo. O nome do arquivo externo reconhecido pelo sistema operacional e estar disponvel para uso por qualquer programa no endereo especificado. Veja tambm a instruo FILE, anterior, com exemplo completo. Devese evitar as palavras reservadas CON, NUL, PRN, LPT1 - LPT9 e COM1 para nomes de arquivos. Sin tax e
FILENAME NomeDoArquivo 'Drive:\Endereo\NomeDoArquivoExterno.DAT' <Host-Opes>;

NomeDoArquivo Especifica o nome de arquivo SAS a ser gravado externamente. um apelido temporrio para o arquivo. Deve ser o mesmo da declarao de FILE. Pode ser qualquer nome SAS vlido para arquivos SAS. NomeDoArquivoExterno Especifica o endereo e o nome do arquivo a ser gravado em disco. Podem ser quaisquer endereos e nomes de arquivos vlidos para o
56

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

sistema operacional. Sugere-se que a extenso ou sufixo do arquivo seja .SAS para ser compatvel com o SAS System. Host-Opes H vrias host-opes para execuo desta instruo, mas no so consideradas essenciais. 3.4.10 IF THEN (INSTRUO) Avalia uma expresso e, condicionalmente, executa clusula(s) ou declaraes subseqentes (Veja Exemplo 2.13 B). S i n tax e
IF Expresso THEN Clusula; <ELSE Clusula;>

ou

IF Expresso THEN DO; Declaraes; END; <ELSE DO; Declaraes; END;>

Expresso Especifica uma ou mais expresses a serem avaliadas como condio para execuo de uma instruo ou de declaraes subseqentes; Clusula uma instruo a ser executada aps THEN se o resultado da expresso for verdadeiro ou aps ELSE se o resultado da expresso for falso; Declaraes So quaisquer declaraes SAS vlidas a serem executadas entre THEN DO e END se o resultado da expresso for verdadeiro, ou entre ELSE DO e END, se o resultado for falso. 3.4.11 INFILE (INSTRUO) Especifica o nome um arquivo fonte a ser lido por uma declarao de INPUT. Um arquivo fonte um arquivo a ser lido; geralmente um arquivo externo. Deve-se evitar as palavras reservadas CON, NUL, PRN, LPT1 - LPT9 e COM1 para nomes de arquivos. Sin tax e
INFILE Nomedoarquivo <ENCODING=Valordecodigo> <Opes> <Host-opes>;

Nomedoarquivo Identifica o nome do arquivo fonte da entrada de dados, geralmente externo. Opes H algumas dezenas de opes para a instruo INFILE, mas raramente so utilizadas em programas simples. Algumas opes teis so as de caracteres de
57

SAS - O essencial da linguagem ____________________________________________________________________________________

delimitao. Exemplos: infile 'a:\arq.txt' DELIMITER='/'; * l o arquivo externo arq.txt com colunas separadas por uma barra /; infile 'a:\arq.txt' EXPANDTABS; * l o arquivo externo arq.txt com colunas separadas por caracteres de tabulao;. Tabelas do MS-Excel salvas como somente texto tm caracteres de tabulao como separador das colunas e podem ser lidas diretamente com a opo EXPANDTABS. ENCODING=encoding-value Especifica um cdigo de caracteres para processar um arquivo externo. Host-opes Nomes de entrada e sada externos que so especficos para o sistema operacional. 3.4.12 INPUT (INSTRUO) A instruo INPUT comanda a entrada de dados. atravs desta instruo que se informa ao programa em que formato os dados esto, definindo nomes de variveis e a forma de separao dos dados, seja em arquivos externos ou em dados escritos no prprio programa aps a instruo CARDS ou DATALINES. S i n tax e
INPUT <#n> <@n>Variavel-1 <Formato> <Localizao> <...<#n> <@n>Variavel-n <Formato> <Localizao>> <Diretivasderegistros> <@@>;

#n Determina que o nmero de ordem da linha que deve ser lida a de nmero n em um grupo de linhas de dados, em que n um nmero inteiro; quando se usa este tipo de controle, o SAS assume que as linhas de dados devem ser lidas por grupos com um nmero de linhas igual de maior ordem informada como valor de n. No necessrio ler todas as linhas do grupo entre a de menor e a de maior nmero de ordem do grupo, mas o nmero total de linhas de cada grupo sempre igual ao valor da linha de maior nmero de ordem. @n Determina que a varivel seja lida a partir do dgito n da linha que est sendo lida, em que n um nmero inteiro; pode ser usada a opo @(expresso) que l o valor da varivel a partir do dgito resultante da expresso entre parnteses, em que (expresso) uma expresso SAS que resulta em um nmero inteiro. Varivel Especifica o nome da varivel ou variveis a serem lidas na posio corrente do registro atual. Cada varivel pode ser seguida por uma especificao de formato de varivel e/ou de posio (informat) da mesma no registro (linha de dados) que est sendo lido.

58

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Formato Especifica um formato de entrada de dados. Os formatos padro de entrada de dados podem ser de caracteres, quando o nome da varivel no INPUT deve ser seguido pelo caracter $; ou numrico, quando no o caracter $ aps o nome da varivel. A especificao de dados de variveis do tipo caracter obrigatria e se no for feita, o programa apresenta uma mensagem de erro e no processa o restante do passo de programa. H muitos tipos de formatos de entrada possveis com a instruo INPUT. Se um formato for especificado, os dados devem obrigatoriamente estar na forma especificada. O SAS System, para dados numricos de uma varivel sem especificao de formato de entrada, assume o formato que possa servir para todos os dados encontrados para a varivel. Para variveis de caracteres sem especificao de comprimento (nmero de caracteres), o SAS l dados de qualquer comprimento, mas converte-os internamente para o padro de 8 caracteres de comprimento. Para mais informaes, veja o manual on line SAS Language Reference: Dictionary. m-n Determina que a varivel deva ser lida do dgito m at o n da linha ou registro corrente, sendo m e n nmeros inteiros. Diretivasderegistros - A principal diretiva de leitura de registro expressa pelo caracter de controle /, que determina o avano da leitura de dados para o prximo registro. Caracter branco Quando valores so simplesmente escritos em linhas e em cada linha so separados por caracteres brancos, o SAS entende que a cada nova linha inicia um novo registro e que os caracteres brancos separam os valores das variveis listadas na declarao de INPUT. @@ - Informa que as variveis listadas devem ser lidas em grupos consecutivos da mesma linha de dados, criando um novo registro a cada grupo completo de variveis lidas na mesma linha, quando uma nova linha encontrada a leitura continua a ser feita em grupos da nova linha e assim por diante. Exemplo 3.10 Exemplos de declaraes de input
* EXEMPLO 3.10; DATA A; INPUT @1 NOME $ @20 SEXO $ @(20+2) IDADE 2. PESO 4.1; CARDS; NOMEA67890123456789M 10 217 NOMEB67890123456789F 20 593 ; PROC PRINT DATA=A; RUN; 1 2 3 4 5 6 7 8 9

O programa l: A partir do dgito 1, a varivel NOME, do tipo caracter; A partir do dgito 20, a varivel SEXO , do tipo caracter;

59

SAS - O essencial da linguagem ____________________________________________________________________________________

A partir do dgito 22, a varivel IDADE, do tipo numrico, com dois dgitos significativos e nenhum aps o ponto decimal; Aps o primeiro caracter branco que segue a idade, l a varivel PESO, do tipo numrico decimal com um total de 4 dgitos, sendo dois dgitos significativos e um aps o ponto decimal, implicitamente um dgito includo para o ponto decimal aps a leitura, por isso necessrio declarar um total de 4 dgitos. Se a varivel tivesse sinal de negativo ou positivo seria necessrio adicionar mais um dgito ao comprimento total. O programa imprime o arquivo A como segue:
The SAS System OBS 1 2 NOME NOMEA678 NOMEB678 SEXO M F IDADE 10 20 PESO 21.7 59.3

Observa-se que o SAS converteu o contedo da varivel NOME para o comprimento padro de 8 dgitos, pois o comprimento da varivel no foi explicitamente especificado. 3.4.13 KEEP (INSTRUO) A instruo KEEP informa as variveis que devem ser retidas em um arquivo SAS. As demais variveis por ventura existentes, sero eliminadas do arquivo ao final do processamento do passo de programa. S i n tax e
DATA NomeDoArquivo (KEEP=ListaDeVariveis);

NomeDoArquivo o nome do arquivo de dados (DATA SET) que est sendo criado ou modificado pelo DATA STEP. NomeDoArquivo So os nomes das variveis que devem ser mantidas no arquivo de dados aps a concluso do DATA STEP.

60

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

3.4.14 MERGE (INSTRUO) A instruo MERGE intercala dois ou mais arquivos SAS atravs de uma ou mais variveis previamente ordenadas, comuns aos arquivos que esto sendo intercalados. O ordenamento pode ser feito atravs do procedimento PROC SORT. Todos os arquivos envolvidos devem estar ordenados pelas variveis de controle da intercalao, na mesma seqncia de ordenamento, definidas em uma declarao de BY que escrita imediatamente aps a declarao de MERGE. S i n tax e
MERGE NomeDoArquivo-1 <(Opes)> NomeDoArquivo-2 <(Opes)> <... NomeDoArquivo-n <(Opes)>> <END=Varivel>; BY ListaDeVariveisDeIntercalao;

NomeDoArquivo Identifica cada arquivo que ser intercalado para formar o arquivo resultante da intercalao. Pelo menos dois arquivos devem ser utilizados. Opes So as opes de ordenamento para intercalao. Se no forem especificadas, o SAS intercala o valor de uma varivel em um arquivo com o valor igual da mesma varivel em cada um dos demais arquivos constantes da declarao de MERGE. BY ListaDeVariveisDeIntercalacao So os nomes das variveis pelas quais se deseja intercalar os arquivos. END=Varivel Nomeia e cria uma varivel temporria que contm um indicador de final de arquivo (EOF). Exemplo 3.11 Intercalando arquivos SAS No Exemplo 3.6 foi demonstrado como adicionar dados de um arquivo em outro. Um programa usando dois arquivos para intercal-los com as variveis PARCELA e ESPECIE, atravs da instruo MERGE, pode ser o seguinte:
* EXEMPLO 3.11; TITLE; DATA ARQUIVO1; INPUT PARCELA ESPECIE $ DAP; CARDS; 1 2 3 4

61

SAS - O essencial da linguagem ____________________________________________________________________________________


01 ANGICO 35.5 01 AROEIRA 22.0 01 TIMBAUVA 40.5 01 CABREUVA 51.5 ; DATA ARQUIVO2; INPUT PARCELA ESPECIE $ DAP; CARDS; 02 TIMBAUVA 11.35 02 VASSOURAO 19.0 02 ANGICO 45.5 03 AROEIRA 12.0 03 ANGICO 59.0 02 AROEIRA 32.5 03 ANGICO 33.0 03 CABREUVA 37.0 ; PROC SORT DATA=ARQUIVO1; BY PARCELA ESPECIE; PROC SORT DATA=ARQUIVO2; BY PARCELA ESPECIE; DATA ARQUIVO3; MERGE ARQUIVO1 ARQUIVO2; BY PARCELA ESPECIE; PROC PRINT DATA=ARQUIVO3; RUN; 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

Como resultado tm-se o seguinte relatrio HTML impresso:


Obs 1 2 3 4 5 6 7 8 9 10 11 12 PARCELA 1 1 1 1 2 2 2 2 3 3 3 3 ESPECIE ANGICO AROEIRA CABREUVA TIMBAUVA ANGICO AROEIRA TIMBAUVA VASSOURA ANGICO ANGICO AROEIRA CABREUVA DAP 35.50 22.00 51.50 40.50 45.50 32.50 11.35 19.00 59.00 33.00 12.00 37.00

Exemplo 3.12 Intercalando arquivos SAS Se, em outro caso, fosse necessrio intercalar aos dois primeiros do exemplo anterior com um arquivo contendo os dados das alturas das rvores e calcular o volume das mesmas em metros cbicos utilizando a

62

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

frmula VOLUME=0,6.DAP.ALTURA/40000, isso poderia ser feito como no programa a seguir:


* EXEMPLO 3.12; TITLE; DATA ARQUIVO1; INPUT PARCELA ESPECIE $ DAP; CARDS; 01 ANGICO 35.5 01 AROEIRA 22.0 01 TIMBAUVA 40.5 01 CABREUVA 51.5 ; DATA ARQUIVO2; INPUT PARCELA ESPECIE $ DAP; CARDS; 02 TIMBAUVA 11.35 02 VASSOURAO 19.0 02 ANGICO 45.5 03 AROEIRA 12.0 03 ANGICO 59.0 02 AROEIRA 32.5 03 ANGICO 33.0 03 CABREUVA 37.0 ; DATA ARQUIVO3; INPUT PARCELA ESPECIE $ ALTURA; CARDS; 3 ANGICO 8.5 3 ANGICO 6.0 1 ANGICO 6.0 1 AROEIRA 8.0 1 CABREUVA 11.0 2 ANGICO 8.5 2 AROEIRA 4.5 2 TIMBAUVA 4.5 2 VASSOURA 5.0 3 AROEIRA 3.00 1 TIMBAUVA 9.5 3 CABREUVA 7.0 ; PROC SORT DATA=ARQUIVO1; BY PARCELA ESPECIE; PROC SORT DATA=ARQUIVO2; BY PARCELA ESPECIE; PROC SORT DATA=ARQUIVO3; BY PARCELA ESPECIE; DATA ARQUIVO; MERGE ARQUIVO1 ARQUIVO2 ARQUIVO3; BY PARCELA ESPECIE; VOLUME=0.6*DAP**2*ALTURA/40000; PROC PRINT DATA=ARQUIVO; RUN; QUIT; 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

Como resultado o SAS imprime o relatrio HTML com o contedo do arquivo de dados chamado de ARQUIVO:

63

SAS - O essencial da linguagem ____________________________________________________________________________________ Obs 1 2 3 4 5 6 7 8 9 10 11 12 PARCELA 1 1 1 1 2 2 2 2 3 3 3 3 ESPECIE ANGICO AROEIRA CABREUVA TIMBAUVA ANGICO AROEIRA TIMBAUVA VASSOURA ANGICO ANGICO AROEIRA CABREUVA DAP 35.50 22.00 51.50 40.50 45.50 32.50 11.35 19.00 59.00 33.00 12.00 37.00 ALTURA 6.0 8.0 11.0 9.5 8.5 4.5 4.5 5.0 8.5 6.0 3.0 7.0 VOLUME 0.11342 0.05808 0.43762 0.23374 0.26396 0.07130 0.00870 0.02708 0.44383 0.09801 0.00648 0.14375

3.4.15 OUTPUT (INSTRUO) Orienta a gravao do registro atual em um ou mais arquivos de sada. S i n tax e
OUTPUT <NomeDoArquivo-1> <...NomeDoArquivo-n>;

NomeDoArquivo o nome do arquivo de sada em que o registro corrente (linha de dados) deve ser escrito. Quando for criado um s arquivo j referenciado na declarao de DATA, o nome do mesmo pode ser omitido na declarao de OUTPUT.

64

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Exemplo 3.13 Criando arquivos SAS a partir do arquivo em uso, com a instruo OUTPUT A) Criando um s arquivo a partir do ARQUIVO resultante do exemplo anterior com os dados das rvores com DAP maior do que 30 cm:
* EXEMPLO 3.13 A; * ... INCLUIR AQUI AS LINHAS DO EXEMPLO 2.12 ANTERIOR; DATA MAIORQ30; SET ARQUIVO; IF DAP>30 THEN OUTPUT; PROC PRINT DATA=MAIORQ30; RUN; 1 2 3 4 5 6 7

O resultado da impresso do arquivo MAIORQ30 em formato HTML o seguinte:

The SAS System


Obs PARCELA ESPECIE DAP ALTURA VOLUME 1 2 3 4 5 6 7 8 1 1 1 2 2 3 3 3 ANGICO 35.5 CABREUVA 51.5 TIMBAUVA 40.5 ANGICO 45.5 AROEIRA 32.5 ANGICO 59.0 ANGICO 33.0 CABREUVA 37.0 6.0 11.0 9.5 8.5 4.5 8.5 6.0 7.0 0.11342 0.43762 0.23374 0.26396 0.07130 0.44383 0.09801 0.14375

B) Criando cinco arquivos atravs da instruo OUTPUT:


* EXEMPLO 3.13 B; TITLE; * ... INCLUIR AQUI AS LINHAS DO EXEMPLO 3.12 ANTERIOR; DATA ANG ARO CAB TIM VAS; SET ARQUIVO; IF ESPECIE EQ 'ANGICO' THEN OUTPUT ANG; IF ESPECIE EQ 'AROEIRA' THEN OUTPUT ARO; IF ESPECIE EQ 'CABREUVA' THEN OUTPUT CAB; IF ESPECIE EQ 'TIMBAUVA' THEN OUTPUT TIM; IF ESPECIE EQ 'VASSOURA' THEN OUTPUT VAS; 1 2 3 4 5 6 7 8 9

65

SAS - O essencial da linguagem ____________________________________________________________________________________


PROC PROC PROC PROC PROC RUN; PRINT PRINT PRINT PRINT PRINT DATA=ANG; DATA=ARO; DATA=CAB; DATA=TIM; DATA=VAS; 10 11 12 13 14 15

Como resultado o SAS imprime os arquivos ANG, ARO, CAB, TIM e VAS, criados atravs das instrues de OUTPUT condicionadas pela instruo IF: Obs PARCELA ESPECIE DAP ALTURA VOLUME 1 2 3 4 1 2 3 3 ANGICO 35.5 ANGICO 45.5 ANGICO 59.0 ANGICO 33.0 6.0 8.5 8.5 6.0 0.11342 0.26396 0.44383 0.09801

Obs PARCELA ESPECIE DAP ALTURA VOLUME 1 2 3 1 2 3 AROEIRA 22.0 AROEIRA 32.5 AROEIRA 12.0 8.0 4.5 3.0 0.058080 0.071297 0.006480

Obs PARCELA ESPECIE DAP ALTURA VOLUME 1 2 1 3 CABREUVA 51.5 CABREUVA 37.0 11 7 0.43762 0.14375

Obs PARCELA ESPECIE DAP ALTURA VOLUME 1 2 1 2 TIMBAUVA 40.50 TIMBAUVA 11.35 9.5 4.5 0.23374 0.00870

Obs PARCELA ESPECIE DAP ALTURA VOLUME 1 2 VASSOURA 19 5 0.027075

66

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

3.4.16 PUT (INSTRUO) Especifica as variveis e formatos a serem utilizados para escrever um arquivo externo definido atravs da instruo FILE. S i n tax e
PUT <Especificaes)> <@ | @@>;

Especificaes Especificam o que escrito, como escrito e onde escrito. Normalmente incluem os nomes das variveis cujos valores sero escritos no arquivo externo. Algumas especificaes vlidas so as seguintes: Variveis Nomes das variveis que sero escritas; $ Identificador de varivel de caracter que deve ser escrito aps o nome deste tipo de varivel; n* Determina que devam ser repetidas n vezes o caracter subseqente; m-n Determina que o valor da varivel que antecede deve ser escrito do dgito m at o n, em que m e n so nmero inteiros; _INFILE_ Escreve o ltimo registro de dados; _ALL_ Escreve todos os valores de todas as variveis no arquivo externo; @n Escreve o valor da varivel seguinte a partir do dgito n do registro atual, em que n um nmero inteiro; @(expresso) Escreve o valor da varivel seguinte a partir do dgito resultante da expresso entre parnteses, em que (expresso) uma expresso SAS que resulta em um nmero inteiro; +n Move o apontador n dgitos para frente; +Variavelnumerica Move o apontador para frente conforme o valor da varivel; +(expresso) Move o apontador um nmero de dgitos igual ao resultado da expresso; #n moves the pointer to line n; #Variavelnumerica Move o apontador para a linha indicada pelo valor da varivel numrica; #(expresso) move o apontador pela linha dada pela expresso, em que (expresso) uma expresso SAS que resulta em um nmero inteiro;
67

SAS - O essencial da linguagem ____________________________________________________________________________________

/ Move o apontador para o primeiro dgito da linha seguinte. @ | @@ Mantm a linha atual para execuo da prxima declarao de PUT. Exemplo 3.14 Intercalando arquivos SAS O arquivo de sada do Exemplo 3.12 chamado de ARQUIVO, poderia ser salvo em disco pela seguinte continuao do programa:
* EXEMPLO 3.14; * ... INCLUIR AQUI AS LINHAS DO EXEMPLO 2.12 ANTERIOR; DATA _NULL_; FILENAME ARQ4 C:\SASEXEMPLOS\ARQEXT.DAT; SET ARQUIVO; FILE ARQ4; PUT PARCELA ESPECIE $ DAP 4.1; RUN; 1 2 3 4 5 6 7 8

O contedo do arquivo externo gravado em disco com o nome de ARQEXT.DAT no endereo C:\SASEXEMPLOS\ o seguinte:
1 1 1 1 2 2 2 2 3 3 3 3 ANGICO 35.5 AROEIRA 22.0 CABREUVA 51.5 TIMBAUVA 40.5 ANGICO 45.5 AROEIRA 32.5 TIMBAUVA 11.4 VASSOURA 19.0 ANGICO 59.0 ANGICO 33.0 AROEIRA 12.0 CABREUVA 37.0

3.4.17 RETAIN (INSTRUO) A instruo RETAIN mantm o valor das variveis declaradas na memria, at lhes seja atribudo um novo valor. um recurso til quando se necessita passar valores de um registro para o outro, como o saldo anterior de uma conta, por exemplo. A instruo RETAIN utilizada tambm para simplesmente declarar valores iniciais para variveis.

68

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

As variveis podem ser declaradas com ou sem um valor inicial, mas usualmente com variveis numricas se atribui o valor inicial zero. Se no for atribudo um valor inicial, a varivel inicia com valor perdido. S i n tax e
RETAIN NomeDaVarivel <ValorInicial> <... NomeDaVarivel <ValorInicial>>;

NomeDaVarivel o nome da varivel cujo valor deve ser mantido; ValorInicial o valor inicial da varivel. Exemplo 3.15 Acumulando valores de um registro para o outro com RETAIN
* EXEMPLO 3.15; DATA ARQ (KEEP=ESPECIE FREQU FREQU_AC); RETAIN V_RETIDO 0; FREQU_AC=FREQU+V_RETIDO; V_RETIDO=FREQU_AC; INPUT ESPECIE $ FREQU; CARDS; ANGICO 10 CABREUVA 5 TIMBAUVA 7 ; PROC PRINT DATA=ARQ; RUN; 1 2 3 4 5 6 7 8 9 10 11 12 13

As declaraes do exemplo 3.15 so descritas a seguir: DATA ARQ (KEEP=ESPECIE FREQU FREQU_AC); Cria o arquivo ARQ e mantm no arquivo ao final do DATA STEP somente as variveis ESPECIE, FREQU e FREQU_AC. RETAIN V_RETIDO 0; Retm na memria o valor da varivel V_RETIDO e atribui a ela o valor inicial zero. FREQU_AC=FREQU+V_RETIDO; Soma o valor da varivel lida FREQU com o valor retido em V_RETIDO e atribui o resultado varivel FREQU_AC. V_RETIDO=FREQU_AC; Atribui o valor da varivel FREQU_AC varivel V_RETIDO. INPUT ESPECIE $ FREQU; Instrui a entrada da varivel ESPECIE do tipo caracteres e da varivel FREQU do tipo numrico.

69

SAS - O essencial da linguagem ____________________________________________________________________________________

CARDS; Sinaliza o incio das linhas de dados. ANGICO 10 CABREUVA 5 TIMBAUVA 7 ; Sinaliza o final das linhas de dados. PROC PRINT DATA=ARQ; Imprime o arquivo ARQ. RUN; Executa o programa. O relatrio de impresso do arquivo ARQ pelo programa, em formato HTML, o seguinte:

The SAS System


Obs 1 2 3 ESPECIE ANGICO CABREUVA TIMBAUVA FREQU 10 5 7 FREQU_AC 10 15 22

O programa Exemplo 3.15 l as freqncias de trs espcies na varivel FREQU e as acumula na varivel FREQU_AC, utilizando a varivel V_RETIDO para manter o valor da freqncia acumulada de um registro para o outro, pois o SAS l uma linha de dados, executa todas as declaraes entre a instruo INPUT e a instruo CARDS e, ento, l a prxima linha de dados e, assim, consecutivamente at encontrar o final dos dados. 3.4.18 SET (INSTRUO) L uma observao de um ou mais arquivos SAS. Se aps a instruo SET no for informado o nome de um arquivo, o SAS assume o ltimo arquivo em uso pelo programa. S i n tax e
SET <Nomedoarquivo-1 <(opes)>> <...Nomedoarquivo-n <(opes)>> <opes>;

70

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

(Opes) Aps o nome do arquivo especificam aes a realizar enquanto estiver lendo variveis ou observaes. Opes Ao final da declarao so opes de entrada de dados. Para maiores informaes sobre opes da instruo SET, veja o manual: SAS Language Reference, Version 8, Chapter 6. 3.4.19 SUM (INSTRUO) Adiciona o resultado de uma expresso a uma varivel acumulativa do tipo numrico. S i n tax e
NomeDaVariavel + Expresso;

NomeDaVariavel o nome da varivel acumulativa. Expresso qualquer expresso SAS vlida para valores numricos. 3.4.20 UPDATE (INSTRUO) Atualiza um arquivo mestre com os dados de um arquivo de transao. utilizada em conjunto com a instruo BY, que informa as variveis de controle para a atualizao semelhana da instruo MERGE. Os valores do arquivo mestre sero sobrepostos com os valores do arquivo de transao, conforme as variveis de controle listadas na instruo BY. S i n tax e
UPDATE ArquivoMestre ArquivoDeTransao; BY ListaDeVariaveis;

ArquivoMestre o nome do arquivo que ser atualizado. ArquivoDeTransao o nome do arquivo que fornecer os dados para atualizar o arquivo mestre. ListaDeVariveis So os nomes das variveis de controle.

71

SAS - O essencial da linguagem ____________________________________________________________________________________

3.4.21 WHERE (INSTRUO) Define condies para a seleo de observaes de um arquivo SAS. S i n tax e
WHERE Expresso;

Expresso qualquer expresso SAS que tenha um resultado que quando for verdadeiro seleciona o registro atual, ou o despreza se o resultado da expresso for falso. Exemplo 3.16 Selecionando registros com WHERE Utilizando o arquivo externo gravado em disco com o nome de ARQEXT.DAT pelo programa Exemplo 3.14 no endereo

C:\SASEXEMPLOS\, poderiam ser selecionadas as rvores das espcies com nome comeando pela letra A e DAP>20, atravs do programa Exemplo 3.16, a seguir:
* EXEMPLO 2.16; DATA ARQ; INFILE 'C:\SASEXEMPLOS\ARQEXT.DAT'; INPUT PARCELA ESPECIE $ DAP 4.1; WHERE SUBSTR(ESPECIE,1,1)='A' AND DAP>20; PROC PRINT DATA=ARQ; RUN; 1 2 3 4 5 6 7

As declaraes do programa Exemplo 3.16 realizam o seguinte: DATA ARQ; Cria o arquivo SAS denominado ARQ. INFILE 'C:\SASEXEMPLOS\ARQEXT.DAT'; Chama o arquivo externo ARQEXT.DAT localizado no endereo C\SAS\. INPUT PARCELA ESPECIE $ DAP 4.1; Instrui a entrada das variveis ESPECIE (de caracteres) e DAP (numrica). WHERE SUBSTR(ESPECIE,1,1)='A' AND DAP>20; Determina a seleo dos registros onde o valor de uma subsrie de caracteres, comeando pela posio 1, com o comprimento de 1 caracter, do valor da varivel ESPECIE igual letra A e o DAP tem valor maior do que 20.

72

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

PROC PRINT DATA=ARQ; Imprime o arquivo ARQ. RUN; Executa o programa. Como resultado impressa a seguinte tabela:

The SAS System


Obs PARCELA ESPECIE DAP 1 2 3 4 5 6 1 1 2 2 3 3 ANGICO 35.5 AROEIRA 22.0 ANGICO 45.5 AROEIRA 32.5 ANGICO 59.0 ANGICO 33.0

73

SAS - O essencial da linguagem ____________________________________________________________________________________

Captulo 4 : Formatos de sada (FORMAT) e entrada (INFORMAT )

Este

captulo

uma

verso

resumida

sobre

assunto

"FORMATOS" extrado dos manuais do SAS System, verso 8. As instrues de formato so importantes porque fixam os formatos para entrada e sada de dados. O SAS System utiliza o formato interno padro para variveis numricas que lhes d a maior preciso. Quando se deseja que o formato seja diferente do padro (maior preciso), preciso especificar o formato na construo do arquivo de dados aps a instruo DATA, num DATA STEP, o que geralmente feito, ou atravs de uma instruo INPUT, ou de uma instruo FORMAT. Para variveis de caracteres, o padro o comprimento de oito (8) dgitos para impresso, embora o SAS System guarde na memria o valor da varivel com o comprimento em que foi gerado. Quando se deseja que as variveis sejam impressas em maior comprimento, necessrio declarar o comprimento na construo do arquivo de dados, aps a instruo DATA, num DATA STEP, atravs de uma instruo LENGTH, por exemplo.

74

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

O SAS System tem muitos padres prontos para serem usados com variveis de caracteres, numricas, data e horrio, mas o programador pode criar seus prprios formatos atravs do procedimento PROC FORMAT, que no deve ser confundido com a instruo FORMAT que utilizada com o DATA STEP.

4.1 FORMAT (INSTRUO DE FORMATOS DE SADA)


FORMAT uma instruo do SAS System usada com o DATA STEP para fixar o formato de impresso ou de gravao dos valores de variveis em relatrios ou arquivos de sada, respectivamente. Formatos podem ser especificados atravs de: Instrues PUT, ATTRIB e FORMAT; Funes PUT, PUTC, PUTN e %SYSFUNC; Procedimento PROC FORMAT. A instruo PUT com um formato aps o nome da varivel, usa o formato especificado para escrever o valor da varivel em um arquivo de dados. A funo PUT escreve uma varivel, numrica ou de caracteres, ou uma constante, com qualquer formato vlido e retorna o resultado do valor em caracteres. A funo macro %SYSFUNC (ou %QSYSFUNC) executa funes SAS internas ou funes SAS definidas pelo usurio e aplica um formato opcional ao resultado da funo na sada de um DATA STEP. A instruo FORMAT, a partir da linha de declarao de formato, associa um formato permanentemente uma varivel em um programa.

75

SAS - O essencial da linguagem ____________________________________________________________________________________

A instruo ATTRIB associa permanentemente atributos a uma ou mais variveis, incluindo formatos. 4.1.1 FORMATOS

DE SADA DEFINIDOS PELO USURIO

Alm dos formatos internos do sistema, o usurio pode criar seus prprios formatos utilizando o procedimento PROC FORMAT. H duas formas de disponibilizar os formatos definidos pelo usurio: Criando formatos permanentes usando PROC FORMAT em um programa; Gravando o cdigo fonte que cria o formato em um passo PROC FORMAT com o programa que os usa. Para informaes adicionais sobre formatos de sada, veja: Procedimento FORMAT no SAS Procedures Guide; Instruo PUT no SAS Language Reference: Dictionary; Funo PUT no SAS Language Reference: Dictionary; Funo Macro %SYSFUNC no SAS Macro Language: Reference; Instruao FORMAT no SAS Language Reference: Dictionary; Instruo ATTRIB no SAS Language Reference: Dictionary. S i n tax e Geral:
<$>NomeDoFormato<w>.<d>

$ - Indica um formato de caracter. Quando ausente, indica que o formato numrico. NomeDoFormato Nome do formato atribuido pelo usurio, ou o nome de um formato SAS. Formatos definidos pelo usurio devem ser previamente declarados atravs de uma instruo VALUE em um procedimento PROC FORMAT. w Especifica o comprimento, que para muitos formatos o nmero de dgitos no arquivo de sada. d Especifica o nmero de casas decimais para formatos numricos. FORMAT (instruo):
FORMAT Variveis <Formato> <DEFAULT=FormatoPadro>;

76

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Variveis - Nomes de varivel(is) a serem associadas a um formato. Para desassociar um formato de uma varivel usa-se a instruo FORMAT seguida do nome da varivel sem nenhum formato. Formato Formato especificado para a impresso ou gravao da varivel. 4.1.2 FORMATOS
Formato $w. $ASCIIw. $CHARw. $EBCDICw. $HEXw. Descrio Padro geral para caracteres Converte caracteres para o padro ASCII Padro geral para caracteres Converte caracteres para o padro EBCDIC Converte caracteres para o padro hexadecimal DE SADA PARA VARIVEIS DE CARACTERES Amplitude Comprimento Alinhamento 1-32767 1-32767 1-32767 1-200 1-32767 1-200 1-200 1-32767 1-32767 1-32767 1-32767 1-32767 1-32767 1-200 1-200 1 ou o compr. da variavel 1 1 ou comprim. 1 comprim. 8 ou comprim. 8 ou comprim. 1 se sem especificao 1 se sem especificao 8 8 8 8 8 uo comprim. 8 ou comprim. esquerdo esquerdo esquerdo direito esquerdo esquerdo esquerdo esquerdo esquerdo esquerdo esquerdo esquerdo esquerdo esquerdo

Converte caracteres para maiculo quando com opo $MSGCASEw. MSGCASE ativa $QUOTEw. $REVERJw. $REVERSw. $UCS2Xw. $UCS2Bw. $UCS2Lw. $UTF8Xw. $UPCASEw. $VARYINGw. Escreve valores entre aspas Escreve na ordem inversa preservando brancos Escreve na ordem inversa e alinha a esquerda Escreve em 16-bit UCS2 Unicode sem marca de ordem de byte. Escreve um valor SAS value em 16-bit UCS2 Unicode indiano grande sem marca de ordem de byte. Escreve um valor SAS value em 16-bit UCS2 Unicode indiano pequeno. Escreve em cdigo Unicode Transformation Format (UTF8). Converte caracteres para maiculo Escreve dados de carter de comprimento variado

Outros formatos esto disponveis ver manuais do SAS System

77

SAS - O essencial da linguagem ____________________________________________________________________________________

4.1.3 FORMATOS
Formato w.d BESTw. BINARYw. COMMAw.d COMMAXw.d DOLLARw.d DOLLARXw.d Dw.s Ew. Descrio

DE SADA PARA VARIVEIS NUMRICAS Amplitude 1-32 1-32 1-64 2-32 2-32 2-32 2-32 0 or 2 0 or 2 0 or 2 0 or 2 Amplitude Comprimento Alinhamento Decimal d<w 12 8 6 6 6 6 12 7-32 12 direito direito esquerdo direito direito direito direito direito direito

Padro numrico O SAS escolhe a melhor anotao Converte valores numricos para representao binria Escreve valores numricos com vrgulas e pontos decimais Escreve valor numrico com vrgulas e perodos Escreve valores numricos com sinais de cifro, vrgulas e pontos decimais Escreve valores numricos com sinais de cifro, perodos e vrgulas Escreve dgitos significantes Escreve valores numricos em notao cientfica Gera um valor nativo de ponto flutuante de preciso simples, multiplicando um nmero elevado a 10 potencia Converte valores numricos para fraes Escreve valores numricos como numerais romanos Impresso de zeros principais Escreve para nativo dados numricos padro mainframe IBM Escreve valores numricos como palavras, com fraes mostradas numericamente Escreve valores numricos como palavras Escreve valores numricos com sinais de iene, vrgulas e pontos decimais Escreve dados em formato decimal dividido em zonas

FLOATw.d FRACTw. ROMANw. Zw.d S370FFw.d WORDFw. WORDSw. YENw.d ZDw.d

4 4-32 2-32 1-32 1-32 5-32767 5-32767 1-32 1-32 0-10

4 10 6 1 12 10 10 1 1

esquerdo direito esquerdo direito

direito esquerdo

Outros formatos esto disponveis ver manuais do SAS System

78

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

4.1.4 FORMATOS
Formato DATEw. Descrio

DE SADA PARA VARIVEIS DE DATA_E_HORRIO Amplitude Comprimento 5-9 7-40 7-40 2-32 2-10 2-10 1-32 5-9 5-7 3-32 3-32 7 19 16 2 8 8 9 7 5 18 18

Escreve valores de data na forma ddmmmaa ou ddmmmaaaa

Escreve valores de data-horrio na forma ddmmmaa:hh:mm:ss.ss com DATEAMPMw.d ou PM DATETIMEw.d DAYw. DDMMYYw. DDMMYYxw. DOWNAMEw. DTDATEw. DTMONYYw. WORDDATEw. WORDDATXw. Escreve valores de data-horrio na forma ddmmmaa:hh:mm:ss.ss Escreve dia do ms Escreve valores de data na forma ddmmaa ou ddmmaaaa Escreve valores de data na forma ddmmaa ou ddmmaaaa com um separador especificado Escreve valores de dados como o nome do dia da semana Espera um valor de data-horrio como contribuio e escreve valores de data na forma ddmmmaa ou ddmmmaaaa Escreve a parte de data de um valor de data-horrio como o ms e ano no mmmaa na forma ou mmmaaaa Escreve valores de data como o nome do ms, o dia e o ano na forma ms-nome dd, aaaa Escreve valores de data como o dia, nome do ms, e o ano na forma dd na forma ms-nome aaaa Escreve a parte de data de um valor de data-horrio como o dia da semana e a data pelo dia-da-semana na forma, dd ms-nome aa (ou aaaa) Escreve a parte de data de um valor de data-horrio como o ano na forma aa ou aaaa Escreve valores de data como o ano Escreve valores de data como o ano e ms e os separa por um cartere Escreve valores de data na forma aammdd ou aaaammdd Escreve valores de data na forma aammdd ou aaaammdd com um separador especificado Escreve valores de data como o ano e abreviao de ms Escreve valores de data como o ano e quarto de ano Valores de data na formatos como o ano e quarto, separados por um cartere Escreve valores de data como o ano e o quarto em numeral romano e os separa com cartere

DTWKDATXw.

3-37

29

DTYEARw. YEARw. YYMMxw. YYMMDDw. YYMMDDxw. YYMONw. YYQw. YYQxw. YYQRxw.

1-4 2-32 5-32 2-8 2-10 5-32 4-32 4-32 6-32

4 4 6 8 8 7 6 6 8

Outros formatos esto disponveis ver manuais do SAS System

79

SAS - O essencial da linguagem ____________________________________________________________________________________

4.2 INFORMAT (INSTRUO DE FORMATOS DE ENTRADA)


INFORMAT uma instruo usada com o SAS System para ler valores de variveis. Formatos podem ser especificados atravs de: Instrues INPUT, ATTRIB e INFORMAT; Funes INPUT, INPUTC e INPUTN; Procedimento PROC INFORMAT. A instruo INPUT com um formato aps o nome da varivel, usa o formato especificado para escrever o valor da varivel em um arquivo de dados. A funo INPUT escreve uma varivel, numrica ou de caracteres, ou uma constante, com qualquer formato vlido e retorna o resultado do valor em caracteres. A instruo INFORMAT, a partir da linha de declarao de formato, associa um formato de entrada a uma varivel de forma permanente em um programa. A instruo ATTRIB associa permanentemente atributos a uma ou mais variveis, incluindo formatos.

S i n tax e Geral:
<$>NomeDoFormato<w>.<d>

$ - Indica um formato de caracter. Quando ausente, indica que o formato numrico. NomeDoFormato Nome do formato atribuido pelo usurio, ou o nome de um formato SAS. Formatos definidos pelo usurio devem ser previamente declarados atravs de uma instruo VALUE em um procedimento PROC FORMAT.

80

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

w Especifica o comprimento, que para muitos formatos o nmero de dgitos no arquivo de sada. d Especifica o nmero de casas decimais para formatos numricos. INFORMAT (instruo):
INFORMAT Variveis<Informat> <DEFAULT=Informat-Padro>;

Variveis - Nomes de varivel(is) a associar com um INFORMAT. Para desassociar um informat de uma varivel, usa-se o nome da varivel aps a instruo INFORMAT sem nenhum informat. Informat Especificao de um formato de entrada de dados (informat) para leitura de valores de varivel(is). Informats associados com variveis usando uma instruo INFORMAT que se comporta como informat usado com sinal modificador de dois pontos. O SAS System l as variveis usando lista de input, mas com um informat. 4.2.1 FORMATOS
Informat $w. $CHARw. $EBCDICw. $REVERJw. $REVERSw. $UPCASEw. Descrio Caracter padro L dados de caracter com espaos em branco Converte dados EBCDIC a formato nativo de caracter L dados de caracter da direita para esquerda e preserva espaos em branco L dados de caracter da direita para esquerda e alinha a esquerda Converte caracteres para maisculo DE ENTRADA PARA VARIVEIS DE CARACTERES Amplitude 1-3276 1-3276 1-3276 1-32767 1-32767 1-3276 1-3276 Comprimento 1 1 1 1 se w no especificado 1 se w no especificado 8 8

$VARYINGw. L dados de caracter de comprimento variado

Outros formatos esto disponveis ver manuais do SAS System 4.2.2 FORMATOS
Formato w.d BZw.d COMMAw.d COMMAXw.d Ew.d NUMXw.d Descrio L dados em padro numrico Converte espaos em branco a zeros Remove caracteres embutidos Remove caracteres embutidos L valores numricos que so armazenados em notao cientfica e preciso dupla L valores numricos com uma vrgula para o ponto

DE ENTRADA PARA VARIVEIS NUMRICAS Amplitude Comprimento Alinhamento 1-32 1-32 1-32 1-32 7-32 1-32 0-31 0-31 0-31 0-31 0-31 1 1 1 12 12

81

SAS - O essencial da linguagem ____________________________________________________________________________________ decimal PERCENTw.d Converte porcentagens em valores numricos S370FF S370FPDw.d ZDw.d ZDBw.d ZDVw.d L dados numricos para EBCDIC L dados empacotados em formato de mainframe IBM Leituras divididas em zonas de dados decimais Leituras divididas em zonas de dados decimais nos quais os zeros foram espao em branco esquerdo L e valida dados decimais divididos em zonas 1-32 1-32 1-16 1-32 1-32 1-32 1-10 0-31 0-10 6 12 1 1 1 1

Outros formatos esto disponveis ver manuais do SAS System 4.2.3 FORMATOS
Informat DATEw. DATETIMEw. de DDMMYYw. EURDFDEw. EURDFDTw. EURDFMYw. JULIANw. MMDDYYw. MONYYw. TIMEw.d TODSTAMPw. YYMMDDw. YYMMNw. YYQw. DE ENTRADA PARA DATA, HORRIO E DATA-HORRIO Amplitude 7-32 13-40 6-32 7-32 13-40 5-32 5-32 6-32 5-32 5-32 6-32 4-6 4-32 Comprimento 7 18 8 7 18 5 5 6 5 8 8 8 4 4

Descrio L valores de data na forma DDMMMYY ou DDMMMYYYY L valores data-horrio na forma ddmmmyy e hh:mm:ss.ss ou ddmmmyyyy hh:mm:ss.ss L valores de data na forma DDMMYY ou DDMMMYYYY L valores de data internacional L data-horrio internacional na forma ddmmmyy e hh:mm:ss.ss ou ddmmmyyyy hh:mm:ss.ss L valores de data de ms e de ano na forma mmmyy ou mmmyyyy L datas Juliano na forma (YYDDD ou YYYYDDD) L valores de data na forma mmddyy ou mmddyyyy L data de ms e ano na forma mmmyy ou mmmyyyy L hora minuto e segundos na forma hh:mm:ss.ss L 8-byte de stamp de horrio-de-dia L valores de data na forma yymmdd ou yyyymmdd L valores de data na forma yyyymm ou yymm L quartos de ano

Outros formatos esto disponveis ver manuais do SAS System

4.3 PROC FORMAT


O procedimento PROC FORMAT um mtodo simples de criar formatos personalizados.

82

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

S i n tax e
PROC FORMAT <Opes>; EXCLUDE Entradas(s); INVALUE <$>Nome <(Opes-de-Informat)> Amplitude(s); PICTURE Nome <(Opes)> Amplitude-1 <(Picture_1-Opes)> <...Amplitude-n <(Picture_n-Opes)>>; SELECT Entrada(s); VALUE <$>Nome <(Opes)> Amplitude(s);

Opes do procedimento PROC FORMAT: CNTLIN= Especifica um arquivo SAS do qual PROC FORMAT constroi um formato de entrada ou de sada. CNTLOUT= Cria um arquivo SAS que armazena informao sobre formatos de entrada e sada. FMTLIB Imprime infromao sobre formatos. LIBRARY= Especifica um catlogo SAS que conter formatos criados pelo usurio com um passo de PROC FORMAT. MAXLABLEN= Especifica o nmero de caracteres do valor formatado que aparecer no output do PROC FORMAT. MAXSELEN= Especifica o nmero de caracteres de valor e final que aparece no output do PROC FORMAT. NOREPLACE Impede um novo formato de repassar um existente com mesmo nome. PAGE Imprime informao sobre cada formato em uma pgina separada. Opes comuns das instrues de Informat e de Format: A seguir so descritas as opes vlidas com as instrues INVALUE, PICTURE e VALUE, que so colocadas entre parenteses aps um nome de informat ou format. DEFAULT=comprimento Especifica um comprimento padro para o formato. FUZZ=fatorfrisado Especifica um fator frisado para emparelhar valores a uma amplitude. MAX=comprimento Especifica um comprimento mximo para o formato. Padro=40. MIN=comprimento Especifica um comprimento mnimo para o formato. Padro=1. NOTSORTED Armazena os valores na ordem especificada pelo usurio, sem tentar orden-los alfabeticamente ou numericamente. MULTILABEL - Permite mltiplos valores para uma dada amplitude ou para sobrepor amplitudes.

83

SAS - O essencial da linguagem ____________________________________________________________________________________

Especificando valores e amplitudes A especificao de amplitudes de formatos obrigatria. As instrues INVALUE, PICTURE, and VALUE acitam valores numricos do lado esquerdo do sinal de igualdade. As instrues INVALUE e VALUE aceitam caracteres tambm. Pode haver mltiplas amplitudes ou valores em cada informao de amplitude separadas por vrgulas. Cada valor ou amplitude um dos seguintes: Valor um valor simples como 12 ou 'BR'; Amplitude - uma lista de valores como 10-20 ou 'A'-'Z'. possvel utilizar as clusulas LOW ou HIGH como um valor em uma amplitude ou o smbolo < para excluir valores menores ou maiores que o especificado. Exemplos: a amplitude 0<-100 no inclui o valor zero, enquanto 0-<100 no inclui o valor 100; em 'AA'-<'AJ'=1 'AJ'-'AZ'=2 AJ no pertence primeira amplitude (1), mas pertence amplitude 2. 4.3.1 VALUE (INSTRUO) Cria um formato que especifica cordes de caracteres a usar para imprimir valores de variveis. S i n tax e
VALUE <$>Nome <(Format-Opes)> <Amplitude(s)>;

Opes - FUZZ= fuzz-factor, MAX=length, MIN=length, NOTSORTED, MULTILABEL. 4.3.2 INVALUE (INSTRUO) Cria um formato de entrada para leitura e converso de linhas de valores de dados. S i n tax e
INVALUE <$>Nome <(Informat-Opes)> <Amplitude(s)>;

Nome Denominao do formato que est sendo criado. Amplitude(s) Especifica uma linha de dados e valores em que a linha de dados ir se transformar. Pode ser um ou mais dos seguintes: valor-ou-amplitude-1 <..., valor-ouamplitude-n>= valor-no-formatado |[informat-existente]. O informat converte a linha de dados para os valores-no-formatados direita do sinal de igualdade.

84

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Valor-no-formatado o valor em que se deseja que a linha de valor-ou-amplitude se transforme. Usa-se uma das seguintes formas para valores no formatados: Srie-decaracteres', nmero. _ERROR_ Cria valores designados como invlidos. _SAME_ Impede que o informat de converter a linha de dados como qualquer outro valor. Informat-existente um formato suprido pelo SAS ou previamente definido pelo usurio. Opes - DEFAULT= , FUZZ= , MAX= , MIN= , NOTSORTED , JUST , UPCASE. JUST Alinha esquerda todos os cordes de caracteres antes de os comparar s amplitudes. UPCASE Converte todas as linhas de valores para maisculo antes de os comparar com possveis amplitudes. 4.3.3 SELECT (INSTRUO) Seleciona entradas de processamento pelas opes FMTLIB e CNTLOUT=. S i n tax e
SELECT entrada(s);

Entrada(s) Especifica um ou mais entradas para processar. So usadas as seguintes regras especificando entradas com a instruo SELECT: Nomes de entradas que contm caracteres so precedidos por um cifro ($). Nomes de entradas que contm caracteres so precedidos por um arroba (@). Nomes de entradas que contm informats de caracteres so precedidos por um arroba e um cifro (@$).

4.3.4 PICTURE (INSTRUO) Cria um modelo para imprimir nmeros. S i n tax e


PICTURE Nome <(Format-Opes)>

85

SAS - O essencial da linguagem ____________________________________________________________________________________


<Amplitude-1 <(Picture-1-Opes)> <...Amplitude-n <(Picture-n-Opes)>>>;

Nome o nome do formato que est sendo criado. Opes DEFAULT= , FUZZ= , MAX= , MIN= , MULTILABEL, NOTSORTED, ROUND, FILL= , MULTIPLIER= , NOEDIT, PREFIX= . ROUND Arredonda o valor para o inteiro mais prximo antes de formatar. FILL= Especifica um caracter que completa o valor formatado. MULTIPLIER= Especifica um nmero para multiplicar o valor da varivel antes de o formatar. NOEDIT Especifica que nmeros so mensagens em vez de dgitos seletores. PREFIX= Especifica um caracter de prefxo para o valor formatado. Outros argumentos da instruo - DATATYPE=DATE | TIME | DATETIME , DECSEP='character' , DIG3SEP='character' . 4.3.5 EXCLUDE (INSTRUO) Exclui entradas do processamento pelas opes FMTLIB e CNTLOUT=. S i n tax e
EXCLUDE entrada(s);

Entrada(s) Especifica um ou mais catlogos de entrada para excluir do processamento. So usadas as seguintes regras para especificar entradas na instruo EXCLUDE: Nomes de entradas que contm caracteres so precedidos por um cifro ($). Nomes de entradas que contm caracteres so precedidos por um arroba (@). Nomes de entradas que contm informats de caracteres so precedidos por um arroba e um cifro (@$).

4.4 EXEMPLOS
/* S A S S A M P L E L I B R A R Y /* NAME: BPG18R01 /* REF: SAS PROCEDURES GUIDE, CHAPTER 18 OPTIONS LS=132; PROC FORMAT; */ */ */

86

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
PICTURE PHONENUM OTHER='000/000-0000'; PICTURE FAX OTHER='0999)999-9999' (PREFIX='('); RUN; DATA A; INPUT PHONE FX; PUT PHONE PHONENUM.; FORMAT FX FAX.; CARDS; 9196778000 3332211111 9195551212 5556677777 ; RUN; PROC FORMAT; PICTURE PHONENUM OTHER='000/000-0000'; PICTURE FAX OTHER='0999)999-9999' (PREFIX='('); DATA A; INPUT PHONE FX; PUT PHONE PHONENUM.; FORMAT FX FAX.; CARDS; 9196778000 3332211111 9195551212 5556677777 ; PROC PRINT DATA=A; FORMAT PHONE PHONENUM.; TITLE "FORMATTING IN THE PROC PRINT STEP"; RUN; PROC FORMAT; INVALUE GRADE 'A'=4 'B'=3 'C'=2 'D'=1 'F'=0; DATA GRADES; INPUT NOME $ (COURSE1-COURSE3) (: GRADE.); GPA = MEAN(OF COURSE1-COURSE3); CARDS; BILL A B A JIM A B B RICK B C D ROBERT D . F ; PROC PRINT DATA=GRADES; TITLE "READING DATA WITH AN INFORMAT"; RUN; PROC FORMAT; PICTURE MILES 1-99='000000' 100-HIGH='>100 MILES' (NOEDIT); DATA TEMP; INPUT NOME $ DISTANCE 3.; CARDS; JOHN 300

87

SAS - O essencial da linguagem ____________________________________________________________________________________


MARY 600 DAVID 27 ANN 2 ; PROC PRINT DATA=TEMP; FORMAT DISTANCE MILES.; TITLE "NOEDIT OPTION"; RUN; DATA TEST; A=123.45; B=123.45; C=12345; D=12345; RUN; PROC FORMAT; PICTURE MWDEC LOW-HIGH='00000.0' (MULT=.1); PICTURE MNODEC LOW-HIGH='00000.0' (MULT=10); RUN; DATA TEMP; INPUT CENTS; CARDS; 4123 2130 7250 5379 ; PROC FORMAT; PICTURE DOLLS LOW-HIGH='009' (MULT=.01); RUN; PROC PRINT; FORMAT CENTS DOLLS.; RUN; PROC FORMAT; PICTURE FEET OTHER='000000009' (MULT=5280); RUN; DATA FEET; INPUT MILES @@; FORMAT MILES FEET.; CARDS; 1 1.5 2 ; RUN; PROC PRINT; RUN; PROC FORMAT FMTLIB; TITLE "FMTLIB OPTION"; VALUE ZIPNE

88

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
01000-02799='MASSACHUSETTS' 02800-02999='RHODE ISLAND' 03000-03899='NEW HAMPSHIRE' 03900-04999='MAINE' 05000-05999='VERMONT' 06000-06999='CONNECTICUT' 07000-08999='NEW JERSEY' 09000-14999='NEW YORK' 15000-19699='PENNSYLVANIA' 19700-19999='DELAWARE' ; TITLE "PAGE OPTION WITH PICTURE FORMATS"; PROC FORMAT PAGE; PICTURE PROT LOW- -1E5='-OVERFLOW' (NOEDIT) -99999.99-<0='000,009.99' (PREFIX='-' FILL='*') 0-999999.99='000,009.99' (FILL='*') 1E6-HIGH='OVERFLOW' (NOEDIT); PICTURE EUROPE LOW-0='00.009,00' (PREFIX='-' MULT=100) 0-HIGH='00.009,00' (MULT=100); PROC FORMAT; /* ZIPST: CONVERTS ZIP CODES TO STATE NOMES */ VALUE ZIPST 00600-00999='PUERTO RICO' 01000-02799='MASSACHUSETTS' 02800-02999='RHODE ISLAND' 03000-03899='NEW HAMPSHIRE' 03900-04999='MAINE' 05000-05999='VERMONT' 06000-06999='CONNECTICUT' 07000-08999='NEW JERSEY' 09000-14999='NEW YORK' 15000-19699='PENNSYLVANIA' 19700-19999='DELAWARE' 20000-20599='DISTRICT OF COLUMBIA' 20600-21999='MARYLAND' 22000-24699='VIRGINIA' 24700-26899='WEST VIRGINIA' 27000-28999='NORTH CAROLINA' 29000-29999='SOUTH CAROLINA' 30000-31999='GEORGIA' 32000-34999='FLORIDA' 35000-36999='ALABAMA' 37000-38599='TENNESSEE' 38600-39799='MISSISSIPPI' 40000-42799='KENTUCKY' 43000-45899='OHIO' 46000-47999='INDIANA' 48000-49999='MICHIGAN' 50000-52899='IOWA' 53000-54999='WISCONSIN' 55000-56799='MINNESOTA' 57000-57799='SOUTH DAKOTA' 58000-58899='NORTH DAKOTA' 59000-59999='MONTANA' 60000-62999='ILLINOIS' 63000-65899='MISSOURI' 66000-67999='KANSAS' 68000-69399='NEBRASKA' 70000-71499='LOUISIANA' 71600-72999='ARKANSAS' 73000-74999='OKLAHOMA' 75000-79999='TEXAS' 80000-81699='COLORADO' 82000-83199='WYOMING' 83200-83899='IDAHO' 84000-84799='UTAH' 85000-86599='ARIZONA' 87000-88499='NEW MEXICO' 89000-89899='NEVADA' 90000-96699='CALIFORNIA' 96700-96899='HAWAII' 96900-96999='GUAM' 97000-97999='OREGON' 98000-99499='WASHINGTON' 99500-99999='ALASKA' ; /* STATE: CONVERTS STATE ABBREV. TO STATE NOMES */ VALUE $STATE 'AL'='ALABAMA' 'NB'='NEBRASKA' 'AK'='ALASKA' 'NV'='NEVADA' 'AZ'='ARIZONA' 'NH'='NEW HAMPSHIRE' 'AR'='ARKANSAS' 'NJ'='NEW JERSEY' 'CA'='CALIFORNIA' 'NM'='NEW MEXICO' 'CO'='COLORADO' 'NY'='NEW YORK' 'CT'='CONNECTICUT' 'NC'='NORTH CAROLINA'

89

SAS - O essencial da linguagem ____________________________________________________________________________________


'DE'='DELAWARE' 'ND'='NORTH DAKOTA' 'DC'='DISTRICT OF COLUMBIA' 'OH'='OHIO' 'FL'='FLORIDA' 'OK'='OKLAHOMA' 'GA'='GEORGIA' 'OR'='OREGON' 'HI'='HAWAII' 'PA'='PENNSYLVANIA' 'ID'='IDAHO' 'RI'='RHODE ISLAND' 'IL'='ILLINOIS' 'SC'='SOUTH CAROLINA' 'IN'='INDIANA' 'SD'='SOUTH DAKOTA' 'IA'='IOWA' 'TN'='TENNESSEE' 'KS'='KANSAS' 'TX'='TEXAS' 'KY'='KENTUCKY' 'UT'='UTAH' 'LA'='LOUISIANA' 'VT'='VERMONT' 'ME'='MAINE' 'VA'='VIRGINIA' 'MD'='MARYLAND' 'WA'='WASHINGTON' 'MA'='MASSACHUSETTS' 'WV'='WEST VIRGINIA' 'MI'='MICHIGAN' 'WI'='WISCONSIN' 'MN'='MINNESOTA' 'WY'='WYOMING' 'MS'='MISSISSIPPI' 'RQ'='PUERTO RICO' 'MO'='MISSOURI' 'GQ'='GUAM' 'MT'='MONTANA' '99'='FOREIGN' ; /* STATE: OFFICIAL CENSUS BUREAU CODES FOR STATE */ VALUE STATE 01='ALABAMA' 30='MONTANA' 02='ALASKA' 31='NEBRASKA' 04='ARIZONA' 32='NEVADA' 05='ARKANSAS' 33='NEW HAMPSHIRE' 06='CALIFORNIA' 34='NEW JERSEY' 08='COLORADO' 35='NEW MEXICO' 09='CONNECTICUT' 36='NEW YORK' 10='DELAWARE' 37='NORTH CAROLINA' 11='D.C.' 38='NORTH DAKOTA' 12='FLORIDA' 39='OHIO' 13='GEORGIA' 40='OKLAHOMA' 15='HAWAII' 41='OREGON' 16='IDAHO' 42='PENNSYLVANIA' 17='ILLINOIS' 44='RHODE ISLAND' 18='INDIANA' 45='SOUTH CAROLINA' 19='IOWA' 46='SOUTH DAKOTA' 20='KANSAS' 47='TENNESSEE' 21='KENTUCKY' 48='TEXAS' 22='LOUISIANA' 49='UTAH' 23='MAINE' 50='VERMONT' 24='MARYLAND' 51='VIRGINIA' 25='MASSACHUSETTS' 53='WASHINGTON' 26='MICHIGAN' 54='WEST VIRGINIA' 27='MINNESOTA' 55='WISCONSIN' 28='MISSISSIPPI' 56='WYOMING' 29='MISSOURI' ; DATA NEW; INPUT ZIP ABBREV $ CENSUSBU; ZIPST=PUT(ZIP,ZIPST.); CSTATE=PUT(ABBREV,$STATE.); NSTATE=PUT(CENSUSBU,STATE.); CARDS;

90

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
27512 NC 37 ; PROC PRINT; VAR ZIP ZIPST ABBREV CSTATE CENSUSBU NSTATE; TITLE "FORMATTED STATE CODES AND ABBREVIATIONS"; RUN; PROC FORMAT; PICTURE ACCT PICTURE

PICTURE PICTURE PICTURE PICTURE PICTURE PICTURE PICTURE RUN;

LOW-<0='000,009.99)' (PREFIX='(') 0-HIGH='000,009.99 '; PROT LOW- -1E5='-OVERFLOW' (NOEDIT) -99999.99-<0='000,009.99' (PREFIX='-' FILL='*') 0-999999.99='000,009.99' (FILL='*') 1E6-HIGH='OVERFLOW' (NOEDIT); DOL LOW-<0='000,009.99' (PREFIX='$-') 0-HIGH='000,009.99' (PREFIX='$'); RSIGN LOW-<0='000,009.99-' 0-HIGH='000,009.00+'; CREDIT LOW-<0='00,009.99DR' 0-HIGH='00,009.99CR'; EUROPE LOW-<0='00.009,00' (PREFIX='-' MULT=100) 0-HIGH='00.009,00' (MULT=100); BLANK LOW-<0='000 009.99' (PREFIX='-') 0-HIGH='000 009.99'; THOUS 0-HIGH='00,009K' (MULT=.001); PHONE OTHER='000/000-0000';

DATA A; INPUT X PHONE; ACCT=X; PROT=X; DOL=X; RSIGN=X; CREDIT=X; EUROPE=X; BLANK=X; THOU=X; FORMAT ACCT ACCT. PROT PROT. DOL DOL. RSIGN RSIGN. CREDIT CREDIT. EUROPE EUROPE. BLANK BLANK. THOU THOUS. PHONE PHONE. X 12.2; CARDS; 12345 9196778000 0 6778000 -12345 . -187.65 9196778000 187.65 . .23 . 101.23 . 1.1E6 . ; PROC PRINT DATA=A; ID X; VAR ACCT PROT DOL RSIGN CREDIT EUROPE BLANK THOU PHONE; TITLE 'PRINT THE FORMATS CREATED WITH PROC FORMAT'; RUN; /*-----CREATE INFORMATS FOR GRADE SCALES AND FOR SEX-----*/ PROC FORMAT; INVALUE GRADE 'A+'=4.0 'A'=3.5 'A-'=3.2 'B+'=3.0 'B'=2.5 'B-'=2.2 'C+'=2.0 'C'=1.5 'C-'=1.2

91

SAS - O essencial da linguagem ____________________________________________________________________________________


'D+'=1.0 'D'=0.5 'D-'=0.2 'E'=0 'I'=.; INVALUE SEX 'M'=1 'F'=2; RUN; /*-----READ IN THE STUDENT NOME DATA-----*/ DATA STUDENTS; INPUT ID SEX : SEX. NOME $; CARDS; 003 F JANE 005 F MARY 001 M JOHN 002 F ROBIN 004 M RICK ; RUN; /*-----SORT TO BE IN ORDER BY ID-----*/ PROC SORT; BY ID; RUN; /*-----INPUT THE GRADE INFORMATION-----*/ DATA GRADES; INPUT ID NCLASSES @; DO I=1 TO NCLASSES; INPUT GRADE: GRADE. @; OUTPUT; END; KEEP ID GRADE; CARDS; 003 5 A B+ B C+ A002 5 B+ I C C E 001 4 A B C- B005 5 A A A A+ A004 4 B- D E C ; RUN; /*-----SORT TO BE IN ORDER BY ID-----*/ PROC SORT DATA=GRADES; BY ID; RUN; /*-----DETERMINE THE GPAS FOR THE STUDENTS-----*/ PROC MEANS DATA=GRADES NOPRINT; BY ID; VAR GRADE; OUTPUT OUT=FINAL(DROP=_TYPE_) MEAN=GPA; RUN; /*-----MERGE GPA INTO STUDENT INFO-----*/ DATA STUDENTS; MERGE STUDENTS FINAL; BY ID; RUN;

92

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
/*-----SORT TO PRINT BY SEX-----*/ PROC SORT DATA=STUDENTS; BY SEX; /*-----PRINT THE FINAL RESULTS-----*/ PROC PRINT DATA=STUDENTS; BY SEX; TITLE 'STUDENTS'' NOMES AND GPAS'; RUN; DATA ACCTINFO; INPUT ACCTNUM NOME $15. @26 OPENDATE DATE7.; CARDS; 5008074 JOHN SMITH 01JAN87 5008075 BILL JONES 10JAN87 5009766 BENJAMIN ESTES 18OCT86 7089477 MARY WILSON 27NOV86 ; /*-----FIRST CREATE AN INPUT CONTROL DATA SET-----*/ /*-----FIRST CREATE AN INPUT CONTROL DATA SET-----*/ DATA CNTLACCT(RENOME=(ACCTNUM=START NOME=LABEL)); SET ACCTINFO(KEEP=ACCTNUM NOME); FMTNOME='ACCOUNT'; RUN; PROC PRINT DATA=CNTLACCT; TITLE "INPUT CONTROL DATA SET"; RUN; /*-----READ THE CONTROL DATA SET INTO PROC FORMAT-----*/ PROC FORMAT CNTLIN=CNTLACCT; RUN; /*-----THE FORMAT IS NOW CREATED AND READY TO USE-----*/ DATA CHARGES; INPUT ACCTNUM TRANSAMT; PUT ACCTNUM ACCOUNT. ' ACCOUNT CHARGED ' TRANSAMT DOLLAR10.2; CARDS; 5008074 127.86 7089477 100.00 5009766 50.00 ; PROC FORMAT CNTLOUT=OUTDATA; PICTURE PHONENUM OTHER='000/000-0000'; INVALUE GRADE 'A'=4 'B'=3 'C'=2 'D'=1 'E'=0; RUN; PROC PRINT DATA=OUTDATA; TITLE 'OUTPUT CONTROL DATA SET'; RUN;

93

SAS - O essencial da linguagem ____________________________________________________________________________________

Captulo 5 : Funes

Este captulo uma verso resumida dos captulos sobre funes dos manuais disponveis no site <http://www.nbs.ntu.edu.sg/userguide />: "SAS Language Reference: Concepts, v.8. Cary, NC: SAS Institute, 1999." e "SAS Language Reference, v.8. Cary, NC: SAS Institute, 1999." Funes so operaes executadas pelo SAS System que possuem um nome prprio. Uma funo SAS, a partir do fornecimento de um argumento, retorna um valor. O SAS System possui um elenco de funes em diferentes reas, desde as mais comuns, como as funes aritmticas, at funes complexas como as econmicas e as de procura de parte de uma srie de caracteres. Muitas funes necessitam de argumentos fornecidos pelo usurio, enquanto algumas tem argumentos fornecidos pelo ambiente operacional. S i n tax e H trs formas de sintaxe de funes, conforme segue:
Funonome (argumento-1<... , argumento-n>) Funonome (OF listadevariveis) Funonome (OF array-nome{*})

Funo-nome o nome da funo.

94

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Argumento o argumento repassado pelo usurio ou pelo ambiente operacional. Pode ser o nome de uma varivel, uma constante, ou qualquer expresso SAS, inclusive outra funo. Argumentos mltiplos so separados por vrgulas. Exemplos:
X=MAX(AVISTA,CRDITO); X=SQRT(1500); NOVACIDADE=LEFT(UPCASE(CIDADE)); X=MIN(TEMPERATURA-JUL,TEMPERATURA-DEZ); S=REPEAT('----+',16); X=MIN((REGISTRAR-BAIXA),(REGISTRAR-FALHA)); VALOR=INT(AVISTA); IF SUM(AVISTA,CRDITO)>1000 THEN PUT 'META ATINGIDA';

OF listadevariveis Lista de quaisquer tipos de variveis SAS separadas por espaos em branco. Exemplos:
A=SUM(OF X Y Z); Z=SUM(OF Y1-Y10); * OS DOIS EXEMPLOS A SEGUIR SO EQUIVALENTES; A=SUM(OF X1-X10 Y1-Y10 Z1-Z10); A=SUM(OF X1-X10, OF Y1-Y10, OF Z1-Z10);

OF array-nome{*} Nome de um vetor definido (ARRAY) que tratado como uma lista de variveis em vez de processar s um elemento do vetor de cada vez. Exemplo:
DATA ARQ; * CRIA O ARQUIVO DE DADOS ARQ; ARRAY Y{10} Y1-Y10; * DECLARAO DO VETOR Y COM 10 ELEMENTOS INICIANDO COM Y1 E TERMINANDO COM Y10; INPUT Y1-Y10; * FORMATO DE ENTRADA DE DADOS; X=SUM(OF Y{*});* FUNO QUE SOMA OS ELEMENTOS DO VETOR EM X; DATALINES; * CHAMA AS LINHAS DE DADOS; 3 6 2 6 5 2 4 7 3 6 2 4 7 9 4 2 5 6 8 3 ; PROC PRINT; * IMPRIME O ARQUIVO RESULTANTE; RUN; * EXECUTA O PROGRAMA;

1 2 3 4 5 6 7 8 9 10 11

O programa de exemplo de funo de soma com um vetor imprime o seguinte relatrio:

The SAS System


Obs 1 2 Y1 3 2 Y2 6 4 Y3 2 7 Y4 6 9 Y5 5 4 Y6 2 2 Y7 4 5 Y8 7 6 Y9 3 8 Y10 6 3 X 44 50

95

SAS - O essencial da linguagem ____________________________________________________________________________________

5.1 RESULTADOS DE FUNES


Os resultados ou variveis alvo de funes SAS so usualmente de caracteres se os argumentos so de caracteres ou numricos se os argumentos so numricos. A exceo a esta regra a funo PUT, porque seus resultados so de caracteres independentemente do tipo de argumento. O comprimento padro para a maioria dos alvos numricos de 8 dgitos e para as variveis de caracteres de 200. H excees. Este comprimento padro no se aplica, por exemplo, s funes de

comprimento: BYTE (1), COMPRESS (comprimento do primeiro argumento), INPUT (largura do informante numrico 8), LEFT (comprimento do argumento), PUT (largura do formato), REVERSE (comprimento do argumento), RIGHT (comprimento do argumento), SCAN (200), SUBSTR (comprimento do do primeiro argumento), TRIM

TRANSLATE

(comprimento

primeiro

argumento),

(comprimento do argumento), UPCASE (comprimento do argumento).

5.2 CATEGORIAS DE FUNES


As funes SAS so organizadas nas seguintes categorias:
Nome da categoria em portugus Medida da Resposta da aplicao (ARM) Funes aritmticas Funes lgicas bitwise Funes de caracter Srie de caracteres que emparelham funes Converso de moeda Funes de data_e_horrio Funes DBCS Biblioteca de ligao dinmica Correspondente em ingls Application response measurement (ARM) Arithmetic functions Bitwise logical functions Character functions Character string matching functions Currency conversion Date and Time Functions DBCS functions Dynamic link library

96

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________ Nome da categoria em portugus Funes de arquivo externo Funes financeiras Biblioteca e funes de catlogo Funes matemticas Funes de Probabilidade e Densidade Funes quants Funes de nmeros aleatrios Funes estatsticas amostrais Funes de entrada e sada de arquivos SAS Funes especiais Funes de Estado e CEP Funes trigonomtricas Funes de reduo por corte Funes de informao de variavel Funes de no-centralidade Ferramentas da Web Correspondente em ingls External file functions Financial functions Library and Catalog Functions Mathematical functions Probability and Density Functions Quantile functions Random number functions Sample statistic functions SAS file i/o functions Special functions State and Zip Code Functions Trigonometric functions Truncation functions Variavel information functions Noncentrality functions Web tools

5.2.1 FUNES

ARITMTICAS

ABS(argumento) retorna o valor absoluto. DIM<n>(array-nome) retorna o nmero de elementos de um vetor unidimensional ou o nmero de elementos de uma dimenso especificada de um vetor multicimensional. n Especifica a dimenso em um vetor multidimensional do qual se deseja saber o nmero de elementos. DIM(array-nome,bound-n) Retorna o nmero de elementos em um vetor unidimensional, ou o nmero de elementos de uma dimenso especificada de um vetor multidimensional. bound-n Especifica a dimenso de um vetor multidimensional do qual se deseja conhecer o nmero de elementos. HBOUND<n>(array-nome) retorna o limite superior de um vetor. HBOUND(array-nome,bound-n) retorna o limite superior de um vetor. LBOUND<n>(array-nome) retorna o limite inferior de um vetor. LBOUND(array-nome,bound-n) retorna o limite inferior de um vetor. MAX(argumento,argumento, ...) Retorna o maior valor de argumentos numricos. MIN(argumento,argumento, ...) Retorna o menor valor de argumentos numricos.

97

SAS - O essencial da linguagem ____________________________________________________________________________________

MOD(argumento-1, argumento-2) Retorna o restante. SIGN(argumento) Retorna o sinal do valor ou 0 para valores nulos. SQRT(argumento) Retorna a raz quadrada. 5.2.2 FUNES
DE CARACTER

BYTE(n) Retorna um caracter em ASCII or EBCDIC onde n um inteiro representando um caracter ASCII ou EBCDIC. COLLATE(start-position<,end-position>) | (start-position<,,length>) Retorna uma seqncia de caracteres ASCII or EBCDIC . COMPBL(source) Remove mltiplos brancos entre palavras de uma srie de caracteres. COMPRESS(source<,caracteres-to-remove>) Remove caracteres especficos de uma srie de caracteres. DEQUOTE(argumento) Remove aspas de um valor de caracter. INDEX(source,excerpt) Procura a fonte de uma srie de caracteres especificada por excerpt . INDEXC(source,excerpt-1<, ... excerpt-n>) Procura a fonte para qualquer caracter presente no excerpt . INDEXW(source,excerpt) Procura a fonte para um padro especificado como uma palavra. LEFT(argumento) Alinha uma srie de caracteres esquerda. LENGTH(argumento) Retorna o comprimento de um argumento. LOWCASE(argumento) Converte todas as letras do argumento em minsculas. QUOTE(argumento) Adiciona aspas duplas a um valor de caracter. RANK(x) Retorna a posio de uma seqncia de caracteres ASCII ou EBCDIC. REPEAT(argumento,n) Repete uma expresso de caracteres. REVERSE(argumento) Reverte uma expresso de caracteres. RIGHT(argumento) Alinha direita uma expresso de caracteres. SCAN(argumento,n<,delimiters>) Retorna uma dada palavra de uma expresso de caracteres. SOUNDEX(argumento) Codifica uma srie de caracteres para facilitar a busca. SUBSTR(argumento,position<,n>)=caracteres-a-repassar Repassa o valor do contedo na posio n indicada. var=SUBSTR(argumento,position<,n>) Extrai uma subsrie de caracteres de um argumento. (var qualquer nome de varivel SAS vlido.)
98

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

TRANSLATE(source,to-1,from-1<,...to-n,from-n>) Repassa caracteres especficos em uma expresso de caracteres. TRANWRD(source,target,replacement) Repassa ou remove todas as ocorrncias de uma palavra em uma srie de caracteres. TRIM(argumento) Remove espaos brancos de uma expresso de caracteres e retorna um branco se o valor perdido. TRIMN(argumento) Remove espaos brancos de expresses de caracteres e retorna uma srie de caracteres nulos se a expresso perdida. UPCASE(argumento) Converte todas as letras do argumento em maisculas. VERIFY(source,excerpt-1<,...excerpt-n) Retorna a posio do primeiro caracter nico para uma expresso. 5.2.3 FUNES
DE DATA_E_HORRIO

DATDIF(sdata,edata,basis) Retorna o nmero de dias entre duas datas. DATA() Retorna a data corrente como um valor de data SAS. DATAJUL(julian-data) Converte um valor de data SAS para o calendrio Juliano. DATAPART(data-horrio) Extrai a data de um valor de data-horrio. DATETIME() Retorna retorna a data e o horrio atuais. DAY(data) Retorna o dia do ms de um valor de data SAS. DHMS(data,hora,minuto,segundo) Retorna um valor de data-horrio SAS de data, horas, minutos, segundos. HMS(hora,minuto,segundo) Retorna um valor de horrio SAS de horas, minutos, segundos. HOUR(<horrio | data-horrio>) Retorna a hora de um valor de data-horrio SAS. INTCK('interval',from,to) Retorna o nmero de intervalos de tempo em um dado espao de tempo. INTNX('interval',start-from,increment<,'Alinhamento'>) Avana um valor de data, horrio, ou data-horrio por um dado intervalo e retorna a data, horrio ou datahorrio ajustado. JULDATE(data) Retorna a data Juliana de um valor de data SAS. MDY(ms,dia,ano) Retorna um valor de data SAS de valores de ms, dia, ano. MINUTE(horrio | data-horrio) Retorna o minuto de um valor de horrio ou datahorrio SAS. MONTH(data) Retorna o ms de um valor de data SAS. QTR(data) Retorna o quarto do ano de um valor de data SAS

99

SAS - O essencial da linguagem ____________________________________________________________________________________

SECOND(horrio | data-horrio) Retorna o segundo de um valor de horrio ou datahorrio SAS. HORRIO() Retorna a hora corrente do dia. HORRIOPART(data-horrio) Extrai um valor de horrio de um valor de data-horrio SAS. TODIA() Retorna a data corrente como um valor de data SAS . WEEKDIA(data) Retorna o dia da semana de um valor de data SAS. ANO(data) Retorna o ano de um valor de data SAS. YRDIF(sdata,edata,basis) Retorna a diferena em anos entre duas datas. YYQ(ano,quarter) Retorna o valor de data SAS de ano e quartos. 5.2.4 FUNES
FINANCEIRAS

As funes financeiras so descritas, a seguir, por tipo: FUNES DE FLUXO DE CAIXA: CONVX, CONVXP Calcula convexidade para fluxos de caixa. DUR, DURP Calcula a durao modificada para fluxos de caixa. PVP, YIELDP Calcula valor presente e rendimento-para-maturidade para um fluxo de caixa peridico. 5.2.4.1 FUNES DE CLCULOS DE PARMETROS: COMPOUND Calcula combinao de parmetros de interesse. MORT Calcula parmetros de amortizao. Funes de taxa interna de retorno: INTRR, IRR Calcula a taxa interna de retorno, Funes de valor lquido presente e futuro: NETPV, NPV Calcula valores lquidos presente e futuro. SAVING Calcula o valor futuro de poupana peridica. Funes de depreciao: DACCxx Calcula a depreciao acumulada para cima para o perodo especificado. DEPxxx Calcula a depreciao para um nico perodo. O argumento de perodo para funes de depreciao pode ser fracionrio para todas as funes, exceto DEPDBSL e DACCDBSL. Para argumentos fracionrios, a depreciao rateada entre os dois perodos de tempo sucessivos que precede e que

100

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

segue o perodo fracionrio. PRECAUO: Verifique o mtodo de depreciao para perodos fracionrios. necessrio verificar se o mtodo apropriado para usar com perodos fracionrios porque muitos planos de depreciao, especificados como tabelas, tm regras especiais para perodos fracionrios. Sintaxe e descrio das funes financeiras: COMPOUND(montante,futuro,taxa,nmero) Retorna a combinao de parmetros de interesse. CONVX(y,f,c(1),...,C(k)) Retorna a convexidade para um determinado fluxo de caixa. CONVXP(A,C,n,K,k0,y) Retorna a convexidade para uma seqncia de fluxo de caixa, como um bnus. DACCDB(perodo,valor,anos,taxa) Retorna a amortizao de equilbrio da depreciao acumulada. DACCDBSL(perodo, valor,anos,taxa) Retorna a amortizao de equilbrio da depreciao com converso para uma depreciao em linha reta. DACCSL(perodo, valor,anos) Retorna a linha reta de depreciao acumulada. DACCSYD(perodo, valor,anos) Retorna a depreciao da soma acumulada dos dgitos dos anos. DACCTAB(perodo,valor,t1,...,tn) Retorna a depreciao acumulada de tabelas especificadas, em que t1, ...tn so fraes numricas de depreciao para cada perodo de tempo. DEPDB(perodo,valor,ano,taxa) Retorna a amortizao de equilbrio da depreciao. DEPDBSL(perodo,valor,anos,taxa) Retorna amortizao de equilbrio com converso para uma linha reta de depreciao. DEPSL(perodo,valor,anos) Retorna a linha reta de depreciao. DEPSYD(perodo,valor,anos) Retorna a depreciao da soma dos dgitos dos anos. DEPTAB(perodo,valor,t1,...,tn) Retorna a depreciao de tabelas especificadas, t1,...,tn. DUR(y,f,c(1),...c(k)) Retorna a durao modificada para um fluxo de caixa enumetaxado. DURP(A,c,n,K,k0,y) Retorna a durao modificada para um fluxo de caixa peridico, como um bnus. INTRR(freqncia,c0,c1,...,cn) Retorna a taxa interna de retorno como uma frao. IRR(freqncia,c0,c1,...,cn) Retorna a taxa interna de retorno como uma percentagem. Freqncia o nmero de pagamentos sobre um perodo base especificado que associado a uma taxa de retorno desejada, com amplitude maior que zero, exceto no caso em que freq = 0 uma bandeira para permitir composio contnua. c0,c1, . . . ,cn so os pagamentos opcionais. A funo INTRR retorna a taxa interna de retorno
101

SAS - O essencial da linguagem ____________________________________________________________________________________

sobre um perodo base especificado para o conjunto de pagamentos c0, c1, ..., cn. O intervalo de tempo entre dois pagamentos assumido pelo SAS como sendo igual. O argumento freq>0 descreve o nmero de pagamentos que ocorrem sobre o perodo base especificado. A taxa interna de retorno a taxa de interesse sobre a seqncia de pagamentos que tem um Valor Lquido Presente (VPL) igual a zero (ver a funo NETPV). A taxa interna de retorno dada por:

1 x freq r= log e ( x)

freq > 0 freq = 0

Em que: x a raz real, infinitamente proxima de 1, da polinomial:

c .x
i =0 i

=0 .

A rotina de IRR usa o mtodo de Newton para encontrar a taxa interna de retorno infinitamente proxima de 0. Dependendo do valor dos pagamentos, pode no existir uma raz para a equao; neste caso, retorna um valor perdido (.). Valores perdidos nos valores de pagamentos so tratados como zero(0). Quando freq>0, a taxa de retorno computada a taxa efetiva sobre o perodo base especificado. Para computar trimestralmente a taxa interna de retorno com pagamentos mensais faa freq igual a 3. Se freq 0, assumida composio contnua e o perodo base o intervalo de tempo entre dois pagamentos consecutivos. A taxa interna de retorno computada a taxa nominal de retorno sobre o perodo base. Para computar com composio contnua e pagamentos mensais, faa freq igual a zero (0). A taxa interna de retorno ser uma taxa mensal. Exemplo: Para um gasto inicial de R$400,00 e expectativas de pagamentos de R$100,00, R$200,00 e R$300,00 sobre os trs anos seguintes, A taxa interna de retorno pode ser expressa em taxa=intrr(1,400,100,200,300); o valor retornado 0,19438.

MORT(montante,pagamento,taxa,nmero) Retorna parmetros de amortizao. NETPV(r,freq,c0,c1,...,cn) - Retorna o valor presente lquido como uma frao. NPV semelhante NETPV, exceto que r provido como percentagem na NPV. S i n tax e :
NETPV(r,freq,C0,C1, . . . ,Cn)

r a taxa de interesse sobre um perodo base especfico expresso como uma frao.

102

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

freq o nmero de pagamentos sobre o perodo base que especificado com a taxa r. Amplitude: freq > 0. Excesso: o caso em que freq = 0 uma marca para permitir desconto contnuo. c0,c1, . . . ,cn So fluxos de caixa que representam pagamentos ou receitas durante os momentos 0, 1, ...n. Os momentos so assumidos como igualmente espaados, no instante inicial do perodo. Valores negativos representam pagamentos, valores positivos representam receitas e valores 0 (zero) representam nenhummovimento de valor num dado momento. Os argumentos c0 e c1 so requeridos. A funo NETPV retorna o valor presente lquido no momento 0 para a srie de pagamentos c0,c1, . . . ,cn, com uma taxa r sobre um especificado perodo de tempo. O argumento freq>0 descreve o nmero de pagamentos que ocorre sobre o especificado perodo base de tempo. O Valor Presente Lquido (NETPV) dado por:

NETPV (r , freq, c0 , c1 ,..., c n ) = ci .x i


i =0

Em que:

1 x = (1 + r ) (1 / freq ) r e

freq > 0 freq = 0

Valores perdidos em pagamentos so tratados como zero (0). Quando freq>0, a taxa r a taxa efetiva sobre o perodo base especificado. Para especificar uma taxa trimestral de 4% com pagamentos mensais, faa freq igual a 3 e r a .04. Se freq 0, assumido desconto contnuo. O perodo bsico o intervalo de tempo entre dois pagamentos sucessivos e a taxa r uma taxa nominal. Para computar com uma taxa de interesse anual nominal de 11 por cento descontada continuamente com pagamentos mensais, atribua 0 para freq e 11/12 para r. Exemplo: Para um investimento inicial de $500 que retorna pagamentos bianuais de $200, $300, e $400 sobre os sucessores 6 anos e uma taxa de desconto anual de 10 por cento, o valor presente lquido do investimento pode ser expresso como valor=netpv (.10, .5,500,200,300,400); o valor resultante de 95.98.

NPV(r,freq,c0,c1,...,cn) - Retorna o valor presente lquido com uma taxa expressa como uma percentagem. NPV semelhante NETPV, exceto que r provido como percentagem na NPV. S i n tax e
NPV(r,freq,c0,c1,...,cn).

103

SAS - O essencial da linguagem ____________________________________________________________________________________

r - a taxa de interesse, sobre um especificado perodo bsico de tempo, expressa como uma porcentagem. freq - o nmero de pagamentos durante o especificado perodo bsico de tempo com a taxa r. Amplitude: freq> 0. Exceo: O caso em que freq = 0 usado como uma bandeira para permitir desconto contnuo. c0,c1. . . ,cn Fluxo de caixa que representa pagamentos ou rendimentos ocorrendo nos tempos 0, 1,... n. assumido os perodos do fluxo de caixa so igualmente espaados. Valores negativos representam pagamentos, valores positivos representam renda, e valores 0 no representam nenhum valor de fluxo monetrio em um determinado momento. So requeridos como obrigatrios os argumentos c0 e c1. PVP (A,c,n,K,k0,y) Retorna o valor presente para um fluxo de caixa peridico, como um bnus. Em que: A o valor de paridade com amplitude > 0; c a taxa de cupom nominal por-perodo, expressa como uma frao com amplitude de 0 < c < 1; n o nmero de o nmero de cupons por perodo com amplitude n > 0 e sempre inteiro; K o nmero de cupons remanescentes com amplitude K > 0 e sempre inteiro; k0 o perodo de tempo entre a data presente e a data do primeiro cupom, expressa em termos de nmero de perodos, com amplitude de 0 < k0< 1/n; y o por-perodo nominal de rendimento-para-maturidade, expresso como uma frao, com amplitude y > 0. A funo PVP baseada na relao:

P = c(k )
k =1

1 y (1 + ) tk n

Em que: tk=k-(1-nk0); c(k)=A(c/n) para k=1,...K-1; c(K)=A(1+(c/n)). Exemplo: p=pvp(1000,1/100,4,14,.33/2,.10) retorna o valor 743.168.

SAVING(futuro,pagamento,taxa,nmero) Retorna o valor futuro de uma poupana peridica. YIELDP(A,c,n,K,k0,p) Retorna o rendimento-para-maturidade para um fluxo de caixa peridico, como um bnus. 5.2.5 FUNES
MATEMTICAS

AIRY(x) Retorna o valor da funo AIRY.

104

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

DAIRY(x) Retorna a derivada da funo AIRY. DIGAMMA(argumento) Retorna o valor da funo de DIGAMMA ERF(argumento) Retorna o valor do (normal) de funo de erro. ERFC(argumento) Retorna o valor do (normal) de funo de erro. EXP(argumento) Retorna o valor da funo exponencial. GAMMA(argumento) Retorna o valor da funo GAMA. IBESSEL(nu,x,kode) Retorna o valor da funo Bessel modificada. JBESSEL(nu,x) Retorna o valor da funo Bessel. LGAMMA(argumento) Retorna o logaritmo natural da funo GAMA. LOG(argumento) Retorna o logaritmo natural (de base e). LOG2(argumento) Retorna o logaritmo de base 2. LOG10(argumento) Retorna o logaritmo de base 10. TRIGAMMA(argumento) Retorna o valor da funo TRIGAMMA. 5.2.6 FUNES
DE NMEROS ALEATRIOS

NORMAL(seed) Retorna uma variao aleatria de uma distribuio normal5. RANBIN(seed,n,p) Retorna uma variao aleatria de uma distribuio bionomial. RANCAU(seed) Retorna uma variao aleatria de uma distribuio Cauchy. RAND('dist', parm-1, ..., parm-k) (EXPERIMENTAL) Retorna uma variao aleatria de uma distribuio especificada. Nota: esta uma funo experimental. RANEXP(seed) Retorna uma variao aleatria de uma distribuio exponential. RANGAM(seed,a) Retorna uma variao aleatria de uma distribuio Gamma. RANNOR(seed) Retorna uma variao aleatria de uma distribuio normal. RANPOI(seed,m) Retorna uma variao aleatria de uma distribuio Poisson. RANTBL(seed,p1,..pi,..pn) Retorna uma variao aleatria de uma probabilidade tabelada. RANTRI(seed,h) Retorna uma variao aleatria de uma distribuio triangular. RANUNI(seed) Retorna uma variao aleatria de uma distribuio uniforme. UNIFORM(seed) Retorna um valor pseudo-randmico de uma distribuio uniforme.

seed=semente, ou valor inicial.

105

SAS - O essencial da linguagem ____________________________________________________________________________________

5.2.7 FUNES

DE ESTATSTICA BSICA

CSS(argumento,argumento,...) Retorna a soma de quadrados corrigidos. CV(argumento,argumento,...) Retorna o coeficiente de variao. KURTOSIS(argumento,argumento,...) Retorna a curtose (ou 4 momento). MAX(argumento,argumento, ...) Retorna o maior valor. MIN(argumento,argumento, ...) Retorna o menor valor. MEAN(argumento,argumento, ...) Retorna a mdia aritmtica (mdia). MISSING(numeric-expresso | caracter-expresso) Retorna um resultado numrico que indica se o argumento contm um valor perdido. N(argumento,argumento, ....) Retorna o nmero de valores de no perdidos. NMISS(argumento,argumento, ...) Retorna o nmero de valores perdidos. ORDINAL(count,argumento,argumento,...) Retorna o valor mais alto de uma parte de uma lista. RANGE(argumento,argumento,...) Retorna a amplitude de valores. SKEWNESS(argumento,argumento,argumento,...) Retorna a tendncia. STD(argumento,argumento,...) Retorna o erro padro. STDERR(argumento,argumento,...) Retorna o erro padro da mdia. SUM(argumento,argumento,...) Retorna a soma. USS(argumento,argumento,...) Retorna a soma de quadrados no corrigidos. VAR(argumento,argumento,...) Retorna a varincia. 5.2.8 FUNES
TRIGONOMTRICAS

ARCOS(argumento) Retorna o arcocosseno. ARSIN(argumento) Retorna o arcosseno. ATAN(argumento) Retorna o arcotangente. COS(argumento) Retorna o cosseno. COSH(argumento) Retorna o cosseno hiperblico. SIN(argumento) Retorna o seno. SINH(argumento) Retorna o seno hiperblico. TAN(argumento) Retorna ao tangente. TANH(argumento) Retorna a tangente hiperblica.

106

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

5.2.9 FUNES

DE TRUNCAGEM

CEIL(argumento) Retorna o menor inteiro que maior ou igual ao argumento. FLOOR(argumento) Retorna o maior inteiro menor ou igual ao argumento. FUZZ(argumento) Retorna inteiro mais prximo se o argumento est dentro de 1E-12. INT(argumento) Retorna o valor inteiro do argumento. ROUND(argumento,round-off-unit) Arredonda para a unidade mais prxima. TRUNC(number, length) Trunca um valor numrico num comprimento especificado. 5.2.10 FUNES As funes
DE HOSPEDAGEM

de

hospedagem

dizem

respeito

ao

ambiente

operacional em que o SAS est instalado. As funes SAS de hospedagem retornam um valor do ambiente operacional, seja do computador ou sistema operacional. A maioria destas funes utilizam argumentos fornecidos pelo usurio. A maior parte destas funes so descritas no captulo 'SAS functions and CALL routines' do manual 'SAS Language Reference: Dictionary'; as principais so as seguintes: BYTE MODULE, COLLATE PEEK, DMYTECHC RANK, DMYTECWD SLEEP, DMYTERVC

TRANSLATE, MCIPISLP WAKEUP, MCIPISTR.

107

SAS - O essencial da linguagem ____________________________________________________________________________________

Captulo 6 : PROC ANOVA / PROC GLM

Os

dois

procedimentos

realizam

anlise

da

varincia.

procedimento PROC ANOVA realiza anlise da varincia somente de experimentos em delineamentos balanceados, ou seja, que possuam nmeros iguais de observaes para toda combinao dos fatores de classificao do delineamento. O procedimento PROC GLM (General Linear Models) efetua anlise da varincia de modelos lineares em geral, podendo ser utilizado para anlise de dados de experimentos, inventrios florestais e regresso linear sem a necessidade de haver balanceamento dos dados. O uso do PROC ANOVA bastante fcil. Desde que os dados sejam balanceados, suficiente informar as classes em que o experimento organizado e o modelo a ser utilizado na anlise, devendo ser preferido nestes casos. Entretanto, o uso do PROC GLM mais complexo. O procedimento mais poderoso que seu correlato, mas exige cuidados especiais na interpretao dos resultados e com as informaes sobre o erro a utilizar na anlise de diferenas entre os efeitos e quanto ao tipo de erro.

108

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Ambos tem instrues embutidas para testes de mdias como os testes de Tukey, Duncan, Scheffe, entre outros, podendo tambm realizar anlise multivariada. A sitaxe geral de ambos praticamente a mesma, sendo que o GLM tem maior nmero de opes.

6.1 SINTAXE:
PROC ANOVA Opes; CLASS Variveis; MODEL VariveisDependentes = Efeitos / opes; Means Efeitos </ <LINES> <TestesDeMdias> <Opes>>; TEST < H=Efeitos > E=TermoDeErro ; FREQ Varivel ; REPEATED EspecificaoDeFator </ opes> ; ABSORB Variveis; MANOVA <Testes> </ Opes> ; BY Variveis;

6.2 OPES DO PROCEDIMENTO:


DATA=ArquivoDeDados Define o arquivo de dados a utilizar com o procedimento. MANOVA Realiza anlise multivariada com mais de uma varivel dependente eliminando valores perdidos. NOPRINT Impede a impresso do relatrio; til quando se quer somente um arquivo de sada. ORDER=opo Determina como os dados esto ordenados; a opo pode ser uma das seguintes: DATA | FORMATTED | FREQ | INTERNAL. OUTSTAT=NomeDoArquivoDeSada Grava um arquivo SAS com os resultados do processamento.

6.3 INSTRUES DO PROCEDIMENTO:


CLASS Variveis - Indica as classes de efeitos que devem ser considerados. MODEL VariveisDependentes = Efeitos / opes Informa o modelo a ser utilizado na anlise. Means Efeitos </ <LINES> <TestesDeMdias> <Opes>> - Informa os efeitos sobre os quais devem ser realizados os testes de mdias e que testes devem ser realizados.

109

SAS - O essencial da linguagem ____________________________________________________________________________________

TEST < H=Efeitos > E=TermoDeErro Informa um ou mais efeitos que devem ser analizados com um termo de erro que no o geral do modelo; FREQ Varivel Informa a varivel que deve ser utilizada como freqncia das observaes, se houver. REPEATED EspecificaoDeFator </ opes> - Informa uim fator que deve ser repetido. ABSORB Variveis Informa variveis de absero. MANOVA <Testes> </ Opes> - Informa os testes multivariados que devem ser realizados. BY Variveis Informa variveis que devem ser usadas para separar a anlise por grupos. Exemplo 6.1 Anlise de varincia de experimento delineado em blocos casualizados.
* EXEMPLO 6.1 - ANOVA DE BLOCOS CASUALIZADOS; TITLE; DATA ARQUIVO; INPUT BLOCO TRATAMENTO $ PRODUCAO VALOR @@; DATALINES; 1 A 32.6 112 1 B 36.4 130 1 C 29.5 106 2 A 42.7 139 2 B 47.1 143 2 C 32.9 112 3 A 35.3 124 3 B 40.1 134 3 C 33.6 116 ; PROC ANOVA DATA=ARQUIVO; CLASS BLOCO TRATAMENTO; MODEL PRODUCAO VALOR=BLOCO TRATAMENTO; MEANS TRATAMENTO / LINES TUKEY; RUN; QUIT; 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Neste exemplo criado um arquivo com as colunas Bloco, Tratamento, Produo e Valor (Linhas 2 at 8). Em seguida os dados so processados com o procedimento ANOVA (Linha 9), onde as classes so Bloco e Tratamento (Linha 10); as variveis independentes (efeitos) do modelo, so as mesmas informadas como classes; e, as variveis dependentes so Produo e Valor (Linha 11). solicitado um teste de mdias (reduzido pela opo lines) com o teste de Tukey (Linha 12). Os dados foram obtidos de exemplos da ajuda do SAS System 8.2. O modelo, neste caso, pode ser representado simplificadamente como: Y = mdia + bloco + tratamento + erro, em que, Y a varivel

110

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

dependente dos efeitos dos Blocos e Tratamentos, caracterizados pelos resultados medidos da Produo e do seu Valor (Linha 11). O resultado do processamento o relatrio a seguir:
The ANOVA Procedure Class Level Information Class Bloco Tratamento Levels 3 3 Values 123 ABC

Number of observations

The ANOVA Procedure Dependent Variable: Producao Source Model Error Corrected Total DF 4 4 8 Sum of Squares 225.2777778 25.1911111 250.4688889 Mean Square 56.3194444 6.2977778 F Value 8.94 Pr > F 0.0283

R-Square 0.899424

Coeff Var 6.840047

Root MSE 2.509537

Producao Mean 36.68889

Source

DF

Anova SS

Mean Square

F Value

Pr > F

111

SAS - O essencial da linguagem ____________________________________________________________________________________

Source Bloco Tratamento

DF 2 2

Anova SS 98.1755556 127.1022222

Mean Square 49.0877778 63.5511111

F Value 7.79 10.09

Pr > F 0.0417 0.0274

The ANOVA Procedure Dependent Variable: Valor Source Model Error Corrected Total DF 4 4 8 Sum of Squares 1247.333333 150.666667 1398.000000 Mean Square 311.833333 37.666667 F Value 8.28 Pr > F 0.0323

R-Square 0.892227

Coeff Var 4.949450

Root MSE 6.137318

Valor Mean 124.0000

Source Bloco Tratamento

DF 2 2

Anova SS 354.6666667 892.6666667

Mean Square 177.3333333 446.3333333

F Value 4.71 11.85

Pr > F 0.0889 0.0209

The ANOVA Procedure Tukey's Studentized Range (HSD) Test for Producao This test controls the Type I experimentwise error rate, but it generally has a higher Type II error rate than REGWQ.

112

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Alpha Error Degrees of Freedom Error Mean Square Critical Value of Studentized Range Minimum Significant Difference

0.05 4 6.297778 5.04024 7.3027

Means with the same letter are not significantly different. Tukey Grouping A A B B B 32.000 3 C A 36.867 3 A Mean 41.200 N 3 Tratamento B

The ANOVA Procedure Tukey's Studentized Range (HSD) Test for Valor This test controls the Type I experimentwise error rate, but it generally has a higher Type II error rate than REGWQ. Alpha Error Degrees of Freedom Error Mean Square 0.05 4 37.66667

113

SAS - O essencial da linguagem ____________________________________________________________________________________

Critical Value of Studentized Range Minimum Significant Difference

5.04024 17.859

Means with the same letter are not significantly different. Tukey Grouping A A B B B 111.333 3 C A 125.000 3 A Mean 135.667 N 3 Tratamento B

114

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Captulo 7 : PROC CHART / PROC GCHART

Os procedimentos CHART e GCHART diferem principalmente na qualidade dos grficos produzidos. O primeiro mais antigo e emite grficos de baixa resoluo que no so mais utilizados, mantido somente para compatibilizar programas antigos com o sistema atual. O PROC GCHART produz grficos de barra horizontal e vertical, blocos, bolos e estrela, podendo dispor estatsticas associadas aos seus valores. As variveis delineadas podem ser numricas ou de caracter. possvel editar os grficos com o editor de grficos do prprio SAS System para, por exemplo, traduzir as palavras internas em ingls, para o portugus. Depois de rodar o programa, acesse os resultados e clique sobre o grfico a editar; depois acesse o editor de grficos atravs do menu |Tools|Graphics Editor|. Para editar textos, clique no cursor de seleo do editor e depois sobre o texto a alterar. Com a

caixa de texto selecionada, clique sobre ela com o boto direito e depois, na janelinha flutuante que ativada, clique em |View|Object Properties|-More-|, ento s alterar o texto e fechar as janelas clicando |End|, |End| e salvando o grfico.

115

SAS - O essencial da linguagem ____________________________________________________________________________________

S i n tax e :
PROC CHART <opo(es)> BLOCK varivel(eis) < / opo(es)>; BY<varivel(eis)>; HBAR varivel(eis) < / option(s)>; PIE varivel(eis) < / option(s)>; STAR varivel(eis) < / option(s)>; VBAR varivel(eis) < / option(s)>;

O pes do p roce dimen to : DATA=ArquivoDeDados Identifica o arquivo de dados a ser usado com o procedimento. FORMCHAR <(posio(es))>=CaracterDeFormatao(es)' Define o caracter a ser utilizado na construo do grfico. Posio(es) identifica a posio de um ou mais caracteres na corrente de caracteres de formatao SAS. Um espao ou uma vrgula separa as posies. O procedimento pode usar at 6 dos 20 caracteres de formatao disponveis no SAS. Cartacteres de formatao So utilizados na ordem em que so grafados na corrente de caracteres. Por exemplo, a opo a seguir assinala o asterisco como segundo caracter de formatao e o sinal de cancela como o stimo e no altera os caracteres remanescentes: formchar(2,7)='*#' As demais opes so descritas no manual Introduction to SAS/Graph Software Chapter 13: The GCHART Procedure. Exemplo 7.1 Exemplo de grficos de blocos, de barras verticais e horizontais
* EXEMPLO 7.1 - GRFICOS DE BLOCOS E DE BARRAS HORIZONTAIS; DATA TOTAIS; LENGTH ESPECIE $ 11 SITIO $ 5; INPUT ESPECIE SITIO PARCELA MORTAS; DATALINES; P.ELLIOTTII BOM 1 15 P.TAEDA BOM 2 12 P.CARIBEA BOM 3 15 P.ELLIOTTII MEDIO 4 15 P.TAEDA MEDIO 5 14 P.CARIBEA MEDIO 6 16 P.ELLIOTTII RUIM 7 17 P.TAEDA RUIM 8 30 P.CARIBEA RUIM 9 47 ; PROC GCHART DATA=TOTAIS; TITLE 'TOTAL DE ARVORES MORTAS POR SITIO'; FOOTNOTE J=R 'GRAFICO 1'; FORMAT MORTAS 8.; BLOCK SITIO / SUMVAR=MORTAS; PROC GCHART DATA=TOTAIS; TITLE 'MEDIA DE ARVORES MORTAS POR ESPECIE'; FOOTNOTE J=R 'GRAFICO 2'; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

116

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
FORMAT MORTAS 8.; VBAR ESPECIE / SUMVAR=MORTAS TYPE=MEAN; PROC GCHART DATA=TOTAIS; TITLE 'FREQUENCIA DE ARVORES MORTAS POR ESPECIE EM CADA SITIO'; FOOTNOTE J=R 'GRAFICO 3'; FORMAT MORTAS 8.; HBAR ESPECIE / FREQ=MORTAS GROUP=SITIO; RUN; QUIT; 24 25 26 27 28 29 30 31 32 33

Neste exemplo so produzidos trs grficos com os dados de mortalidade de rvores em nove parcelas, sendo uma parcela de cada uma das trs espcies plantadas em trs diferentes stios. O primeiro grfico, de blocos, representa o total de rvores mortas em cada stio. O segundo grfico, de barras verticais, representa a mdia por espcie. Na linha 25 informada a varivel a ser utilizada atravs da instruo SUMVAR= e o tipo de estatstica informado atravs da opo TYPE=MEAN; quando esta opo no usada o grfico feito com os totais, como no grfico anterior. O ltimo grfico, de barras horizontais, representa a freqncia de rvores mortas por espcie em cada stio e apresentada a percentagem do total de rvores mortas em cada classe; a classificao das espcies por stio realizada atravs da opo GROUP=SITIO (Linha 30). So usadas notas de rodap para identificar os grficos atravs da declarao FOOTNOTE J=R 'GRAFICO n' ; em que J= utilizado para indicar o alinhamento da nota em relao pgina, neste caso R de Right ( direita). Como resultado do processamento do programa, no exemplo 8.1, so emitidos os grficos a seguir (os grficos foram editados):
117

SAS - O essencial da linguagem ____________________________________________________________________________________

118

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

119

SAS - O essencial da linguagem ____________________________________________________________________________________

Captulo 8 : PROC CORR

O procedimento PROC CORR analisa variveis aleatrias, computando coeficientes de correlao de Pearson, trs medies de associao no-paramtrica e probabilidades associadas com estas estatsticas e calcula estatsticas descritivas. Os clculos de correlao incluem: produto-momento de Pearson e correlao ponderada (weighted) de produto-momento, correlao de ordem de amplitude de Spearman, tau-b de Kendall, medida de dependncia D de Hoeffding, correlao parcial de Pearson, de Spearman, e de Kendall; coeficiente alfa de Cronbach para

dependncia.

8.1 SINTAXE:
PROC CORR <Opes>; BY <DESCENDING> Varivel-1 <...<DESCENDING> Varivel-n> <NOTSORTED>; FREQ frequency-variable; PARTIAL Variveis; VAR Variveis; WEIGHT Varivel; WITH Variveis;

8.2 OPES DO PROCEDIMENTO:


ALPHA Calcula e imprime o coeficiente alfa de Cronbach.
120

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

BEST=n Imprime n coeficientes de correlao para cada varivel. COV Calcula e imprime as covarincias. CSSCP Imprime as somas de quadrados corrigidos e os produtos cruzados. DATA=ArquivoDeDados Especifica o arquivo de dados para processamento. EXCLNPWGT Exclui observaes com pesos nulos e negativos da anlise. HOEFFDING Calcula e imprime a estatstica D de Hoeffding. KENDALL Calcula e imprime os coeficientes tau-b de Kendall com base no nmero de pares de observaes concordantes e discordantes. No funciona com a instruo PARTIAL. NOCORR Suspende o clculo dos coeficientes de correlao de Pearson. NOMISS Exclui as observaes com valores perdidos. NOPRINT Suspende a impresso de relatrio do procedimento. NOPROB Susspende a impresso de probabilidades associadas a cada coeficiente de correlao. NOSIMPLE Suspende a impresso de estatsticas descritivas simples para cada varivel. OUTH=ArquivoDeSada Cria um arquivo de sada contendo a estatstica D de Hoeffding. OUTK=ArquivoDeSada Cria um arquivo de sada contendo as estatsticas para a correlao de Kendall. OUTP=ArquivoDeSada Cria um arquivo de sada contendo as estatsticas da correlao de Pearson, mdias, desvios-padro e nmero de observaes. O valor da varivel _TYPE_ CORR. Se a opo ALPHA for usada, o arquivo conter 6 observaes com os coeficientes alpha de Cronbach. OUTS=ArquivoDeSada Cria um arquivo de sada contendo as estatsticas da correlao de Spearman. PEARSON Calcula e imprime as correlaes de produto-momento de Pearson product-moment quando utilizada a opo HOEFFDING, KENDALL, ou SPEARMAN. Se a opo for omitida, o procedimento calcula automaticamente os coeficientes de correlao de Pearson. RANK Imprime os coeficientes de correlao para cada varivel na ordem do mais alto para o mais baixo. O procedimento imprime a estatstica D se for utilizada a opo HOEFFDING. SINGULAR=p Especifica o critrio para determinao de singularidade quando utilizada a instruo PARCIAL. Uma varivel considerada singular se a diagonal principal aps a decomposio de Cholesky tiver valor menor que p vezes a original

121

SAS - O essencial da linguagem ____________________________________________________________________________________

soma de quadrados no parcializada da varivel. O padro 1E-8 e a amplitude de 0 at 1. SPEARMAN Calcula e imprime os coeficientes de correlao de Spearman com base nos graus das variveis. No vlido com a instruo WEIGHT. SSCP Imprime as somas de quadrados dos produtos cruzados. Invoca a correlao de PEARSON. Usada com a instruo PARTIAL , impressa a matriz no partial com a opo SSCP. VARDEF=divisor Especifica o divisor a usar no clculo de varincias, desvios-padro e covarincias. O padro DF.

8.3 INSTRUES DO PROCEDIMENTO:


8.3.1 BY (INSTRUO) Produz anlises de correlao separadamente para cada grupo de varivel especificada. S i n tax e :
BY <DESCENDING> Varivel-1 <...<DESCENDING> Varivel-n> <NOTSORTED>;

Varivel(1 a n) - So as variveis pelas quais devem ser separados os grupos; devem ser escritas em ordem de hierarquia. DESCENDING Indica que a ordem das observaes da varivel especificada descendente. NOTSORTED Indica que as observaes no esto em ordem alfabtica, mas em uma ordem determinada pelo usurio. 8.3.2 FREQ (INSTRUO) Identifica a varivel que representa a freqncia para cada observao. S i n tax e :
FREQ varivel;

Varivel o nome da varivel que possui a freqncia de cada observao do arquivo de dados.

122

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

8.3.3 PARTIAL (INSTRUO) Identifica as variveis de controle para computar os coeficientes de correlao parcial de Pearson, Spearman, ou Kendall. S i n tax e :
PARTIAL variveis;

Variveis Identifica uma ou mais variveis para computar correlaes parciais. 8.3.4 VAR (INSTRUO) Identifica as variveis a considerar na anlise de correlao e a sua ordem. S i n tax e :
VAR variveis;

Variveis Identifica uma ou mais variveis para usar no clculo dos coeficientes de correlao. 8.3.5 WEIGHT (INSTRUO) Identifica a varivel cujos valores representam o peso de cada observao para calcular o coeficiente de correlao ponderada de produto-momento de Pearson. S i n tax e :
WEIGHT varivel;

Varivel Especifica uma varivel numrica que contm o peso para clculo dos coeficientes de correlao ponderados de produto-momento. No necessrio que os valores sejam inteiros. Se o valor 0 o nmero de observaes contado no nmero total de observaes; menor que 0, converte o valor para zero e conta as observaes no nmero total de observaes; valor perdido exclui a observao.

123

SAS - O essencial da linguagem ____________________________________________________________________________________

8.3.6 WITH (INSTRUO) Calcula correlaes para as combinaes especificadas de variveis. Deve ser usada em conjunto com a instruo VAR. S i n tax e :
WITH Variveis;

Variveis Lista de uma ou mais variveis para obter coeficientes de correlao de combinaes especficas. Exemplo: * se forem declaradas as instrues; VAR A B; WITH X Y Z; * sero computadas as combinaes X e A, X e B, Y e A, Y e B, Z e A, Z e B; 8.3.7 VALORES
PERDIDOS

(MISSING

VALUES)

O padro do sistema usa todos os pares de valores no perdidos das variveis listadas nas instrues VAR e WITH; entretanto, valores perdidos podem causar problemas de clculos e criar tendenciosidades, para evitar isso deve ser utilizada a opo NOMISS sempre que se souber da existncia de valores perdidos entre os dados das variveis, ou se deve transformar os valores perdidos em zeros antes do proceimento ser invocado. 8.3.8 ARQUIVOS TYPE=CORR

DE SADA

Arquivos de sada so requisitados pelas opes OUTP=, OUTS=, OUTK= e OUTH= entre as opes do procedimento. Podem ser produzidos arquivos SAS com as estatsticas de Pearson, Spearman, Kendall e Hoeffding. Estes arquivos de sada tm uma especificao prpria denominada arquivos TYPE=CORR. Este tipo de arquivo reconhecido por muitos outros procedimentos estatsticos do SAS System, incluindo PROC REG e PROC FACTOR. Um arquivo TYPE=CORR contm uma matriz de correlao, as mdias das

124

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

variveis, desvios-padro, n nmero de observaes no arquivo original SAS de onde a matriz foi computada e outras estatsticas. Exemplo 8.1 Correlao entre variveis dendrometricas
* EXEMPLO 9.1 - CORRELACAO ENTRE VARIAVEIS DENDROMETRICAS; TITLE; DATA ARVORES; INPUT ARVORE H HC DCC CASCA @@; DATALINES; 1 21.05 16 26.1 2.9 13 16.8 12 22 3.5 25 19.3 13 16.6 2.3 37 20.1 14 20.4 1.6 2 18.8 12 16.6 1.6 14 20.5 15 23.6 3.2 26 21 14 22.6 3.2 38 21.5 15 25.1 3.1 3 21 15 23.6 2.9 15 16.7 11 16.9 2.9 27 20.9 15 23.2 3.5 39 17.4 12 17.2 2.2 4 19.8 13 17.8 2.2 16 21.5 15 22.6 3.2 28 20.7 15 22.9 2.8 40 18 12 18.1 2.5 5 19.3 13 21 1.9 17 20.3 15 24.8 3.5 29 17.2 11 15.6 1.9 41 21 15 23.6 3.9 6 20.8 15 25.8 3.2 18 19.3 13 17.8 2.5 30 18.1 11 13.1 1.3 42 20.7 14 21 2.2 7 17 11 13.6 0.4 19 19.6 13 15.9 2.2 31 20.5 14 21.3 3.2 43 15.6 10 15.6 3.8 8 21.8 15 23.6 3.2 20 19.7 13 21 3.5 32 20.1 14 25.1 4.1 44 20.3 13 17.5 1.6 9 22.1 15 20.4 3.2 21 19.5 14 23.9 3.5 33 18 12 16.2 2.2 45 21 14 21.3 2.5 10 21.6 15 23.2 3.5 22 21.5 14 21.3 2.8 34 17.3 11 15.3 2.6 46 17.7 11 15 1.9 11 17.3 11 14.3 1.9 23 19.9 14 22.9 2.5 35 18.6 13 18.8 2.6 47 19.1 13 18.5 2.6 12 17.2 12 18.5 1.9 24 17.7 11 14.6 1.2 36 21.1 15 23.2 2.5 48 20 15 24.8 2.5 ; PROC CORR DATA=ARVORES; VAR H HC DCC CASCA; RUN; QUIT; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Neste exemplo so usados os dados de altura (h), altura comercial (hc), dimetro com casca (dcc) e dupla espessura de casca (casca) de 48 rvores cubadas, em anlise de correlao simples. Os resultados so apresentados no relatrio a seguir:
THE CORR PROCEDURE 4 VARIABLES: H HC DCC CASCA

SIMPLE STATISTICS VARIABLE H HC DCC CASCA N 48 48 48 48 MEAN 19.49896 13.31250 20.07917 2.62292 STD DEV 1.65852 1.57313 3.69727 0.77494 SUM 935.95000 639.00000 963.80000 125.90000 MINIMUM 15.60000 10.00000 13.10000 0.40000 MAXIMUM 22.10000 16.00000 26.10000 4.10000

125

SAS - O essencial da linguagem ____________________________________________________________________________________


PEARSON CORRELATION COEFFICIENTS, N = 48 PROB > |R| UNDER H0: RHO=0 H H 1.00000 HC 0.92611 <.0001 1.00000 DCC 0.74732 <.0001 0.89811 <.0001 1.00000 CASCA 0.40486 0.0043 0.52108 0.0001 0.68737 <.0001 1.00000

HC

0.92611 <.0001 0.74732 <.0001 0.40486 0.0043

DCC

0.89811 <.0001 0.52108 0.0001

CASCA

0.68737 <.0001

O primeiro quadro apresenta, para cada varivel analisada, as estatsticas: freqncia, mdia, desvio padro, soma, mnimo e mximo valor observado. No segundo quadro apresentado o ndice de correlao de Pearson (R), que so impressos na parte superior de cada clula, observa-se que h correlao altamente significativa entre todas as variveis, pois todos os valores de probabilidade de significncia, que so os valores que aparecem na parte de baixo de cada clula, so inferiores a 1%, ou 0,01 em termos absolutos, como impresso pelo SAS.

126

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Captulo 9 : PROC FREQ

Este procedimento analisa freqncias e propores com a possibilidade de gerar tabelas de freqncia e arquivos de sada com os resultados do processamento.

9.1 SINTAXE
PROC FREQ <OpesDoProcedimento> ; BY variveis ; EXACT OpesEstatsicas </ OpesDeProcessamento> ; OUTPUT <OUT=ArquivoDeSada> OpesDeSada; TABLES requests </ OpesDeTabelas > ; TEST OpeDeTeste ; WEIGHT varivel ;

Opes do procedimento: COMPRESS - A opo COMPRESS comea a exibio da prxima tabela de freqncia de um sentido na mesma pgina que a tabela de um sentido precedente, se houver bastante espao para inici-la. Como padro, a prxima tabela de um sentido comea s na pgina atual se a tabela inteira couber nela. A opo COMPRESS no vlida com a opo PAGE. DATA=ArquivoDeEntrada - ArquivoDeEntrada o nome do arquivo que contm as informaes a serem analisadas pelo procedimento. FORMCHAR(1,2,7) ='Caractereseparador' - A opo FORMCHAR permite definir o caracter a ser utilizado para construir as linhas e divisores das clulas das tabelas de contingncias. H 3 posies diferentes de separao que podem ser definidos usando 20 tipos de caracteres. necessrio definir todas as trs posies: (1) separador vertical, (2) separador horizontal e (7) interseco vertical-horizontal. Exemplos: FORMCHAR(1,2,7)=' ' define todos os separadores como invisveis

127

SAS - O essencial da linguagem ____________________________________________________________________________________

(brancos); FORMCHAR(1,2,7)='|-+' , desenha o caracter | como separador vertical, como separador horizontal e + nas interseces entre linhas verticais e horizontais. NOPRINT Suspende a impresso de relatrio pelo procedimento. Desabilita tambm o sistema de sada do procedimento (Output Delivery System-ODS). ORDER= DATA | FORMATTED | FREQ | INTERNAL - A opo ORDER= especifica a ordem os valores de freqncia e das variveis de tabulao cruzada devem ser apresentadas. As sub-opes da opo ORDER so: DATA - ordena os valores de acordo com o arquivo de entrad; FORMATTED ordena os valores conforme sua formatao - dependente do sistema operacional; FREQ ordena os valores por ordem descendente de freqncia; INTERNAL ordena os valores pela ordem de seus valores no formatados de forma semelhante PROC SORT - o padro e dependende do sistema operacional. PAGE Esta opo obriga apresentao de s uma tabela por pgina. No vlida com a opo COMPRESS. 9.1.1 BY (INSTRUO) Separa a anlise por grupos de observaes. necessrio ordenar o arquivo antes. S i n tax e :
BY Variveis;

Variveis So as variveis pelas quais deve ser separada a anlise formando grupos. 9.1.2 EXACT (INSTRUO) Requisita testes exatos ou dentro de intervalos de confiana. s vezes necessita muita memria e trava o computador. S i n tax e :
EXACT OpesEstatsticas </ OpesComputacionais>;

OpesEstatsticas Especifica as estatsticas para realizar os testes. OpesComputacionais Especifica as opes para computar as estatsticas exatas.

128

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

9.1.3 OUTPUT (INSTRUO) Define um arquivo de sada e as estatsticas que sero gravadas nele. obrigatrio especificar uma s instruo TABLES para gerar o arquivo. S i n tax e :
OUTPUT < OUT=ArquivoDeSada> Opes;

Opes So as estatsticas desejadas no arquivo de sada, sempre referentes ao especificado na instruo TABLES como: AGREE, ALL, CHISQ, CMH e MEASURES. 9.1.4 TABLES (INSTRUO) Solicita freqncias de nico sentido, de n sentidos, tabelas de tabulao cruzada e computa as estatsticas para as mesmas.
TABLES RequisiesDeTabelas / <OUT=ArquivoDeSaida> Opes;

RequisiesDeTabelas Especifica as tabelas de freqncia e de tabulao cruzada a produzir. As tabelas podem ser dos tipos a seguir: TABLES A*(B C); = TABLES A*B A*C; TABLES (A B)*(C D); = TABLES A*C B*C A*D B*D; TABLES (A B C)*D; = TABLES A*D B*D C*D; TABLES A -C; = TABLES A B C;

TABLES (A -C)*D; = TABLES A*D B*D C*D. Sem opes Tabelas de freqncia de um sentido para uma varivel sem opes especificadas produz frequncias simples e acumuladas, percentagens das freqncias simples e acumuladas para cada valor da varivel em anlise. Se for solicitada uma tabela de duplo sentido ou uma tabela de tabulao cruzada de n sentidos sem especificar opes, o PROC FREQ produz tabelas de tabulao cruzada que incluem freqncias de clula, porcentagens de clula da freqncia total, percentagens de clula de freqncias de linha e percentagens de clula de freqncias de coluna. O procedimento exclui observaes com valores perdidos da tabela mas exibe a freqncia total de observaes perdidas sob cada tabela. Opes So relacionadas a seguir: AGREE < (WT=FC) >; ALL; ALPHA= ; BINOMIAL < (P= valor) | (LEVEL= NmeroDeNveis | ValorDoNvel) >; BINOMIALC < (P= valor) | (LEVEL= NmeroDeNveis | ValorDoNvel) >; CELLCHI2; CHISQ; CL; CMH; CMH1; CMH2; CONTENTS=TextoDeLigao; CONVERGE=Valor; CUMCOL; DEVIATION; FISHER | EXACT; EXPECTED; FORMATO=Formato-nome; JT; LIST;
129

SAS - O essencial da linguagem ____________________________________________________________________________________

MAXITER=Nmero; MEASURES; MISSING; MISSPRINT; NOCOL; NOCUM; NOFREQ; NOPERCENT; NOPRINT; NOROW; OUT=ArquivoSAS; OUTCUM; OUTEXPECT; OUTPCT; PLCORR; PRINTKWT; RELRISK; RISKDIFF; RISKDIFFC; SCORES=Tipo; SCOROUT; SPARSE; TESTF=(Valores); TESTP=(Valores); TOTPCT; TREND; OUT=ArquivoSAS Esta opo quando usada com a instruo permite gerar uma arquivo de sada com os valores e frequncias das variveis do arquivo de entrada em que a varivel COUNT contm as freqncias e a varivel PERCENT contm as percentagens. Podem ser especificadas tambm as opes OUTCUM (freqncias acumuladas), OUTEXPECT (freqncias esperadas) e OUTPCT (freqncia me percentagem). A opo SPARSE lista todas as possibilidades para tabelas de n sentidos quando n>1. 9.1.5 TEST (INSTRUO) A instruo TEST requisita testes assintticos para associaes de medies especificadas e medies de conformidade. necessrio utilizar a instruo TABLES com a instruo TEST. S i n tax e :
TEST Estatstica(s);

Estatstica(s) Especifica as estatsticas que devem ser fornecidas com os testes assintticos. 9.1.6 WEIGHT (INSTRUO) Especifica uma varivel numrica que possui os valores para usar como freqncia das observaes do arquivo de dados de entrada. S i n tax e :
WEIGHT Varivel;

Varivel o nome da varivel que possui os valores para usar como freqncia das observaes do arquivo de dados de entrada. Exemplo 9.1 Freqncia de rvores bifurcadas
* EXEMPLO 9.1 - FREQUENCIA DE ARVORES POR SITUACAO; DATA ARVORES; INPUT PARCELA ARVORE DAP SITUACAO SITIO @@; CLASSE=INT(DAP/5); ************************************************** 1 2 3 4 5

130

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
SITUACOES DAS ARVORES: 0=NORMAL 1=MORTA 2=BIFURDADA 3=QUEBRADA 4=DOENTE 5=ATACADA POR PRAGA ************************************************** ; DATALINES; 1 1 19.5 0 1 3 1 12.8 0 1 5 1 14.5 0 2 1 2 17.3 0 1 3 2 17.2 2 1 5 2 20.8 0 2 1 3 19.9 0 1 3 3 18.6 0 1 5 3 11.1 0 2 1 4 27.9 0 1 3 4 19.3 0 1 5 4 13.0 2 2 1 5 30.9 0 1 3 5 25.5 0 1 5 5 14.9 0 2 1 6 14.4 0 1 3 6 0.0 1 1 5 6 15.4 0 2 1 7 0.0 1 1 3 7 20.8 0 1 5 7 14.1 0 2 1 8 12.6 0 1 3 8 16.8 0 1 5 8 19.7 0 2 1 9 22.0 2 1 3 9 0.0 1 1 5 9 19.7 0 2 1 10 20.3 0 1 3 10 15.6 0 1 5 10 15.0 0 2 1 11 19.6 0 1 3 11 9.6 0 1 5 11 17.5 0 2 1 12 19.8 0 1 3 12 14.0 0 1 5 12 23.3 0 2 1 13 26.1 0 1 3 13 22.5 0 1 5 13 8.3 0 2 1 14 17.0 0 1 3 14 0.0 1 1 5 14 15.3 4 2 1 15 19.5 0 1 3 15 13.8 0 1 5 15 15.1 0 2 1 16 14.1 0 1 3 16 19.5 0 1 5 16 17.0 0 2 1 17 22.3 0 1 3 17 18.5 0 1 5 17 17.4 0 2 1 18 13.5 0 1 3 18 20.6 0 1 5 18 13.9 0 2 1 19 20.5 0 1 3 19 19.5 0 1 5 19 0.0 1 2 1 20 20.5 0 1 3 20 19.5 3 1 5 20 15.7 0 2 1 21 16.5 0 1 3 21 15.8 0 1 5 21 16.1 0 2 1 22 23.0 0 1 3 22 21.1 0 1 5 22 16.7 0 2 1 23 14.7 0 1 3 23 12.3 0 1 5 23 18.6 0 2 1 24 19.9 0 1 3 24 30.8 0 1 5 24 13.2 2 2 1 25 14.9 0 1 3 25 20.3 0 1 5 25 21.9 0 2 1 26 17.1 0 1 3 26 22.2 2 1 5 26 19.7 0 2 1 27 22.5 2 1 3 27 11.1 0 1 5 27 11.1 0 2 1 28 19.9 0 1 3 28 19.3 0 1 5 28 23.3 0 2 1 29 13.5 0 1 3 29 21.1 0 1 5 29 22.7 0 2 1 30 13.1 0 1 3 30 9.7 0 1 5 30 21.8 0 2 1 31 19.4 0 1 3 31 15.2 0 1 5 31 10.8 0 2 1 32 15.0 0 1 3 32 26.5 0 1 5 32 11.3 0 2 1 33 17.0 0 1 3 33 20.6 0 1 5 33 19.9 0 2 1 34 20.0 0 1 3 34 12.3 0 1 5 34 9.0 0 2 1 35 11.8 0 1 3 35 9.9 0 1 5 35 17.0 2 2 1 36 18.1 0 1 3 36 15.0 0 1 5 36 19.7 0 2 1 37 20.0 0 1 3 37 15.6 0 1 5 37 22.0 0 2 1 38 20.3 0 1 3 38 17.5 0 1 5 38 17.9 0 2 1 39 15.9 0 1 3 39 22.1 0 1 5 39 14.6 0 2 1 40 16.2 0 1 3 40 24.1 0 1 5 40 17.5 0 2 1 41 16.4 0 1 3 41 20.8 0 1 5 41 12.6 0 2 1 42 14.9 0 1 3 42 19.0 0 1 5 42 21.1 0 2 1 43 11.4 0 1 3 43 14.4 0 1 5 43 26.4 0 2 1 44 17.6 0 1 3 44 12.8 0 1 5 44 18.2 0 2 1 45 12.7 0 1 3 45 13.5 0 1 5 45 16.6 2 2 1 46 19.5 0 1 3 46 15.1 0 1 5 46 20.0 0 2 1 47 11.8 0 1 3 47 19.8 0 1 5 47 14.6 0 2 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

131

SAS - O essencial da linguagem ____________________________________________________________________________________


1 48 26.3 0 1 3 48 25.5 0 1 5 48 19.7 0 2 1 49 17.5 0 1 3 49 0.0 1 1 5 49 19.9 0 2 1 50 16.7 0 1 3 50 19.3 0 1 5 50 9.0 0 2 2 1 13.7 0 1 4 1 28.4 2 2 6 1 18.9 0 2 2 2 16.2 0 1 4 2 23.1 0 2 6 2 19.5 2 2 2 3 15.2 0 1 4 3 30.1 0 2 6 3 18.8 0 2 2 4 25.9 0 1 4 4 14.1 0 2 6 4 12.0 0 2 2 5 17.6 0 1 4 5 21.9 0 2 6 5 11.7 0 2 2 6 19.8 0 1 4 6 21.3 0 2 6 6 0.0 1 2 2 7 16.0 2 1 4 7 10.8 0 2 6 7 22.8 0 2 2 8 24.9 0 1 4 8 16.1 0 2 6 8 21.5 0 2 2 9 10.9 0 1 4 9 17.3 0 2 6 9 10.2 0 2 2 10 17.7 0 1 4 10 14.2 0 2 6 10 15.3 0 2 2 11 18.8 0 1 4 11 14.1 0 2 6 11 21.9 0 2 2 12 21.1 0 1 4 12 24.2 0 2 6 12 11.7 0 2 2 13 23.0 0 1 4 13 17.8 0 2 6 13 14.5 0 2 2 14 18.5 0 1 4 14 11.9 0 2 6 14 20.8 0 2 2 15 14.0 0 1 4 15 16.9 0 2 6 15 11.1 2 2 2 16 16.7 0 1 4 16 15.1 0 2 6 16 19.5 0 2 2 17 10.5 0 1 4 17 22.0 0 2 6 17 19.5 0 2 2 18 11.5 0 1 4 18 0.0 1 2 6 18 15.8 0 2 2 19 11.4 0 1 4 19 18.5 2 2 6 19 21.1 0 2 2 20 16.8 0 1 4 20 12.1 0 2 6 20 12.3 0 2 2 21 19.2 0 1 4 21 16.0 0 2 6 21 30.8 0 2 2 22 21.3 0 1 4 22 13.1 0 2 6 22 20.3 0 2 2 23 17.2 0 1 4 23 20.1 0 2 6 23 22.2 0 2 2 24 18.1 0 1 4 24 8.6 0 2 6 24 11.1 0 2 2 25 0.0 1 1 4 25 19.3 0 2 6 25 19.3 2 2 2 26 18.4 0 1 4 26 11.5 0 2 6 26 21.8 4 2 2 27 15.4 0 1 4 27 19.9 0 2 6 27 17.2 0 2 2 28 0.0 1 1 4 28 0.0 1 2 6 28 18.0 0 2 2 29 15.9 0 1 4 29 19.4 0 2 6 29 20.2 0 2 2 30 25.4 0 1 4 30 13.6 2 2 6 30 12.8 0 2 2 31 16.5 5 1 4 31 22.3 0 2 6 31 19.3 0 2 2 32 17.2 0 1 4 32 21.9 0 2 6 32 25.5 0 2 2 33 28.0 0 1 4 33 18.1 0 2 6 33 11.4 0 2 2 34 10.8 0 1 4 34 17.3 0 2 6 34 16.8 0 2 2 35 15.4 0 1 4 35 18.0 0 2 6 35 13.8 0 2 2 36 12.3 0 1 4 36 15.7 0 2 6 36 17.1 0 2 2 37 21.8 2 1 4 37 22.2 0 2 6 37 22.5 0 2 2 38 17.2 0 1 4 38 20.9 0 2 6 38 19.9 2 2 2 39 18.0 0 1 4 39 18.9 2 2 6 39 13.5 0 2 2 40 20.2 0 1 4 40 19.5 0 2 6 40 13.1 0 2 2 41 12.8 0 1 4 41 18.8 0 2 6 41 19.4 0 2 2 42 19.3 0 1 4 42 12.0 0 2 6 42 15.0 0 2 2 43 25.5 0 1 4 43 11.7 0 2 6 43 17.0 5 2 2 44 11.4 0 1 4 44 0.0 1 2 6 44 20.0 0 2 2 45 16.8 0 1 4 45 22.8 0 2 6 45 11.8 0 2 2 46 13.8 0 1 4 46 21.5 0 2 6 46 18.1 0 2 2 47 19.5 0 1 4 47 10.2 0 2 6 47 20.0 0 2 2 48 14.4 0 1 4 48 15.3 0 2 6 48 20.3 0 2 2 49 12.8 0 1 4 49 21.9 0 2 6 49 11.4 0 2 2 50 20.6 0 1 4 50 11.7 0 2 6 50 16.8 0 2 ; PROC SORT DATA=ARVORES; BY SITIO CLASSE SITUACAO; PROC FREQ DATA=ARVORES; TITLE 'FREQUENCIA DE ARVORES EM CADA SITIO POR SITUACAO'; 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 100 101 102 103 104 105 016 107 108 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130

132

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
TABLES SITIO * SITUACAO; TABLES CLASSE * SITUACAO; TABLES SITIO * CLASSE * SITUACAO; RUN; QUIT; 131 132 133 134 135

So criadas classes de DAP com intervalo de 5 cm atravs da Linha 4 do programa. So dados trs comandos para elaborao de tabelas (TABLES), sendo que o ltimo gera duas tabelas, uma para cada stio (Linhas 131 a 133). O resultado do processamento so as tabelas de referncia cruzada com as situaes das rvores localizadas nas colunas. Interpretando os resultados da primeira tabela, observa-se que no stio 1, 90% das rvores so normais, 4,67% so mortas, 4% so bifurcadas, 0,67% so quebradas, 0% so doentes e 0,67% so atacadas por pragas; no stio 2, 86,67% so normais, 3,33% so mortas, 8% so bifurcadas, 0% so quebradas, 1,33% so doentes e 0,67% so atacadas por pragas. A interpretao das demais tabelas segue o mesmo raciocnio.

133

SAS - O essencial da linguagem ____________________________________________________________________________________


FREQUENCIA DE ARVORES EM CADA SITIO POR SITUACAO The FREQ Procedure Frequency Percent Row Pct Col Pct Table of SITIO by SITUACAO SITUACAO SITIO 1 0 135 45.00 90.00 50.94 130 43.33 86.67 49.06 265 88.33 1 7 2.33 4.67 58.33 5 1.67 3.33 41.67 12 4.00 2 6 2.00 4.00 33.33 12 4.00 8.00 66.67 18 6.00 3 1 0.33 0.67 100.00 0 0.00 0.00 0.00 1 0.33 4 0 0.00 0.00 0.00 2 0.67 1.33 100.00 2 0.67 5 1 0.33 0.67 50.00 1 0.33 0.67 50.00 2 0.67 Total 150 50.00

150 50.00

Total

300 100.00

134

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
Table of CLASSE by SITUACAO SITUACAO CLASSE 0 0 0 0.00 0.00 0.00 7 2.33 100.00 2.64 72 24.00 94.74 27.17 112 37.33 89.60 42.26 58 19.33 92.06 21.89 12 4.00 92.31 4.53 4 1.33 100.00 1.51 265 88.33 1 12 4.00 100.00 100.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 12 4.00 2 0 0.00 0.00 0.00 0 0.00 0.00 0.00 4 1.33 5.26 22.22 9 3.00 7.20 50.00 4 1.33 6.35 22.22 1 0.33 7.69 5.56 0 0.00 0.00 0.00 18 6.00 3 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 1 0.33 0.80 100.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 1 0.33 4 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 1 0.33 0.80 50.00 1 0.33 1.59 50.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 2 0.67 5 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 2 0.67 1.60 100.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 2 0.67 Total 12 4.00

Frequency Percent Row Pct Col Pct

7 2.33

76 25.33

125 41.67

63 21.00

13 4.33

4 1.33

Total

300 100.00

135

SAS - O essencial da linguagem ____________________________________________________________________________________


Table 1 of CLASSE by SITUACAO Controlling for SITIO=1 SITUACAO CLASSE 0 0 0 0.00 0.00 0.00 3 2.00 100.00 2.22 35 23.33 100.00 25.93 61 40.67 93.85 45.19 24 16.00 85.71 17.78 10 6.67 100.00 7.41 2 1.33 100.00 1.48 135 90.00 1 7 4.67 100.00 100.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 7 4.67 2 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 2 1.33 3.08 33.33 4 2.67 14.29 66.67 0 0.00 0.00 0.00 0 0.00 0.00 0.00 6 4.00 3 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 1 0.67 1.54 100.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 1 0.67 4 0 0.00 0.00 . 0 0.00 0.00 . 0 0.00 0.00 . 0 0.00 0.00 . 0 0.00 0.00 . 0 0.00 0.00 . 0 0.00 0.00 . 0 0.00 5 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 1 0.67 1.54 100.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 1 0.67 Total 7 4.67

Frequency Percent Row Pct Col Pct

3 2.00

35 23.33

65 43.33

28 18.67

10 6.67

2 1.33

Total

150 100.00

136

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
Table 2 of CLASSE by SITUACAO Controlling for SITIO=2 SITUACAO CLASSE 0 0 0 0.00 0.00 0.00 4 2.67 100.00 3.08 37 24.67 90.24 28.46 51 34.00 85.00 39.23 34 22.67 97.14 26.15 2 1.33 66.67 1.54 2 1.33 100.00 1.54 130 86.67 1 5 3.33 100.00 100.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 5 3.33 2 0 0.00 0.00 0.00 0 0.00 0.00 0.00 4 2.67 9.76 33.33 7 4.67 11.67 58.33 0 0.00 0.00 0.00 1 0.67 33.33 8.33 0 0.00 0.00 0.00 12 8.00 3 0 0.00 0.00 . 0 0.00 0.00 . 0 0.00 0.00 . 0 0.00 0.00 . 0 0.00 0.00 . 0 0.00 0.00 . 0 0.00 0.00 . 0 0.00 4 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 1 0.67 1.67 50.00 1 0.67 2.86 50.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 2 1.33 5 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 1 0.67 1.67 100.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 0 0.00 0.00 0.00 1 0.67 Total 5 3.33

Frequency Percent Row Pct Col Pct

4 2.67

41 27.33

60 40.00

35 23.33

3 2.00

2 1.33

Total

150 100.00

137

SAS - O essencial da linguagem ____________________________________________________________________________________

Captulo 10 : PROC MEANS / PROC SUMMARY

O procedimento MEANS calcula estatsticas simples para variveis numricas. O procedimento MEANS com a opo NOPRINT realiza o mesmo que o SUMMARY. Os dois procedimentos so equivalentes, mas o PROC SUMMARY no emite relatrio automtico.

10.1 SINTAXE
PROC MEANS <opes> <estatsticas>; VAR <variable list>; BY <variable list>; OUTPUT <out= > <output statistics list>

10.2 OPES DO PROCEDIMENTO


Algumas opes do procedimento so: DATA= - Nome do arquivo com dados a serem analizados. NOPRINT- suprime a impresso do PROC MEANS. Usa-se quando um arquivo de sada criado PROC MEANS. Estaststicas

10.3 ALGUMAS ESTATSTICAS


Algumas estatsticas providas pelo procedimento so: CSS Soma de quadrados corrigidos.
138

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

CV Coeficiente de variao. MEAN Mdia. N Nmero de observaes. NMISS Nmero de observaes perdidas. STD Desvio padro. SUM Soma. USS Soma de quadrados no-corrigidos. VAR - Varincia (No confundir com a declarao VAR). Exemplo 10.1 Mdias por parcela, por stio Neste exemplo foram utilizados os dados do exemplo 9.1. As alturas foram calculadas pela equao (Linha 6). As rvores mortas so deletadas antes do clculo das alturas (Linha 5), para evitar erro de diviso por zero, pois as rvores mortas tm DAP=0, o que iria interromper o processamento.
* EXEMPLO 10.1 - MDIAS POR PARCELA, POR SITIO; DATA ARVORES; INPUT PARCELA ARVORE DAP SITUACAO SITIO @@; CLASSE=INT(DAP/5); IF SITUACAO=1 THEN DELETE; H=23.5-1047.3/DAP**2; ************************************************** SITUACOES DAS ARVORES: 0=NORMAL 1=MORTA 2=BIFURDADA 3=QUEBRADA 4=DOENTE 5=ATACADA POR PRAGA ************************************************** ; DATALINES; 1 1 19.5 0 1 3 1 12.8 0 1 5 1 14.5 0 2 1 2 17.3 0 1 3 2 17.2 2 1 5 2 20.8 0 2 1 3 19.9 0 1 3 3 18.6 0 1 5 3 11.1 0 2 ... ... ... ; PROC MEANS DATA=ARVORES MEAN STD; TITLE1 'MEDIA E DESVIO PADRAO DO DIAMETRO E ALTURA'; 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

H=23,5-1047,3/DAP

139

SAS - O essencial da linguagem ____________________________________________________________________________________


TITLE2 'POR CLASSE DE DAP EM CADA SITIO'; CLASS CLASSE; VAR DAP H; BY SITIO; RUN; QUIT; 27 28 29 30 31 32

Como resultado do processamento emitido o seguinte relatrio:


MEDIA E DESVIO PADRAO DO DIAMETRO E ALTURA POR CLASSE DE DAP EM CADA SITIO THE MEANS PROCEDURE SITIO=1 CLASSE 1 2 3 4 5 6 N OBS 3 35 65 28 10 2 VARIABLE DAP H DAP H DAP H DAP H DAP H DAP H MEAN 9.7333333 12.4398637 12.8771429 16.9952459 17.6738462 20.0664777 21.4464286 21.2016162 26.2600000 21.9759446 30.8500000 22.3995655 STD DEV 0.1527525 0.3446260 1.2718874 1.3369736 1.5691635 0.6231953 1.2621211 0.2506761 0.9663218 0.1066607 0.0707107 0.0050446

SITIO=2 CLASSE 1 2 3 4 5 6 N OBS 4 41 60 35 3 2 VARIABLE DAP H DAP H DAP H DAP H DAP H DAP H MEAN 8.7250000 9.6944718 12.5146341 16.5803611 17.7400000 20.0884458 21.6685714 21.2534504 26.7666667 22.0294142 30.4500000 22.3700255 STD DEV 0.3403430 1.0972422 1.3576747 1.4867026 1.5974768 0.6395992 1.0742361 0.2225752 1.4843629 0.1585209 0.4949747 0.0367314

140

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Captulo 11 : PROC MODEL


11.1 INTRODUO
O procedimento MODEL analisa modelos nos quais as relaes entre as variveis incluem um sistema de uma ou mais equaes nolineares. Usos primrios do procedimento MODEL so estimao, simulao, e prognose de modelos simultneos de equaes nolineares. Um sistema de equaes pode ser no-linear quanto aos parmetros, quanto s variveis, ou ambos, quanto aos parmetros e variveis. Um sistema no-linear quanto aos parmetros significa que no requerido que a relao matemtica entre as variveis e os parmetros tenha forma linear. Um modelo linear pode ser considerado como um caso especial de modelo no-linear. Portanto, este procedimento pode ser utilizado para ajustar equaes lineares. Um modelo simples no-linear tem a forma:

y = f ( x, ) +
Em que: y a varivel dependente, x um vetor de variveis exgenas, um vetor de parmetros correspondentes a x e o erro.

141

SAS - O essencial da linguagem ____________________________________________________________________________________

Para estimar parmetros desconhecidos de um modelo no-linear utilizando o procedimento MODEL, faa o seguinte: Use o procedimento MODEL com a opo DATA= para especificar o arquivo de dados contendo os pares de valores de y e x; Escreva a equao para o modelo usando declaraes SAS, incluindo todos os parmetros, variveis e operadores aritmticos, deixando de fora o termo de erro; Use a declarao FIT seguida do nome da varivel dependente para ajustar o modelo de equao para os dados de entrada para determinar os parmetros . O PROC MODEL inclui os seguintes mtodos para estimativa de parmetros e as seguintes possibilidades e ferramentas: Ordinary Least Squares (OLS) Mnimos quadrados ordinrios; Two-Stage Least Squares (2SLS) Mnimos quadrados em dois estgios; Seemingly Unrelated Regression (SUR) and iterative SUR (ITSUR) Regresso aparentemente no relacionada (SUR) e SUR interativa; Three-Stage Least Squares (3SLS) and iterative 3SLS (IT3SLS) - Mnimos quadrados em trs estgios (3SLS) e 3SLS interativa; Generalized Method of Moments (GMM) Mtodo de momentos generalizado; Full Information Maximum Likelihood (FIML) - Informao completa de Mxima Verossimilhana; Simulation and forecasting capabilities Capacidades de simulao e prognoses; Monte Carlo simulation Simulao Monte Carlo; Goal seeking solutions Busca de soluo de metas; Programao de declaraes SAS para definir sistemas de equaes no-lineares simultneas;

142

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Ferramentas para anlise da estrutura de sistemas de equaes no lineares simultneas; ARIMA, PDL e outras capacidades de modelagem dinmica; Ferramentas para estimar e especificar a estrutura do erro de covarincia; Ferramentas para estimar e solucionar equaes diferenciais ordinrias. Um sistema geral de equaes no-lineares pode ser escrito como:

q1 ( y1,t + y 2,t ,..., y g ,t , x1,t , x 2,t ,..., x m ,t , 1 , 2 ,..., p ) = 1,t


q 2 ( y1,t + y 2,t ,..., y g ,t , x1,t , x 2,t ,..., x m ,t , 1 , 2 ,..., p ) = 2,t M q g ( y1,t + y 2,t ,..., y g ,t , x1,t , x 2,t ,..., x m,t , 1 , 2 ,..., p ) = g ,t
Em que: where yi,t uma varivel endgena, xi,t uma varivel exgena, i um parmetro e o erro desconhecido. O subscrito t representa o tempo ou outro subscrito para os dados.

O modelo pode ser escrito na forma de vetor como:

q ( y t , xt , ) = t
O procedimento Model permite as duas formas: matricial e vetorial. Neste procedimento possvel o uso de muitas declaraes do tipo que se usa nos passos de programao de manipulao e criao de arquivos, os DATA STEP. Podem ser utilizados laos com DO / END, declaraes de atribuio com expresses matemticas, declaraes de tomada de deciso com IF / THEN / ELSE, etc. No caso de dados em srie temporal com erros correlacionados, o erro referente aos parmetros do sistema sobre-estimado.

143

SAS - O essencial da linguagem ____________________________________________________________________________________

Outras instrues para uso do procedimento e para ajuste de equaes no-lineares podem ser encontradas no manual SAS/ETS Software - Chapter 14 - The MODEL Procedure. Cary: SAS Institute, 1999. 238p.

11.2 VALIDAO DE MODELOS


O procedimento MODEL particularmente til para realizar a validao de modelos, verificando a homocedasticidade da varincia, a independncia dos resduos e a normalidade na distribuio dos resduos. 11.2.1 HOMOCEDASTICIDADE

DA VARINCIA

Uma das principais pressuposies para os mnimos quadrados da regresso usual a homogeneidade da varincia (homocedasticidade). Se o modelo for bem-ajustado, no deveria haver nenhum padro para os resduos delineados (plotados) contra os valores ajustados. Se a varincia dos resduos no constante, ento dito que a varincia residual "heterocedstica". H mtodos grficos e no-grficos para detectar heteroscedasticidade. Um mtodo grfico geralmente usado delinear (plotar) os resduos contra valores ajustados, conforme descrito na seo 3.9 Critrios para seleo de equaes de regresso. O SAS System calcula os resduos e valores ajustados atravs dos

procedimentos GLM, REG e NLIN, que podem ser apresentados em um grfico. Quando os resduos so distribudos sem nenhum padro, no h heterocedasticidade. Um mtodo matemtico para determinar se h homogeneidade de varincia dos resduos e que possvel de ser executado atravs do

144

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

SAS System o teste de White (SAS Institute, 2004). O teste de White computado achando nR2 de uma regresso de ei2 sobre todas as variveis distintas em X x X, onde X o vetor de variveis dependentes incluindo uma constante. Esta estatstica distribuda assintoticamente como Qui-quadrado ( ) com k-1 graus de liberdade, onde k o
2

nmero de regressores. O mtodo testa a hiptese nula de que a varincia residual homognea. Ento, se o valor p for muito pequeno, a hiptese rejeitada e aceita-se a hiptese alternativa de que a varincia no homognea. Para isso utilizada a opo SPEC na declarao do modelo conforme o exemplo a seguir:
PROC REG; MODEL Y = X / SPEC;

O teste tambm pode ser executado atravs da opo WHITE da declarao FIT do procedimento MODEL no SAS System, como no exemplo a seguir:
PROC MODEL; PARMS A B C; Y = A + B * X1 + C * X2; FIT Y / WHITE;

11.2.2 INDEPENDNCIA

DOS RESDUOS

O valor da estatstica d de Durbin-Watson (SAS Institute, 2004) obtido atravs da opo CLM da declarao MODEL do procedimento GLM do SAS System, ou ainda da opo DWPROB da declarao FIT do procedimento MODEL, ou ainda da opo DW da declarao MODEL do procedimento REG, conforme os exemplos abaixo:

PROC REG; MODEL Y=X1 X2 / DW;

145

SAS - O essencial da linguagem ____________________________________________________________________________________

ou
PROC MODEL; PARMS A B C; Y = A + B * X1 + C * X2; FIT Y / DWPROB;

esperado que a estatstica d seja aproximadamente igual a 2, se os resduos forem independentes. Caso contrrio, se os resduos forem correlacionados positivamente, tender a ser prxima de 0 (zero), ou prxima de 4, se os resduos forem correlacionados negativamente (Nemec, 1996). O valor de d dado por:

d=

(E
i=2

Ei 1 )
2 i

E
i =1

Em que: d = estatstica d de Durbin-Watson; Ei = erro estocstico = n = nmero de observaes; Y i = valor estimado; Yi = valor observado.
^

Y i Yi ;

11.2.3 NORMALIDADE

DA DISTRIBUIO DOS RESDUOS

O princpio deste teste baseia-se na comparao da curva da freqncia cumulativa dos dados com a funo de distribuio terica em hiptese. Quando as duas curvas se sobrepem a estatstica de teste calculada atravs da mxima diferena entre ambas. A magnitude da diferena estabelecida segundo a distribuio de probabilidade dessa estatstica, que se encontra tabelada. Se os dados experimentais se afastam significativamente do que esperado da distribuio em hiptese, ento as curvas obtidas devem encontrar-se igualmente afastadas e, por um raciocnio anlogo, se o ajustamento ao

146

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

modelo

hipottico

admissvel,

ento

as

curvas

tm

um

desenvolvimento prximo. A estatstica (D) de Kolmogorov-Smirnov (SAS Institute, 2004) uma estatstica do tipo Funo de Distribuio Emprica (EDF). A Funo de Distribuio Emprica (EDF) definida para um conjunto de n observaes independentes X1,... , Xn com uma funo de distribuio comum F(x). Sob a hiptese de nulidade, F(x) a distribuio normal. As observaes so ordenadas da menor para a maior como X(1),... , X(n). A funo de distribuio emprica Fn(x), definida como: Fn(x) = 0, x < X(1) Fn(x) = i/n, X(i) x < X(i+1), i = 1,2,...,n-1 Fn(x) = 1, x(n) x Note-se que Fn(x) uma funo seqencial que avana em [1/n] a cada observao. Esta funo calcula a funo de distribuio F(x). A qualquer valor x, Fn(x) a proporo de observaes menor ou igual a x, enquanto F(x) a probabilidade de uma observao ser menor ou igual a x. Estatsticas de EDF medem a discrepncia entre Fn(x) e F(x). As frmulas computacionais para as estatsticas de EDF fazem uso da transformao da integral de probabilidade U=F(X). Se F(X) a funo de distribuio de X, a varivel aleatria U distribuda uniformemente entre 0 e 1. Dadas n observaes de X(1),... , X(n), os valores U(i)=F(X(i)) so computados como mostrado a seguir. A estatstica (D) de KolmogorovSmirnov baseada na maior diferena vertical entre F(x) e Fn(x), sendo definida como:

147

SAS - O essencial da linguagem ____________________________________________________________________________________

D=supx |Fn(x) F(x)| A estatstica de Kolmogorov-Smirnov computada como o mximo de D+ e D-, onde D+ a maior distncia vertical entre o EDF e a funo de distribuio quando o EDF maior que a funo de distribuio e D a maior distncia vertical quando o EDF for menor que a funo de distribuio. D+ = maxi ( (i/n) - U(i) ) D- = maxi ( U(i) (i-1)/n ) D = max ( D+, D- ) O procedimento CAPABILITY do SAS System usa a estatstica D de Kolmogorov modificada para testar os dados contra a distribuio normal com mdia e varincia igual mdia e varincia da amostra. No procedimento MODEL a estatstica utilizada somente para amostras acima de 2000 indivduos. No caso de pequenas amostras utilizado o teste de Shapiro-Wilk descrito a seguir, em substituio ao teste de Kolmogorov-Smirnov. No procedimento MODEL o teste de normalidade obtido pela opo NORMAL da declarao FIT como no exemplo:
PROC MODEL; PARMS A B C; Y=A+B*X1+C*X2; FIT Y / NORMAL;

A estatstica W de Shapiro-Wilk (IU, 2004) a razo entre o melhor estimador da varincia e a soma dos quadrados corrigidos do estimador da varincia dos dados coletados. O valor positivo e menor do que 1, sendo tanto mais prximo da normalidade quanto mais prximo de 1. A estatstica W requer valores entre 7 e 2000 unidades, sendo o padro para pequenas amostras (2000) atravs do procedimento

UNIVARIATE do SAS System, que usa o teste de Kolmogorov-Smirnov para amostras com tamanho superior a 2000 unidades. Um valor

148

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

significativo para o valor de W indica falta de normalidade para a varivel analisada (Anjos, 2003). O valor de W calculado como segue (IU, 2004):

(a x( ) ) W= (x x )
i i i

2 2

Onde ai=(a1, a2, , an) = m'.V-1 [m'.V-1.V-1.m]-1/2 ; m'=(m1, m2, ..., mn) o vetor de valores esperados da estatstica de ordem normal; V a matriz de covarincia n por n; x= (x1, x2, , xn) uma amostra aleatria e x(1)< x(2)< <x(n).

S i n tax e
PROC MODEL Opes; ABORT ; ARRAY ArrayNome Variveis ... ; ATTRIB ListadeVariveis ListaDeAtributos [ListadeVariveis ListaDeAtributos]; BOUNDS Limite1, Limite2 ... ; BY Variveis; CALL Nome [( Expresso [, Expresso ... ] ) ] ; CONTROL Varivel [ Valor ] ... ; DELETE ; DO [Varivel = Expresso [ TO Expresso ] [ BY Expresso ] [, Expresso [ TO Expresso ] [ BY Expresso ] ... ] [ WHILE Expresso ] [ UNTIL Expresso ] ; END ; DROP Varivel ... ; ENDOGENOUS Varivel [ ValoresIniciais ] ... ; ERRORMODEL NomeDaEquao Distribuio [ CDF=(CDF(Opes)) ]; ESTIMATE item [ , item ... ] [ ,/ Opes] ; EXOGENOUS Varivel [ ValoresIniciais ] ... ; FIT equations [ PARMS=(ValoresDosParmetros ... ) ] START=(ValoresDosParmetros... ) [ DROP=(Parmetros)] [ / Opes ]; FORMAT Varivel [ Formato ] [ DEFAULT = FormatoPadro ]; GOTO RtuloDeDeclarao ; ID Varivel ; IF Expresso ; IF Expresso THEN programming_statement ; ELSE programming_statement ; variable = Expresso ; variable + Expresso ; INCLUDE ArquivosDeModelos ... ; INSTRUMENTS [ Instrumentos ] [_EXOG_ ] [EXCLUDE=(Parmetros) ] [/ Opes ] ; KEEP Varivel ... ; LABEL Varivel ='label' ... ; LENGTH Variveis [$ ] comprimento ...[DEFAULT=comprimento ];

149

SAS - O essencial da linguagem ____________________________________________________________________________________


LINK Declarao_label ; OUTVARS Varivel ... ; PARAMETERS Varivel [ Valor ] Varivel [ Valor ] ... ; PUT imprimir_item ... [ @ ] [ @@ ] ; RANGE Varivel [ = first ] [TO last ]; RENAME NomeAntigo =NomeNovo ... [ NomeAntigo =NomeNovo ]; RESET Opes; RESTRICT Restrio1 [ , Restrio2 ... ] ; RETAIN Variveis Valores [ Variveis Valores...] ; RETURN ; SOLVE Variveis [SATISFY=(Equaes) ] [/ Opes ] ; SUBSTR( Varivel, ndice, Comprimento ) = Expresso ; SELECT [ ( Expresso ) ] ; OTHERWISE ProgamaoDaDeclarao ; STOP ; TEST [ "Nome" ] Teste1 [, Teste2 ... ] [,/ Opes ] ; VAR Varivel [ ValoresIniciais ] ... ; WEIGHT Varivel; WHEN ( Expresso ) ProgamaoDaDeclarao ;

As funes a seguir utilizam a palavra chave em ingls: Lag, que significa anterior em portugus. As funes do PROC MODEL, para tratamento de dados de sries temporais e expresses em perodos anteriores, so as seguintes: LAGn( i , x ) Retorna o isimo anterior de x, onde n o mximo anterior (ltimo antes do atual); DIFn(x) Diferena de x no anterior n; ZLAGn( i , x ) - Retorna o isimo anterior de x, onde n o mximo anterior (ltimo antes do atual), com anteriores perdidos substitudos por zero. ZDIFn(x) - Diferena com o comprimento do anterior truncado e valores perdidos convertidos para zero. MOVAVGn( x ) A amplitude da mdia mvel n e x uma expresso. O argumento i uma varivel ou expresso para computar a mdia mvel de. Os valores perdidos de x so omitidos no clculo da mdia. Em todas as funes, n representa o nmero de perodos e x uma expresso. O argumento i uma varivel ou expresso com o comprimento dos anteriores (0 <= i <= n), se o valor do ndice i for omitido, o mximo comprimento anterior n usado.

150

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

11.3 VALORES PERDIDOS NO PROC MODEL


Uma observao excluda das estimativas se qualquer varivel usada para ajustar a equao apresentar valor perdido. Exemplo 11.1 Ajuste de uma funo linear e estatsticas de validao do modelo
* EXEMPLO 11.1 - AJUSTE DE UMA FUNCAO LINEAR E ESTATSTICAS DE VALIDACAO DO MODELO; DATA DADOS; INPUT BLOCO TRATAMENTO ARVORE H DBASE DAP VOLUME; D2H=DAP**2*H; DATALINES; 1 0 14 21.05 31.5 26.1 0.53171 1 0 56 18.80 21.6 16.6 0.24366 1 0 65 21.00 29.3 23.6 0.51740 1 40 3 19.80 23.2 17.8 0.29079 1 40 15 19.30 26.7 21.0 0.37148 1 40 50 20.08 30.2 25.8 0.59485 1 60 42 17.00 18.1 13.4 0.12305 1 60 55 21.80 28.3 23.6 0.61318 1 60 60 22.10 24.8 20.4 0.40231 1 80 51 21.60 29.0 23.2 0.50209 1 80 62 17.30 18.5 14.3 0.16202 1 80 67 17.50 22.0 18.5 0.28919 2 0 43 17.80 25.5 22.0 0.30988 2 0 55 20.50 29.0 23.6 0.53559 2 0 62 16.70 19.7 16.9 0.17384 2 40 47 21.50 29.0 22.6 0.50604 2 40 56 20.30 29.3 24.8 0.57305 2 40 65 19.30 21.6 17.8 0.26287 2 60 18 19.60 21.0 15.9 0.23197 2 60 33 19.70 26.1 21.0 0.39317 2 60 58 19.50 30.2 23.9 0.52865 2 80 21 21.50 26.1 21.3 0.42406 2 80 50 17.70 28.6 22.9 0.50028 2 80 67 19.90 18.5 14.6 0.18820 3 0 27 19.30 19.7 16.6 0.21111 3 0 41 21.00 28.3 22.6 0.45431 3 0 47 20.90 29.6 23.2 0.46010 3 40 25 20.70 29.9 22.9 0.48164 3 40 40 17.20 21.6 15.6 0.18800 3 40 42 18.10 17.2 13.1 0.14907 3 60 53 20.50 27.7 21.3 0.45549 3 60 58 20.10 29.3 25.1 0.55054 3 60 59 18.00 19.1 16.2 0.19369 3 80 19 17.30 19.4 15.3 0.15639 3 80 35 18.60 22.6 18.8 0.29944 3 80 50 21.10 28.3 23.2 0.52996 4 0 20 20.10 30.2 20.4 0.42882 4 0 46 21.50 34.7 25.1 0.61833 4 0 69 17.40 20.7 17.2 0.21127 4 40 19 18.00 22.9 18.1 0.25424 4 40 25 21.00 29.9 23.6 0.55125 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

151

SAS - O essencial da linguagem ____________________________________________________________________________________


4 40 42 20.70 24.8 21.0 0.39309 4 60 7 15.60 18.8 15.6 0.13469 4 60 18 20.30 22.3 17.5 0.31869 4 60 28 21.00 28.3 21.3 0.36157 4 80 5 17.70 19.1 15.0 0.19278 4 80 27 19.10 24.5 18.5 0.32424 4 80 48 20.00 31.5 24.8 0.64111 ; PROC MODEL DATA=DADOS; TITLE AJUSTE DA EQUACAO DE SPURR PARA VOLUME; TITLE2 E VALIDACAO DO MODELO; PARMS B0 B1; VOLUME=B0+B1*D2H; FIT VOLUME / WHITE DW NORMAL; RUN; QUIT; 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

Como resultado impresso o relatrio a seguir:


AJUSTE DA EQUACAO DE SPURR PARA VOLUME E VALIDACAO DO MODELO THE MODEL PROCEDURE MODEL SUMMARY MODEL VARIABLES PARAMETERS EQUATIONS NUMBER OF STATEMENTS 1 2 1 1

MODEL VARIABLES PARAMETERS EQUATIONS

VOLUME B0 B1 VOLUME

THE EQUATION TO ESTIMATE IS VOLUME = F(B0(1), B1(D2H))

NOTE: AT OLS ITERATION 1 CONVERGE=0.001 CRITERIA MET.

152

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

AJUSTE DA EQUACAO DE SPURR PARA VOLUME E VALIDACAO DO MODELO THE MODEL PROCEDURE OLS ESTIMATION SUMMARY DATA SET OPTIONS DATA= DADOS

MINIMIZATION SUMMARY PARAMETERS ESTIMATED METHOD ITERATIONS 2 GAUSS 1

FINAL CONVERGENCE CRITERIA R PPC RPC(B0) OBJECT TRACE(S) OBJECTIVE VALUE 0 0 53.08961 0.994606 0.001362 0.001305

OBSERVATIONS PROCESSED READ SOLVED 48 48

AJUSTE DA EQUACAO DE SPURR PARA VOLUME E VALIDACAO DO MODELO THE MODEL PROCEDURE NONLINEAR OLS SUMMARY OF RESIDUAL ERRORS EQUATION VOLUME DF MODEL 2 DF ERROR 46 SSE MSE ROOT MSE 0.0369 RSQUARE 0.9446 ADJ RSQ 0.9434 DURBIN WATSON 1.8840

0.0627 0.00136

153

SAS - O essencial da linguagem ____________________________________________________________________________________


NONLINEAR OLS PARAMETER ESTIMATES APPROX PR > |T| 0.7177 <.0001

PARAMETER B0 B1

ESTIMATE -0.00526 0.000045

APPROX STD ERR 0.0145 1.623E-6

T VALUE -0.36 28.01

NUMBER OF OBSERVATIONS USED MISSING 48 0

STATISTICS FOR SYSTEM OBJECTIVE OBJECTIVE*N 0.001305 0.0627

AJUSTE DA EQUACAO DE SPURR PARA VOLUME E VALIDACAO DO MODELO THE MODEL PROCEDURE HETEROSCEDASTICITY TEST EQUATION VOLUME TEST WHITE'S TEST STATISTIC 7.11 DF 2 PR > CHISQ 0.0285 VARIABLES CROSS OF ALL VARS

NORMALITY TEST EQUATION VOLUME SYSTEM TEST STATISTIC SHAPIRO-WILK W MARDIA SKEWNESS MARDIA KURTOSIS HENZE-ZIRKLER T VALUE 0.96 0.70 2.34 1.80 PROB 0.1855 0.4032 0.0194 0.0726

154

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Captulo 12 : PROC PLOT / PROC GPLOT

Os procedimentos PLOT e GPLOT produzem grficos de uma varivel contra outra. Cada ponto no grfico corresponde a valores de duas variveis. A descrio completa do procedimento realizada no manual SAS/GRAPH software Users Guide Chapter 21: The GPLOT procedure, Cary: SAS Institute, 1999. 54p. Os dois procedimento so semelhantes. PLOT produz grficos de baixa resoluo e GPLOT, mais atual, produz grficos de alta resoluo e possui mais opes que seu correlato, que mantido somente para compatibilizar programas antigos.

12.1 SINTAXE
PROC GPLOT <DATA=input-data-set> <ANNOTATE=Annotate-data-set> <GOUT=<libref.>output-catalog> <IMAGEMAP=output-data-set> <UNIFORM>; BUBBLE plot-request(s) </option(s)>; BUBBLE2 plot-request(s) </option(s)>; PLOT plot-request(s) </option(s)>; PLOT2 plot-request(s) </option(s)>;

12.2 OPES DO PROCEDIMENTO PROC GPLOT


DATA= especifica o arquivo de entrada.

155

SAS - O essencial da linguagem ____________________________________________________________________________________

FORMCHAR = especifica os carter para usar na construo do eixo HPERCENT = especifica a % da pgina horizontal a usar para cada grfico. VPERCENT = especifica a % da pgina vertical a usar para cada grfico. Por exemplo, a seguinte declarao significa que os eixos dos grficos sero linhas e que cada grfico usar somente 50% da pgina. PROC PLOT FORMCHAR='|----|+|---' VPERCENT=50;

12.3 INSTRUES DO PROCEDIMENTO


BUBBLE - Cria grficos de bolha nos quais uma terceira varivel delineada contra duas variveis representadas pelos eixos horizontais e verticais; o valor da terceira variveis controla o tamanho da bolha. Exigncias: Pelo menos uma solicitao de grfico requerida. Instrues globais: AXIS, FOOTNOTE, TITLE (EIXO, NOTA DE RODAP, TTULO). PLOT Cria grficos em que uma varivel independente delineada no eixo horizontal e uma varivel dependente no eixo vertical. Exigncias: Pelo menos uma solicitao de grfico requerida. Instrues globais: AXIS, FOOTNOTE, LEGEND, PATTERN, SYMBOL, TITLE (EIXO, NOTA DE RODAP, LEGENDA, PADRO, SMBOLO, TTULO). Suporta: funcionalidade seqencial inferior. O pes da ins tr uo PL OT
PLOT GrficoRequerido </ opes>;

Nota: No confundir as opes da instruo com as opes do procedimento PLOT/ GPLOT. GrficoRequerido - Define o cruzamento das variveis y * x, ou y * x =Smbolo, ou y * x = z, em que x a varivel independente, y a varivel dependente e z uma terceira varivel com resultados de uma funo do tipo y=f(x). CAXIS=CorDoEixo Define a cor dos eixos cartezianos. HAXIS=ListaDeValores Especifica os valores para a marcao do eixo horizontal. VAXIS=ListaDeValores Especifica os valores para a marcao do eixo vertical. OVERLAY Permite que um grfico seja desenhado sobre o outro sem apagar o que fica embaixo. AREAS=n Preenche a rea entre duas linhas com um padro. AREAS=1 preenche a primeira rea. AREAS=2 preenche a primeira e segunda reas e assim por diante. Funciona somente se a opo INTERPOL= for utilizada. GRID Desenha uma grade com os pontos principais dos dois eixos vertical e horizontal.

156

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

INTERPOL=JOIN Transforma o grfico em linhas. No se aplica automticamente para grficos com mltiplas linhas que devem ser desenhadas com formas diferentes. Neste caso, quando se quer que as linhas sejam diferentes, necessrio utilizar uma instruo SYMBOLn= para definir que smbolo deve ser utilizado para cada linha, onde n o nmero da linha (Exemplo: symbol4 value=star cv=blue interpol=join;). Quando as linhas podem ser iguais, no necessrio utilizar a instruo SYMBOL. LEGEND | LEGEND=LEGEND<1...99> - Acrescenta legendas ao grfico com os smbolos utilizados. NOLEGEND - Suprime a legenda do grfico. HAXIS=ListaDeValores | AXIS<1...99> Especifica os valores das marcas de diviso do eixo horizontal. HREF=ListaDeValores Especifica a localizao de linhas de referncia perpendicular ao eixo horizontal. HZERO Especifica que a primeira marca sobre a linha horizontal inicia em zero. HAXIS=ListaDeValores | AXIS<1...99> Especifica os valores das marcas de diviso do eixo horizontal. VREF=ListaDeValores Especifica a localizao de linhas de referncia perpendicular ao eixo vertical. VZERO Especifica que a primeira marca sobre a linha vertical inicia em zero. Outras opes esto disponveis para esta instruo. 12.3.1 CARACTERSTICAS
DOS GRFICOS GERADOS POR

PLOT

As caractersticas dos grficos gerados pela instruo PLOT so relacionadas a seguir: Area 1, area 2, - rea abaixo da linha 1, rea abaixo da linha 2 e acima da 1, etc. Axis area rea dentro do espao de delineamento do grfico. Frame - Quadro. Horizontal axis label Rtulo do eixo horizontal. Major ticks marks Marcas de diviso principal do eixo. Minor ticks marks Marcas de diviso secundria do eixo. Offset rea fora da rea de delineamento do grfico e dentro do quadro. Plot line Linha desenhada.

157

SAS - O essencial da linguagem ____________________________________________________________________________________

Plot symbol Smbolo de pontos de delineamento dos cruzamentos y * x. Reference line Linha de referncia. Vertical axis label Rtulo do eixo vertical. As Figuras 7 e 8 apresentam as caractersticas dos grficos de linha e rea desenhados pelo procedimento com a instruo PLOT.

FIGURA 7 - Caractersticas dos grficos gerados por PLOT.

158

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

FIGURA 8 Caractersticas adicionais dos grficos gerados por PLOT. Exemplo 12.1 Grficos resultantes de produto cartesiano e grficos de linhas Neste exemplo so utilizados os dados de 48 rvores cubadas, provenientes de um experimento de desrama de Pinus elliottii Engelman. com quatro tratamentos correspondentes a 0%, 40%, 60% e 80% da altura total das rvores desramadas.
* EXEMPLO 12.1 - GRAFICOS RESULTANTES DE PRODUTO CARTESIANO E GRAFICOS DE LINHA; DATA DADOS; INPUT BLOCO TRATAMENTO ARVORE H DBASE DAP VOLUME; CLASSE=INT(DAP/5); DATALINES; 1 0 14 21.05 31.5 26.1 0.53171 1 0 56 18.80 21.6 16.6 0.24366 ... ... ... 4 80 48 20.00 31.5 24.8 0.64111 ; PROC PRINT; **********************************************************; TITLE '1 - ALTURA * DAP, DE TODAS AS ARVORES'; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

159

SAS - O essencial da linguagem ____________________________________________________________________________________


PROC GPLOT DATA=DADOS; PLOT H * DAP = "*"; RUN; **********************************************************; TITLE '2 - ALTURA * CLASSE DAP = VOLUME'; PROC SORT DATA=DADOS; BY CLASSE; PROC MEANS DATA=DADOS NOPRINT; VAR DAP H VOLUME; BY CLASSE; OUTPUT OUT=MCLASSE MEAN(DAP)=DAP MEAN(H)=H MEAN(VOLUME)=VOLUME; PROC PRINT; PROC GPLOT DATA=MCLASSE; PLOT H * CLASSE = VOLUME; RUN; **********************************************************; TITLE '3 - DAP * TRATAMENTO'; PROC SORT DATA=DADOS; BY TRATAMENTO; PROC MEANS DATA=DADOS NOPRINT; VAR DAP; BY TRATAMENTO; OUTPUT OUT=MTRAT MEAN(DAP)=DAP; PROC PRINT; PROC GPLOT DATA=MTRAT; SYMBOL VALUE=STAR CV=BLUE INTERPOL=JOIN; PLOT DAP * TRATAMENTO; RUN; **********************************************************; TITLE '4 - ALTURA * DAP POR TRATAMENTO'; PROC SORT DATA=DADOS; BY TRATAMENTO CLASSE; PROC MEANS DATA=DADOS NOPRINT; VAR DAP H; BY TRATAMENTO CLASSE; OUTPUT OUT=MTRATCLS MEAN(DAP)=DAP MEAN(H)=H; PROC PRINT; PROC GPLOT DATA=MTRATCLS; SYMBOL1 VALUE=STAR CV=BLUE INTERPOL=JOIN; SYMBOL2 VALUE=TRIANGLE CV=RED INTERPOL=JOIN; SYMBOL3 VALUE=SQUARE CV=GREEN INTERPOL=JOIN; SYMBOL4 VALUE=CIRCLE CV=BLACK INTERPOL=JOIN; PLOT H * DAP = TRATAMENTO / OVERLAY; RUN; **********************************************************; QUIT; 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

160

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Os relatrios emitidos pelo SAS System, com os dados e respectivos grficos, em seqncia, so os seguintes:
1 - ALTURA * DAP, DE TODAS AS ARVORES OBS 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 BLOCO 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 TRATAMENTO 0 0 0 40 40 40 60 60 60 80 80 80 0 0 0 40 40 40 60 60 60 80 80 80 0 0 0 40 40 40 60 60 ARVORE 14 56 65 3 15 50 42 55 60 51 62 67 43 55 62 47 56 65 18 33 58 21 50 67 27 41 47 25 40 42 53 58 H 21.05 18.80 21.00 19.80 19.30 20.08 17.00 21.80 22.10 21.60 17.30 17.50 17.80 20.50 16.70 21.50 20.30 19.30 19.60 19.70 19.50 21.50 17.70 19.90 19.30 21.00 20.90 20.70 17.20 18.10 20.50 20.10 DBASE 31.5 21.6 29.3 23.2 26.7 30.2 18.1 28.3 24.8 29.0 18.5 22.0 25.5 29.0 19.7 29.0 29.3 21.6 21.0 26.1 30.2 26.1 28.6 18.5 19.7 28.3 29.6 29.9 21.6 17.2 27.7 29.3 DAP 26.1 16.6 23.6 17.8 21.0 25.8 13.4 23.6 20.4 23.2 14.3 18.5 22.0 23.6 16.9 22.6 24.8 17.8 15.9 21.0 23.9 21.3 22.9 14.6 16.6 22.6 23.2 22.9 15.6 13.1 21.3 25.1 VOLUME 0.53171 0.24366 0.51740 0.29079 0.37148 0.59485 0.12305 0.61318 0.40231 0.50209 0.16202 0.28919 0.30988 0.53559 0.17384 0.50604 0.57305 0.26287 0.23197 0.39317 0.52865 0.42406 0.50028 0.18820 0.21111 0.45431 0.46010 0.48164 0.18800 0.14907 0.45549 0.55054 CLASSE 5 3 4 3 4 5 2 4 4 4 2 3 4 4 3 4 4 3 3 4 4 4 4 2 3 4 4 4 3 2 4 5

161

SAS - O essencial da linguagem ____________________________________________________________________________________


OBS 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 BLOCO 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 TRATAMENTO 60 80 80 80 0 0 0 40 40 40 60 60 60 80 80 80 ARVORE 59 19 35 50 20 46 69 19 25 42 7 18 28 5 27 48 H 18.00 17.30 18.60 21.10 20.10 21.50 17.40 18.00 21.00 20.70 15.60 20.30 21.00 17.70 19.10 20.00 DBASE 19.1 19.4 22.6 28.3 30.2 34.7 20.7 22.9 29.9 24.8 18.8 22.3 28.3 19.1 24.5 31.5 DAP 16.2 15.3 18.8 23.2 20.4 25.1 17.2 18.1 23.6 21.0 15.6 17.5 21.3 15.0 18.5 24.8 VOLUME 0.19369 0.15639 0.29944 0.52996 0.42882 0.61833 0.21127 0.25424 0.55125 0.39309 0.13469 0.31869 0.36157 0.19278 0.32424 0.64111 CLASSE 3 3 3 4 4 5 3 3 4 4 3 3 4 3 3 4

162

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
2 - ALTURA * CLASSE DAP = VOLUME OBS 1 2 3 4 CLASSE 2 3 4 5 _TYPE_ 0 0 0 0 _FREQ_ 4 17 23 4 DAP 13.8500 16.9353 22.5304 25.5250 H 18.0750 18.2471 20.4913 20.6825 VOLUME 0.15559 0.23393 0.47541 0.57386

163

SAS - O essencial da linguagem ____________________________________________________________________________________


3 - DAP * TRATAMENTO OBS 1 2 3 4 TRATAMENTO 0 40 60 80 _TYPE_ 0 0 0 0 _FREQ_ 12 12 12 12 DAP 21.1583 20.3417 19.6000 19.2000

164

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
4 - ALTURA * DAP POR TRATAMENTO OBS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 TRATAMENTO 0 0 0 40 40 40 40 60 60 60 60 80 80 80 CLASSE 3 4 5 2 3 4 5 2 3 4 5 2 3 4 _TYPE_ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 _FREQ_ 4 6 2 1 4 6 1 1 4 6 1 2 5 5 DAP 16.8250 22.5667 25.6000 13.1000 17.3250 22.6500 25.8000 13.4000 16.3000 21.9167 25.1000 14.4500 17.2200 23.0800 H 18.0500 20.2167 21.2750 18.1000 18.5750 20.5833 20.0800 17.0000 18.3750 20.7667 20.1000 18.6000 18.0400 20.3800

165

SAS - O essencial da linguagem ____________________________________________________________________________________

Captulo 13 : PROC PRINT

O procedimento PROC PRINT imprime as observaes contidas em um arquivo SAS, usando todas ou algumas das variveis. possvel criar relatrios que variam de uma listagem simples a um relatrio altamente personalizado que agrupa os dados e calcula totais e subtotais para variveis numricas. As instrues que podem ser utilizadas com o procedimento so as seguintes: BY Produz uma seo separada do relatrio para cada varivel listada; ID Identifica observaes pelos valores formatados das variveis listadas em vez de atravs dos nmeros das observao; PAGEBY Controla a ejeo de pgina pelas variveis listadas antes de uma pgina estar completa; SUMBY Limita o nmero de somas que aparecem no relatrio; SUM Apresenta os valores totais de variveis numricas; VAR Seleciona variveis que aparecem no relatrio e determina a sua ordem.

166

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

13.1 SINTAXE
PROC PRINT <OpesDoProcedimento>; BY <DESCENDING> Varivel-1 <...<DESCENDING> Varivel-n><NOTSORTED>; PAGEBY BY-Varivel; SUMBY BY-Varivel; ID Varivel(eis); SUM Varivel(eis); VAR Varivel(eis);

13.1.1 OPES

DO PROCEDIMENTO:

Opes de controle dados: CONTENTS=TextoDeLigao Especifica texto ligado aos contedos de HTML com os dados do arquivo de saida; DATA=ArquivoDeEntrada Especifica o arquivo de entrada; Opes de controle geral de formato: DOUBLE Escreve uma linha em branco entre observaes; N="string-1" <"string-2">> Imprime o nmero de observaes existente no arquivo de dados, ou em grupos BY, ou ambos, e especifica texto explicativo para imprimir com o nmero; NOOBS Suprime a coluna no arquivo de sada que identifica cada observao atravs de nmero; OBS="Cabealho" Especifica um cabealho de coluna para a coluna que identifica cada observao atravs de nmero; ROUND Arredonda valores numricos no formatados para duas casas decimais; no use formatos PICTURE com esta opo; Opes de controle do formato de pgina: ROWS=FormatoDePgina Formata as linhas em uma pgina; WIDTH=UNIFORM Usa a largura formatada de cada varivel como sua largura de coluna em todas as pginas; Opes de controle do formato de coluna: HEADING=Direo Controla a orientao dos ttulos de coluna (HORIZONTAL|VERTICAL); se for usada a opo LABEL, todos os cabealhos sero horizontais; LABEL ou SPLIT= Usa rtulos (label) de variveis como ttulos de coluna; se no for especificada esta opo, sero impressos os nomes das colunas, mesmo se existir uma instruo LABEL; o sistema necessita ser habilitado pela opo LABEL para que a mesma opo possa ser utilizada por qualquer procedimento;

167

SAS - O essencial da linguagem ____________________________________________________________________________________

SPLIT='Caractereseparador' Especifica o caratere separador que controla quebras de linha em ttulos de coluna; se for usado o caracter ponto (.) como separador, no necessrio especificar SPLIT=; WIDTH= Determina a largura da coluna para cada varivel; STYLE = <(Localizao(es))> = <ElementoDeEstilo> <[EspecificaoDeEstilo(s)]> Especifica um ou mais elementos de estilo (para o ODS) para usar com diferentes partes do relatrio; afeta as partes especificadas do relatrio. 13.1.2 BY (INSTRUO) Separa a anlise por uma ou mais variveis especificadas. S i n tax e :
BY <DESCENDING> Varivel-1 <NOTSORTED>; <...<DESCENDING> Varivel-n>

-------------------------------------------------------------------------------Varivel-1 a n Especifica as variveis para formar os grupos. DESCENDING Identifica a ordem descendente para a varivel subseqente opo. NOTSORTED Especifica que as observaes no arquivo no esto em ordem alfabtica, mas em uma outra ordem determinada pelo programador. 13.1.3 PAGEBY (INSTRUO) Imprime separadamente uma pgina para cada valor diferente da varivel especificada. S i n tax e :
PAGEBY Varivel;

Varivel - Nome da varivel que deve ser indicador de separao de pginas; a varivel deve aparecer antes na instruo BY. 13.1.4 SUMBY (INSTRUO) Determina uma varivel para formar grupos ao apresentar totais. S i n tax e :
SUMBY Varivel;

168

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Varivel Varivel de controle de apresentao de totais; a varivel deve aparecer antes na instruo BY; usada em conjunto com a instruo SUM. 13.1.5 ID (INSTRUO) Identifica observaes pelo uso de valores formatados das variveis, em vez de usar os nmeros das observaes. S i n tax e :
ID Varivel(eis) </STYLE <(Localizao(es))> = <ElementoDeEstilo> <[EspecificaoDeEstilo(s)]>;

Varivel(eis) Especifica uma ou mais variveis a imprimir em vez do nmero de obseervaes no incio de cada linha. Restrio: se o valor da varivel for muito longo para caber as colunas subseqentes, o sistema emite uma mensagem de advertncia e no trata todas as variveis da instruo ID como variveis ID. Se a varivel for relacionada tambm na instruo VAR, o sistema imprime duas colunas com a varivel. STYLE <(Localizao(es))> = <ElementoDeEstilo> <[EspecificaoDeEstilo(s)]> Especifica o elemento de estilo a usar com as colunas ID. Para mais de um estilo, declarare outras instrues ID. 13.1.6 SUM (INSTRUO) Apresenta os totais para as variveis numricas especificadas. S i n tax e :
SUM Varivel(eis) </STYLE <(Localizao(es))> = <ElementoDeEstilo> <[EspecificaoDeEstilo(s)]>;

Varivel(eis) Identifica as variveis numricas que devem ter totais no relatrio. STYLE <(Localizao(es))> = <ElementoDeEstilo> <[EspecificaoDeEstilo(s)]> Especifica o elemento de estilo a utilizar com as clulas que contm totais. 13.1.7 VAR (INSTRUO) Seleciona as variveis que sero impressas.

169

SAS - O essencial da linguagem ____________________________________________________________________________________

S i n tax e :
VAR Varivel(eis) </STYLE <(Localizao(es))> = <ElementoDeEstilo><[EspecificaoDeEstilo(s)]>;

Varivel(eis) Nome das variveis a imprimir. Interage com a funo ID. STYLE <(Localizao(es))> = <ElementoDeEstilo> <[EspecificaoDeEstilo(s)]> Identifica o estilo a utilizar com as variveis selecionadas pela instruo VAR.

Exemplo 13.1 Relatrio com soma de coluna Considere-se os custos (fictcios), de uma floresta cultivada com eucalipto, listados na Tabela 5.

170

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

TABELA 5 - Custos de uma floresta de eucalipto


Cento de Custos Valor Ano da despesa

Infra-estrutura Combate_a_formiga Formicida Limpeza_do_terreno Preparo_do_solo Adubacao_manual Adubos Plantio_e_replantio Mudas Estradas_e_aceiros Projeto_e_Assist._Tcnica Infra-estrutura Combate_a_formiga Formicida Manutencao Manutencao Manutencao Manutencao Manutencao Combate_a_formiga Formicida Combate_a_formiga Formicida Combate_a_formiga Formicida Combate_a_formiga Formicida Combate_a_formiga Formicida

110,00 22,95 37,80 270,00 127,50 20,40 343,40 153,00 219,60 50,00 81,28 30,00 22,95 37,80 63,75 63,75 63,75 63,75 63,75 22,95 37,80 22,95 37,80 22,95 37,80 22,95 37,80 22,95 37,80

1 1 1 1 1 1 1 1 1 1 1 2 2 2 3 4 5 6 7 3 3 4 4 5 5 6 6 7 7

171

SAS - O essencial da linguagem ____________________________________________________________________________________

O programa, para ler os dados e criar um arquivo, imprimir os dados classificando-os por ano, com as somas anuais de despesas, pode ser escrito como segue:
* EXEMPLO 13.1 - RELATORIO DE DESPESAS ANUAIS; DATA DADOS; LENGTH CENTO_DE_CUSTOS $25.; INPUT CENTO_DE_CUSTOS $ VALOR ANO; DATALINES; INFRA-ESTRUTURA 110.00 1 COMBATE_A_FORMIGA 22.95 1 FORMICIDA 37.80 1 LIMPEZA_DO_TERRENO 270.00 1 PREPARO_DO_SOLO 127.50 1 ADUBACAO_MANUAL 20.40 1 ADUBOS 343.40 1 PLANTIO_E_REPLANTIO 153.00 1 MUDAS 219.60 1 ESTRADAS_E_ACEIROS 50.00 1 PROJETO_E_ASSIST._TECNICA 81.28 1 INFRA-ESTRUTURA 30.00 2 COMBATE_A_FORMIGA 22.95 2 FORMICIDA 37.80 2 MANUTENCAO 63.75 3 MANUTENCAO 63.75 4 MANUTENCAO 63.75 5 MANUTENCAO 63.75 6 MANUTENCAO 63.75 7 COMBATE_A_FORMIGA 22.95 3 FORMICIDA 37.80 3 COMBATE_A_FORMIGA 22.95 4 FORMICIDA 37.80 4 COMBATE_A_FORMIGA 22.95 5 FORMICIDA 37.80 5 COMBATE_A_FORMIGA 22.95 6 FORMICIDA 37.80 6 COMBATE_A_FORMIGA 22.95 7 FORMICIDA 37.80 7 ; PROC SORT DATA=DADOS; BY ANO CENTO_DE_CUSTOS; PROC PRINT DATA=DADOS NOOBS; TITLE1 'FLORESTA DE EUCALIPTO'; TITLE2 'RELATORIO DE DESPESAS ANUAIS'; VAR ANO CENTO_DE_CUSTOS VALOR; SUMBY ANO; BY ANO; ******************************************************; RUN; QUIT; 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

O seguinte relatrio impresso pelo programa:

172

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
FLORESTA DE EUCALIPTO RELATORIO DE DESPESAS ANUAIS ANO=1 CENTO_DE_CUSTOS ADUBACAO_MANUAL ADUBOS COMBATE_A_FORMIGA ESTRADAS_E_ACEIROS FORMICIDA INFRA-ESTRUTURA LIMPEZA_DO_TERRENO MUDAS PLANTIO_E_REPLANTIO PREPARO_DO_SOLO PROJETO_E_ASSIST._TECNICA VALOR 20.40 343.40 22.95 50.00 37.80 110.00 270.00 219.60 153.00 127.50 81.28 1435.93

ANO=2 CENTO_DE_CUSTOS COMBATE_A_FORMIGA FORMICIDA INFRA-ESTRUTURA VALOR 22.95 37.80 30.00 90.75

ANO=3 CENTO_DE_CUSTOS COMBATE_A_FORMIGA FORMICIDA MANUTENCAO VALOR 22.95 37.80 63.75 124.50

173

SAS - O essencial da linguagem ____________________________________________________________________________________


ANO=4 CENTO_DE_CUSTOS COMBATE_A_FORMIGA FORMICIDA MANUTENCAO VALOR 22.95 37.80 63.75 124.50

ANO=5 CENTO_DE_CUSTOS COMBATE_A_FORMIGA FORMICIDA MANUTENCAO VALOR 22.95 37.80 63.75 124.50

ANO=6 CENTO_DE_CUSTOS COMBATE_A_FORMIGA FORMICIDA MANUTENCAO VALOR 22.95 37.80 63.75 124.50

ANO=7 CENTO_DE_CUSTOS COMBATE_A_FORMIGA FORMICIDA MANUTENCAO VALOR 22.95 37.80 63.75 124.50 2149.18

174

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Captulo 14 : PROC REG

O procedimento REG ajusta modelos de regresso linear usando o mtodo dos mnimos quadrados. O procedimento descrito com detalhes no manual SAS / STAT Software Chapter 50: The REG Procedure. Cary: SAS Institute, 1999. 157p.

14.1 SINTAXE
PROC REG < Opes > ; < Rtulo: > MODEL VariveisDependentes= <Regressores> < / Opes > ; BY Variveis ; FREQ Varivel ; ID Variveis ; VAR Variveis ; WEIGHT Varivel ; ADD Variveis ; DELETE Variveis ; < Rtulo: > MTEST <Equaon, : : : ,Equaon> </ Opes > ; OUTPUT < OUT=ArquivoDeSada > PalavrasChaves=Nomes < : : : PalavrasChaves=Nomes > ; PAINT <Condio j ALLOBS> < / Opes > j < STATUS | UNDO> ; PLOT <Varively*Varivelx> <=Smbolo> < : : :Varively*Varivelx> <=Smbolo> </ Opes > ; PRINT < Opes > < ANOVA > < MODELDATA > ; REFIT; RESTRICT Equaon, : : : ,Equaon ; REWEIGHT <Condio j ALLOBS> < / Opes > j < STATUS | UNDO> ; < Rtulo: > TEST Equaon,<; : : :,Equaon> </ Opo > ;

175

SAS - O essencial da linguagem ____________________________________________________________________________________

14.1.1 OPES

DO

PROCEDIMENTO

DATA=ArquivoDeDados - Nome do arquivo de dados a usar com o procedimento. OUTEST=ArquivoDeSada - Cria um arquivo de sada que contm os parmetros estimados e outras estatsticas. OUTSSCP=ArquivoDeSada - Cria um arquivo de sada que contm as somas de quadrados e produtos cruzados. COVOUT Imprime a matriz de covarincia para os parmetros estimados. S funciona em conjunto com OUTEST. CORR Imprime a matrix de correlaes das variveis listadas nas instrues MODEL e VAR. SIMPLE Imprime estatsticas simples para as variveis listadas nas instrues MODEL e VAR. COLLIN Imprime a anlise de colinearidade. USCCP Imprime a matriz de somas de quadrados e produtos cruzados no-corrigidos. ALL Imprime todas as estatsticas (CORR, SIMPLE e USSCP). NOPRINT Impede a impresso de relatrio automtico. ALPHA=Valor Atribui um valor de significncia para os testes do procedimento (Padro=0.05). SINGULAR=Critrio Atribui um critrio para verificao de singularidade. Observao: h outras opes para o procedimento. 14.1.2 INSTRUES
DO PROCEDIMENTO

ADD Variveis; Adiciona variveis independentes ao modelo de regresso. BY Variveis; Separa a anlise por grupos conforme as variveis listadas. DELETE Elimina variveis independentes ao modelo de regresso. FREQ Varivel; - Especifica uma varivel com a freqncia das observaes. MODEL Dependente=Independentes/ Opes; Especifica as variveis dependentes, independentes e opes do modelo de regresso. MTEST Realiza testes multivariados. OUTPUT < OUT=ArquivoDeSada P=<NomeDasEstimativas> R=<NomeDosResduos> Estatsticas=Nomes > ; - Cria um arquivo de sada com as estatsticas relacionadas; o nome para as estimativas e para os resduos pode ser qualquer nome de varivel vlido, escolhido pelo usurio, exceto palavras restritas do sistema. PLOT Imprime um grfico nos moldes do PROC PLOT com cruzamentos Y*X; Exemplo: PLOT R.*P.; - Gera um grfico dos resduos (ordenadas), distribudos ao
176

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

longo do eixo das abscissas que tem os valores estimados para a varivel dependente. TEST Realiza um teste F sobre as funes lineares dos parmetros. VAR Variveis; - Lista de variveis que devem ser computadas para os produtos cruzados, variveis que podem ser adicionadas interativamente ao modelo ou variveis a serem utilizadas na elaborao de grficos e que no esto no modelo. WEIGHT Varivel; - Declara uma varivel com o peso para as observaes. Observao: h outras instrues disponveis para o procedimento.

14.1.2.1 OPES DA INSTRUO MODEL


<Rtulo>: MODEL Dependentes= <Regressores> < / Opes > ;

ACOV Imprime a matriz de covarincia assinttica estimada sob a hiptese de heterocedasticidade. COLLIN Imprime a anlise de colinearidade. COVB Imprime a matriz de covarincias estimada para as estimativas: s2(XX)-1. DW Calcula a estatstica DW de Durbin-Watson para teste de autocorrelao de primeira ordem dos erros. I Imprime a matriz (XX)-1. NOINT Ajusta um modelo sem intercepto. SPEC Realiza um teste de verificao se o primeiro e segundo momentos do modelo so corretamente especificados. STB Imprime os parmetros estimados padronizados. OUTPUT DATA=regout P=yhat E=error Salva os valores estimados (yhat) e resduos (error) do modelo no arquivo regout. SELECTION=MtodoDeSeleo Especifica um mtodo para seleo das variveis independentes mais significativas (Mtodos possveis: FORWARD (ou F), BACKWARD (ou B), STEPWISE, MAXR, MINR, RSQUARE, ADJRSQ, CP ou NONE (usa o modelo completo). BEST=Nmero Especifica um nmero mximo de subconjunto de modelos a apresentar nos resultados ou para sada no arquivo definido por OUTEST=ArquivoDeSada. MAXSTEP=Nmero Especifica um nmero mximo de passos que devem ser realizados. NOINT Ajusta o modelo sem intercepto.

177

SAS - O essencial da linguagem ____________________________________________________________________________________

OUTEST=ArquivoDeSada - Cria um arquivo de sada que contm os parmetros estimados e outras estatsticas para o modelo. Observao: h outras opes para a instruo MODEL. Exemplo 14.1 Ajuste de um modelo para estimar valores perdidos e substituir no arquivo de dados iniciais. Neste exemplo, h 12 observaes com valores de Y e X, sendo que dois valores de Y esto faltando, so valores perdidos. O programa do exemplo 14.1 foi escrito para ajustar uma equao que estima os valores perdidos de Y e os inclui no arquivo.
* EXEMPLO 14.1 - ESTIMANDO DADOS PERDIDOS; OPTIONS LS=80 PS=54 NODATE NOSTIMER; TITLE; DATA ARQREG ; INPUT Y X @@; X1=X; X2=X**2; VAR_AUX=0; CARDS; 12 18 13 20 14 22 . 22 16 23 17 24 18 25 19 26 . 26 21 26 22 27 23 27 ; PROC SORT DATA=ARQREG; BY VAR_AUX; PROC PRINT DATA=ARQREG; TITLE 'DADOS INICIAIS COM 2 VALORES DE Y PERDIDOS'; *********************************************************; PROC REG DATA=ARQREG OUTEST=PARAMETROS; TITLE 'AJUSTE DA EQUACAO Y=B0 + B1*X + B2*X**2'; MODEL Y= X1 X2; PLOT R.*P.; DATA PARAMETROS (KEEP=B0 B1 B2 VAR_AUX) NOOBS; SET PARAMETROS; B0=INTERCEPT; B1=X1; B2=X2; VAR_AUX=0; PROC PRINT DATA=PARAMETROS NOOBS; TITLE 'PARAMETROS ESTIMADOS'; *********************************************************; PROC SORT DATA=PARAMETROS; BY VAR_AUX; DATA ARQREG (KEEP=Y X); MERGE ARQREG PARAMETROS; BY VAR_AUX; IF Y LE 0 THEN Y= B0 + B1*X + B2*X**2; PROC PRINT DATA=ARQREG; TITLE 'DADOS DE SAIDA COM 2 VALORES DE Y ESTIMADOS'; *********************************************************; 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

178

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
RUN; QUIT; 38 39

O relatrio impresso pelo programa o seguinte:


DADOS INICIAIS COM 2 VALORES DE Y PERDIDOS OBS 1 2 3 4 5 6 7 8 9 10 11 12 Y 12 13 14 . 16 17 18 19 . 21 22 23 X 18 20 22 22 23 24 25 26 26 26 27 27 X1 18 20 22 22 23 24 25 26 26 26 27 27 X2 324 400 484 484 529 576 625 676 676 676 729 729 VAR_AUX 0 0 0 0 0 0 0 0 0 0 0 0

179

SAS - O essencial da linguagem ____________________________________________________________________________________


AJUSTE DA EQUACAO Y=B0 + B1*X + B2*X**2 THE REG PROCEDURE MODEL: MODEL1 DEPENDENT VARIABLE: Y ANALYSIS OF VARIANCE SUM OF SQUARES 127.12809 3.37191 130.50000 MEAN SQUARE 63.56404 0.48170

SOURCE MODEL ERROR CORRECTED TOTAL

DF 2 7 9

F VALUE 131.96

PR > F <.0001

ROOT MSE DEPENDENT MEAN COEFF VAR

0.69405 17.50000 3.96598

R-SQUARE ADJ R-SQ

0.9742 0.9668

PARAMETER ESTIMATES PARAMETER ESTIMATE 47.39804 -4.01847 0.11437 STANDARD ERROR 14.89286 1.32277 0.02896

VARIABLE INTERCEPT X1 X2

DF 1 1 1

T VALUE 3.18 -3.04 3.95

PR > |T| 0.0154 0.0189 0.0055

180

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
THE REG PROCEDURE

PARAMETROS ESTIMADOS B0 47.3980 B1 -4.01847 B2 0.11437 VAR_AUX 0

181

SAS - O essencial da linguagem ____________________________________________________________________________________


DADOS DE SAIDA COM 2 VALORES DE Y ESTIMADOS OBS 1 2 3 4 5 6 7 8 9 10 11 12 Y 12.0000 13.0000 14.0000 14.3482 16.0000 17.0000 18.0000 19.0000 20.2339 21.0000 22.0000 23.0000 X 18 20 22 22 23 24 25 26 26 26 27 27

182

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Captulo 15 : PROC NLIN

O procedimento NLIN ajusta modelos no-lineares atravs dos mtodos: Gauss-Newton, Marquardt, Newton, Gradient e DUD (Doesnt Use Derivatives). O padro, quando se fornece as derivadas parciais dos parmetros o mtodo de Gauss-Newton; quando no se fornece as derivadas, o padro o mtodo DUD, que se baseia no mtodo da secante multivariada. O uso do PROC NLIN bastante semelhante ao procedimento REG quanto a especificao do modelo. Entretanto, no PROC NLIN possvel fornecer as derivadas parciais dos parmetros do modelo para facilitar o clculo; isso obrigatrio para todos os mtodos, exceto com o DUD. Pode-se fornecer os valores iniciais (sementes) para os parmetros e at mesmo uma amplitude para cada um deles. O procedimento permite, ainda, determinar limites para os parmetros, reduzindo as iteraes possveis e a possibilidade de erro na determinao da melhor iterao quando se conhece as amplitudes possveis. Isso til com funes como a equao de crescimento de Chapman-Richards, em

183

SAS - O essencial da linguagem ____________________________________________________________________________________

que se sabe antecipadamente que valores os parmetros podem assumir, conforme exemplo 15.1. Da mesma forma que no procedimento REG, possvel criar um arquivo de sada com os resultados e com os parmetros estimados, para uso posterior com outros procedimentos do programa. O procedimento NLIN no calcula todas as estatsticas possveis para modelos no-lineares, como o R, e, em alguns casos, necessrio utilizar o PROC MODEL para obter estatsticas

complementares. Mas, o PROC MODEL no gera arquivos de sada, ento, possvel dizer que so procedimentos que se complementam. Para maior poder do procedimento, praticamente todas as instrues de atribuio de valor do DATA STEP foram incrementadas no PROC NLIN. Assim, aps declarar o modelo e os parmetros, possvel inserir instrues de clculo intermedirio. Uma obra extremamente til que orienta o ajuste das funes nolineares mais conhecidas com o SAS o seguite: SIT, Vera. Catalog of curves for curve fitting. Victoria, Canada, B.C.: Ministry of Forests, Forest Science Research Branch, Biometrics information handbook series, no.4, 1994. 110 p., disponvel em:

<www.for.gov.bc.ca/hfd/pubs/docs/bio/Bio04.pdf>. Mais informaes sobre o uso do PROC NLIN podem ser encontrados no manual: SAS-STAT User's Guide Chapter 45: The NLIN Procedure. Cary: SAS Institute, p.2373-2418, 1999.

15.1 SINTAXE
PROC NLIN < Opes > ; MODEL Dependente=Expresses ;

184

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
PARAMETERS Parmetro=Valores <,..., Parmetro=Valores>; * outras instrues do procedimento; BOUNDS Desigualdade <,..., Desigualdade > ; BY Variveis ; DER.Parmetro=Expresses ; DER.Parmetro.Parmetro=Expresses ; ID Variveis ; OUTPUT OUT=ArquivoDeSada PalavraChave=Nome <,..., PalavraChave=Nome> ; CONTROL Varivel < =Valores > <... Varivel < =Valores > > ;

15.1.1 OPES

DO PROCEDIMENTO

BEST=n Apresetar somente as n melhores iteraes de acordo com a soma de quadrados do resduo. METHOD=NomeDoMtodo Especifica o mtodo a ser utilizado (GAUSS, ou MARQUARDT, ou NEWTON, ou GRADIENT, ou DUD). MAXITER=i Limita o nmero de iteraes. NOITPRINT Suprime a impresso das iteraes realizadas, mostrando somente os resultados para a melhor. NOPRINT Suprime a impresso; til quando se quer somente gerar um arquivo de resultados para uso posterior. OUTEST=ArquivoDeSada Especifica um arquivo onde so gravados os parmetros estimados para cada iterao; quando se deseja somente a mellhor, deve-se usar juntamente com a opo BEST=1. PRINT Imprime todas as estatsticas do procedimento (so muitas pginas de informao; use somente se necessrio). Observao: H muitas outras opes para este procedimento. 15.1.2 INSTRUES
DO PROCEDIMENTO

BOUNDS Limites; Limita a amplitude para clculo dos parmetros; exemplos: bounds a1-a10<=20; bounds c>30; bounds a b c > 0; bounds 0<=B<=10; bounds 15<x1<=30; bounds r <= s <= p < q; BY Variveis; Especifica variveis para formar subgrupos na anlise. DER.Parmetro<.Parmetro>; - Especifica derivadas parciais dos parmetros. ID Variveis; - Especifica variveis a incluir no arquivo de sada. MODEL Dependentes=Expresso; - Define a equao do modelo de regresso.

185

SAS - O essencial da linguagem ____________________________________________________________________________________

OUTPUT OUT=ArquivoDeSada Estatsticas=NomesDeSada; - Cria um arquivo de sada com as estatsticas especificadas em que os nomes das colunas (NomesDeSada) so atribudos pelo usurio. PARMS NomesDosParmetros=Amplitudes; - Informa os nomes dos parmetros utilizados no modelo. Observao: H outras instrues possveis com o procedimento, por exemplo: instrues ARRAY , DO e instrues de controle de fluxo. Exemplo 15.1 Ajuste da equao de Chapman-Richards A funo de crescimento de Chapman-Richards aplicvel quando a curva de crescimento da produo tem forma sigmoidal, apresentando um ponto de inflexo onde a curva muda de direo e dada pela equao: Y = A [1 - e-k.t ]r
Em que: Y = varivel dependente; A = assntota superior (ou mximo valor de Y); k = velocidade de crescimento que pode variar de 0 at 1 (geralmente prximo de 0,2 para altura de rvores); r = ponto de inflexo entre 0 e a assntota, geralmente < A/2.

No exemplo a seguir, so usados os dados de 18 rvores de uma mesma espcie com idades entre 3 e 30 anos. Os dados so delineados em um grfico com as alturas na ordenada e as idades na abscissa, para se determinar aproximadamente onde se encontram a assntota superior e o ponto de inflexo. Com isso possvel estimar os valores iniciais para os parmetros e os seus limites, que so escritos no programa do exemplo 15.1. Portanto, necessrio executar o programa duas vezes. Na primeira vez, no se sabe onde se encontra a assntota nem o ponto de inflexo e atribudo um valor vlido para rvores em situao normal. Com isso, nem sempre o programa consegue uma iterao onde so satisfeitos os critrios de convergncia. Mas, com os dados plotados no primeiro grfico, verificado em que nvel se encontra a assntota e o ponto de inflexo para que se possa atribuir
186

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

estes valores para as sementes (faixas de valores iniciais) dos parmetros. O programa cria um arquivo de sada com os resultados e imprime o grfico dos resduos em relao s estimativas e outro dos valores observados e das estimativas em relao idade.
* EXEMPLO 15.1 - AJUSTE DA EQUAO DE CHAPMAN-RICHARDS; OPTIONS LS=80 PS=54 NODATE NOSTIMER; TITLE; DATA A; INPUT IDADE H @@; Y=H; X=IDADE; CARDS; 05 04 05 04 12 18 14 22 07 07 07 06 25 28 25 26 03 01 10 12 08 10 15 23 16 25 20 27 22 27 30 30 27 29 03 02 ; PROC SORT DATA=A; BY X Y; PROC GPLOT; PLOT Y*X; PROC NLIN DATA=A BEST=1; PARAMETERS A=20 TO 30 BY 5.0 B=0.2 C=0.1 TO 9.9 BY 1.0; BOUNDS 19<A<31, 0<B<1, 0<C<10; EBX = EXP(-B*X); EBX1 = 1 - EBX; EBXC = (EBX1)**C; MODEL Y = A*EBXC; DER.A = EBXC; DER.B = A*X*C*EBX*EBX1**(C-1); DER.C = A*EBXC*LOG(EBX1); OUTPUT OUT=RESULTADO P=ESTIMATIVAS R=RESIDUOS PARMS=A B C; PROC PRINT DATA=RESULTADO; PROC GPLOT DATA=RESULTADO; SYMBOL1 VALUE=STAR CV=BLUE; PLOT RESIDUOS*ESTIMATIVAS / VREF=0; SYMBOL1 VALUE=STAR CV=BLUE; SYMBOL2 VALUE=TRIANGLE CV=RED INTERPOL=JOIN; PLOT H*IDADE ESTIMATIVAS*IDADE / OVERLAY; **********************************************************; RUN; QUIT; 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

O resultado do processamento, com os parmetros tendo seus valores de partida e limites atribuidos com base no exame do primeiro grfico, o relatrio a seguir, onde se observa no grfico de Y*X que a assntota deve ficar entre 20 m e 30 m e o ponto de inflexo est abaixo

187

SAS - O essencial da linguagem ____________________________________________________________________________________

de 10 m. Estes valores so substituidos no programa quanto s sementes dos parmetros e seus limites (bounds). Observao: Deve-se atribuir valores tais que as sementes no ultrapassem os limites.

THE NLIN PROCEDURE DEPENDENT VARIABLE Y GRID SEARCH A 30.0000 B 0.2000 C 5.1000 SUM OF SQUARES 23.9411

188

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
THE NLIN PROCEDURE DEPENDENT VARIABLE Y METHOD: GAUSS-NEWTON ITERATIVE PHASE ITER 0 1 2 3 4 5 A 30.0000 29.3852 29.4098 29.4097 29.4099 29.4099 B 0.2000 0.1929 0.1916 0.1916 0.1916 0.1916 C 5.1000 4.6831 4.6359 4.6335 4.6331 4.6331 SUM OF SQUARES 23.9411 19.4509 19.4430 19.4429 19.4429 19.4429

NOTE: CONVERGENCE CRITERION MET.

ESTIMATION SUMMARY METHOD ITERATIONS R PPC(C) RPC(C) OBJECT OBJECTIVE OBSERVATIONS READ OBSERVATIONS USED OBSERVATIONS MISSING GAUSS-NEWTON 5 2.327E-6 1.425E-6 0.000011 3.65E-10 19.44293 18 18 0

AN INTERCEPT WAS NOT SPECIFIED FOR THIS MODEL.

189

SAS - O essencial da linguagem ____________________________________________________________________________________


SUM OF SQUARES 6967.6 19.4429 MEAN SQUARE 2322.5 1.2962 APPROX PR > F <.0001

SOURCE REGRESSION RESIDUAL UNCORRECTED TOTAL

DF 3 15

F VALUE 1791.80

18

6987.0

CORRECTED TOTAL

17

1953.6

PARAMETER A B C

ESTIMATE 29.4099 0.1916 4.6331

APPROX STD ERROR 0.7348 0.0194 0.8048

APPROXIMATE 95% CONFIDENCE LIMITS 27.8436 0.1503 2.9177 30.9761 0.2329 6.3485

APPROXIMATE CORRELATION MATRIX A A B C 1.0000000 -0.7615412 -0.6300812 B -0.7615412 1.0000000 0.9583696 C -0.6300812 0.9583696 1.0000000

190

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

191

SAS - O essencial da linguagem ____________________________________________________________________________________

192

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Captulo 16 : PROC UNIVARIATE

O procedimento UNIVARIATE calcula estatsticas univariadas para grupos de dados.

16.1 SINTAXE
PROC UNIVARIATE <Opes>; BY <DESCENDING> Varivel-1 <...<DESCENDING> Variveln><NOTSORTED>; CLASS Varivel-1<(Varivel-Opes)> <Varivel-2<(Varivel-Opes)>> </ KEYLEVEL='Valor1'|('Valor1' 'Valor2')>; FREQ Varivel; HISTOGRAM <Variveis> </ Opes>; ID Variveis; INSET <PalavrasChave> </ Opes>; OUTPUT <OUT=ArquivoDeSada> Estatsticas=Nomes <EspecificaoDePercents>; PROBPLOT <Variveis> </ Opes>; QQPLOT <Variveis> </ Opes>; VAR Variveis; WEIGHT Varivel;

16.1.1 OPES

DO PROCEDIMENTO

ALL Faz com que o procedimento imprima, quando adequado, as seguintes estatsticas e tabelas: FREQ, MODES, NEXTRVAL=5, PLOT e CIBASIC, CIPCTLDF, CIPCTLNORMAL, LOCCOUNT, NORMAL, ROBUSTCALE, TRIMMED=.25 e WINSORIZED=.25. ALPHA=value Informa o nvel de significncia para os testes (Padro=0,05).
193

SAS - O essencial da linguagem ____________________________________________________________________________________

CIBASIC<(<TYPE=keyword> <ALPHA=value>)> - Requisita limites de confiana para mdia e variao assumindo que os dados tem distribuio normal. FREQ Requisita uma tabela de freqncia dos dados. MODES Requisita todos os tipos de tabelas de freqncia possveis. MU0=Valor(es) Informa um valor para a mdia para os testes de hipteses. Se no for fornecido, o padro ser zero. NOPRINT Impede a impresso de relatrio automtico. NORMAL Requisita que seja realizado o teste de normalidade dos dados. No realizado quando utilizada a instruo WEIGHT. PLOTS Produz um grfico de barras horizontais. Observao: H vrias outras opes possveis para este procedimento. 16.1.2 INSTRUES
DO PROCEDIMENTO

BY Variveis; - Separa as estatsticas por grupos de variveis. CLASS Variveis-opes; Classifica as estatsticas por grupos de variveis. Algumas das opes so: MISSING; Determina que os valores perdidos devem entrar nas estatsticas. Se no for usado, os valores perdidos sero excludos das anlises; FREQ Ordena os valores de acordo com a sua freqncia. FREQ Varivel; - Especifica uma varivel que contm as freqncias das observaes. HISTOGRAM Cria um histograma com os resultados. ID Variveis; Especifica variveis para incluir na tabela de valores extremos. OUTPUT <OUT=ArquivoDeSada> Palavras-chave=Nomes <EspecificaesDePercents> ; - Cria um arquivo de sada. Palavras-chave das estatsticas disponveis: CSS,CV, KURTOSIS, MAX, MEAN, N, MIN, MODE, RANGE, NMISS, NOBS, STDMEAN, SKEWNESS, STD, USS, SUM, SUMWGT, VAR, MEDIAN, P1, P5, P10, P90, P95, P99, Q1, Q3, QRANGE, GINI, MAD, QN, SN, STD_GINI, STD_MAD, STD_QN, STD_QRANGE, STD_SN, NORMAL, PROBN, MSIGN, PROBM, SIGNRANK, PROBS, T, PROBT. PROBPLOT Cria um grfico de probabilidades. VAR Variveis; Informa quais variveis devem ser includas nas estatsticas. WEIGHT variable; Indica uma varivel que contm o peso das observaes. Observaes: H outras instrues disponveis com este procedimento. Exemplo 16.1 - Normalidade de variaveis dendrometricas
* EXEMPLO 16.1 - NORMALIDADE DE VARIAVEIS DENDROMETRICAS; TITLE; DATA ARVORES; 1 2 3

194

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
INPUT ARVORE H HC DCC CASCA @@; DATALINES; 1 21.05 16 26.1 2.9 13 16.8 12 22 3.5 25 19.3 13 16.6 2.3 37 20.1 14 20.4 1.6 2 18.8 12 16.6 1.6 14 20.5 15 23.6 3.2 26 21 14 22.6 3.2 38 21.5 15 25.1 3.1 3 21 15 23.6 2.9 15 16.7 11 16.9 2.9 27 20.9 15 23.2 3.5 39 17.4 12 17.2 2.2 4 19.8 13 17.8 2.2 16 21.5 15 22.6 3.2 28 20.7 15 22.9 2.8 40 18 12 18.1 2.5 5 19.3 13 21 1.9 17 20.3 15 24.8 3.5 29 17.2 11 15.6 1.9 41 21 15 23.6 3.9 6 20.8 15 25.8 3.2 18 19.3 13 17.8 2.5 30 18.1 11 13.1 1.3 42 20.7 14 21 2.2 7 17 11 13.6 0.4 19 19.6 13 15.9 2.2 31 20.5 14 21.3 3.2 43 15.6 10 15.6 3.8 8 21.8 15 23.6 3.2 20 19.7 13 21 3.5 32 20.1 14 25.1 4.1 44 20.3 13 17.5 1.6 9 22.1 15 20.4 3.2 21 19.5 14 23.9 3.5 33 18 12 16.2 2.2 45 21 14 21.3 2.5 10 21.6 15 23.2 3.5 22 21.5 14 21.3 2.8 34 17.3 11 15.3 2.6 46 17.7 11 15 1.9 11 17.3 11 14.3 1.9 23 19.9 14 22.9 2.5 35 18.6 13 18.8 2.6 47 19.1 13 18.5 2.6 12 17.2 12 18.5 1.9 24 17.7 11 14.6 1.2 36 21.1 15 23.2 2.5 48 20 15 24.8 2.5 ; PROC UNIVARIATE DATA=ARVORES NORMAL; VAR H DCC CASCA; HISTOGRAM; RUN; QUIT; 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Resultados:
THE UNIVARIATE PROCEDURE VARIABLE: H MOMENTS N MEAN STD DEVIATION SKEWNESS UNCORRECTED SS COEFF VARIATION 48 19.4989583 1.65852054 -0.4719703 18379.3325 8.5056879 SUM WEIGHTS SUM OBSERVATIONS VARIANCE KURTOSIS CORRECTED SS STD ERROR MEAN 48 935.95 2.75069038 -0.8674416 129.282448 0.23938682

BASIC STATISTICAL MEASURES LOCATION MEAN MEDIAN MODE 19.49896 19.85000 21.00000 VARIABILITY STD DEVIATION VARIANCE RANGE INTERQUARTILE RANGE 1.65852 2.75069 6.50000 2.95000

TESTS FOR LOCATION: MU0=0 TEST STATISTIC P VALUE

195

SAS - O essencial da linguagem ____________________________________________________________________________________


TESTS FOR LOCATION: MU0=0 TEST STUDENT'S T SIGN SIGNED RANK T M S STATISTIC 81.45377 24 588 P VALUE PR > |T| PR >= |M| PR >= |S| <.0001 <.0001 <.0001

TESTS FOR NORMALITY TEST SHAPIRO-WILK KOLMOGOROV-SMIRNOV CRAMER-VON MISES ANDERSON-DARLING W D W-SQ A-SQ STATISTIC 0.941115 0.102114 0.173283 1.044287 P VALUE PR < W PR > D PR > W-SQ PR > A-SQ 0.0179 >0.1500 0.0115 0.0089

QUANTILES (DEFINITION 5) QUANTILE 100% MAX 99% 95% 90% 75% Q3 50% MEDIAN 25% Q1 10% 5% 1% 0% MIN ESTIMATE 22.10 22.10 21.60 21.50 20.95 19.85 18.00 17.20 16.80 15.60 15.60

196

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
EXTREME OBSERVATIONS LOWEST VALUE 15.6 16.7 16.8 17.0 17.2 OBS 28 10 2 25 45 HIGHEST VALUE 21.5 21.5 21.6 21.8 22.1 OBS 14 38 37 29 33

THE UNIVARIATE PROCEDURE VARIABLE: H

197

SAS - O essencial da linguagem ____________________________________________________________________________________


THE UNIVARIATE PROCEDURE VARIABLE: DCC MOMENTS N MEAN STD DEVIATION SKEWNESS UNCORRECTED SS COEFF VARIATION 48 20.0791667 3.69726514 -0.1919842 19994.78 18.4134392 SUM WEIGHTS SUM OBSERVATIONS VARIANCE KURTOSIS CORRECTED SS STD ERROR MEAN 48 963.8 13.6697695 -1.2272458 642.479167 0.53365426

BASIC STATISTICAL MEASURES LOCATION MEAN MEDIAN MODE 20.07917 21.00000 23.60000 VARIABILITY STD DEVIATION VARIANCE RANGE INTERQUARTILE RANGE 3.69727 13.66977 13.00000 6.45000

TESTS FOR LOCATION: MU0=0 TEST STUDENT'S T SIGN SIGNED RANK T M S STATISTIC 37.6258 24 588 P VALUE PR > |T| PR >= |M| PR >= |S| <.0001 <.0001 <.0001

TESTS FOR NORMALITY TEST SHAPIRO-WILK KOLMOGOROV-SMIRNOV CRAMER-VON MISES ANDERSON-DARLING W D W-SQ A-SQ STATISTIC 0.945318 0.127321 0.165404 0.933504 P VALUE PR < W PR > D PR > W-SQ PR > A-SQ 0.0261 0.0494 0.0154 0.0180

198

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
QUANTILES (DEFINITION 5) QUANTILE 100% MAX 99% 95% 90% 75% Q3 50% MEDIAN 25% Q1 10% 5% 1% 0% MIN ESTIMATE 26.10 26.10 25.10 24.80 23.20 21.00 16.75 15.00 14.30 13.10 13.10

EXTREME OBSERVATIONS LOWEST VALUE 13.1 13.6 14.3 14.6 15.0 OBS 23 25 41 46 40 HIGHEST VALUE 24.8 25.1 25.1 25.8 26.1 OBS 48 8 31 21 1

199

SAS - O essencial da linguagem ____________________________________________________________________________________


THE UNIVARIATE PROCEDURE VARIABLE: DCC

THE UNIVARIATE PROCEDURE VARIABLE: CASCA MOMENTS N MEAN STD DEVIATION SKEWNESS UNCORRECTED SS COEFF VARIATION 48 2.62291667 0.77493708 -0.438433 358.45 29.544861 SUM WEIGHTS SUM OBSERVATIONS VARIANCE KURTOSIS CORRECTED SS STD ERROR MEAN 48 125.9 0.60052748 0.1596969 28.2247917 0.11185253

200

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
BASIC STATISTICAL MEASURES LOCATION MEAN MEDIAN MODE 2.622917 2.600000 3.200000 VARIABILITY STD DEVIATION VARIANCE RANGE INTERQUARTILE RANGE 0.77494 0.60053 3.70000 1.00000

TESTS FOR LOCATION: MU0=0 TEST STUDENT'S T SIGN SIGNED RANK T M S STATISTIC 23.44977 24 588 P VALUE PR > |T| PR >= |M| PR >= |S| <.0001 <.0001 <.0001

TESTS FOR NORMALITY TEST SHAPIRO-WILK KOLMOGOROV-SMIRNOV CRAMER-VON MISES ANDERSON-DARLING W D W-SQ A-SQ STATISTIC 0.974645 0.105102 0.062539 0.403456 P VALUE PR < W PR > D PR > W-SQ PR > A-SQ 0.3797 >0.1500 >0.2500 >0.2500

201

SAS - O essencial da linguagem ____________________________________________________________________________________


QUANTILES (DEFINITION 5) QUANTILE 100% MAX 99% 95% 90% 75% Q3 50% MEDIAN 25% Q1 10% 5% 1% 0% MIN ESTIMATE 4.1 4.1 3.8 3.5 3.2 2.6 2.2 1.6 1.3 0.4 0.4

EXTREME OBSERVATIONS LOWEST VALUE 0.4 1.2 1.3 1.6 1.6 OBS 25 46 23 32 5 HIGHEST VALUE 3.5 3.5 3.8 3.9 4.1 OBS 34 37 28 20 31

202

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
THE UNIVARIATE PROCEDURE VARIABLE: CASCA

203

SAS - O essencial da linguagem ____________________________________________________________________________________

Captulo 17 : (operaes com matrizes) PROC IML

O procedimento PROC IML (Interactive Matrix Language) realiza operaes com matrizes. Originalmente foi desenvolvido para ser interativo, mas passou a ser programvel e premite todo tipo de operaes com matrizes, tendo muitas funes internas que abrangem praticamente toda a lgebra matricial e muitas funes estatsticas. Este captulo deve ser entendido como uma simples introduo ao poder do PROC IML que, na verdade, uma linguagem separada e de caractersticas prprias, mas com interfaces com a linguagem principal e de sistaxe semelhante. Mais informaes podem ser obtidas no manual "SAS Institute. SAS/IML Users Guide, v. 8. Cary, NC,USA: SAS Institute Inc., 1999. 846 p.".

17.1 SINTAXE
PROC IML; Declaraes; .....Comandos; FunesIML; Mdulos; Subrotinas; RUN; QUIT;

204

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

17.1.1 DECLARAES, MDULOS

SUBROTINAS

So quaisquer declaraes vlidas SAS, como atribuio de valores vetores e matrizes, comandos, laos de DO END e condies de IF, etc, alm das declaraes prprias da linguagem IML. Com algumas excees, so aceitas no dentro da PROC IML todas as declaraes desenvolvidas para o DATA STEP. A Atribuio de valores vetores e matrizes realizada atravs de uma expresso de atribuio de valor como: NomeDaMatriz={a11 a12 ... a1m, a21 a22 ... a2m, ... ... ... ..., an1 an2 ... anm}; Em que: NomeDaMatriz=Nome da matriz podendo ser qualquer nome vlido na linguagem SAS; a. Subrotinas so subprogramas escritos na linguagem IML (no so descritas aqui). 17.1.2 COMANDOS
E

OPERADORES

Os principais comandos da linguagem IML so os seguintes:


COMANDO AO

FREE LOAD MATTRIB PRINT RESET REMOVE SHOW STORE

libera uma matriz de seus valores aumentando o espao disponvel carrega uma matriz de uma biblioteca de armazenamento associa atributos de impresso com uma matriz imprime uma matriz ou uma mensagem acessa vraias opes de sistema remove uma matriz ou mdulo de uma biblioteca requisita que as informaes de sistema sejam mostradas armazena uma matriz em uma biblioteca

205

SAS - O essencial da linguagem ____________________________________________________________________________________

Os operadores da linguagem IML so relacionados a seguir:


OPERADOR AO

+ * / # ## <> >< | & < <= > >= = =

adio subtrao multiplicao diviso multiplicao de elementos potenciao de elementos maior elemento menor elemento OU lgico (OR) E lgico (AND) menor que menor ou igual a maior que maior ou igual a no igual a igual a

Exemplo 17.1 - PROC IML - Interactive Matrix Language


* EXEMPLO 17.1 - MATRIZES; PROC IML; RESET PRINT; * LIMPA A MEMRIOA DE IMPRESSO; PRINT "EXEMPLO DE MODULO"; START ADD(X,Y); SUM=X+Y; RETURN(SUM); FINISH; A={9 2,5 7}; B={1 6,8 10}; C=ADD(A,B); D=ADD(ADD(6,3),ADD(5,5)); PRINT D; PROC IML; PRINT "EXEMPLOS DE OPERACOES COM MATRIZES"; E={9 2 5 7, 7 5 6 3, 5 3 4 4, 8 3 7 6}; F={9 2 3 2, 7 5 3 3, 5 3 2 2, 8 3 1 1}; Q={9 2 3 2, 7 5 3 3}; 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

206

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________
PRINT 'PRIMEIRA MATRIZ' E; PRINT 'SEGUNDA MATRIZ' F; PRINT 'G = INVERSO DE E'; G=INV(E); PRINT G; H=F#G;* MULTIPLICA CADA ELEMENTO DE F POR CADA DE ELEMENTO DE G; PRINT 'H = MULTIPLICACAO DE F POR G', H; L=Q*G; *MULTIPLICA A MATRIZ Q PELA MATRIZ G; PRINT 'L = MULTIPLICACAO DE Q POR G', L; MEDIA=H[:]; PRINT 'MEDIA DOS ELEMENTOS DE H', MEDIA; TRANSPOSTA=H`; PRINT 'TRANSPOSTA DE H', TRANSPOSTA; RUN; QUIT; 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41

Resultados:
EXEMPLO DE MODULO A 2 rows 2 cols 9 2 5 7 B 2 rows 1 2 cols 6 (numeric) (numeric)

8 10 SUM 2 rows 10 2 cols 8 (numeric)

13 17 C 2 rows 10 2 cols 8 (numeric)

13 17 SUM 1 row 9 1 col (numeric)

207

SAS - O essencial da linguagem ____________________________________________________________________________________ SUM 1 row 10 SUM 1 row 19 D 1 row 1 col 19 D 19 (numeric) 1 col (numeric) 1 col (numeric)

208

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________ EXEMPLOS DE OPERACOES COM MATRIZES E PRIMEIRA MATRIZ 9 2 5 7 7 5 6 3 5 3 4 4 8 3 7 6 F SEGUNDA MATRIZ 9 2 3 2 7 5 3 3 5 3 2 2 8 3 1 1 G = INVERSO DE E G 0.3625 -0.0875 0.3125 0.0625 -0.55 -0.2125 0.65 -0.3625 0.5625 -0.025

-0.3125 -0.0625 -0.25 -0.075 -0.375 0.7

H = MULTIPLICACAO DE F POR G H 3.2625 -0.6125 0.625 0.3125 -1.65 1.95 -0.5 0.7 -0.425 -1.0875 1.125 -0.025

-1.5625 -0.1875 -0.6 -1.125

209

SAS - O essencial da linguagem ____________________________________________________________________________________ L = MULTIPLICACAO DE Q POR G L 2 2 -3 -1

0.9375 1.1875 0.75 -1.6875 MEDIA DOS ELEMENTOS DE H MEDIA 0.0125 TRANSPOSTA DE H TRANSPOSTA 3.2625 -0.6125 -1.5625 0.625 -1.65 0.3125 1.95 -0.6

-0.1875 -1.125 -0.5 1.125 0.7 -0.025

-0.425 -1.0875

210

Floriano, Eduardo P.; Mller, Ivanor; Schneider, Paulo R.; Lopes, Luis Felipe D. ____________________________________________________________________________________

Referncias
ANJOS, Adilson dos. Planejamento de experimentos I - teste de Shapiro-Wilk para normalidade. [Curitiba]: UFPR, Departamento de Estatstica, 2003. Disponvel em: <http://www.est.ufpr.br/planexp/planexp.pdf>. Acesso em: 15/maio/2004. IU. Testing normality using SAS, STATA, and SPSS. Indiana: Indiana University IU, UITS - Center for Statistical and Mathematical Computing, p 94-73. Disponvel em: <http://www.indiana.edu/statmath>. Acesso em: 15/maio/2004. 26p. SAS Institute. SAS language reference, v.8. Cary, NC: SAS Institute, 1999. 1242p. ______. SAS language reference: Concepts, v.8. Cary, NC: SAS Institute, 1999. 554p. ______. SAS procedures guide, v.8. Cary, NC: SAS Institute, 1999. 1729p. ______. SAS/graph user's guide, v.8. Cary, NC: SAS Institute, 1999. 1220p. ______. SAS/STAT user's guide, v.8. Cary, NC: SAS Institute, 1999. 3365p.

211

You might also like