Automação de processos de
aquisição e análise de dados:
Uma abordagem utilizando os
softwares EPIDATA e SPSS
Carlos Renato dos Santos
UFPI – Campi Parnaíba
carlosrenato@ufpi.edu.br
www.estatistico.com
Parte I – Programando com SPSS
(Syntax e Macros)
Parte I – Programando com SPSS
(Syntax e Macros)
As 5 principais funções do SPSS
Os 4 principais ambientes do SPSS
Obtendo Syntax de procedimentos presentes nos menus
Principais tipos de programação no SPSS
Syntax avançadas
Introdução a macros no SPSS
Macros avançadas
Exemplos motivacionais para o uso de macros
Parte I – Programando com SPSS
(Syntax e Macros)
As 5 principais funções do SPSS
Os 4 principais ambientes do SPSS
Obtendo Syntax de procedimentos presentes nos menus
Principais tipos de programação no SPSS
Syntax avançadas
Introdução a macros no SPSS
Macros avançadas
Exemplos motivacionais para o uso de macros
Exemplos de processos produtivos automatizados por
As 5 principais funções do SPSS
Entrada e gerenciamento de dados
*
Procedimentos gráficos e estatísticos
*
Gerenciamento das saídas do sistema
Linguagem com suporte para macros
Em cursos introdutórios sobre o SPSS
Entrada e gerenciamento de dados
Procedimentos gráficos e estatísticos
Gerenciamento das saídas do sistema
Linguagem com suporte para macros
Linguagem matricial
www.estatistico.com
Abordaremos mais fortemente
Entrada e gerenciamento de dados
Procedimentos gráficos e estatísticos
Gerenciamento das saídas do sistema
Linguagem com suporte para macros
Entrada e gerenciamento de dados
Permite realizar tarefas que auxiliarão nas seguintes
demandas relacionadas a dados:
Leitura
Organização
Transformação
Procedimentos gráficos e estatísticos
Consistem de procedimentos que auxiliarão na
análise dos dados.
Podem ser consideradas categorias diferentes de
procedimentos, mas em geral atuam de forma muitas
vezes compartilhada com syntax parecidas.
Gerenciamento de saídas do sistema
Auxiliam na extração de saídas estatísticas para uso
em outros processos ou para customizar tais saídas.
Output Management System (OMS)
Linguagem com suporte para
macros e matrizes
A linguagem com suporte para macros auxilia na
automação de atividades repetitivas e processos
produtivos. Esta função do SPSS é o foco deste curso
e será melhor detalhada adiante.
A linguagem matricial auxilia na inserção ou
implementação de novos algoritmos no SPSS. (SPSS
Matrix)
Parte I – Programando com SPSS
(Syntax e Macros)
As 5 principais funções do SPSS
Os 4 principais ambientes do SPSS
Obtendo Syntax de procedimentos presentes nos menus
Principais tipos de programação no SPSS
Syntax avançadas
Introdução a macros no SPSS
Macros avançadas
Exemplos motivacionais para o uso de macros
Exemplos de processos produtivos automatizados por
Os 4 principais ambientes do SPSS
Data View
Variable View
Output View
Syntax Editor
www.estatistico.com
O ambiente Data View
O ambiente Data View
Variáveis
Casos
O ambiente Variable View
O ambiente Output View
O ambiente Syntax Editor
O ambiente Syntax Editor
Syntax
Run Syntax
Parte I – Programando com SPSS
(Syntax e Macros)
As 5 principais funções do SPSS
Os 4 principais ambientes do SPSS
Obtendo Syntax de procedimentos presentes nos menus
Principais tipos de programação no SPSS
Syntax avançadas
Introdução a macros no SPSS
Macros avançadas
Exemplos motivacionais para o uso de macros
Exemplos de processos produtivos automatizados por
Obtendo syntax de procedimentos
presentes nos menus do SPSS
Muitos procedimentos que podem ser
escritos no ambiente Syntax Editor não estão
presentes no ambiente Variable View.
Para obter a syntax de procedimentos
presentes no ambiente Variable View
utilizamos a tecla “paste” presente nas caixas
de diálogo dos mesmos.
www.estatistico.com
Obtendo syntax de procedimentos
presentes nos menus do SPSS
Analyze > Descriptives Statistics > Frequencies
Obtendo syntax de procedimentos
presentes nos menus do SPSS
FREQUENCIES VARIABLES=SEXO
/ORDER=ANALYSIS.
Obtendo syntax de procedimentos
presentes nos menus do SPSS
Analyze > Tables > Custom Tables
Obtendo syntax de procedimentos
presentes nos menus do SPSS
CTABLES
/VLABELS VARIABLES=VL_CHEQUE RENDA SEXO
DISPLAY=LABEL
/TABLE VL_CHEQUE [MEAN] + RENDA [MEAN] BY
SEXO
/CATEGORIES VARIABLES=SEXO ORDER=A
KEY=VALUE EMPTY=EXCLUDE.
Parte I – Programando com SPSS
(Syntax e Macros)
As 5 principais funções do SPSS
Os 4 principais ambientes do SPSS
Obtendo Syntax de procedimentos presentes nos menus
Principais tipos de programação no SPSS
Syntax avançadas
Introdução a macros no SPSS
Macros avançadas
Exemplos motivacionais para o uso de macros
Exemplos de processos produtivos automatizados por
Principais tipos de
programação no SPSS
Syxtax (Sintaxe padrão)
Macros (Sintaxe especializada)
Scripts
Programmability
Extention
Principais tipos de
programação no SPSS
Syxtax (Sintaxe padrão) –
São programas escritos no syntax editor
capazes de executar procedimentos do SPSS.
Macros (Sintaxe especializada) –
Agrupa uma série de comandos
em um único comando tornando algumas tarefas mais fáceis e
convenientes.
Scripts –
Utiliza recursos da linguagem SAX BASIC (Parecida com Visual
Basic) para criar caixas de diálogos e automatizar procedimentos.
Programmability Extension –
Agrega recursos de outros softwares
e linguagens para aumentar suas capacidades. (R e Python principalmente)
www.estatistico.com
Parte I – Programando com SPSS
(Syntax e Macros)
As 5 principais funções do SPSS
Os 4 principais ambientes do SPSS
Obtendo Syntax de procedimentos presentes nos menus
Principais tipos de programação no SPSS
Syntax avançadas
Introdução a macros no SPSS
Macros avançadas
Exemplos motivacionais para o uso de macros
Syntax avançadas
Estruturas de repetição
Estruturas condicionais
Criação de vetores
Syntax avançadas
DO IF – END IF
DO REPEAT – END REPEAT
LOOP – END LOOP
VECTOR
DO IF – END IF
Estrutura usada para executar
transformações em um subconjunto de casos
com base em alguma condição lógica.
DO IF (condição para testar)
Transformações
ELSE IF (teste de outra condição)
Outras tranformações
DO IF – END IF
NUMERIC
CAT_CHEQUE
(F1.0).
DO IF
((VL_CHEQUE>0) AND ((VL_CHEQUE<=10000))).
COMPUTE
CAT_CHEQUE
=0.
ELSE IF
((VL_CHEQUE>10000) AND ((VL_CHEQUE<=20000))).
COMPUTE
CAT_CHEQUE
=1.
ELSE IF
(VL_CHEQUE>20000).
COMPUTE
CAT_CHEQUE
=2.
END IF.
EXECUTE.
www.estatistico.com
DO REPEAT – END REPEAT
Permite repetir um mesmo grupo de
transformações em um conjunto de variáveis.
NUMERIC DIG1 TO DIG10 (F1).
DO REPEAT D=DIG1 to DIG10.
COMPUTE D=TRUNC(RV.UNIFORM(1,9)).
END REPEAT.
EXECUTE.
LOOP – END LOOP
Permite uma repetição iterativa onde o
critério de parada pode ser estabelecido por
um índice ou estrutura condicional (IF).
COMPUTE Z=0.
LOOP #I = 1 TO 5.
COMPUTE Z = Z + 1.
END LOOP.
EXECUTE.
www.estatistico.com
LOOP – END LOOP +
DO REPEAT – END REPEAT
INPUT PROGRAM.
LOOP ID=1 TO 1000000.
DO REPEAT V=V1 TO V5.
COMPUTE V = NORMAL(1).
END REPEAT.
END CASE.
END LOOP.
END FILE.
END INPUT PROGRAM.
VECTOR
É um comando usado para referenciar um
grupo de variáveis existentes ou novas
variáveis criadas com um índice.
VECTOR X(10).
VECTOR GROUP = X1 TO X5.
Parte I – Programando com SPSS
(Syntax e Macros)
As 5 principais funções do SPSS
Os 4 principais ambientes do SPSS
Obtendo Syntax de procedimentos presentes nos menus
Principais tipos de programação no SPSS
Syntax avançadas
Introdução a macros no SPSS
Macros avançadas
Exemplos motivacionais para o uso de macros
Exemplos de processos produtivos automatizados por
Introdução a macros no SPSS
Consistem de pequenas rotinas de comando
que automatizam uma ou mais tarefas no
sentido de tornar o trabalho mais eficiente e
fácil.
Usando esta abordagem você não necessita
criar toda vez comandos já demandados em
uma particular análise ou transformação de
www.estatistico.com
Introdução a macros no SPSS
Macros sempre contém comandos de syntax
regular do SPSS adicionados de comandos
especializados para sua definição e execução.
Macros iniciam com o comando DEFINE e
terminam com o comando!ENDDEFINE.
O nome da macro é utilizado para chamar
Introdução a macros no SPSS
> Normas para criar uma macro
DEFINE
NomeMacro
(
ArgumentosMacro
)
Tarefas a serem executadas.
!ENDDEFINE.
Introdução a macros no SPSS
> Como usar uma macro já pronta e salva?
INCLUDE ‘Diretório\
codigo_spss.sps’.
NomeMacro
argumentos.
Introdução a macros no SPSS
> Existem dois tipos de argumentos:
Argumentos de palavras chave (KEYWORD)
Argumentos de posição (POSITIONAL)
Introdução a macros no SPSS
> Argumentos de palavras chave (KEYWORD)
São associados com nomes na definição da
macro, e quando a macro é chamada, eles são
literalmente identificados pelo nome e podem
aparecer em qualquer ordem.
Introdução a macros no SPSS
> Argumentos de posição (POSITIONAL)
São declarados depois da palavra !POSITIONAL.
Quando a macro é chamada, eles são
identificados por sua posição relativa na definição
da macro. O primeiro argumento de posição é
referido como !1 no corpo da macro, o segundo
!2, e assim por diante.
Introdução a macros no SPSS
> Macro TOKENS
São utilizados em conjunção com os argumentos
na macro.
Consiste de uma símbolo(valor) ou grupo de
símbolos que tem função predefinida em um
específico contexto.
Introdução a macros no SPSS
> Macro TOKENS
Em essência, a declaração de um TOKEN informa
ao SPSS como conhecer ou reconhecer quais
elementos na chamada da macro devem
ser associados a determinado argumento.
A mais simples definição de um TOKEN é aquela
que atribui os próximos n valores(ou tokens) para o
Utilizando um argumento de posição
DEFINE
MacroFreq
(
!POSITIONAL !TOKENS(4)
)
FREQUENCIES VARIABLES=!1
/ORDER=ANALYSIS.
!ENDDEFINE.
MacroFreq
UF_CLIENTE DIA_SEMANA_CONSULTA
UF_CLIENTE CIDADE_CLIENTE.
Utilizando um argumento de posição
DEFINE
MacroFreq
(
!POSITIONAL !TOKENS(4)
)
FREQUENCIES VARIABLES=!1
/ORDER=ANALYSIS.
!ENDDEFINE.
MacroFreq
UF_CLIENTE DIA_SEMANA_CONSULTA
UF_CLIENTE CIDADE_CLIENTE.
Utilizando um argumento de
palavra chave
DEFINE
MacroFreq
(
Variaveis = !TOKENS(4)
)
FREQUENCIES VARIABLES=!Variaveis
/ORDER=ANALYSIS.
!ENDDEFINE.
MacroFreq Variaveis =
UF_CLIENTE
DIA_SEMANA_CONSULTA UF_CLIENTE CIDADE_CLIENTE.
Utilizando um argumento de
palavra chave
DEFINE
MacroFreq
(
Variaveis = !TOKENS(4)
)
FREQUENCIES VARIABLES=!Variaveis
/ORDER=ANALYSIS.
!ENDDEFINE.
MacroFreq Variaveis =
UF_CLIENTE
DIA_SEMANA_CONSULTA UF_CLIENTE CIDADE_CLIENTE.
Utilizando um argumentos de posição
e palavra chave ao mesmo tempo
DEFINE MacrMista (
Variaveis = !TOKENS(4)
/
!POSITIONAL !TOKENS(1)
)
FREQUENCIES VARIABLES=!Variaveis
/ORDER=ANALYSIS.
DESCRIPTIVES VARIABLES=!1
/STATISTICS=MEAN STDDEV MIN MAX.
!ENDDEFINE.
MacrMista
IDADE
Variaveis = UF_CLIENTE DIA_SEMANA_CONSULTA
UF_CLIENTE CIDADE_CLIENTE
www.estatistico.com
.
Utilizando um argumentos de posição
e palavra chave ao mesmo tempo
DEFINE MacrMista (
Variaveis = !TOKENS(4)
/
!POSITIONAL !TOKENS(1)
)
FREQUENCIES VARIABLES=!Variaveis
/ORDER=ANALYSIS.
DESCRIPTIVES VARIABLES=!1
/STATISTICS=MEAN STDDEV MIN MAX.
!ENDDEFINE.
MacrMista
IDADE
Variaveis = UF_CLIENTE DIA_SEMANA_CONSULTA
Utilizando um número
variável de TOKENS
!CHAREND
Associa todos os TOKENS que antecedem algum símbolo
definido (“char”) ao argumento.
!ENCLOSE
Associa todos os TOKENS entre dois específicos símbolos
ao argumento.
!CHAREND
DEFINE MacroCorr (!POSITIONAL !CHAREND(':')/
!POSITIONAL !CHAREND('/'))
CORRELATIONS !1 WITH !2.
!ENDDEFINE.
MacroCorr IDADE RENDA: VL_CHEQUE QTD_PARCELAS/.
!CHAREND
DEFINE MacroCorr (!POSITIONAL !CHAREND(':')/
!POSITIONAL !CHAREND('/'))
CORRELATIONS !1 WITH !2.
!ENDDEFINE.
MacroCorr IDADE RENDA: VL_CHEQUE QTD_PARCELAS/.
!ENCLOSE
DEFINE MacroCorr2 (!POSITIONAL !ENCLOSE('[' , ']')/
!POSITIONAL !ENCLOSE('[' , ']'))
CORRELATIONS !1 WITH !2.
!ENDDEFINE.
MacroCorr2 [IDADE RENDA] [VL_CHEQUE QTD_PARCELAS].
!ENCLOSE
DEFINE MacroCorr2 (!POSITIONAL !ENCLOSE('[' , ']')/
!POSITIONAL !ENCLOSE('[' , ']'))
CORRELATIONS !1 WITH !2.
!ENDDEFINE.
MacroCorr2 [IDADE RENDA] [VL_CHEQUE QTD_PARCELAS].
Parte I – Programando com SPSS
(Syntax e Macros)
As 5 principais funções do SPSS
Os 4 principais ambientes do SPSS
Obtendo Syntax de procedimentos presentes nos menus
Principais tipos de programação no SPSS
Syntax avançadas
Introdução a macros no SPSS
Macros avançadas
Exemplos motivacionais para o uso de macros
Uso avançado de macros
A linguagem em macros no SPSS oferece várias
ferramentas adicionais não encontradas na
syntax padrão ou nos menus do SPSS.
Estruturas de repetição com base em índices ou listas.
Manipulação de strings
Associação direta de valores a variáveis
Processamento condicional
Estruturas de repetição com
base em índices
!DO !VAR = início !TO fim [!BY passo]
Tarefas
!DOEND.
Estruturas de repetição com
base em índices
DEFINE MacroMergeAllFiles (DiretorioComum=!TOKENS(1)/
NomeComum=!TOKENS(1)/ QtdeArquivos=!TOKENS(1))
!DO !FILE= 1 !TO !QtdeArquivos.
!IF (!FILE=1) !THEN
GET FILE= !DiretorioComum+!NomeComum+"1.sav".
!ELSE
ADD FILES /FILE=*
/FILE=!DiretorioComum+!NomeComum+!QUOTE(!FILE)+".sav".
EXECUTE.
!IFEND.
!DOEND.
Estruturas de repetição com
base em índices
MacroMergeAllFiles
DiretorioComum='D:\Minicurso Teresina\Parte II - SPSS
Macros\Macros avançadas\'
NomeComum='FAZER_MERGE_'
QtdeArquivos=20.
www.estatistico.com
Estruturas de repetição com
base em listas
DEFINE MacroMakeDir (path !CMDEND ).
CD 'D:\Minicurso Teresina\Parte II - SPSS Macros\Macros
avançadas\Criação diretórios'.
HOST COMMAND = [ !QUOTE(!CONCAT("MKDIR ",!path) ) ] .
!ENDDEFINE .
DEFINE Lista ()
NOVOS_CLIENTES
ANTIGOS_CLIENTES
!ENDDEFINE.
www.estatistico.com
Estruturas de repetição com
base em listas
!DO !VAR = !IN lista
Tarefas
!DOEND.
Estruturas de repetição com
base em listas
DEFINE ListaVariaveis ()
V1
V2
V3
V4
V5
!ENDDEFINE.
www.estatistico.com
Estruturas de repetição com
base em listas
DEFINE MacroStringforNumeric (Variaveis=!CMDEND)
!DO !VarOriginal !IN (!Variaveis)
NUMERIC Temporaria(F20.4).
COMPUTE Temporaria=NUMBER(!VarOriginal,F20.0).
MATCH FILES FILE=* /DROP=!VarOriginal.
RENAME VARIABLE (Temporaria=!VarOriginal).
!DOEND.
!ENDDEFINE.
MacroStringforNumeric Variaveis=ListaVariaveis.
Manipulação de strings
!CONCAT –
Concatena várias strings.
!QUOTE –
Coloca apóstrofos em uma string. Alguns
comandos requerem apóstrofos, tais como labels e títulos.
!HEAD –
Retorna o primeiro token presente em uma
string.
!TAIL –
Complementar do !HEAD.
!BLANKS(n) –
Gera uma string com n espaços brancos.
Associação direta
de variáveis na macro
COMPUTE associa um valor a uma variável
COMPUTE X = 5.
Em uma macro a associação pode ser feita:
!LET !VAR = expressão
!LET !X = 5
Processamento condicional
IF expressão !THEN
Tarefas
!ELSE
Outras tarefas
!IFEND.
www.estatistico.com
Parte I – Programando com SPSS
(Syntax e Macros)
As 5 principais funções do SPSS
Os 4 principais ambientes do SPSS
Obtendo Syntax de procedimentos presentes nos menus
Principais tipos de programação no SPSS
Syntax avançadas
Introdução a macros no SPSS
Macros avançadas
Exemplos motivacionais para o uso de macros
Exemplo motivacional para
o uso de macros
Uma empresa dispõe de um grande banco
de dados e necessita dividir o mesmo em
bancos menores . Na realidade ela dispõe de 1
milhão de casos e gostaria de particionar essa
informação em arquivos de 50000 casos cada.
É preciso cortar (SELECT CASES) estes
Exemplo motivacional para
o uso de macros
1000000 de casos
1000 de casos
1000 de casos
.
.
.
1000 a
rqui
vo
s
Situação atual
Objetivo
www.estatistico.com
Exemplo motivacional para
o uso de macros
Data > Select cases > Based on time or case range
Exemplo motivacional para
o uso de macros
> paste (Procedimento disponível via menu)
/* Selecionando os casos de interesse.
FILTER OFF.
USE 1 thru 1000 /permanent.
EXECUTE.
/* Salvando os arquivos.
SAVE TRANSLATE OUTFILE='D:\1000.dat'
Exemplo motivacional para
o uso de macros
> Repetir esta syntax 1000 vezes variando
manualmente os parâmetros!!!!
/* Selecionando os casos de interesse. FILTER OFF.
USE 1 thru 1000 /permanent. EXECUTE.
/* Salvando os arquivos.
SAVE TRANSLATE OUTFILE='D:\1000.dat'
/TYPE=TAB /MAP /REPLACE /FIELDNAMES /CELLS=VALUES. /* Selecionando os casos de interesse.
FILTER OFF.
USE 1001 thru 2000 /permanent. EXECUTE.
/* Salvando os arquivos.
SAVE TRANSLATE OUTFILE='D:\2000.dat'
/TYPE=TAB /MAP /REPLACE /FIELDNAMES /CELLS=VALUES. .
. .
/* Selecionando os casos de interesse. FILTER OFF.
USE 999000 thru 1000000 /permanent.
Exemplo motivacional para
o uso de macros
Data > Select cases > If condiction is satisfied
Exemplo motivacional para
o uso de macros
> paste (Procedimento disponível via menu)
SELECT IF RANGE(ID, 1,1000).
SAVE TRANSLATE OUTFILE='D:\txt\1000.dat'
/TYPE=TAB /MAP /REPLACE /FIELDNAMES
/CELLS=VALUES.
Exemplo motivacional para
o uso de macros
> Repetir esta syntax 1000 vezes variando
manualmente os parâmetros!!!!
SELECT IF RANGE(ID, 1,1000).
SAVE TRANSLATE OUTFILE='D:\txt\1.dat'
/TYPE=TAB /MAP /REPLACE /FIELDNAMES /CELLS=VALUES. SELECT IF RANGE(ID, 1001,2000).
SAVE TRANSLATE OUTFILE='D:\txt\1001.dat'
/TYPE=TAB /MAP /REPLACE /FIELDNAMES /CELLS=VALUES. .
. .
SELECT IF RANGE(ID, 999001,1000000). SAVE TRANSLATE OUTFILE='D:\txt\999001.dat'
/TYPE=TAB /MAP /REPLACE /FIELDNAMES /CELLS=VALUES.