加权非线性回归

这个例子显示了如何拟合非线性回归模型的数据与非常数误差方差。

当测量误差具有相同的方差时,正则非线性最小二乘算法是合适的。当该假设不成立时,使用加权拟合是合适的。这个例子展示了如何使用权重fitnlm函数。

适合度的数据和模型

我们将利用收集到的数据来研究工业和生活垃圾造成的水污染。这些数据在Box、g.p.、W.G. Hunter和J.S. Hunter的《实验者的统计》(Wiley, 1978,第483-487页)中有详细描述。反应变量为生化需氧量(mg/l),预测变量为培养时间(天)。

X = [1 2 3 5 7 10]';Y = [109 149 149 191 213 224]';情节(x, y,“柯”);包含(“孵化(天),x ');ylabel ('生化需氧量(mg/l), y');

我们假定,前两次观测的精度不如其余观测的精度。例如,它们可能是用另一种乐器制成的。重量数据的另一个常见原因是,每个记录观察实际上是几个度量值的平均值在相同的值(x)的数据,假设第一个两个值代表的是单一的原始测量,而其余四个都5原始测量值的平均值。然后用每一次观测的测量值来衡量是合适的。

W = [1 1 5 5 5 5]';

我们用来拟合这些数据的模型是一个缩放的指数曲线,随着x变大而变得水平。

modelFun = @(b,x) b(1).*(1-exp(-b(2).*x));

仅仅基于粗略的视觉拟合,通过这些点绘制的曲线可能会在x = 15附近的某个地方稳定在240左右。我们用240作为b1的初始值,因为e^(- 5*15)比1小,所以我们用。5作为b2的初始值。

开始= [240;5);

在没有权重的情况下适合模型

忽略测量误差的危险是,拟合可能会受到不精确测量的过度影响,因此可能不能很好地拟合已知的测量。让我们拟合没有权重的数据,并将其与点进行比较。

nlm = fitnlm (x, y, modelFun,开始);xx = linspace (0, 12) ';线(xx,预测(nlm, xx),“线型”“——”“颜色”“k”

用权重拟合模型

请注意,拟合曲线被拉向前两点,但似乎错过了其他点的趋势。让我们用重量来重复健身。

modelFun wnlm = fitnlm (x, y,开始,“重量”w)线(xx,预测(wnlm, xx),“颜色”“b”
wnlm =非线性回归模型:y ~ b1*(1 - exp(- b2*x)) Estimated Coefficients: Estimate SE tStat pValue ________ ________ ______ __________ b1 225.17 10.7 21.045 3.0134e-05 b2 0.40078 0.064296 6.2333 0.0033745观测数:6,误差自由度:4均方根误差:24 R-Squared:0.885 F-statistic vs. zero model: 696, p-value = 8.2e-06

在这种情况下,估计的总体标准差描述了一个“标准”观测值的平均变异,其权重或测量精度为1。

wnlm。RMSE
ans = 24.0096

任何分析的一个重要部分是对模型拟合精度的估计。系数显示显示了参数的标准误差,但我们也可以计算它们的置信区间。

coefCI (wnlm)
Ans = 195.4650 254.8788 0.2223 0.5793

估计响应曲线

接下来,我们将计算拟合的响应值和置信区间。默认情况下,这些宽度用于预测值的点向置信范围,但我们将请求整个曲线的同时间隔。

[ypred, ypredci] =预测(wnlm, xx,“同时”,真正的);情节(x, y,“柯”xx ypred,“b -”xx ypredci,”乙:“);包含(“x”);ylabel (“y”);传奇({“数据”“加权匹配”95%置信区间的},“位置”“东南”);

请注意,这两个下加权点与曲线的拟合程度不如其余点。这是加权匹配的结果。

在指定的x值上估计未来观测的预测间隔也是可能的。这些间隔实际上假定权重或测量精度为1。

[ypred, ypredci] =预测(wnlm, xx,“同时”,真的,“预测”“观察”);情节(x, y,“柯”xx ypred,“b -”xx ypredci,”乙:“);包含(“x”);ylabel (“y”);传奇({“数据”“加权匹配”“95%预测限制”},“位置”“东南”);

权重的绝对尺度实际上并不影响参数估计。将权重按任何常数重新调整,我们都会得到相同的估计值。但它们确实会影响置信界限,因为置信界限表示权值为1的观察值。这里你可以看到,与置信限相比,权重较高的点似乎太接近拟合线。

预测方法不允许我们改变权重,我们可以做一些后处理,调查曲线如何寻找一个更精确的估计。假设我们对一个基于五个测量值平均值的新观测结果感兴趣,就像图中的最后四个点一样。我们可以将间隔的宽度减小根号5。

半宽度= ypredci (:, 2) -ypred;newwidth =半宽度/√(5);Newci = [ypred-newwidth, ypred+newwidth];情节(x, y,“柯”xx ypred,“b -”xx newci,“:”);包含(“x”);ylabel (“y”);传奇({“数据”“加权匹配”“限制重量= 5”},“位置”“东南”);

残留分析

除了绘制数据和拟合,我们还将绘制拟合与预测器的残差,以诊断模型的任何问题。残差看起来应该是独立的、同分布的,但方差与权重的倒数成正比。我们可以将此方差标准化,使绘图更容易解释。

r = wnlm.Residuals.Raw;情节(x, r。* sqrt (w),“b ^”);包含(“x”);ylabel ('残差,yFit - y');

在这片残余地块上有一些系统模式的证据。注意最后四个残差是如何呈线性趋势的,这表明随着x的增加,模型的增长速度可能不够快。此外,残差的大小往往随着x的增加而减小,这表明测量误差可能取决于x。这些值得调查,然而,数据点太少,很难重视这些明显的模式。