SPSS: PROGRAMAS E ROTINAS COMPLEMENTARES (SYNTAX FILES)

 

Procedimentos de Aleatorização: Rotinas Básicas

 

MENUS (SPSS Data Editor)

Determinar aleatoriamente o “ponto de partida” para gerar séries de números aleatórios

Gerar uma série de números aleatórios, entre “0” e um dado valor, com distribuição uniforme

Gerar uma série de números aleatórios, entre dois valores, com distribuição uniforme

 

 

SYNTAX (SPSS Syntax Editor)

Determinar aleatoriamente o “ponto de partida” para gerar séries de números aleatórios

Gerar uma série de números aleatórios, entre “0” e um dado valor, com distribuição uniforme

Gerar uma série de números aleatórios, entre dois valores, com distribuição uniforme

Gerar uma permutação aleatória de inteiros de 1 a “n”

Gerar uma permutação aleatória de inteiros consecutivos entre dois valores.

Gerar uma permutação aleatória de “n” “objectos” distintos

Determinar aleatoriamente o “ponto de partida” na utilização de uma tabela de números aleatórios [Tabela de Números Aleatórios]

Experiências aleatórias: Dados, moedas e cartas

 

 

 

Determinar aleatoriamente o “ponto de partida” para gerar séries de números aleatórios [MENUS]

 

O SPSS usa um determinado “ponto de partida” (Seed) para gerar números aleatórios. Sempre que inicia uma sessão, o ponto de partida é, por defeito, 2000000, o que faz com que, para um mesmo comando, a série a obter na primeira vez que se pedem números aleatórios seja idêntica.

Por isso, antes de pedir uma série de números aleatórios, deve escolher, no menu Transform, submenu Random Number Seed..., Random Seed e clicar OK. Deste modo, o SPSS determina aleatoriamente o “ponto de partida” da série de números aleatórios (para mais especificações ver HELP, que aqui se reproduz).

 

 

 

 

 

 

Gerar uma série de números aleatórios, entre “0” e um dado valor, com distribuição uniforme [MENUS]

 

No menu Transform, submenu Compute... crie uma variável (NA, no exemplo) com uma distribuição uniforme e valores compreendidos entre 0 e o valor que desejar (1, no exemplo). O número de casos da variável NA será igual ao da variável da file activa com maior número de casos.

 

 

 

 

 

 

Gerar uma série de números aleatórios, entre dois valores, com distribuição uniforme [MENUS]

 

No menu Transform, submenu Compute... crie uma variável (NA, no exemplo) com uma distribuição uniforme e valores compreendidos entre um mínimo e um máximo a especificar (-50 e 50, no exemplo). O número de casos da variável NA será igual ao da variável da file activa com maior número de casos.

 

 

 

 

 

 

Determinar aleatoriamente o “ponto de partida” para gerar séries de números aleatórios [SYNTAX]

SET SEED RANDOM.

 

 

 

 

Gerar uma série de números aleatórios, entre “0” e um dado valor, com distribuição uniforme [SYNTAX]

** Gerar uma série de números aleatórios entre “0” e um dado valor.

 

* Substitua “n” pelo número da casos pretendidos para a série.

INPUT PROGRAM.

LOOP CASOS=1 TO n.

END CASE.

END LOOP.

END FILE.

END INPUT PROGRAM.

SET SEED RANDOM.

 

* Indique o valor máximo da distribuição uniforme(1, no exemplo).

COMPUTE NA=UNIFORM(1).

EXECUTE.

FORMATS NA(F20.5).

LIST NA.

 

*** Nota

** Pode indicar um valor mínimo (negativo, por exemplo -18).

 

 

 

 

Gerar uma série de números aleatórios, entre dois valores, com distribuição uniforme [SYNTAX]

** Gerar uma série de números aleatórios entre dois valores.

 

* Substitua “n” pelo número da casos pretendidos para a série.

INPUT PROGRAM.

LOOP CASOS=1 TO n.

END CASE.

END LOOP.

END FILE.

END INPUT PROGRAM.

SET SEED RANDOM.

 

* Indique o valor máximo da distribuição uniforme(-50 e 50, no

* exemplo).

COMPUTE NA=RV.UNIFORM(-50,50).

EXECUTE.

FORMATS NA(F20.5).

LIST NA.

 

 

 

 

Gerar uma permutação aleatória de inteiros de 1 a “n”.

** Gerar uma permutação aleatória de inteiros de 1 a “n”.

 

* Substitua “n” pelo último número inteiro da série pretendida.

INPUT PROGRAM.

LOOP PERMUT=1 TO n.

END CASE.

END LOOP.

END FILE.

END INPUT PROGRAM.

SET SEED RANDOM.

COMPUTE NA=UNIFORM(1).

SORT CASES BY NA (A).

EXECUTE.

FORMATS PERMUT(F12.0).

LIST PERMUT.

 

 

 

 

Gerar uma permutação aleatória de inteiros consecutivos entre dois valores.

** Gerar uma permutação aleatória de inteiros consecutivos entre dois

** valores.

 

* Substitua “i” pelo primeiro inteiro e “f” pelo último inteiro da

* série pretendida.

INPUT PROGRAM.

LOOP PERMUT= i TO f.

END CASE.

END LOOP.

END FILE.

END INPUT PROGRAM.

SET SEED RANDOM.

COMPUTE NA=UNIFORM(1).

SORT CASES BY NA (A).

EXECUTE.

FORMATS PERMUT(F12.0).

LIST PERMUT.

 

*** Nota

** Desde que o primeiro número seja inferior ao último, pode escolher

** números negativos ou negativos e positivos(por exemplo: -54 e -12

** ou -14 e 39).

 

 

 

 

 

Gerar uma permutação aleatória de “n” “objectos” distintos.

*** Gerar uma permutação aleatória de “n” “objectos” distintos.

 

** Introduza as designações dos “objectos” que pretende permutar

** na(s) linha(s) a vermelho (os nomes dos objectos podem ir até

** 40 caracteres, não podendo ter espaços em branco pelo meio).

** Desde que separe os nomes dos diferentes objectos por um espaço

** em branco, pode registar quantos objectos quiser.

 

 

DATA LIST FREE /OBJECTO(A40).

* Introduza os nomes dos objectos.

BEGIN DATA

Maçã Laranja Banana Ananás Uvas Morangos_com_chantilly Morangos_ao_natural Manga Cerejas Castanhas_do_Brasil Pêssego

END DATA.

SET SEED RANDOM.

COMPUTE NA=UNIFORM(1).

SORT CASES BY NA (A).

EXECUTE.

LIST OBJECTO.

 

*** Nota

** Como é evidente, pode utilizar esta sintaxe para permutar inteiros

** não consecutivos:

 

**     [...]

**     BEGIN DATA

**     3 7 19 233 1049 5  14

**     END DATA.

**     [...]

 

** ou as letras do alfabeto (consecutivas ou não):

**     [...]

**     BEGIN DATA

**     B C F J M X A Z

**     END DATA.

**     [...]

 

 

 

 

 

Determinar aleatoriamente o “ponto de partida” na utilização de uma tabela de números aleatórios

*** Determinar o “ponto de partida” numa tabela de números aleatótios.

 

** Para utilizar a tabela de números aleatórios anexa a esta página,

** siga as instruções de Alferes (1997,  pp. 224-227) e execute a

** seguinte sintaxe para determinar aleatoria e independentemente a

** linha (1 a 100) e a coluna (1 a 30) que definem o início da série

** de números aleatórios a obter.

 

INPUT PROGRAM.

LOOP LINHA=1 TO 100.

END CASE.

END LOOP.

END FILE.

END INPUT PROGRAM.

SET SEED RANDOM.

COMPUTE NA1=UNIFORM(1).

SORT CASES BY NA1(A).

EXECUTE.

FORMATS LINHA(F8.0).

LIST LINHA/CASES=1.

SELECT IF($CASENUM<=30).

COMPUTE COLUNA=$CASENUM.

COMPUTE NA2=UNIFORM(1).

SORT CASES BY NA2(A).

EXECUTE.

FORMATS COLUNA(F8.0).

LIST COLUNA/CASES=1.

 

 

 

 

 

Experiências aleatórias: Dados, moedas e cartas

 

NIIPS / CSEO

SYNTAX FILES

valferes@fpce.uc.pt

Última actualização: 2002-09-29