SPSS也能编程?——区组随机化编码之快速实现

boyanx1个月前技术教程20

李志辉 Hui

【作者介绍】李志辉,长期从事各类统计软件应用研究,主编或参编SPSS、MINITAB、STATISTICA多个统计软件教材共8本。代表作:电子工业出版社《SPSS常用统计分析教程(SPSS 22.0中英文版)(第4版)》(2015年)。

什么?SPSS也能够编程?不是SAS、STATA、R等软件才能够编程吗?

答案是肯定的,SPSS的祖先(DOS版本)的所有功能都是利用命令语句实现的,SPSS的6.0版本采用Windows窗口界面,用户只需要用鼠标简单地点点点就可以完成复杂统计运算了,自此SPSS的编程功能逐渐被人遗忘了。有人喜欢用相机来形容各种统计软件,说SAS是单反机,SPSS是傻瓜机,真是太冤了,SPSS后续版本的编程功能不光没有弱化,而是不断地完善,功能越来越强大,一点都不逊逊于其他统计软件,而且还可以兼容时髦的R语言了。因此SPSS不光是一台简单易用的傻瓜机,更是一台功能强大的单反机,不信翻翻软件自带的命令语法手册(IBM SPSS Statistics 23 Command Syntax Reference),总共有2236页。当年洪楠教授编著的培训教材就是DOS版本的。

下面我用一个简单的例子介绍一下。

在临床研究中,我们常用的完全随机化设计,我们常用随机数字对病例进行分组。如研究对象共有60人,使用随机数字分组,可能分成例数分为别18、18和24的三组,这还还算是比好好的情况,有时可能会更糟糕。而且三组成员入组的时间也不一样,差距可能较大。此时,我们可以使用程序生成一组区组随机化编码即可简单的分组了。在SPSS的可以用一组命令即可一键生成区组随机化编码。具体操作如下:

首先,建立一个有60个个案的空数据文件。

运行如下程序,即可一键区组随机化编码,结果见下图。

DATASET ACTIVATE 数据集1.

COMPUTE ID=$CASENUM.

EXECUTE.

COMPUTE block=TRUNC(($CASENUM - 1) / 3 ) +1.

EXECUTE.

COMPUTE random=RV.UNIFORM(1,1984).

EXECUTE.

SORT CASES BY block(A) random(A).

COMPUTE inseq=MOD($CASENUM - 1,3).

EXECUTE.

SORT CASES BY ID(A).

删除其他变量,只保留ID和inseq两个编后,结果如下。

流水号(ID)顺序号(inseq)
10
21
32
40
52
61
72
81
90
101
112
120
…………

有了这个区组区组编码后,按时间顺序,每三个研究对象1组,如第1组:第1对象进入对照组,第2个对象干预组1,第3个对象干预组2;如第2组:第1对象进入对照组,第2个对象干预组2,第3个对象干预组3;以此类推,不但保证每组个案在入组时间上保持了一致,样本量上也保证了一致。不出问题的话,都是20、20、20。

注:1、读者设定的初始例数应≥研究计划的例数,为了确保随机数的统一,建议用户可适当较大的初始例数,在研究中严格按照个案编码ID及组内顺序号inseq入组即可。

2、第6行、第14行的参数3为研究的对照组和干预组的总组数,如用于需要生成4组的区组随机化编码,将上述两行的参数3改成4即可。

总结:本例也可以使用菜单+窗口方式操作,但是需要调用4次COMPUTE程序,2次SORT程序才能完成,显然在这个案例上,使用命令语法是简单多了。

本文由信订阅号“一起学SPSS”和“医学统计分析精粹”共同创作完成。

相关文章

火狐Firefox浏览器测试AI链接悬停预览,解析网页关键点

IT之家 4 月 8 日消息,科技媒体 Windows Report 昨日(4 月 7 日)发布博文,报道称 Mozilla 正加速推进火狐 Firefox 浏览器的 AI 功能,正邀请用户测试“AI...

分享几个在线课堂小工具

iPlat 为老师们贡献了几个免费在线工具,可以作为课堂上的实用小帮手!所有在线工具都不用注册,也不会收集用户数据,没有任何使用限制!官方网站底部有这些工具的链接:iPlat管理软件 | 赛极科技随机...

rand、randbetween函数生成随机数,用于随机分组、不重复抽奖

大家好!今天和大家分享,Excel中可以生成随机数的两个函数:rand函数、randbetween函数。本文主要包括两部分:1、介绍rand、randbetween函数的基本用法;2、介绍rand函数...

失业程序员复习python笔记——dataframe基本图形展示

Pandas DataFrame 结合 Matplotlib 可以创建各种数据可视化图形。下面我将展示几个常见的 DataFrame 图形展示案例。安装matplotlib库执行pip install...

excel函数技巧:map+filter+randarray随机组队

如图,A列为源数据,如何用公式将24个人,以3人为一组随机分组,分为8组?如何随机组队,即将组别一样的人放到同一个单元格中,公式如下:=MAP(SEQUENCE(8)-1,LAMBDA(x,TEXTJ...

python双色球根据概率自由组合红球

在双色球的组号中,我们可以根据红球的出号频率来组号,比如选择前三十期的数据中前25的号码,或者前18的号码来组合新的红球组合,在统计号前期红球号码以后,可根据红球的冷热程度,红球的人气指数来适当取舍。...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。