如果我们用变量来描述客观存在的事物,那么掌握变量(事物)间的内在规律并借以指导我们的行为是十分重要的。有些变量间的关系可以称为确定性的关系,比如销售额y与销售量x之间的关系可以表示为y=p*x(p是商品单价)。但有些变量间的关系就不能用这种确定性的函数来表达,比如:工资收入与教育程度的关系,健康程度与年龄的关系,等等。对于这类非确定性关系,我们需要从以往的大量数据当中,通过统计分析方法来确定他们之间的关系,并用适当的数学形式进行描述。
回归分析就是一种用来确定两个或两个以上变量间基于统计的定量关系的分析方法。用这种方法得到的变量间关系的数学描述就是回归模型。如果模型所描述的变量关系是线性的,则被称为线性关系。其中,一元线性回归描述的是一个变量(主要因素)对另一个变量的影响。而现实生活中应用更多的多元线性回归,即多个变量对某一个变量的影响。我们可以用下面的公式来表达多元线性回归模型:
公式(1)当中,Y被称为因变量(或目标变量),Xj(j=1~n)被称为自变量(或预测变量)。b0被称为截距(或常数项),bj(j=1~n)是自变量的系数,被称为回归系数,表示当其他自变量不变,Xj每改变一个单位时,因变量的平均变化量。注意公式(1)是相对于整个样本数据的,如果从个体角度(比如单个理赔案例)来看,线性回归模型可以被改写为公式(2)的形式,其中ei是随机误差,被假定为服从均数为0的正态分布,即对每一个个体而言,当知道所有自变量取值时,我们能确定的只是因变量的平均取值,个体的因变量具体取值是在平均值附近的一个范围内,而具体值与平均值之间的差异(即ei)被称为残差,是回归模型对各种随机的、不确定的影响因素的统一描述。
建立线性回归模型的主要目标就是通过统计方法对回归系数进行参数估计,确定上述线性表达式。在此基础上,我们可以进行各种分析,获取有价值的信息。
通常来说,和其他统计分析与数据挖掘方法类似,线性回归分析包括建立模型、模型评价和利用模型进行预测等几个步骤。在正式建模前,有时需要对数据进行预处理,我们将在后面进行介绍。
我们可以从样本数据出发,利用回归分析确定变量间的线性表达式,即用统计方法估计出线性表达式当中每个回归系数的取值,这就是建立模型的过程。之后,我们可以对这个线性表达式进行可信程度的统计检验,并评价模型的质量,也可以对模型做进一步的分析,寻找出在影响因变量的多个自变量中,哪些自变量对因变量的影响更为显著,哪些自变量对模型的贡献更加重要,这些都是模型评价的过程。然后,我们可以将这个关系表达式运用到新的数据集上,在知道所有自变量取值的情况下,根据关系表达式计算出因变量的取值,并利用统计方法评价预测值的精确程度,这就是利用已经建立好的模型进行预测的过程。
我们可以在Statistics中手动进行数据预处理,图1显示了本商业实例中的部分数据在预处理前后的取值情况。第一列incidentdate(事故发生日期)的原始数据格式是“月-日-年”,我们必须将它们转换成一个数值才能进行数值计算和建模,预处理方法是将日期数据转换为距离某参考日期的月份数目。在本例中我们选择当前日期为参考日期,于是日期被转换为第二列显示的负实数。第三列income(家庭收入)当中存在一些离群值,比如第2303行当中的收入1385(千元),远远高于平均水平。为了使模型不被这些数量不多但很影响平均值的数据所破坏,偏离真实的拟合曲线(或直线),需要用特定的算法将其取值改变为一个合理的数值。因此,在第四列中该离群值被一个相对接近平均值的数值所取代。对于第五列“教育水平”,原始数据当中类别比较多,有“高中未毕业”、“高中水平”、“大学水平”等五种类别,分别用1-5代表。预处理过程会对数据进行分析,必要时对类别进行归并,以使其与目标变量的关联最大化,在本例当中,发现高中以上水平四个类别的理赔案例其特征比较相似,因而归并的结果是只有两个类别,即“高中未毕业”与“高中以上水平”,用0和1表示,如第六列所示。
Statistics软件当中有一个自动预处理模块,即ADP,其全称为Automaticallypreparedata(自动数据准备),用户在使用ALM进行建模之前,可以选择预先执行ADP,以提高数据的质量。这个过程在后台被执行,使用者不用太关心。经过预处理的数据,其变量名会在后面增加一个“_transformed”后缀。
然后,我们通过菜单“Analyze”->“Regression”->“AutomaticLinearModeling…”来打开ALM模块的操作对话框,如图2所示:
既然是要分析和预测理赔金额,我们当然选择Costofclaiminthousands(理赔金额(千元))作为因变量。在Fields(字段)Tab页当中,把该变量选入到Target(目标)文本框当中。像理赔案例ID、是否为欺诈索赔和保险单ID这几个变量,和本次分析目的关系不大,被留在左边的文本框当中,先不予考虑。剩下的变量就统统作为自变量,选入到Predictors(inputs)(预测变量(输入))文本框当中。
我们打开名为BuildOption(构建选项)的Tab页,如图3所示:
选择Basics(基本选项)子页面,可以看到默认选择了Automaticallypreparedata选项,这个选择会在运行ALM之前首先运行ADP,对数据进行预处理。
打开ModelSelection(信息选择)子页面,如图4所示:
在ModelSelectionmethod(信息选择方法)中默认选择了ForwardStepwise(前向逐步)方法。在ForwardStepwiseSelection(前向逐步选择)区域当中的Criteriaforentry/removal(输入/删除标准)下拉框中,有“InformationCriterionAICC(信息准则(校正的Akaike))”、“FStatistics(F统计)”、“AdjustedR2(调整后的R2)”和“OverfitPreventionCriterion(过度拟合防止标准(ASE))”几种判断标准。默认选择“信息准则AICC”。我们不改变这些默认设置。点击Run(运行)按钮,可以看到一个新的窗口被打开,这就是用于显示建模结果的Output(输出)视图。如图5所示:
在标题AutomaticLinearModeling下面,我们可以看到建模所使用的数据文件的系统路径名。紧接着,CaseProcessingSummary(案例处理汇总)表格显示了总共有4415条数据被包含,而被排除的无效数据为0条。在表格的下面,是ModelViewer(模型浏览器)。它提示用户可以通过双击激活它。我们双击它,打开模型浏览器,如图6所示:
模型浏览器首先给我们展示的是图6当中的ModelSummary(模型概要)视图。从中我们可以看出:目标变量(即因变量)的名称是“理赔金额”,而且“自动数据准备”功能被设置为“开”。而ModelSelectionMethod(信息选择方法)采用了ForwardStepwise。而Informationcriterion(信息准则)的取值是39.889,我们可以用这个值对本模型和用其他方法建立的模型进行比较。
我们从模型显示器左边较小的示意图中,打开第二张图:“自动数据准备”,如图7所示:
可以从ActionTaken一列的说明文字中看到:Dateofincident(事故日期),DateofOccupancy(居住日期)等变量的数据已被转换成距离参考日期的月份数。变量Householdincomeinthousands(家庭收入(千元))的离群值也已被替换。而变量Levelofeducation(教育水平)的类别也被合并,使其和目标变量的关联最大化。让我们打开ModelBuildingSumary(模型构建汇总)视图。如图8所示:
可以看到,共有4个自变量被选入到最终的模型,如图第4列所示,它们是“理赔类型”、“保险责任范围金额”、“固定资产是否不易居住”和“居住城镇大小”。这些变量在模型当中被称之为Effect(效应)。ForwardStepwise是通过迭代的过程建模的。从视图中可以看出,迭代过程总共有4步,变量“理赔类型”在第一轮迭代中就被选入模型,变量“保险责任范围金额”在第二轮迭代中被选入模型,以此类推。我们选择的用于判断模型好坏的标准是AICC,该标准是取值越小越好。可以看到,第四步迭代终止时取得的AICC值最小。
那么,在被模型选入的自变量当中,到底哪些变量在模型当中更为重要,或者说哪些变量对因变量的影响更大呢?让我们来看看PredictorImprotance(预测变量重要性)视图。如图9所示:
该视图按照变量的重要性进行了排序,重要性判断准则取值越大,柱状图越长,变量也越重要。可以很容易地看出,“保险责任范围金额”是最重要的变量,“理赔类型”次之,而“居住城镇大小”的影响力是最小的。
我们已经知道,多元线性回归模型主要是由线性表达式的回归系数确定的。下面,我们就来看看模型最重要的信息——回归系数的取值。打开Coefficients(系数)视图,如图10所示:
从图中的连线数目可以看出,系数个数明显比变量个数多,对于包含有常数项和离散变量的模型,其模型项(或参数项)个数往往多于变量个数。离散变量的取值不是连续的,而是分散、有限的几种类别,比如ClaimType(理赔类型)就有4种类别。模型将离散变量的每一种类别作为一个模型项,而将一个连续变量作为一个模型项,每个模型项都有一个系数。因此,连续型变量Coverage(保险责任范围金额)对应一条连线,理赔类型的三种类别对应三条连线(有一种类别的系数值为0,没有显示)。从模型项对应连线的粗细可以大致看出其显著性水平,显著性水平越高其连线越粗,在模型当中越重要,这从另一个角度反映了该模型项对应的变量的重要程度。蓝色的连线表明该系数为正值,说明该模型项与目标变量是正的线性关系的,产生积极影响,其取值增大时目标变量取值也增大。而黄色的连线表明该系数为负值,与目标变量是负的线性关系,产生消极影响。
我们通过视图下方的下拉框,将该视图的显示格式从图表格式改变为表格式,如图11所示:
我们可以从系数的取值中分析出这些模型项与因变量之间的定量关系。比如“保险责任范围金额(千元)”的系数值为0.261,它表明当其他模型项的值不发生变化时,“保险责任范围金额”每增加100(千元),因变量增加100*0.261=26.1(千元)。类似的,理赔类型2(污染物损害理赔)的系数值是137.226,而理赔类型3(风灾损害理赔)的系数值为0(一般来说,对于一个离散变量的所有类别对应的模型项,总有一个模型项的系数取值为0,作为比较其他类别的基准),它说明一次污染物损害理赔要比风灾损害理赔要高出137.226(千元),是所有理赔类型当中理赔金额最高的。当然,所有这种定量关系都是基于统计方法算出的估计值。
还有一种参考价值比较高的视图,是EstimatedMeans(估计的平均值)视图,如图12、图13所示。它为我们显示了前十个显著效应(p<0.05)的估计均值图表。这为我们提供了另一种视角,用直观的图形方式帮助我们分析变量间的关系。比如,图12反映的就是“保险责任范围金额”和“理赔金额”之间的关系。可以看出它们之间有着明显的线性关系。也就是说,对于保险责任范围金额较大的保单,其理赔额度也更高。
我们再来看看反映“理赔类型”与“理赔金额”之间关系的均值估计视图,如图13。可以看出,相对于其他两种理赔类型,“污染灾害理赔”和“火/烟灾害理赔”与高额理赔的关联更加密切,一般会要求高额赔付。
以上就是模型浏览器当中一些主要的分析结果,它们用直观的图表描述了线性回归模型,提供了详细准确的分析结果,可以为我们的决策提供有力的支持。
ALM拥有不同的建模方法,我们可以通过比较不同方法建立的模型,使我们对问题的分析更加全面和准确。下面我采用BestSubsets方法来建模。
如图14所示,重新打开ALM的对话框,选择BuildOption页,在ModelSelectionmethod(信息选择方法)中选择BestSubsets(最佳子集)方法。在BestSubsetsSelection(最佳子集选择)区域当中的Criteriaforentry/removal(输入/删除标准)下拉框中,有“信息准则AICC”、“调整后的R2”和“过度拟合防止标准(ASE)”几种判断标准。我们选择信息准则AICC建模。
模型建好后,打开模型显示器当中的ModelSummary(模型概要)视图,如图15所示。
可以看到,对于BestSubsets方法建立的模型,Informationcriterion(信息准则),即AICC的值是39.889,和ForwardStepwise方法建立的模型的AICC值相同。
打开模型构建汇总视图视图,如图16所示。
BestSubsets方法不仅仅只建立一个模型,而是采用穷尽搜索的方法,在所有可能的模型当中选择10个(默认设置)最优的模型,每个模型所包含的自变量有可能不相同。其中最好的模型被显示在最左边,其AICC值最小。该模型当中的自变量和使用ForwardStepwise方法建立的模型当中的自变量完全相同。该模型的AICC值就是模型概要视图当中显示的信息准则值。两种方法最终确定的模型的AICC值相同,被选入的自变量也相同,这说明ForwardStepwise方法对本案例数据比较适用,能够找到最好的模型。
如果要在原始数据上计算理赔金额的预测值,并和其原值进行比较,看模型拟合的好坏,可以打开ALM对话框,选择ModelOption(模型选项)页面,如图17所示。选择“Savepredictedvaluestodataset(将预测值保存到数据集中)”。
这样,数据集视图当中会增加一列,显示计算出的理赔金额的预测值。如图18所示。
为了方便对新数据进行预测,我们可以如图17所示,选择Exportmodel(导出模型)选项,并指定包含PMML文件的zip包的文件名和路径,就可以在建模后输出模型到PMML文件当中。我们可以用Statistic对新数据进行预测,也可以使用IBMSPSSModeler或其它厂商的软件,利用输出的PMML对新数据进行预测。
ALM可以被应用到商业、科研和教育领域等多个领域,有着十分广泛的应用。无论是专业用户,还是普通用户,ALM都可以提供科学准确的分析和预测,是一个功能强大,使用方便的建模和分析工具。