在SPSS中循环重复抽取样本,得到每个样本的描述性统计
Loop in SPSS to draw sample repeatedly and get a descriptive statistics from each sample
我想从数据集中抽取大小为 50 的样本 100 次,并从输出中的每个样本获得描述性统计数据 window。我使用了以下代码,但收到警告!!!
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 的新手,之前从未 loop。
我正在使用 SPSS 22 版。
任何帮助将不胜感激。如果这是一个重复的问题,我们深表歉意。
一种方法是将您尝试在宏中使用的示例和描述性命令包装起来:
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
要使用(接受列表由 space 分隔的变量)。我们可以这样称呼它:
!repsample times = 100 size = 50 maxn = 10251 vars = myvar1.
我想从数据集中抽取大小为 50 的样本 100 次,并从输出中的每个样本获得描述性统计数据 window。我使用了以下代码,但收到警告!!!
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 的新手,之前从未 loop。
我正在使用 SPSS 22 版。
任何帮助将不胜感激。如果这是一个重复的问题,我们深表歉意。
一种方法是将您尝试在宏中使用的示例和描述性命令包装起来:
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
要使用(接受列表由 space 分隔的变量)。我们可以这样称呼它:
!repsample times = 100 size = 50 maxn = 10251 vars = myvar1.