我大约有300个变量,并且正在计算它们的偏度和峰度。现在,我想创建一个新的变量,其中包括偏度和峰度在一定范围内的所有那些变量的列表。这个想法是只选择那些满足条件的变量,并对所有其他变量进行归一化。
要计算我正在使用的偏度;
Descriptives A TO Z
/Statistics Skewness.
Execute.
我知道这不是有效的语法,但我需要这样的内容:
Compute x= if(Skewness(A TO Z)>1)
请为此提供SPSS语法。
答案 0 :(得分:1)
有多种方法可以解决此问题,所以可能有一种更简单的方法。
您只需要将“ var1 TO varN”更改为变量列表,并在创建标志的两条COMPUTE行上将您想要的偏斜度和峰度条件更改为任意值即可。
如果我这样做,我会更进一步,并使用WRITE OUT =“ .sps” / CMD将规范化构建为语法。 INSERT FILE =“ .sps”,但这不是您要的。
time-relation
如果在计算标志并将其替换后省略选择数据块,它将计算符合您条件的变量的规范化版本。这将计算新变量,并且您将要添加语法文件的文件位置(在WRITE和INSERT命令中替换“〜/”),并将引用为“ RAWDATA”的数据集的名称更改为您的数据集名称是:
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.