0

任何人都可以请建议执行以下操作的最佳方法吗?

我有三个变量(X、Y 和 Z)和四个组(1、2、3 和 4)。我一直在 SPSS 中使用判别函数分析来预测已知分组数据的组成员资格,以用于未来的未分组数据。

理想情况下,我希望能够对越来越多的数据子集进行随机抽样,以查看需要多少次观察才能达到所需的正确分类百分比。

但是,我知道这可能很困难。因此,我正在寻找这样做的手段。

例如,假设变量 X 对于第 1 组的平均值为 141。这个平均值可能是根据 2000 次观察计算得出的。但是,平均值可能出现在 700 次观察中。我希望能够计算出我的数据中平均水平的观察/案例数量。例如,可能从 10 次观察开始并随机重复 50 或 100 次,然后增加到 20 次观察......等等。

我知道这是蒙特卡罗测试的一种形式。我可以访问 SPSS 15、17 和 18 以及 excel。我还可以访问 minitab 15 & 16 和 amos17 并下载了“R”,但我不熟悉这些。我的经验是使用 SPSS 和 excel。我已经在 SPSS Modified from this..http://pages.infinit.net/rlevesqu/Syntax/RandomSampling/Select2CasesFromEachGroup.txt 中尝试了一些语法,但这对我来说输入子集号等仍然很耗时。

希望有人可以提供帮助。

谢谢阅读。

安迪

4

2 回答 2

1

您链接到的文本是一个好的开始(您也可以使用SAMPLESPSS 中的命令,但是当您考虑以这种方式构建样本时,IMO 链接到的 Raynald 脚本更加灵活)。

在伪代码中,该过程可能看起来像;

do n for sample size (a to b)
    loop 100 times
        draw sample size n
        compute (& save) statistics

这就是 SPSS 的宏语言发挥作用的地方(我认为这个文档是一个很好的介绍,另外您可以查看SPSS 标签 wiki上的其他参考资料)。基本上,一旦你弄清楚如何绘制样本并计算你想要的统计数据,你只需要弄清楚如何编写一个宏,这样你就可以循环整个过程(并将样本大小参数传递给它)。我包含循环 100 次,因为您希望能够对与每个样本量相关的误差进行某种类型的估计。

如果您举例说明如何计算统计数据,我可能会举例说明如何将其转换为宏函数并循环所需的次数。

于 2011-08-04T16:21:44.983 回答
0

@Andy W @奥利弗

谢谢你们的建议。我设法使用以下宏找到解决方法......... http://www.spsstools.net/Syntax/Bootstrap/GetRandomSampleOfVariousSizeCalcStats.txt 但是,为此我需要复制并粘贴变量给定组的数据到一个新的数据窗口。那不是什么大问题。更进一步,任何人都知道如何: 1/ 我可以记录其他统计信息,例如 std 错误、std dev ect 等。2/使用其他分析,最好是判别函数分析,并在新数据窗口中记录正确分类的百分比,而不是有很多输出表 3/不需要为每个组复制和粘贴变量,所以我可以运行指定 n 的宏第 1、2、3 和 4 组 x 变量的样本。

再次感谢。

DEFINE !sample(myvar !TOKENS(1) 
        /nbsampl !TOKENS(1)
        /size !CMDEND).
* myvar = the variable of interest (here we want the mean of salary)
* nbsampl = number of samples.
* size = the size of each samples.

!LET !first='1'
!DO !ss !IN (!size)
!DO !count = 1 !TO !nbsampl.

GET FILE='c:\Program Files\SPSS\employee data.sav'.

COMPUTE draw=uniform(1).
SORT CASES BY draw.
N OF CASES !ss.

COMPUTE samplenb=!count. 
COMPUTE ss=!ss.

AGGREGATE
  /OUTFILE=*
  /BREAK=samplenb
  /!myvar = MEAN(!myvar) /ss=FIRST(ss).

!IF (!first !NE '1') !THEN
ADD FILES /FILE=*  /FILE='c:\temp\sample.sav'.
!IFEND
SAVE OUTFILE='c:\temp\sample.sav'.
!LET !first='0'

!DOEND. 
!DOEND. 

VARIABLE LABEL ss 'Sample size'.
EXAMINE
  VARIABLES=salary BY ss /PLOT=BOXPLOT/STATISTICS=NONE/NOTOTAL
  /MISSING=REPORT.

!ENDDEFINE.
* ----------------END OF MACRO ----------------------------------------------.


* Call macro (parameters are number of samples (here 20) and sizes of sample (here 5, 10,15,30,50). 
* Thus 20 samples of size 5.
* Thus 20 samples of size 10, etc.
!sample myvar=salary nbsampl=20 size= 5 10 15 30 50.
于 2011-08-05T08:27:52.640 回答