统计211

标题: 用spss产生随机数 [打印本页]

作者: linxiuquan001    时间: 2009-3-21 23:40
标题: 用spss产生随机数
在SPSS中,菜单Compute 根据不同的分布要求,可以选择以RV开头的函数进行计算,产生随机数字,注意待存放数据的数据格Cell必须是已被激活或者说已填入空值的格子!

在SPSS中,产生一系列随机数方法是调用Transform 菜单下的Compute次级菜单,在其中调用Functions列表中的以RV开头的函数来计算产生。其中VR开头的函数有若干,表示其各自所产生的随机数符合不同的分布,如常态分布,t分布,F分布等。按照cunguo的称述,应该是想要生成平均分布的随机数,那就选择RV.UNIFORM函数来计算了。随机种子嘛,就不用去管它了,系统自己会解决的。

SPSS中共提供了真随机数和伪随机数两种,RV系列均为真随机数,在编程上其随机种子一般都是取自流逝的时间,所以结果不可重复。而NORMAL(stddev)等是伪随机数,只要预先设置好随机种子,其结果均可重现。

以下介绍几个简单SPSS小程序
1 随机数字产生程序
input program.
loop #I=1 to 20.
compute x=uniform(1).
compute Y=trunc(x*1000).
end case.
End loop.
End file.
End input program.
execute.

2 随机分组程序
input program.
loop #I=1 to 20.
compute x=uniform(1).
end case.
End loop.
End file.
End input program.
execute.
rank variables=x(a)/rank/print=yes/ties=mean.
do if (rx>10).
recode rx(11thru 20=2) into group.
end if .
execute.
do if (rx<11).
recode rx(1thru 10=1) into group.
end if .
execute.

input program.
loop #I=1 to 20.
compute x=uniform(1).
end case.
End loop.
End file.
End input program.
execute.
rank variables=x(a)/rank/print=yes/ties=mean.
recode rx(11thru 20=2) into group.
recode rx(1thru 10=1) into group.
execute.
分四组
input program.
loop #I=1 to 20.
compute x=uniform(1).
end case.
End loop.
End file.
End input program.
execute.
rank variables=x(a)/rank/print=yes/ties=mean.
recode rx(16thru 20=4) into group.
recode rx(11thru 15=3) into group.
recode rx(6thru 10=2) into group.
recode rx(1thru 5=1) into group.
execute.

3 随机区组设计
input program.
loop #I=0 to 29.
compute x=rnd(#I/5+0.5).
end case.
End loop.
End file.
End input program.
execute.
compute ii=uniform(1).
rank variables=II by x.
execute.

4 分层随机区组设计程序
input program.
Loop #i=0 to 143.
Compute x=rnd(#i/24+0.5).
Compute xx=rnd((#i-(x-1)*24)/4+0.5).
end case.
End loop.
End file.
End input program.
execute.
compute ii=uniform(1).
rank variables=II by x xx.
execute.
Recode rii (1=1) (2=2) (3=1) (4=2) into group.
Execute.
STRING 组别 (A8) .
RECODE group (1=\'treat\') (2=\'contro\') INTO 组别 .
EXECUTE .

5 分层随机区组设计程序2
compute yy=rnd(#i/1+0.5).
Compute x=rnd(#i/24+0.5).
Compute xx=rnd((#i-(x-1)*24)/4+0.5).
end case.
End loop.
End file.
End input program.
execute.
compute ii=uniform(1).
rank variables=II by x xx.
execute.
Recode rii (1=1) (2=2) (3=1) (4=2) into group.
Execute.
STRING 组别 (A8) .
RECODE group (1=\'treat\') (2=\'contro\') INTO 组别 .
EXECUTE.

[ 本帖转载自中国统计网 ]
作者: 萧湘妃子    时间: 2013-7-31 11:33
如果不是等分,还可以用以上程序吗?

作者: mxbj    时间: 2013-7-31 13:32
学习




欢迎光临 统计211 (http://tj211.com/) Powered by Discuz! X3.2