同じ結果であるが、いくつかのデータセットに対して異なる主説明変数(共変量はすべてのモデルに共通)を持ついくつかのロジスティック回帰モデルを実行できるようにするマクロを実装しようとしています。2つのグローバル変数をスキャンするスキャンおよび評価マクロを作成しましたが、完全には機能していません。コードを以下に示します。
%let numbers=5 7 8 9 10 12 13 14 16 18 19 24 26
32 33 35 37 39 41 44 45 48 50 52
55 56 58 66 67 68 ;
%let list=voting national local safe street violence say free;
%macro logistic;
%let j=1;
%let m=1;
%let first=%scan(&list,%eval(&j));
%let second=%scan(&numbers,%eval(&m));
%do %while (&first ne );
%do %while (&second ne );
proc logistic data=socialcapital&second. descending;
model depression= &first. agec married edu inc_2 inc_3 inc_4 inc_5/risklimits;
ods output ParameterEstimates=mv_model1&second._&first.;
run;
%let j=%eval(&j+1);
%let m=%eval(&m+1);
%let first=%scan(&list,%eval(&j));
%let second=%scan(&numbers,%eval(&m));
%end;
%end;
run;
%mend;
%logistic;
グローバル変数番号は、私が使用している「社会資本」データセットを指します。各データセットは国を表すため、「numbers」グローバル変数の各数値はデータセットを参照します。グローバル変数リストは、モデルに含めたい主な説明変数のリストを指します。モデルごとに1つの主な説明変数です。私が取得しようとしているのは、各国の8つの個別の多変数ロジスティック回帰の結果です。
しかし、スキャン機能が正常に機能していないようで、何か間違ったことをしたことはわかっていますが、何が起こっているのかわかりません。マクロは、&listから1つの変数を&numbersから1つのデータセットに割り当て、&listからの変数がなくなるまで、データセット5を使用して8つのモデルすべてを実行するのではなく、共変量のみでモデルを実行し、次にを使用して8つのモデルすべてを再度実行するようです。データセット7など。
基本的に、私は番号付けで何かを台無しにしました、そして私はこのマクロをどのように進めるかについてよくわかりません。スタックされたデータセットを使用してproclogisticで「byステートメント」を使用することで&numbersグローバル変数を取り除くことができることは知っていますが、これがオプションではない可能性がある将来のモデルで機能する方法を学びたいと思います。