数据挖掘实战训练
问题:如果研究的变量为连续变量,且多种因素对它有影响,本研究共分为四组,并且组间AGE、BMI、BP等差异均具有统计学意义,应该如何校正AGE、BMI、BP等?
这里:
Y是连续性变量,我们假定基本符合正态分布。
X是四个组别,设X=0、1、2、3,分别表示四组。
目的是要比较四组之间有没有差异,但要考虑到组间AGE、BMI、BP等不同对Y的影响。
做数据分析好比打乒乓球,多数人是自己摸索,没有专业教练指导,接发球等动作是自己摸索出来一套野路子,常常一个球打好了,也不知道是怎么打好的,下一个就打不出来了,不能重复,因为不知道什么是规范的动作要领,打到一定水平后也无法再提高。而那些从小就经过专业训练出来的则完全不一样,因为动作规范,所以技术水平提高快。
象上面这个问题,就有业余选手与专业选手两种打法。先看看业余选手的通常打法:
1)先做方差分析看四组之间差别有没有显著性,如果有显著性,考虑组间比较,看是哪两组间有显著差别。
2)考虑其它因素的影响,用逐步回归的方法建立一个多元模型,初始模型为:Y=X+AGE+BMI+BP+…,最后出来一个最终模型,如Y=X+BMI,最后结论是X的组间差别有意义,另外BMI也是Y的一个危险因素。
3)业余段位高一点的会把X生成4个指示变量,用X0表示X=0,X1表示X=1, X2表示X=2, X1表示X=3,然后以X=0组为参照,把X1、X2、X3放入模型中,这样初始模型变为:Y=X1+X2+X3+AGE+BMI+BP+…,最后出来一个模型可能是Y=X2+X3+BMI。结论是X=2与X=3组与X=0组差别有意义,另外BMI也是Y的一个危险因素。
专业的打法路子是什么样的呢?
首先专业选手使用的球拍就比较讲究。虽然邓亚萍可以用木锅铲当球拍与人打球,但那是打着玩的,正式上场比赛(发论文)必会拿着她最好用的球拍。这里对我来说最好用的球拍是EmpowerStats(易侕统计)软件,下面我就用易侕软件演示一下对这个问题的分析思路与操作规范:
第一步
先把数据整理好,这个就不多说了,变量名要用英文的,数据要数字化,如X编码成0、1、2、3,性别可以是0、1(分别表示男、女),数据最好存成制表符分隔的文本文件。
第二步
打开易侕统计,给出数据文件名,易侕读取数据文件后自动给出变量清单与每个变量的分布,如下图示,这时候你就可以非常方便地查看每个变量的分布了,如Y、AGE、BMI、BP等连续性变量的分布形状、最大值、最小值、百分位数、均数、标准差等,X等分类型变量每组的观察数及其百分比,这些基本信息一下子就尽收眼底了。
可以看出“易侕”自动识别变量类型(分类型或连续性),根据变量类型做相应的统计描述,并将其分布用非常简明的方式呈现出来。也就是说“易侕”这个球拍可以自动发出各种旋球,一个回合下来,对方吃不吃旋球,吃什么样的旋球,你一下就摸清了。
第三步
用“数据分析”菜单下的“扫描关联关系”模块,把Y拖入(或双击)结果变量框内,如图所示:
易侕自动扫描数据中哪些变量与Y有关,给出如下图的图表结果。
这个时候做的是单因素分析,看每个变量与Y的关系,没有考虑其它因素的影响,如果你确定哪个(或几个)变量,如AGE,对Y有影响,你可以把AGE放到调整变量里,这样看的就是看在调整了AGE的情况下,其余每个变量对Y有没有影响。
易侕在分析连续性变量如BMI与Y有没有关系时,会自动考虑到BMI与Y的关系可能不是线性的变化关系,因此在做了直线回归分析的同时,还会自动做平滑曲线拟合,以展现Y随BMI的变化曲线,帮助我们判断两者之间是什么样的关系。
在分析分类变量如X与Y的关系时,自动生成指示变量放入模型,把X=1、2、3组与0组比较,呈现三个回归系数(分别表示每组与X=0组相比Y的差值)及其95%可信区间与P值。这个回归系数的大小很重要,可以帮助我们判断是否可以进行组间合并,X=0组是参照组,相当于其回归系数是0,如果X=1的回归系数与0接近且不显著,也就是说X=1组与X=0组没有差别,后面的分析就可以考虑把这两组合并为一组,同理如果X2与X3组回归系数接近,也可以考虑把它们合并,这样一来原来四组之间的比较,就可能合并成两组(或三组)之间的比较,合并的目的是使比较组的样本量增加,提高检验效率,原来只是接近显著的差别就可能变得显著了。如果不能合并,看X1、X2、X3的回归系数的相对大小,如果有等级关系,就可以考虑把X当成等级变量,直接把X放入模型。必要时要对X进行重新编码,如回归系数是X1<X3<X2,相邻的差值基本相等,就可以把原来的X=3与X=2互换一下,用易侕的“变量操作”菜单下的“分类变量取值重编码”功能很容易实现。把X直接放入模型得出的回归系数就表示X每增加一个等级Y变化多少,这样模型用到的参数少了2个,检验效率也就提高了。
这下我们可以看到“易侕”这个球拍还会自动拉出弧圈来。这个回合下来,你对数据内部的关联关系就有了一个轮廓性的了解。至少你知道了X与Y表面上看有没有关系? 是什么样的关系? 还有哪些因素与Y有什么样的关系了?
也许你会问,这个过程只是单因素的分析,没有考虑组间诸如AGE、BMI、BP的影响,得出来的X1、X2、X3的回归系数不一定可靠,这时候根据它们的大小决定合并分组(或按等级变量来处理)是否过早,因为以后在调整了AGE、BMI、BP这些因素的影响后,它们可能就不是现在这样的相对大小了,可能要重新合并。这个考虑完全正确,这相当于你拉出了一个弧圈,对方又拉回来了,你就多拉几个回合(调整其它可能的影响因素)看看,再不行就改着削回去,保持用原来的三个指示变量。
顺便提一句:如果X是个连续性的变量,Y是否随X直线变化呢?有没有阈值效应或饱和效应呢?阈值效应即当X达到某点后,X增加Y开始发生变化;饱和效应指当X达到某点后,X增加Y不再发生变化。这种现象在生物医学领域里是很常见的,找到这种关系,就是发现了一个亮点,能提高论文的档次。怎么找呢?用“数据分析”菜单下的“平滑曲线拟合模块”,结合“阈值效应与饱和效应分析”模块很容易发现。
第一步是准备,第二步、第三步是摸底,下面该进入主题了,也就是要确定攻击的主要目标与次要目标是什么?当然最主要的目标是X,次要目标是可能的混杂因素,在次要目标里又有相对重要的目标。如何确定呢?根据第二步得出了还有哪些因素与Y有什么样的关系,再结合文献上已经报道的与Y有关的因素,不难列出这篇分析里需要考虑哪些可能的混杂因素(用Zs表示)及如何控制这些混杂因素。
如何有效控制混杂因素呢?
(1)假设AGE与Y有关系,如果是线性的关系,调整时就可以把AGE直接放入模型;如果是曲线性的关系,可以根据曲线形状考虑:(a)调整时放入AGE与AGE的平方;(b)把AGE分成四等分或三等分,按分类变量处理;(c)根据曲线上的节点把AGE分组,按分类变量处理。
(2)假设文化程度(EDU)与Y有关,EDU本来也分成4组,有3个指示变量,根据这3个指示变量的回归系数,考虑是否可以合并成三组或两组,或按等级变量来处理,以减少模型的自由度。
(3)假设职业(OCCU)与Y有关系,OCCU本来分成四组,有三个指示变量,根据这三个指示变量的回归系数,考虑是否可以合并成三组或两组,以减少模型的自由度。注意职业不是等级变量,如果有三个或以上的分类,就不宜把OCCU直接放入模型。
易侕“变量操作”菜单下有相应的“连续性变量分组”、“分类变量取值重编码”与“按连续性变量处理”分类变量,等等,很容易实现上述变量操作。
确定了Y、X、Zs(进行了必要的处理,如合并,分组)后,现在开始实施系统性的“攻城计划”了。
第四步
调用“数据分析”菜单下的“研究人群描述”模块,把X作用列分组变量,把Y及Zs拖入要描述的变量,如图示,点击查看结果。首先得出一个如下图的研究人群描述表,让我们看看四个(或合并后的两个或三个)比较组人群有什么差异,这个表通常就是文章的表一。
第五步
调用“数据分析”菜单下的“单因素分析”模块,把Y作为结果变量,把X及Zs拖入危险因素变量框内,如图例,点击查看结果。得出一个如下图的单因素分析结果,让我们看看这些因素与Y有没有关系,这个表通常就是文章的表二。这里需要注意的是要根据上述第三步的结果决定如何放入X或和Z到模型中,如AGE与Y不是直线性的关系,就需要把AGE先分组,然后按分类变量进行单因素分析。
第六步
调用“数据分析”菜单下的“快速扫描交互作用”模块,把Y作为结果变量,把X作为危险因素,把Zs拖入筛查交互作用变量框内,如图例,点击查看结果。得出一个如下图的交互作用筛查结果,让我们看看哪些因素影响(增强或减弱)X对Y的作用。
何为交互作用呢?如Zi与X有交互作用,指的是Zi不同的情况下X的回归系数不同(有显著差异),这个时候最好X分组不能太多,最好是两组或是连续性变量。如果Zi是连续性变量,如AGE,易侕会自动对AGE进行等分组,看AGE低、中、高不同的情况下X的回归系数有没有显著差异。
这个模块只是快速筛查交互作用,如果发现某个Zi如EDU与X交互作用显著或接近显著,就需要用“数据分析”菜单下“交互作用检验模块”分析,这个模块中同时输出未调整的与调整其它因素的模型,输出论文中常用的表格模式。下一步详述。
如果Zi是连续性变量,如AGE,上面这个“筛查交互作用模块”是自动把AGE分组,然后分析AGE分组与X的交互作用。对这种连续性变量,如果它对Y的作用是线性的,而X是分组变量,交互作用还可以反过来作,即把AGE当成危险因素,分析X不同AGE对Y的作用(回归系数)是否有显著性差异。这个时候,你可以先用“数据分析”菜单下的“变量图示与统计检验”模块,把Y放入分析变量(Y)框内,把连续性的Zs放入变量(X)框内,选X(分组变量)为“分层变量”,点击查看结果。结果如下图所示。自动得出X与每个Z的交互作用。如果这个模块出来的交互作用显著或接近显著,再用“交互作用检验”模块分不调整与调整其它因素模型,作交互作用检验。如果X与AGE有显著的交互作用,说明Y随AGE的变化受X影响,如X=1时Y随AGE变化显著大于X=0时,这就很有意义。
如果不调整其它因素,交互作用显著,而调整了其它因素后,交互作用就不显著了,怎么解释呢?首先要比较按Zi分层的X的回归系数,并与未调整的模型比较,如果调整后按Zi分层的回归系数差别仍然存在,与未调整的模型相比变化也不大(说明其它因素的混杂作用小),只是交互作用的P值不显著了,这可能就是因为模型增加了调整因素,自由度增加了,检验效率低了,增加样本量就可能显著, 不等于没有交互作用。这是为什么要同时呈现未调整与调整的模型。
寻找交互作用就象寻找最佳组合。“易侕”这个球拍可以让你轻松变招,你很容易就能发现哪两招组合(如发什么样的球,结合发球后如何抢攻)就能一下击垮对方。交互作用是论文的亮点,它能让你的论文价值一下子上升两个档次。这也是为什么这第六步花了这么大的篇幅。
第七步
这就要根据第六步的结果决定下一步如何走了。如果发现某因素(如SEX)与X有交互作用,那接下来就是:
(1)决定哪些因素要调整,调用“数据分析”菜单下的“协变量检查与筛选”模块,Y作为结果变量,X作为危险因素,把固定要调整的(可无)与要检查与筛选的协变量(不包括SEX)放入相应的框内,把SEX作为分层变量,点击查看结果。得出要调整的协变量有哪些,当然这个结果只是从现有数据中得来的,可能有些变量根据文献需要调整但这里却被筛出去了,可以把它们召回来,也可以在调用模块时把这些变量作为固定要调整的变量。
(2)确定了要调整的协变量后,就用交互作用检验模块,运行不调整的模型与调整的模型,呈现按SEX分层分析的结果与交互作用检验的P值。如果有几个Zi与X都有交互作用,那就运行几次这个模块,最后把结果合并到一起即可。如果X(分组变量)与几个连续性的Z都有交互作用,你在调用交互作用检验模块时,还可以把这些Z作为危险因素,把X作用效应修饰因子,运行模型,结果直接呈现在一个表中。
这里的要点是当发现有交互作用时,就应该用分层的分析结果,来呈现X对Y有没有独立作用?独立作用大小是多少?因为这时候独立作用的大小因交互作用因素不同而不同,就不能用一个值来表达,否则你的论文就可能前后矛盾。
如果没有发现交互作用,那接下来呢:
(1)第六步交互作用检验里做了很多分层的分析,比较一下(按Zi)分层的X的回归系数与单因素分析时得出来的X的回归系数,如果差别比较大,说明这个分层因素(Zi)就是个混杂因素。混杂的结果是双向的,如果单因素分析X的回归系数大,P值显著,按Zi分层,每层内X的回归系数小,都不显著,这样你单因素分析发现的X与Y有关可能就是个表象,是由Zi的混杂造成的。如果单因素分析X的回归系数小,P值不显著,按Zi分层,每层内X的回归系数都大,都显著或接近显著,这样你很幸运,单因素分析发现的X与Y无关也可能是个表象,是由Zi的混杂造成的,实际上它们之间是有关系的。
有时候你需要呈现分层分析的结果,以说明你发现的X与Y的关系不是由这些分层因素的混杂造成的,增加说服力,如下图所示,作者按不同因素分层以说明吃豆腐量与血铅有关。调用“数据分析”菜单下的“分层分析”模块,把Y放入结果变量,X作为危险因素,把分层变量放入相应的框中,模块自动按每个分层变量分层,分析X与Y的关系,直接输出论文常见的表格格式。这个时候看分层分析结果时,P值是否显著不是那么重要,当然显著会更好,分层后因为每层内的样本量减少了,P值不一定显著,关键是看每层内X与Y的关系的趋势是否仍然存在,回归系数有多大改变。
(2)接下来是要评价X对Y独立作用的大小。同上面所述,先调用“数据分析”菜单下的“协变量检查与筛选”模块,Y作为结果变量,X作为危险因素,把固定要调整的与要检查与筛选的协变量放入相应的框内,点击查看结果。
确定了要调整的变量后,就调用“数据分析”菜单下的“多个回归方程”模块,Y作为结果变量,X作为危险因素,运行两个模型(模型I不调整任何因素,模型II调整上面得出的要调整的因素)或三个模型(模型I不调整任何因素,模型II调整固定要调整的因素,模型III调整上面得出的要调整的因素;或模型II调整上面得出的要调整的因素,模型III调整所有可能的混杂因素),对输出表格可以进行相应的行列设计(或用默认的格式),点击查看结果即得出论文常见的多个模型输出的结果,如下图例所示。
上述的这些动作要领虽然很多,但经过几次练习后,不难掌握,而且一旦掌握了,把规范变成习惯,以后用起来就自然了。到那时,你上场(打乒乓球)就可以随意发挥了,而且失误少,命中率高,就鲜有对手了。
数据分析咨询请扫描二维码
《Python数据分析极简入门》 第2节 5 Pandas数学计算 importpandasaspdd=np.array([[81,&n ...
2024-11-23数据分析涉及多个方面的学习,包括理论知识和实践技能。以下是数据分析需要学习的主要方面: 基础知识: 数据分析的基本概念 ...
2024-11-22数据分析适合在多个单位工作,包括但不限于以下领域: 金融行业:金融行业对数据分析人才的需求非常大,数据分析师可以从事经 ...
2024-11-22数据分析是一种涉及从大量数据中提取有用信息和洞察力的过程。其工作内容主要包括以下几个方面: 数据收集与整理:数据分析师 ...
2024-11-22数据分析师需要掌握多种技能,以确保能够有效地处理和分析数据,并为业务决策提供支持。以下是数据分析师需要掌握的主要技能: ...
2024-11-22数据开发和数据分析是两个密切相关但又有所区别的领域。以下是它们的主要区别: 定义和目标: 数据开发:数据开发涉及数据的 ...
2024-11-22数据架构师是负责设计和管理企业数据架构的关键角色,其职责涵盖了多个方面,包括数据治理、数据模型设计、数据仓库构建、数据安 ...
2024-11-22数据分析师需要具备一系列技能,以确保能够有效地处理、分析和解释数据,从而支持决策制定。以下是数据分析师所需的关键技能: ...
2024-11-22数据分析师需要具备一系列技能,以确保能够有效地处理、分析和解释数据,从而支持决策制定。以下是数据分析师所需的关键技能: ...
2024-11-22数据分析师需要具备一系列的技能和能力,以确保能够有效地处理、分析和解释数据,从而支持业务决策。以下是数据分析师所需的主要 ...
2024-11-22需求持续增长 - 未来数据分析师需求将持续上升,企业对数据驱动决策的依赖加深。 - 预测到2025年,中国将需要高达220万的数据人 ...
2024-11-22《Python数据分析极简入门》 第2节 4 Pandas条件查询 在pandas中,可以使用条件筛选来选择满足特定条件的数据 importpanda ...
2024-11-22数据分析师的工作内容涉及多个方面,主要包括数据的收集、整理、分析和可视化,以支持商业决策和问题解决。以下是数据分析师的一 ...
2024-11-21数据分析师必须掌握的技能可以从多个方面进行归纳和总结。以下是数据分析师需要具备的主要技能: 统计学基础:数据分析师需要 ...
2024-11-21数据分析入门的难易程度因人而异,总体来看,入门并不算特别困难,但需要一定的学习和实践积累。 入门难度:数据分析入门相对 ...
2024-11-21数据分析是一项通过收集、整理和解释数据来发现有用信息的过程,它在现代社会中具有广泛的应用和重要性。数据分析能够帮助人们更 ...
2024-11-21数据分析行业正在迅速发展,随着技术的不断进步和数据量的爆炸式增长,企业对数据分析人才的需求也与日俱增。本文将探讨数据分析 ...
2024-11-21数据分析的常用方法包括多种技术,每种方法都有其特定的应用场景和优势。以下是几种常见的数据分析方法: 对比分析法:通过比 ...
2024-11-21企业数字化转型是指企业利用数字技术对其业务进行改造和升级,以实现提高效率、降低成本、创新业务模式等目标的过程。这一过程不 ...
2024-11-21数据分析作为一个备受追捧的职业领域,吸引着越来越多的女性加入其中。对于女生而言,在选择成为一名数据分析师时,行业选择至关 ...
2024-11-21