Извлечь список переменных, удовлетворяющих определенным условиям, и сохранить его в новой переменной, используя синтаксис SPSS - PullRequest
0 голосов
/ 15 января 2019

У меня есть около 300 переменных, и я рассчитываю их асимметрию и куртоз. Теперь я хочу создать новую переменную, которая будет состоять из списка всех тех переменных, у которых Асимметрия и Куртоз находятся в определенном диапазоне. Идея состоит в том, чтобы выбрать только те переменные, которые удовлетворяют условию и выполнить нормализацию по всем другим переменным.

Для расчета Skewness я использую;

Descriptives A TO Z
/Statistics Skewness.
Execute.

Я знаю, что это неправильный синтаксис, но мне нужно что-то вроде этого:

Compute x= if(Skewness(A TO Z)>1)

Пожалуйста, помогите мне с синтаксисом SPSS для этого.

1 Ответ

0 голосов
/ 16 января 2019

Есть несколько способов приблизиться к этому, поэтому может быть более простой способ.

вам просто нужно изменить 'var1 TO varN' на ваш список переменных и любые критерии, которые вы хотите для Skewness & Kurtosisв двух строках COMPUTE, которые создают флаги, и это сделает это за вас.

Если бы я делал это, я бы пошел дальше и встроил нормализацию в синтаксис, используя WRITE OUT = ".sps"/ CMD.INSERT FILE = ".sps", но это не то, что вы просили.

DATASET DECLARE DistributionSyntax.
OMS
  /SELECT TABLES
  /IF SUBTYPES=["Descriptives"] INSTANCES=[1]
  /DESTINATION FORMAT=SAV OUTFILE = 'DistributionSyntax'.
EXAMINE VARIABLES=var1 TO varN
  /PLOT NONE
  /STATISTICS DESCRIPTIVES
  /CINTERVAL 95
  /MISSING PAIRWISE
  /NOTOTAL.
OMSEND.
DATASET ACTIVATE DistributionSyntax.

USE ALL.
FILTER OFF.
SELECT IF ANY(Var2,'Skewness','Kurtosis').
EXECUTE.
STRING VarName (A64).
COMPUTE SkewnessFlag = (Var2 = 'Skewness' AND ABS(Statistic) > 2).
COMPUTE KurtosisFlag = (Var2 = 'Kurtosis' AND ABS(Statistic) > 2).
COMPUTE VarName = CHAR.SUBSTR(Var1,1,CHAR.INDEX(Var1,' ')-1).
EXECUTE.

USE ALL.
COMPUTE filter_$=(SkewnessFlag = 1).
VALUE LABELS filter_$ 0 'Not Selected' 1 'Selected'.
FORMATS filter_$ (f1.0).
FILTER BY filter_$.
EXECUTE.
FRE VarName.

USE ALL.
COMPUTE filter_$=(KurtosisFlag= 1).
VALUE LABELS filter_$ 0 'Not Selected' 1 'Selected'.
FORMATS filter_$ (f1.0).
FILTER BY filter_$.
EXECUTE.
FRE VarName.

USE ALL. 
FILTER OFF. 
EXECUTE.

Если вы пропустите выбранные блоки данных после вычисления флагов и замените их на это, он будет вычислять нормализованные версиипеременных, которые соответствуют вашим критериям.Это вычисляет новые переменные, и вы захотите добавить местоположение файла для файла синтаксиса (замените «~ /» в командах WRITE и INSERT) и измените имя набора данных, на которое ссылается «RAWDATA», на любое имя вашего набора данных.это:

USE ALL.
FILTER OFF.
SELECT IF ANY(1,SkewnessFlag,KurtosisFlag).
EXECUTE.

STRING CMD (A250).
COMPUTE CMD = CONCAT("COMPUTE ",RTRIM(VarName),".Norm = ln(",RTRIM(VarName),").").
EXECUTE.

DATA LIST /CMD 1-250 (A).
BEGIN DATA
EXECUTE.
END DATA.
DATASET NAME EXE WINDOW = FRONT.

DATASET ACTIVATE DistributionSyntax.
ADD FILES /FILE = *
/FILE = 'EXE'.
EXECUTE.
DATASET CLOSE EXE.
DATASET ACTIVATE DistributionSyntax.

WRITE OUT="~\Normalize Variables.sps" /CMD. 
DATASET CLOSE DistributionSyntax.
DATASET ACTIVATE RAWDATA.
INSERT FILE="~\Normalize Variables.sps".
...