全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SPSS论坛
886 0
2014-04-30
* Proportionate sampling without replacement.


*************************************************************.
*Generate a file of 200 cases for illustration purposes.
*************************************************************.
NEW file.
input program.
loop block=1 to 200.
leave block.
compute pop=RND(uniform(10000)).
FORMATS block pop (F8.0).
end case.
end loop.
end file.
end input program.
execute.

SET MPRINT=ON.
*-------------------------------BEG OF MACRO1---------------------------------------------------.
DEFINE !GETONE().
COMPUTE case# =$casenum.
CREATE t_weight=CSUM(pop).
SORT CASES BY case#(D).
CREATE c_weight= CSUM(pop).
SORT CASES BY case#.
EXECUTE.
* Draw a random number and pick one line.
DO IF ($casenum=1).
+        compute #draw=uniform(1)*c_weight.
+         COMPUTE draw=#draw.
+        compute filter_$=(#draw<t_weight).                /* this record is selected if filter=1.
ELSE.
+        compute filter_$=(#draw<t_weight) & (#draw>lag(t_weight)).        /* this record is selected if filter=1.
+        COMPUTE draw=#draw.
END IF.
EXECUTE.

!ENDDEFINE.
*----------------------END OF MACRO1----------------------------------------------------.



*----------------------------BEG OF MACRO2-----------------------------.

DEFINE !SAMPLE (size=!TOKENS(1)).
!DO !count=1 !TO !size.

!GETONE.
SAVE OUTFILE='C:\temp\temp4.sav'.

SELECT IF(filter_$=1).
EXECUTE .

!IF (!count<>1) !THEN ADD FILES /FILE=* /FILE='C:\temp\select4.sav'.
!IFEND.
SAVE OUTFILE='C:\temp\select4.sav'.
GET FILE='C:\temp\temp4.sav'.
EXECUTE .

SELECT IF(filter_$=0).
EXECUTE.
!DOEND.
!ENDDEFINE.
*--------------------------END OF MACRO2----------------------------------------.


!SAMPLE size=10.

GET FILE='C:\temp\select4.sav'.
LIST.

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群