SPSS 一键自动logistic与cox分析宏 本章节在2月份时候讲述过,发现有的公众号拿了代码去改一改,私聊卖钱。在中国科研本就不易,如果支持就请转载而不是剽窃。此处省去4个字。
最近课题组也需要给新晋研究生们淘换好的科研工具,这里笔者公开自己写的代码,希望拯救更多被繁琐工作困扰的朋友,也希望新入坑的研究生们少走弯路,腾出时间多吃瓜。
笔者从入坑开始就被各种“某某傻瓜软件”“某某高级”声音冲击着耳膜。笔者从事统计工作应该说有14年了,软件从SAS → SPSS → R→python,夹杂着Stata和其他小众软件。现在属于无门无派,什么软件方便用什么,什么目的需求用什么。我想新手们说,SPSS很强很强,不要低估它。每个软件都有各自的优势和缺点。比如R画图很牛逼,spss很接地气,SAS最严谨,python最适合AI,这里不展开讨论只说结论。SPSS适合80%以上的临床研究生的科研需求,特有的变量视图是掌控数据轮廓的法宝,最容易上手的软件,没有之一。SPSS28.0 IBM更加扩展了许多R和python插件,足以适合90%以上的研究生阶段的临床科研需求。
当我们所需要分析的因素很多如图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 最好。
cox代码与logistic稍微不同。
unicox_macro unilogistic_macro批量单因素分析,原本几个小时的工作,只需要几分钟。觉得好用就请转发给更多需要的朋友吧。
spss一键单因素logistic与cox.sps 完整文件与案例数据获取, 请公众号后台 “发消息”留言:SPSS一键自动logistic与cox分析宏
:
公众号近期建立了学术交流群,仅供高效SCI学术交流,代码讨论,拒绝广告水文,拒绝潜水。本群实行需要实名制,入群请说明:姓名-学校(单位)-专业。开放入群已经关闭,如需加群,请添加笔者微信号私聊。欢迎志同道合的朋友相互学习共同进步。
原创不易,转载请说明来自本公众号。