Re: [程式] SAS 抽樣
※ 引述《mickey1231 (國父)》之銘言:
: 請問大家
: 我要做Case control study
: 現在我有兩群人,兩群人的變數有的顯著不同,有的沒有顯著不同
: 我想從這兩群人中抽人出,讓抽出來的兩群人的某些變數都沒有顯著不同
: 請問有什麼程式可以幫我辦到嗎?
: 之前我要控制住性別、與年齡,我是先用proc freq看人數,再用proc surveyselect分層
: 抽樣,但是要是要控制的變數一多,我就不知道該怎麼下手,才想詢問看看有沒有其他比
: 較快的方法?
: 謝謝大家!!
想借個標題問一下,小弟是統計新手,以前都把配對想得太簡單。
我想如果只是要配對的話,用SAS的proc sql就可以解決,但是在該作法下,與case配對
的control會有"重複"的問題,據小弟目前的了解,勢必要運用巨集,循環夠多的次數,
直到將所有可能的control都配對完,才會使每一組配對好的control都不重複。搜尋網路
上的資訊,多半是使用巨集,無奈小弟是巨集苦手,太多不明的符號,所以想上來求救,
不知道能不能幫助我解決,以下是我寫的簡單配對語法,但是小弟的case有9000個,
control有150萬,需要1:10配對,原本想用複製貼上這個語法100次,但是100次也沒辦法
全部配對完成呀,非常地傷腦筋。希望版上的大家能提供意見,助小弟脫離苦海,萬分感
謝。
SAS語法如下:
libname still 'F:/stillbirth';
data still.case2;
set still.case;
rand_num=uniform(0);
run;
data still.control2;
set still.control;
rand_num=uniform(0);
run;
PROC SQL;
CREATE table still.match
as select
one.no as case_no,
two.no as control_no,
one.gest as case_gest,
two.gest as control_gest,
one.still as case_still,
two.still as control_still,
one.rand_num as rand_num
from still.case2 one, still.control2 two
where one.gest=two.gest;
proc sort data=still.match;
by control_no rand_num;
run;
* Remove duplicate control subjects;
proc sort data=still.match out=still.match2 nodupkey;
by control_no;
run;
proc sort data=still.match2;
by case_no;
run;
proc sort data=still.match2;
by case_no rand_num;
run;
data still.match3 still.not_enough;
set still.match2;
by case_no ;
retain num;
if first.case_no then num=1;
if num le 10 then do;
output still.match3;
num=num+1;
end;
if last.case_no then do;
if num le 10 then output still.not_enough;
end;
run;
proc sort data=still.match;
by case_no;
run;
proc sort data=still.match3;
by case_no;
run;
data still.match5;
merge still.match (in=t1) still.match3 (in=t2);
by case_no;
if t2 then delete;
run;
proc sort data=still.match5;
by control_no;
run;
proc sort data=still.match3;
by control_no;
run;
data still.match6;
merge still.match5 (in=t1) still.match3 (in=t2);
by control_no;
if t2 then delete;
run;
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.128.67.245
推
09/04 17:10, , 1F
09/04 17:10, 1F
討論串 (同標題文章)