У меня есть набор данных с n уровнями id и (n + 4) переменных. Я хочу выполнить регрессию для каждого из n уровней категориальной переменной, используя значения переменных n-1 в качестве объясняющих переменных. Вот мой набор данных:SAS Выполнение нескольких регрессий и сбор результатов
data have;
input s id $ x z y00 y01 y02;
cards;
1 00 95 5.00 .02 .43 .33
2 00 100 5.50 .01 .44 .75
3 00 110 5.25 .10 .37 .34
4 00 97 5.00 .02 .43 .33
5 00 100 5.50 .01 .43 .75
6 00 120 5.25 .10 .38 .47
7 00 95 5.00 .02 .43 .35
8 00 130 5.50 .01 .44 .75
9 00 110 5.25 .10 .39 .44
10 00 85 5.00 .02 .43 .33
11 00 110 5.50 .01 .47 .78
12 00 110 5.25 .10 .37 .44
1 01 20 6.00 .22 .01 .66
2 01 25 5.95 .43 .10 .20
3 01 70 4.50 .88 .05 .17
1 02 80 2.50 .65 .33 .03
2 02 85 3.25 .55 .47 .04
3 02 90 2.75 .77 .55 .01
;
run;
Так что я хотел бы использовать г, Y01 и Y02 объяснить х для ID 00. Аналогично, г, Y00 и Y02 объясним х для ID 01. Наконец, г, Y00 , и y01 объяснит x для ID 02.
Я могу просто использовать оператор BY, но я не могу придумать, как сказать модели игнорировать переменную с тем же префиксом, что и идентификатор, который я сейчас работать с.
Я мог бы создать отдельные наборы данных, но n> 100 для некоторых из этих анализов.
В идеале, я бы запускал proc mixed и proc reg для каждого ID, как описано выше, и имел набор данных с параметрами для каждого.
Любые идеи?
proc mixed data=have(where=(id='00')) plots(only)=all method=REML nobound ;
class s;
model x=z y01 y02
/solution;
random z y01 y02;
run;
proc reg data=have(where=(id='00'));
model x=z y01 y02;
run;
Спасибо.
Вы можете решить эту проблему с макро решение повторно запустить анализ без создания различных наборов данных (на лету, где и модели), но я хотел бы видеть, если кто-то знает лучшее решение; повторное решение макросов будет интенсивным во времени и на диске – Joe