How to| 绘制拟合模型的诊断量
诊断量是分析数据模型的重要组成部分. 残差和杠杆率度量(或称影响度量)的图形为判断模型的假设是否合理、 是否有个别数据点对拟合产生过度影响等提供颇有价值的见解. 通过使用诸如 LinearModelFit 等函数提供的结果并结合内置绘图函数,可以在 Mathematica 中创建这类图形.
首先,定义一个数据集以供使用:
线性模型指的是有待估计的参数为线性的模型. 形如
的模型中
为二次,但对于参数
、
和
而言是一个线性模型.
使用 LinearModelFit 拟合模型:
| Out[2]= |  |
您可以计算
取一定值时的 FittedModel 对象,拟合后的曲线可以通过用 Plot 绘制函数
的图形来得到.
绘制拟合后的函数:
| Out[3]= |  |
您可以使用 ListPlot 绘制数据,并使用 Show 显示数据以及拟合曲线:
| Out[4]= |  |
您可以要求 FittedModel 对象给出一定数量的诊断量和结果.
对于一个线性模型而言,残差应该与白噪音很相似,服从均值为0和一个固定的方差值的随机正态分布. 如果残差值有任何趋势,则表示模型可能需要修正.
将属性
与 FittedModel 对象(
)一起使用来获得并绘制每个数据点的残差:
| Out[5]= |  |
与其它任何图形相同,您可以使用另外的选项来添加边框、标签与填充等特色.
使用 Frame 选项在残差图周边添加边框,并使用 Filling 选项画出从点到轴的连线:
| Out[6]= |  |
标准化图形非常有用,因为它们能够有效去除残差中的整体尺度. 对于线性和非线性回归,标准化残差看上去应该与方差为1的白噪音相似.
生成拟合线性模型的标准化残差图:
| Out[7]= |  |
前面的图形显示的是每个数据点的残差,将残差值与预测变量对应画出也很有用. 在下面的例子中,x 是预测变量.
通过组建数据值与相关残差的数对,您可以绘制残差相对与一个预测变量的图形. 预测值是
中各个数据点的第一个元素:
| Out[8]= |  |
使用 Transpose 组建
值与残差的数对,然后使用 ListPlot 绘制这些数对:
| Out[9]= |  |
在图形中添加边框、竖直连线以及标签:
| Out[10]= |  |
相似地,也可以绘出数据集中点的影响或杠杆率度量,以评估个别数据点是否对拟合有过度影响.
例如,您可以绘制各个数据点的库克距离. 库克距离为点对整体拟合的影响提供了一种度量方法:
| Out[11]= |  |
其它点式诊断量包括
与
,常常分别称作 DFFITS 与 DFBETAS. 这些值常被可视化,以评估其它类型的影响.
绘制
提供了度量各点对预测值影响的一种方式:
| Out[12]= |  |
诊断图形的获取与使用 NonlinearModelFit、GeneralizedLinearModelFit、LogitModelFit 和 ProbitModelFit 拟合非线性和广义线性模型的方式相似.
用于线性模型的值现在用作非线性和广义线性模型的拟合:
例如,将 Exp 用于 NonlinearModelFit,对数据进行指数模型的拟合:
| Out[14]= |  |
您可再次使用 ListPlot 和 Plot 制作拟合的视图:
| Out[15]= |  |
正如在线性范例中所示,您也可利用 ListPlot 画出如残差等点式诊断量:
| Out[16]= |  |
下面的例子拟合一个形如
的模型,但假定响应变量(数据中的
值)服从逆高斯分布. 这通过将 GeneralizedLinearModelFit 的选项 ExponentialFamily 设为
实现:
| Out[17]= |  |
与线性和非线性回归模型不同,误差的方差不再是常数. 对于一个逆高斯模型,误差将随着响应值的增加而增加.
各种变形的残差可使用这些模型,您可能希望同时看到多. 首先,指定您想要一起查看的残差:
正如在线性和非线性回归中一样,
是响应值与预测值之差.
将拟合残差变形,使其接近假定分布的常态噪声.
基于各点的估计方差调整尺度,而
则根据整体方差调整尺度.
接下来,定义您准备创建的每个残差的标签:
为不同类型的残差建立图形,并将每一个加上标签. 这里的输出通过分号 (
) 抑制,图形显示在下一步的网格中:
用 Partition 生成一个2×2数组,并使用 GraphicsGrid 在一个网格中显示图形:
| Out[21]= |  |