imd 统计教程 · 回归模型基础
← 教程首页 返回本模块

SPSS 一键自动logistic与cox分析宏,保姆教程

聂志强实战医学统计2022-11-10 18:32:36广东


SPSS 一键自动logistic与cox分析宏 本章节在2月份时候讲述过,发现有的公众号拿了代码去改一改,私聊卖钱。在中国科研本就不易,如果支持就请转载而不是剽窃。此处省去4个字。

最近课题组也需要给新晋研究生们淘换好的科研工具,这里笔者公开自己写的代码,希望拯救更多被繁琐工作困扰的朋友,也希望新入坑的研究生们少走弯路,腾出时间多吃瓜。

1. SPSS R  SAS 与研究生的选择

笔者从入坑开始就被各种“某某傻瓜软件”“某某高级”声音冲击着耳膜。笔者从事统计工作应该说有14年了,软件从SAS → SPSS → R→python,夹杂着Stata和其他小众软件。现在属于无门无派,什么软件方便用什么,什么目的需求用什么。我想新手们说,SPSS很强很强,不要低估它。每个软件都有各自的优势和缺点。比如R画图很牛逼,spss很接地气,SAS最严谨,python最适合AI,这里不展开讨论只说结论。SPSS适合80%以上的临床研究生的科研需求,特有的变量视图是掌控数据轮廓的法宝,最容易上手的软件,没有之一。SPSS28.0 IBM更加扩展了许多R和python插件,足以适合90%以上的研究生阶段的临床科研需求。

2. SPSS与一键自动logistic

当我们所需要分析的因素很多如图1,有的连续,有的分类(含字符型、数字型)。如果按照菜单栏一个个去点击,或者常规的.sps语法运行,.spv结果文件会显得十分臃肿。

笔者开发了基于OMS与宏结合的一键自动分析导出excel的程序,只需要修改红色标记部分,就可以实现批量单因素分析,原本几个小时的工作,只需要几分钟。后期稍微加工就可以实现SCI的三线表格式。



DATASET CLOSE temp.
*必须有declare.
DATASET DECLARE temp.
OMS
/SELECT TABLES
/IF COMMANDS=['Logistic Regression'] SUBTYPES=['Variables in the Equation']
/DESTINATION FORMAT=SAV NUMBERED=TableNumber_
OUTFILE='temp' VIEWER=YES.

*定义宏unilogistic_macro,()参数, x分连续型 分类哑变量 ,y .
define unilogistic_macro (outvar=!charend('/') / convar=!charend('/') / catvar=!charend('/') ).
*单因素变量,连续型或等级变量.
LOGISTIC REGRESSION VARIABLES !outvar
/METHOD=ENTER !convar
/PRINT=CI(95)
/CRITERIA=PIN(0.05) POUT(0.10) ITERATE(20) CUT(0.5).
*单因素变量,无序→哑变量变量→ 低水平reference0.
LOGISTIC REGRESSION VARIABLES !outvar
/METHOD=ENTER !catvar
/CONTRAST (!catvar)=Indicator(1)
/PRINT=CI(95)
/CRITERIA=PIN(0.05) POUT(0.10) ITERATE(20) CUT(0.5).
*定义宏结束.
!enddefine.
*===  此处需要手动设置 x分连续型 分类哑变量 ,y对应变量名,最好Y 定义为01 ===.
unilogistic_macro  outvar=mort_5yr.num  /convar= time.years.
unilogistic_macro  outvar=mort_5yr.num  /convar= age   .
unilogistic_macro  outvar=mort_5yr.num  /catvar= smoke   .
unilogistic_macro  outvar=mort_5yr.num  /catvar= sex.factor     .
unilogistic_macro  outvar=mort_5yr.num  /catvar= age.factor   .
unilogistic_macro  outvar=mort_5yr.num  /catvar= obstruct.factor   .
unilogistic_macro  outvar=mort_5yr.num  /catvar= perfor.factor  .

*关闭 OMSEND,弹出新窗口temp数据. 
OMSEND TAG=['$Id1']. 
 * OMSEND TAG=['$Id2']. 
 * OMSEND TAG=['$Id3']. 

DATASET active temp WINDOW=FRONT.
*剔除多余名称变量.

USE ALL. 
COMPUTE filter_$=(Var2 ~= "常量"). 
VARIABLE LABELS filter_$ 'Var2 ~= "常量" (FILTER)'
VALUE LABELS filter_$ 0 'Not Selected' 1 'Selected'
FORMATS filter_$ (f1.0). 
FILTER BY filter_$. 
EXECUTE.
FILTER OFF. 
USE ALL. 
SELECT IF (filter_$ = 1). 
EXECUTE.

 * SAVE OUTFILE='D:\写书\SPSS一键单因素\一键result.sav' 
  /DROP=TableNumber_ Command_ Subtype_ Label_ Var1 
  /COMPRESSED.

*导出excel到你的文件夹,enjoy it.
SAVE TRANSLATE OUTFILE='D:\聂个人文件\我的公众号\finalfit等一键OR错误\一键logistic单因素对比finafit.xlsx' 
   /DROP=TableNumber_ Command_ Subtype_ Label_ Var1 自由度 filter_$
  /TYPE=XLS 
  /VERSION=12 
  /MAP 
  /FIELDNAMES VALUE=NAMES 
  /CELLS=VALUES 
  /REPLACE.
DATASET close temp  .

本程序可以有效的预防数据存在空单元格问题和字符型>8问题。不过,你在做二元logistic或者cox分析的时候,Y= 0 或1 最好。

3. SPSS与一键自动cox

cox代码与logistic稍微不同。

小结

unicox_macro unilogistic_macro批量单因素分析,原本几个小时的工作,只需要几分钟。觉得好用就请转发给更多需要的朋友吧。


spss一键单因素logistic与cox.sps 完整文件与案例数据获取, 请公众号后台 “发消息”留言SPSS一键自动logistic与cox分析宏


公众号近期建立了学术交流群,仅供高效SCI学术交流,代码讨论,拒绝广告水文,拒绝潜水。本群实行需要实名制,入群请说明:姓名-学校(单位)-专业。开放入群已经关闭,如需加群,请添加笔者微信号私聊。欢迎志同道合的朋友相互学习共同进步。


原创不易,转载请说明来自本公众号。