提高回归模型拟合优度的策略(Ⅱ)
——算术均值变换与其他变量变换
2019-03-29胡良平
胡良平
(1.军事医学科学院研究生院,北京 100850;2.世界中医药学会联合会临床科研统计学专业委员会,北京 100029
1 问题的提出
1.1 “哑变量变换”存在一些弊端
在进行回归分析时,对“多值名义(也包括多值有序)自变量”进行“哑变量变换”已成为统计学界公认的“标准做法”。若采用某种筛选自变量的方法,就可能保留一部分哑变量而淘汰掉另一部分哑变量,这样做的前提是“假定它们互相独立”,但事实上,源自一个多值名义自变量的多个哑变量之间是有联系的,即它们之间并不满足“互相独立”的要求;按理说,由一个多值名义自变量产生的全部哑变量,要么全部被保留在回归模型中,要么全部被剔除到回归模型之外。那么问题又出现了:当它们全部出现在回归模型中时,有些哑变量可能就没有统计学意义,这样的回归模型就不是最节俭的,因此,回归模型的拟合优度不高;若全部剔除这些哑变量,就相当于没有发挥该多值名义自变量的作用。总之,“哑变量变换”存在一些弊端,是一个值得深究的“统计疑难问题”。
1.2 用“算术均值变换”取代“哑变量变换”
1.2.1 何为“算术均值变换”
1.2.2用“算术均值变换”取代“哑变量变换”的合理性
将一个“多值名义自变量”变换成一个“定量自变量”,这似乎很不合理。若孤立地考察“多值名义自变量”各水平之间的关系,前述的变换的确很不合理。因为“多值名义自变量”的各水平之间只是“名称或符号上的不同(例如ABO血型系统中的A型、B型、AB型和O型血型之间的关系)”,而没有“数量或程度上的差别”。然而,既然叫做“自变量”,它一定要影响其他变量,其中,定量结果变量(也叫定量因变量)是进行定量资料差异性分析和回归分析时最关注的“变量”。换言之,无论是进行t检验或方差分析,还是进行回归分析或判别分析,永远不可能孤立地去考察“自变量”各水平之间的关系,而不可避免地要建立起“自变量各水平”与因变量的具体取值之间的数量联系。
在对定量资料进行差异性分析(如t检验或方差分析)时,统计学上也是这样做的。例如:设“药物种类(因素A)”有两个水平:试验药(A1水平)和对照药(A2水平)。两个药物组都有较多数量的受试对象参与试验,假定评价药物疗效的指标为“收缩压下降值”,测定并计算出两组“收缩压下降值”的“算术平均值”。显然,这就是采用了各自的“算术平均值”代替“试验药(A1水平)”与“对照药(A2水平)”的“疗效”水平。显而易见,“A1”与“A2”之间是没有数量大小之分的,但它们各自组中疗效的“算术平均值”是有数量大小之分的。在多因素定量资料的方差分析中,情况也是如此。
由此可知,“算术均值变换”是用“动态思维(利用了因果关系)”建立起自变量各水平与定量结果变量之间数量关系的一种处理方法;而“哑变量变换”是用“静态思维(孤立地看待自变量)”处置自变量各水平之间关系的方法,此法割裂了“多值名义自变量”与“定量因变量”之间的数量联系。因此,“算术均值变换”比“哑变量变换”更具有合理性。
1.3 实际问题与数据结构
沿用本期科研方法专题第一篇文章《提高回归模型拟合优度的策略(Ⅰ)——哑变量变换与其他变量变换》中的“实际问题与数据结构”[1],此处不再赘述。
2 解决问题的思路和做法
2.1 对自变量和因变量的处置方法
2.1.1对“燃油种类(fuel)”这个“6值名义自变量”进行“算术均值变换”
求出“燃油种类(fuel)”各水平下“氧化氮释放量(nox)”的算术均值所需要的SAS程序如下:
/*下面的SAS程序计算出多值名义变量各水平下定量因变量的算术均值*/
data aa;
set sashelp.gas;
proc sort data=aa;
by fuel;
run;
proc univariate data=aa noprint;
var nox;
by fuel;
output out=aaa means=m_nox;
run;
proc print data=aaa;
run;
【SAS输出结果】
ObsFuelm_nox182rongas3.52589294%Eth2.087883Ethanol1.957384Gasohol3.349385Indolene3.546596Methanol1.55967
以上就是6种燃油对应的“氧化氮释放量(nox)”的算术均值。
将“燃油种类(fuel)”的各水平变换成与定量因变量相应的“算术均值”所需要的SAS程序如下:
/*下面的SAS程序将多值名义变量各水平变换成与定量因变量相应的算术均值*/
data a1;
set sashelp.gas;
if fuel=' 82rongas' then mfuel=3.52589;
else if fuel=' 94%Eth' then mfuel=2.08788;
else if fuel=' Gasohol' then mfuel=3.34938;
else if fuel=' Indolene' then mfuel=3.54659;
else if fuel=' Methanol' then mfuel=1.55967;
else if fuel=' Ethanol' then mfuel=1.95738;
run;
通过运行上面的SAS程序,在原数据集sashelp.gas中就增加了一个定量自变量mfuel,将用它取代多值名义自变量“燃油种类(fuel)”。
2.1.2 对定量因变量和自变量不进行任何变换
在进行回归分析时,通常都不对定量因变量和自变量做任何变换。然而,由基本常识和统计学知识可知,这样的建模结果往往不够理想。
2.1.3 仅对定量自变量进行变换
善于思考问题的分析者会依据探索性分析结果,对某些定量自变量进行合适的变量变换,以获得更好的回归建模效果。包括单一变换,如进行“对数变换、平方根变换、指数变换等”之一的变换;或引入派生变量,即同时使用多项变量变换的结果,如引入某变量的“平方项、立方项、交叉乘积项等”。
2.1.4 仅对定量因变量进行变换
在进行简单直线回归分析和/或多重回归分析之前,应考察“误差项应服从正态分布”的前提条件是否成立。若不成立,就需要通过探索性分析了解定量因变量可能的分布规律,从而采取合适的变量变换方法,以使其基本满足或近似满足进行相应回归分析的前提条件。然而,原始数据中并没有“误差项”这个变量,只能先假定资料满足回归分析的前提条件,基于创建的回归模型计算出因变量的预测值,再计算出各观测点上的“残差”,用此“残差”取代统计学理论上所指的“误差”,最后再检验“误差”是否服从正态分布。
由此可知:在很多实际问题中,有必要对定量因变量进行某些可能的变量变换,以获得更好的拟合效果。
2.1.5 同时对定量自变量和因变量进行变换
事实上,在对数据进行回归分析之前,除了对定性自变量进行必要的变量变换以外,还应进行一系列探索性分析,以了解定量因变量与定量自变量各自的分布情况,以及定量因变量与各定量自变量之间的相互关系和变化趋势,以便对它们分别选择不同的变量变换方法。目的是获得在专业上和统计学上都成立的最佳回归模型。
2.2 对定量自变量和因变量进行变量变换的方法
2.2.1对定量自变量进行多种变量变换,以便产生派生变量
所需要的SAS程序如下:
/*在数据集a1的基础上增加定量自变量的各种派生变量18个,形成数据集a2*/
data a2;
set a1;
x1=log(cpration);x2=sqrt(cpration);x3=exp(cpration);
x4=cpratio**2;x5=x4*cpratio;
w1=log(eqration);w2=sqrt(eqration);w3=exp(eqration);
w4=eqratio**2;w5=w4*eqratio;
z1=log(mfuel);z2=sqrt(mfuel);z3=exp(mfuel);
z4=mfuel**2;z5=z4*mfuel;
m1=cpration*eqration;m2=cpration*mfuel;
m3=eqration*mfuel;
run;
运行以上SAS程序后,就创建了数据集a2,它在数据集a1基础上增加了由三个定量自变量“cpratio”“eqratio”和“mfuel”派生出来的18个新自变量,它们分别是每个定量自变量的自然对数变换、平方根变换、指数变换、平方变换和立方变换的结果;还有三个定量自变量两两交叉乘积变换的结果。
2.2.2 对定量因变量进行5种变量变换
所需要的SAS程序如下:
/*在数据集a2的基础上增加定量因变量的5种变量变换结果,形成数据集a3*/
data a3;
set a2;
y1=log(nox);y2=sqrt(nox);y3=exp(nox);
y4=1/nox;y5=exp(nox)/(1+exp(nox));
run;
运行以上SAS程序后,就创建了数据集a3,它在数据集a2基础上增加了由定量因变量“nox”派生出来的5个新因变量,它们分别是自然对数变换(y1)、平方根变换(y2)、指数变换(y3)、倒数变换(y4)和Logistic变换(y5)的结果。
2.3 基于“算术均值变换”的建模策略
【说明】在以下的建模策略中,先对多值名义自变量进行“算术均值变换”;然后,在下面的每种情形中都将分别在“包含截距项”与“不含截距项”的条件下,分别采取“前进法”“后退法”和“逐步法”筛选自变量。
2.3.1 以“氧化氮释放量(nox)”为定量因变量
以“cpratio”“eqratio”和“mfuel”为三个定量自变量建模,在“包含截距项”与“不含截距项”的条件下,选取最佳模型编号分别为“模型1”与“模型2”。
以“cpratio”“eqratio”“mfuel”和18个派生变量为定量自变量建模,在“包含截距项”与“不含截距项”的条件下,选取最佳模型编号分别为“模型3”与“模型4”。
2.3.2以“氧化氮释放量的自然对数变换结果(y1)”为定量因变量
以“cpratio”“eqratio”和“mfuel”为三个定量自变量建模,在“包含截距项”与“不含截距项”的条件下,选取最佳模型编号分别为“模型5”与“模型6”。
以“cpratio”“eqratio”“mfuel”和18个派生变量为定量自变量建模,在“包含截距项”与“不含截距项”的条件下,选取最佳模型编号分别为“模型7”与“模型8”。
2.3.3以“氧化氮释放量的平方根变换结果(y2)”为定量因变量
以“cpratio”“eqratio”和“mfuel”为三个定量自变量建模,在“包含截距项”与“不含截距项”的条件下,选取最佳模型编号分别为“模型9”与“模型10”。
以“cpratio”“eqratio”“mfuel”和18个派生变量为定量自变量建模,在“包含截距项”与“不含截距项”的条件下,选取最佳模型编号分别为“模型11”与“模型12”。
2.3.4以“氧化氮释放量的指数变换结果(y3)”为定量因变量
以“cpratio”“eqratio”和“mfuel”为三个定量自变量建模,在“包含截距项”与“不含截距项”的条件下,选取最佳模型编号分别为“模型13”与“模型14”。
以“cpratio”“eqratio”“mfuel”和18个派生变量为定量自变量建模,在“包含截距项”与“不含截距项”的条件下,选取最佳模型编号分别为“模型15”与“模型16”。
2.3.5以“氧化氮释放量的倒数变换结果(y4)”为定量因变量
以“cpratio”“eqratio”和“mfuel”为三个定量自变量建模,在“包含截距项”与“不含截距项”的条件下,选取最佳模型编号分别为“模型17”与“模型18”。
以“cpratio”“eqratio”“mfuel”和18个派生变量为定量自变量建模,在“包含截距项”与“不含截距项”的条件下,选取最佳模型编号分别为“模型19”与“模型20”。
2.3.6以“氧化氮释放量的Logistic变换结果(y5)”为定量因变量
以“cpratio”“eqratio”和“mfuel”为三个定量自变量建模,在“包含截距项”与“不含截距项”的条件下,选取最佳模型编号分别为“模型21”与“模型2”。
以“cpratio”“eqratio”“mfuel”和18个派生变量为定量自变量建模,在“包含截距项”与“不含截距项”的条件下,选取最佳模型编号分别为“模型23”与“模型24”。
3 基于“算术均值变换与其他变量变换”的回归建模结果与评价
3.1 各种回归建模策略下所得主要结果的汇总
以摘要形式呈现选出的24个拟合效果较好的回归模型。见表1。
表1 反映24个多重回归模型拟合优度的计算结果
注:第1组模型对应的因变量为“氧化氮释放量(nox)”;第2组模型对应的因变量为“氧化氮释放量的自然对数变换结果(y1)”;第3组模型对应的因变量为“氧化氮释放量的平方根变换结果(y2)”;第4组模型对应的因变量为“氧化氮释放量的指数变换结果(y3)”;第5组模型对应的因变量为“氧化氮释放量的倒数变换结果(y4)”;第6组模型对应的因变量为“氧化氮释放量的Logistic变换结果(y5)”
3.2 基于“算术均值变换与其他变量变换”回归建模效果的分组评价
3.2.1第1组模型的拟合效果评价
第1组模型对应的因变量为“氧化氮释放量”,模型1与模型2都是仅基于3个定量自变量进行变量筛选,其区别在于模型1假定包含截距项,而模型2假定不含截距项;模型3与模型4都是基于3个定量自变量及其18个派生变量进行变量筛选,其区别在于模型3假定包含截距项,而模型4假定不含截距项。由表1中前4行结果可知:模型2优于模型1、模型4优于模型3,即在相同情况下,假定不含截距项的拟合结果优于假定包含截距项的拟合结果;进一步比较可知:模型4优于模型2,即引入派生变量的拟合结果优于不引入派生变量的拟合结果。
3.2.2 第2组模型的拟合效果评价
第2组模型对应的因变量为“氧化氮释放量的自然对数变换结果(y1)”,模型5与模型6都是仅基于3个定量自变量进行变量筛选,其区别在于模型5假定包含截距项,而模型6假定不含截距项;模型7与模型8都是基于3个定量自变量及其18个派生变量进行变量筛选,其区别在于模型7假定包含截距项,而模型8假定不含截距项。由表1中第5~8行结果可知:模型6优于模型5、模型8优于模型7,即在相同情况下,假定不含截距项的拟合结果优于假定包含截距项的拟合结果;进一步比较可知:模型8优于模型6,即引入派生变量的拟合结果优于不引入派生变量的拟合结果。
3.2.3 第3组模型的拟合效果评价
第3组模型对应的因变量为“氧化氮释放量的平方根变换结果(y2)”,模型9与模型10都是仅基于3个定量自变量进行变量筛选,其区别在于模型9假定包含截距项,而模型10假定不含截距项;模型11与模型12都是基于3个定量自变量及其18个派生变量进行变量筛选,其区别在于模型11假定包含截距项,而模型12假定不含截距项。由表1中第9~12行结果可知:模型10优于模型9、模型12优于模型11,即在相同情况下,假定不含截距项的拟合结果优于假定包含截距项的拟合结果;进一步比较可知:模型12优于模型10,即引入派生变量的拟合结果优于不引入派生变量的拟合结果。
3.2.4 第4组模型的拟合效果评价
第4组模型对应的因变量为“氧化氮释放量的指数变换结果(y3)”,模型13与模型14都是仅基于3个定量自变量进行变量筛选,其区别在于模型13假定包含截距项,而模型14假定不含截距项;模型15与模型16都是基于3个定量自变量及其18个派生变量进行变量筛选,其区别在于模型15假定包含截距项,而模型16假定不含截距项。由表1中第13~16行结果可知:模型14优于模型13、模型16优于模型15,即在相同情况下,假定不含截距项的拟合结果优于假定包含截距项的拟合结果;进一步比较可知:模型16优于模型14,即引入派生变量的拟合结果优于不引入派生变量的拟合结果。
3.2.5 第5组模型的拟合效果评价
第5组模型对应的因变量为“氧化氮释放量的倒数变换结果(y4)”,模型17与模型18都是仅基于3个定量自变量进行变量筛选,其区别在于模型17假定包含截距项,而模型18假定不含截距项;模型19与模型20都是基于3个定量自变量及其18个派生变量进行变量筛选,其区别在于模型19假定包含截距项,而模型20假定不含截距项。由表1中第17~20行结果可知:模型18优于模型17、模型20优于模型19,即在相同情况下,假定不含截距项的拟合结果优于假定包含截距项的拟合结果;进一步比较可知:模型20优于模型18,即引入派生变量的拟合结果优于不引入派生变量的拟合结果。
3.2.6 第6组模型的拟合效果评价
第6组模型对应的因变量为“氧化氮释放量的Logistic变换结果(y5)”,模型21与模型22都是仅基于3个定量自变量进行变量筛选,其区别在于模型21假定包含截距项,而模型22假定不含截距项;模型23与模型24都是基于3个定量自变量及其18个派生变量进行变量筛选,其区别在于模型23假定包含截距项,而模型24假定不含截距项。由表1中第21~24行结果可知:模型22优于模型21、模型24优于模型23,即在相同情况下,假定不含截距项的拟合结果优于假定包含截距项的拟合结果;进一步比较可知:模型24优于模型22,即引入派生变量的拟合结果优于不引入派生变量的拟合结果。
3.3 对各组模型中挑选出来的最优模型再进行拟合优度的总评价
从以上的“评价结果”可知:模型4、模型8、模型12、模型16、模型20和模型24分别是从6组模型中挑选出来的“最优模型”,现将它们从表1中摘录出来,以便直观比较和判断。见表2。
表2 各组挑选出来的6个“最优”多重回归模型拟合优度的计算结果
由表2可知:模型24是6个“最优”模型中“最佳”的。该模型的因变量为“氧化氮释放量的Logistic变换结果(y5)”,从全部(3+18=21个)自变量中筛选出了12个具有统计学意义的自变量,模型中不含截距项。具体计算结果如下:
方差分析源自由度平方和均方FPr>F模型12126.0596110.5049717367.6<0.0001误差1570.094960.00060486未校正合计169126.15458
变量参数估计值标准误差II 型 SSFPr>FCpRatio-0.305280.151010.002474.090.0449EqRatio-294.7077832.775120.0489080.85<0.0001x21.516950.692470.002904.800.0300x40.004580.002060.003004.970.0273w187.098569.411430.0518085.65<0.0001w2-349.8387438.958570.0487780.64<0.0001w3284.6897431.703120.0487780.64<0.0001w5-130.5704714.465230.0492881.48<0.0001z20.342150.078430.0115119.03<0.0001z50.002360.000988630.003465.710.0180m1-0.024140.002950.0403766.74<0.0001m3-0.132250.018390.0312951.72<0.0001
输出以上结果的“SAS过程步程序”如下:
/*模型24:R2=0.9992,调整R2=0.9992,MSE=0.00060486,Cp=14.9351,niv=12,无截距项*/
proc reg data=a3;
model y5=cpratio eqratio mfuel x1-x5 w1-w5 z1-z5 m1-m3/noint selection=backward sls=0.05 r;
/*模型24*/
run;
3.4 小结
在对定量因变量构建多重回归模型的过程中,摒弃了传统统计思维下的理论和方法(对定量因变量和定量自变量保持一次方形式,即不做任何变量变换,也不产生派生变量;对多值名义自变量进行哑变量变换,构建所谓的“多重线性回归模型”),而引入了动态统计思维下的理论和方法(对定量因变量分别采取不做变量变换和进行对数变换、平方根变换、指数变换、倒数变换和Logistic变换);淘汰了对“定量自变量不做任何变换”和“永远固定为一次方形式”的僵化思维,不仅对其做“对数变换、平方根变换和指数变换”,还引入了“平方项、立方项和交叉乘积项”;本文提出了一种新的变量变换方法,即对“多值名义自变量”进行“算术均值变换”,不仅将其变换成“定量自变量”,还产生出多项派生变量。
由表1和表2可知:基于传统统计思维创建的回归模型拟合效果非常差(模型编号分别为1、5、9、13、17、21),而基于动态统计思维创建的回归模型拟合效果很好(表2中除模型16之外)。其中,“算术均值变换”“引入派生变量”“假定回归模型中不含截距项”和“找到定量因变量合适的变量变换方法(就本文实例而言,除了‘指数变换’外,其他4种变量变换方法的拟合效果都相当好,其中,最佳的是Logistic变换)”是动态统计思维建模策略中的“核心”。
有兴趣的读者还可以在本文的基础上,对定量自变量增加其他一些变量变换(例如倒数变换、Logistic变换等),并将它们作为“派生变量”引入回归建模的过程中,有可能获得拟合效果更好的回归模型。
本文构建的是“多重参数非线性回归模型”,从拟合优度上来看,可与现代的“机器学习”[2-4]建模效果媲美;众所周知,“机器学习”回归建模的结果,只有“误差”可以达到足够小的程度这个“唯一优势”,而几乎无法写出其回归模型。即便能写出回归模型,其“参数的个数”可能接近“无穷大”。从模型必须“精简实用”且“便于呈现”的角度来考量,“机器学习”回归建模效果似乎要逊色于本文介绍方法的建模效果。