How to| 绘制拟合模型的诊断量

诊断量是分析数据模型的重要组成部分. 残差和杠杆率度量(或称影响度量)的图形为判断模型的假设是否合理、 是否有个别数据点对拟合产生过度影响等提供颇有价值的见解. 通过使用诸如 LinearModelFit 等函数提供的结果并结合内置绘图函数,可以在 Wolfram 语言中创建这类图形.

首先,定义一个数据集以供使用:

In[1]:=
Click for copyable input

线性模型指的是有待估计的参数为线性的模型. 形如 的模型中 为二次,但对于参数 而言是一个线性模型.

使用 LinearModelFit 拟合模型:

In[2]:=
Click for copyable input
Out[2]=

您可以计算 取一定值时的 FittedModel 对象,拟合后的曲线可以通过用 Plot 绘制函数 的图形来得到.

绘制拟合后的函数:

In[3]:=
Click for copyable input
Out[3]=

您可以使用 ListPlot 绘制数据,并使用 Show 显示数据以及拟合曲线:

In[4]:=
Click for copyable input
Out[4]=

您可以要求 FittedModel 对象给出一定数量的诊断量和结果.

对于一个线性模型而言,残差应该与白噪音很相似,服从均值为0和一个固定的方差值的随机正态分布. 如果残差值有任何趋势,则表示模型可能需要修正.

将属性 FittedModel 对象()一起使用来获得并绘制每个数据点的残差:

In[5]:=
Click for copyable input
Out[5]=

与其它任何图形相同,您可以使用另外的选项来添加边框、标签与填充等特色.

使用 Frame 选项在残差图周边添加边框,并使用 Filling 选项画出从点到轴的连线:

In[6]:=
Click for copyable input
Out[6]=

标准化图形非常有用,因为它们能够有效去除残差中的整体尺度. 对于线性和非线性回归,标准化残差看上去应该与方差为1的白噪音相似.

生成拟合线性模型的标准化残差图:

In[7]:=
Click for copyable input
Out[7]=

前面的图形显示的是每个数据点的残差,将残差值与预测变量对应画出也很有用. 在下面的例子中,x 是预测变量.

通过组建数据值与相关残差的数对,您可以绘制残差相对与一个预测变量的图形. 预测值是 中各个数据点的第一个元素:

In[8]:=
Click for copyable input
Out[8]=

使用 Transpose 组建 值与残差的数对,然后使用 ListPlot 绘制这些数对:

In[9]:=
Click for copyable input
Out[9]=

在图形中添加边框、竖直连线以及标签:

In[10]:=
Click for copyable input
Out[10]=

相似地,也可以绘出数据集中点的影响或杠杆率度量,以评估个别数据点是否对拟合有过度影响.

例如,您可以绘制各个数据点的库克距离. 库克距离为点对整体拟合的影响提供了一种度量方法:

In[11]:=
Click for copyable input
Out[11]=

其它点式诊断量包括 ,常常分别称作 DFFITS 与 DFBETAS. 这些值常被可视化,以评估其它类型的影响.

绘制 提供了度量各点对预测值影响的一种方式:

In[12]:=
Click for copyable input
Out[12]=
    

诊断图形的获取与使用 NonlinearModelFitGeneralizedLinearModelFitLogitModelFitProbitModelFit 拟合非线性和广义线性模型的方式相似.

用于线性模型的值现在用作非线性和广义线性模型的拟合:

In[1]:=
Click for copyable input

例如,将 Exp 用于 NonlinearModelFit,对数据进行指数模型的拟合:

In[2]:=
Click for copyable input
Out[2]=

您可再次使用 ListPlotPlot 制作拟合的视图:

In[3]:=
Click for copyable input
Out[3]=

正如在线性范例中所示,您也可利用 ListPlot 画出如残差等点式诊断量:

In[4]:=
Click for copyable input
Out[4]=

下面的例子拟合一个形如 的模型,但假定响应变量(数据中的 值)服从逆高斯分布. 这通过将 GeneralizedLinearModelFit 的选项 ExponentialFamily 设为 实现:

In[5]:=
Click for copyable input
Out[5]=

与线性和非线性回归模型不同,误差的方差不再是常数. 对于一个逆高斯模型,误差将随着响应值的增加而增加.

各种变形的残差可使用这些模型,您可能希望同时看到多. 首先,指定您想要一起查看的残差:

In[6]:=
Click for copyable input

正如在线性和非线性回归中一样, 是响应值与预测值之差. 将拟合残差变形,使其接近假定分布的常态噪声. 基于各点的估计方差调整尺度,而 则根据整体方差调整尺度.

接下来,定义您准备创建的每个残差的标签:

In[7]:=
Click for copyable input

为不同类型的残差建立图形,并将每一个加上标签. 这里的输出通过分号 () 抑制,图形显示在下一步的网格中:

In[8]:=
Click for copyable input

Partition 生成一个2×2数组,并使用 GraphicsGrid 在一个网格中显示图形:

In[9]:=
Click for copyable input
Out[9]=