我正试图迫使SPSS做一项psuedo-Monte研究。现实世界的数据是如此的离奇,以至于我无法可靠地模拟它(如果你感兴趣的话,它是用来测试伤害严重程度分数的)。因此,我使用了一个包含大约50万个真实世界数据的观测数据集,然后基本上引导来自越来越大的随机样本的结果。目标是找出假定正态性所需的组大小(在哪些组大小进行t测试时,测试可靠地同意;换句话说,我什么时候可以依赖中心极限定理)。
我的计划是使用宏的组合来重复这两个测试100次(但在随机选择导致组大小为零的情况下运行150次),然后使用OMS命令将大量测试的结果导出到一个单独的数据文件中。
到目前为止,一切都很好,但是,我想添加另一个循环命令来再次运行进程,但是选择更多的随机情况。因此,它将运行150次,每次随机选取10个案例,然后,在运行前150次之后,再运行150次,但选择20个随机案例。最理想的情况是这样的:
随机选择10个案例
运行t检验和Mann-Whitney U检验
重复150次
随机选取20个案例
运行t检验和Mann-Whitney U检验
重复150次
..。
(在200例病例中,现在增加了50例)
随机选取250个案例
运行t检验和Mann-Whitney U检验
重复150次
随机抽取300个案例
..。
随机抽取800个案例
运行t检验和Mann-Whitney U检验
重复150次
( 800箱后停止)
使用OMS保存所有这些结果
下面语法中的所有内容都工作得很完美,除了一个小问题之外,我不知道如何让它增加随机样本的大小,而且我不希望手动地这样做。
即使我必须手动执行,是否有一种方法可以将最新的结果附加到现有文件中,而不是替换现有文件?
DEFINE !repeater().
!DO !i=1 !TO 150.
*repeat the below processes 150 times
*select a random sample from the dataset
DATASET ACTIVATE DataSet1.
USE ALL.
do if $casenum=1.
compute #s_$_1=10.
compute #s_$_2=565518.
* 565518 is the total number of cases
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_$ 'x random cases (SAMPLE)'.
FORMATS filter_$ (f1.0).
FILTER BY filter_$.
EXECUTE.
*run a non-parametric test
NPAR TESTS
/M-W= issloc BY TwoGroups(0 1)
/MISSING ANALYSIS.
*run a parametric test
T-TEST GROUPS=TwoGroups(0 1)
/MISSING=ANALYSIS
/VARIABLES=issloc
/CRITERIA=CI(.95).
!DOEND.
!ENDDEFINE.
*use OMS to extract the reported descriptives and results from the viewer
*and save them to a file
OMS /SELECT TABLES
/DESTINATION FORMAT = SAV OUTFILE = 'folder/folder/OMS file.sav'
/IF SUBTYPES=['Mann Whitney Ranks' 'Mann Whitney Test Statistics' 'Group Statistics' 'Independent Samples Test']
/COLUMNS SEQUENCE = [RALL CALL LALL].
!repeater.
OMSEND.发布于 2016-10-01 21:01:33
不要紧。答案很明显,我完全错过了。我只需要在宏中定义样本大小选择。*面膜
https://stackoverflow.com/questions/39811396
复制相似问题