在SPSS中循环以重复绘制样本并从每个样本中获取描述性统计数据

时间:2015-09-28 00:32:20

标签: loops spss

我想从数据集中抽取大小为50的样本100次,并从输出窗口中的每个样本中获取描述性统计信息。我使用了以下代码,但收到警告!!!

loop # = 1 to 100.
USE ALL. 
do if $casenum=1. 
compute #s_$_1=50. 
compute #s_$_2=10251. 
end if. 
do if  #s_$_2 > 0. 
compute filter_$=uniform(1)* #s_$_2 < #s_$_1. 
compute #s_$_1=#s_$_1 - filter_$. 
compute #s_$_2=#s_$_2 - 1. 
else. 
compute filter_$=0. 
end if. 
VARIABLE LABELS filter_$ '50 from the first 10251 cases (SAMPLE)'. 
FORMATS filter_$ (f1.0). 
FILTER  BY filter_$. 
EXECUTE. 
DESCRIPTIVES VARIABLES=myvar1 
/STATISTICS=MEAN STDDEV VARIANCE SEMEAN.
end loop.
exe.    

我收到第一个警告:

>Warning # 142.  Command name: USE 
>LOOP has no effect on this command.   

我是SPSS的新手,之前从未做过循环 我使用的是SPSS版本22.
 任何帮助将不胜感激。道歉,如果是重复的问题。

1 个答案:

答案 0 :(得分:1)

一种方法是包装您尝试在宏中使用的示例和描述性命令:

DEFINE !repsample(times=!TOKENS(1) / size=!TOKENS(1) / maxn = !TOKENS(1) / vars=!CMDEND)
!DO !cnt=1 !TO !times.
do if $casenum=1.
compute #s_$_1=!size.
compute #s_$_2=!maxn.
end if.
do if  #s_$_2 > 0.
compute filter_$=uniform(1)* #s_$_2 < #s_$_1.
compute #s_$_1=#s_$_1 - filter_$.
compute #s_$_2=#s_$_2 - 1.
else.
compute filter_$=0.
end if.
FORMATS filter_$ (f1.0).
FILTER  BY filter_$.
DESCRIPTIVES VARIABLES= !vars
/STATISTICS=MEAN STDDEV VARIANCE SEMEAN.
!DOEND
!ENDDEFINE.

上面的宏有四个参数 - times来样本,size样本,来自第一个maxn个案例,vars来使用(接受一个变量列表)由空格隔开)。我们可以这样称呼它:

!repsample times = 100 size = 50 maxn = 10251 vars = myvar1.