Macro цикл занимает очень много времени

Sep 30, 2009 11:40


Все маюсь с той же задачей. По настоятельной рекоммендации начальства пытаюсь разобраться с таксометрической фунцкией MAMBAC. Для справки - это метод описания распределения как имеющего или не имеющего категорий по переменным А и Б. Идея в том, что нужно рассортировать выборку по переменной А, а потом разделить выборку на две части для каждого значения А и посчитать среднее значение переменной Б для обоих частей выборки (ниже и выше текущего значения А). И полученные значения записать в файл. Сам по себе, кстати, довольно любопытный метод и полезный для каких-то случаев.
     Ну так вот. Я использую macro для создания цикла и OMS для записи в файл. У меня 4222 значения А. То есть цикл должен гоняться 4220 раз (на самом-то деле чуть меньше, но не суть). Занимает работа полтора-два часа. А если пытаюсь гонять для выборки в 10 раз большей (40000), то SPSS работает 15 часов, а потом летит в тартарары. Может, что-то не так с кодом? Вроде, это не должно занимать СТОЛЬКО времени. 
Set MITERATE = 41000.
EXECUTE .

SORT CASES BY sort_variable(A).

COMPUTE rank=$CASENUM.
EXECUTE
define !my_macro()

!do !split= 16 !to 4207

SPLIT FILE OFF.

COMPUTE group= rank > !split.
EXECUTE.

SORT CASES BY group.
SPLIT FILE LAYERED BY group.

DESCRIPTIVES VARIABLES=secondvariable
  /STATISTICS=MEAN.

!doend

!enddefine.
*//////////////////////////////////////

***first OMS command just suppresses Viewer output***.
*OMS /DESTINATION VIEWER=NO /TAG='suppressall'.

DATASET DECLARE MAMBACcoeff.

OMS /SELECT TABLES
    /IF COMMANDS=['DESCRIPTIVES'] SUBTYPES=['Descriptive Statistics']
    /DESTINATION FORMAT=SAV   OUTFILE='MAMBACcoeff'.
    !my_macro.
OMSEND.

Программирование/синтаксис в SPSS, Данные: категоризация/дискретизация, Программирование в SPSS: macros

Previous post Next post
Up