“记录生活点滴,分享学习经验”,作为一名公卫研究生,虽然不是专业学习医学统计学的,但统计学的知识却不能放下,它可是做公卫、搞科研的重要武器。基本上可以这么说,无统计,不科研。而spss软件又是医学统计学中最常用的数据分析软件,更应该引起每一名公卫学生的重视。
今天来和大家分享的是,如何利用spss计算加权平均数的问题。这个问题我以前从来没有遇到过,昨天有个朋友向我咨询一个医院数据分析的事情,我才第一次考虑到。首先说说加权,这个概念以及在spss中的操作应该不陌生,如果你还记得,我们在做四格表资料的卡方检验的时候,第一步就是对数据进行加权,只有加权后才能对数据进行卡方检验。加权过程中一般是用某一种情况的例数作为权数,对数据库进行处理。如果你忘记了,还是再温习一下卡方检验的spss操作吧,否则下面的操作你可能也看不太明白。
先给大家展示一下我们这次要用到的数据库。
上面是一个数据库的简化范例,朋友要我分析的数据库大致结构与上面这个相同,但是数据记录量极大,病种高达数百种。id表示疾病编号,每一种疾病对应一个独立、唯一的疾病编号;num表示病例数;charge表示每治疗一次的费用。数据分析的要求是,计算出每种疾病的次均治疗总费用。看上去是不是很简单?以白内障为例,它的次均治疗总费用=(6×2+8×4+3×4)÷(2+4+4)=5.6,白血病类似的计算可以得到其次均治疗总费用是5.4。
当数据量很小的时候,手算就可以了。但现在我们面临的是一个超级大的数据库,问题就是,如何通过spss计算出我们要的结果来?根据上面的范例计算公式,理一下思路,就是分别计算出上述公式中的每一个括号里的和,然后再让他们相除就可以了;然后考虑到各病种分别输出结果的问题,可以使用split files命令,分组输出结果就行了;至于求和也不是难事,首先添加一个新的字段,字段值为num与charge的乘积,然后运用descriptives命令里面的sum功能,就可以将上述算式中除号两侧括号里的和分别计算出来了。
接下来怎么办?很简单,两个括号里的和都求出来了,做商不就出来次均总费用了吗?恰恰这是解决问题的另一个关键,怎么做商?上面的spss操作只能在output界面给你分病种输出除号两侧的和,这两个和做商需要你去手算…… 想想吧,面对几百种疾病,你就要手算几百次除法,是的,总有算完的时候,毕竟只需要除一下就行了;但是我们非得去做这种笨功夫么?
纠结了一会儿,我想到了卡方检验中的加权,上述数据库中的num不就相当于权数吗?说干就干,首先,单击data菜单,选择weight cases命令,在对话框中将num变量拖到右侧,选择weight cases by num,点击ok,加权步骤完成;其次,再次单击data菜单,选择split files命令,在对话框中将id变量拖到右侧,选择organize output by groups,点击ok,分组输出结果设置完成;最后一步,点选analyze菜单,选择descriptive statistics,继续选择descriptives命令,将charge变量拖到右侧,在options选项卡里面仅勾选mean一项,单击ok,运行程序。下面就是见证奇迹的时刻,spss精准的将你需要的结果演算出来了,和上面我们用手算的结果完全一致,哦也,成功了!
朋友最后问了句,能不能把这个最终结果给输入到spss数据库中去,我告诉他,你还是拿刀捅死我吧,算到这一步已经到spss的极致了,开玩笑啦。
over,如果你遇到类似的数据分析问题,请大胆的使用上述方法吧。
说一句题外话,如果你现在还在使用汉化版的spss软件,请你立马卸载掉,换上英文原版的spss源程序。不要问我为什么,理由你懂的。
发表回复