Как создать несколько графиков с новыми переменными внутри цикла в синтаксисе SPSS?

Я использую SPSS (v.20) и хочу использовать синтаксис для создания графика для каждой из нескольких представляющих интерес переменных. У меня есть 2 типа примеров графиков:

ПРИМЕР №1:

GGRAPH 
  /GRAPHDATASET NAME="graphdataset" 
    VARIABLES=change_WIraw[LEVEL=ratio] 
    MISSING=LISTWISE REPORTMISSING=NO 
  /GRAPHSPEC SOURCE=VIZTEMPLATE(NAME="Histogram with Normal Distribution"[LOCATION=LOCAL] 
    MAPPING( "x"="change_WIraw"[DATASET="graphdataset"])) 
    VIZSTYLESHEET="Traditional"[LOCATION=LOCAL] 
    LABEL='HISTOGRAM WITH NORMAL DISTRIBUTION: change_WIraw' 
    DEFAULTTEMPLATE=NO.

ПРИМЕР #2:

GGRAPH 
  /GRAPHDATASET NAME="graphdataset" VARIABLES=GROUP change_WIraw MISSING=LISTWISE 
REPORTMISSING=NO 
      /GRAPHSPEC SOURCE=INLINE. 
BEGIN GPL 
  SOURCE: s=userSource(id("graphdataset")) 
  DATA: GROUP=col(source(s), name("GROUP"), unit.category()) 
  DATA: change_CTBWss=col(source(s), name("change_WIraw")) 
  DATA: id=col(source(s), name("$CASENUM"), unit.category()) 
  GUIDE: axis(dim(1), label("GROUP")) 
  GUIDE: axis(dim(2), label("change_WIraw")) 
  SCALE: cat(dim(1), include("1", "2", "3", "4")) 
  SCALE: linear(dim(2), include(0)) 
  ELEMENT: schema(position(bin.quantile.letter(GROUP*change_WIraw)), label(id)) 
END GPL.

Я хочу запустить цикл, чтобы я мог запрограммировать это для многих других переменных (заменяя «change_WIraw»). Я хотел бы получить некоторые рекомендации, спасибо! Я надеюсь, что это правильный форум, чтобы спросить. (Я нашел похожие вопросы, но они были для гораздо более простых функций, таких как частота.)


person redracer    schedule 11.12.2012    source источник


Ответы (2)


Ваш лучший вариант — безусловно, — использовать для этого Python. Если вы еще не используете Python для SPSS, см. www.pythonforspss.org для получения некоторых базовых сведений.

Затем попробуйте следующее: замените change_WIraw to v10 фактическими именами переменных (только во второй строке). Предполагается, что они находятся рядом в вашем активном наборе данных. А затем просто запустите:

begin program.
variables='change_WIraw to v10'
import spss,spssaux
vList=spssaux.VariableDict().expand(variables)
for vrbl in vList:
    spss.Submit("""
GGRAPH 
  /GRAPHDATASET NAME="graphdataset" VARIABLES=GROUP %(vrbl)s MISSING=LISTWISE 
REPORTMISSING=NO 
      /GRAPHSPEC SOURCE=INLINE. 
BEGIN GPL 
  SOURCE: s=userSource(id("graphdataset")) 
  DATA: GROUP=col(source(s), name("GROUP"), unit.category()) 
  DATA: change_CTBWss=col(source(s), name("%(vrbl)s")) 
  DATA: id=col(source(s), name("$CASENUM"), unit.category()) 
  GUIDE: axis(dim(1), label("GROUP")) 
  GUIDE: axis(dim(2), label("%(vrbl)s")) 
  SCALE: cat(dim(1), include("1", "2", "3", "4")) 
  SCALE: linear(dim(2), include(0)) 
  ELEMENT: schema(position(bin.quantile.letter(GROUP*%(vrbl)s)), label(id)) 
END GPL."""%locals())
end program.

Синтаксис запустится один раз для каждой указанной вами переменной и заменит %(vrbl)s именем переменной.

person RubenGeert    schedule 11.12.2012

Простой способ создания отдельных графиков для нескольких переменных состоит в том, чтобы изменить набор данных с широкого на длинный (т. е. поместить все переменные в один столбец), а затем использовать split file перед командой графика. Пример ниже.

set seed = 10.
input program.
loop #i = 1 to 1000.
compute V1 = RV.NORM(0,1).
compute V2 = RV.NORM(20,5).
compute V3 = RV.NORM(100,15).
end case.
end loop.
end file.
end input program.
dataset name sim.
execute.

varstocases
/make V from V1 to V3
/index groups.

sort cases by groups.
split file by groups.

* Chart Builder.
GGRAPH
  /GRAPHDATASET NAME="graphdataset" VARIABLES=V MISSING=LISTWISE
  REPORTMISSING=NO
  /GRAPHSPEC SOURCE=INLINE.
BEGIN GPL
 SOURCE: s=userSource(id("graphdataset"))
 DATA: V=col(source(s), name("V"))
 GUIDE: axis(dim(1), label("V"))
 GUIDE: axis(dim(2), label("Frequency"))
 ELEMENT: interval(position(summary.count(bin.rect(V))), shape.interior(
  shape.square))
END GPL.

split file off.

Сейчас я использую более старую версию, в которой нет визуальных шаблонов (так что дайте мне знать, если это не сработает для них). Хотя вы можете создать любой график во встроенных операторах GPL, вы можете сделать это с помощью шаблонов Viztemplates (кроме карт).

Вам нужно будет использовать макрос или python, если вы хотите больше контролировать определенные метки или эстетику диаграмм с зацикливанием, но это быстрый способ добиться того, чего вы хотите.

person Andy W    schedule 11.12.2012